示例#1
0
        public MontoPago ObtenerMontoPagoDesdeSubtotal(decimal montoSubtotal, decimal porcentajeCft, decimal porcentajeFacturacion, TipoCliente tipoCliente, TipoPago formaDePago)
        {
            if (EstaPaga)
            {
                return(new MontoPago(0, 0, 0, 0));
            }

            MontoPago montoPagoPendiente = new MontoPago(0, 0, 0, 0);

            foreach (VentaItem ventaItem in VentaItems)
            {
                MontoProducto montoProductoPendientePago = ventaItem.PendientePago();

                if (montoSubtotal >= montoProductoPendientePago.Valor)
                {
                    montoPagoPendiente += ventaItem.ObtenerMontoPagoPendiente(porcentajeCft, porcentajeFacturacion, tipoCliente, formaDePago);
                    montoSubtotal      -= montoProductoPendientePago.Valor;
                }
                else
                {
                    montoPagoPendiente += ventaItem.ObtenerMontoPago(montoSubtotal, porcentajeCft, porcentajeFacturacion, tipoCliente, formaDePago);
                    montoSubtotal       = 0;
                    break;
                }
            }

            return(montoPagoPendiente);
        }
示例#2
0
 internal NotaPedidoItem(long idNotaPedido, Producto producto, MontoProducto monto, int cantidad, decimal porcentajeBonificacion, decimal porcentajeFacturacion, TipoCliente tipoCliente) : base(true)
 {
     IdNotaPedido           = idNotaPedido;
     IdProducto             = producto.Id;
     Producto               = producto;
     MontoProducto          = monto;
     PorcentajeBonificacion = porcentajeBonificacion;
     Cantidad               = cantidad;
     FechaEdicion           = DateTime.Now;
 }
示例#3
0
 private void ActualizarTotalesVenta()
 {
     if (VentaItems.Count == 0)
     {
         CantidadTotal = 0;
         MontoTotal    = new MontoProducto(0, 0);
     }
     else
     {
         CantidadTotal = VentaItems.Sum(x => x.Costo.Cantidad);
         MontoTotal    = VentaItems.Select(x => x.Costo.MontoProducto).Aggregate((x, y) => x + y);
     }
 }
示例#4
0
 public Venta(int idSucursal) : base(true)
 {
     IdSucursal            = idSucursal;
     VentaItems            = new List <VentaItem>();
     Pagos                 = new List <VentaPago>();
     Cheques               = new List <Cheque>();
     MontoTotal            = new MontoProducto(0, 0);
     PagoTotal             = new MontoPago(0, 0, 0, 0);
     Comisiones            = new List <Comision>();
     Fecha                 = DateTime.Now;
     FechaEdicion          = DateTime.Now;
     PorcentajeFacturacion = 1;
 }
示例#5
0
        public void AgregaNotaPedidoItem(Producto producto, MontoProducto monto, int cantidad, decimal porcentajeBonificacion, decimal porcentajeFacturacion, TipoCliente tipoCliente)
        {
            NotaPedidoItem notaPedidoItem = NotaPedidoItems.FirstOrDefault(x => x.Producto.Codigo == producto.Codigo && !x.Borrado);

            if (notaPedidoItem == null)
            {
                notaPedidoItem = new NotaPedidoItem(Id, producto, monto, cantidad, porcentajeBonificacion, porcentajeFacturacion, tipoCliente);
                NotaPedidoItems.Add(notaPedidoItem);
            }
            else
            {
                notaPedidoItem.ActualizarMontoProducto(monto, cantidad, porcentajeBonificacion, porcentajeFacturacion, tipoCliente);
            }
        }
示例#6
0
        internal VentaItem(long idVenta, Producto producto, decimal monto, int cantidad, bool esDevolucion, decimal porcentajeBonificacion, decimal porcentajeFacturacion, TipoCliente tipoCliente, decimal montoProductoMinorista, decimal porcentajeBonificacionMinorista, decimal montoProductoMayorista, decimal porcentajeBonificacionMayorista) : base(true)
        {
            Pagos                  = new Dictionary <VentaPago, decimal>();
            IdVenta                = idVenta;
            IdProducto             = producto.Id;
            Producto               = producto;
            MontoProducto          = ObtenerMontoProducto(monto, porcentajeFacturacion, tipoCliente);
            PorcentajeBonificacion = porcentajeBonificacion;
            PorcentajePago         = 0;
            Cantidad               = cantidad;
            EsDevolucion           = esDevolucion;
            FechaEdicion           = DateTime.Now;

            MontoProductoMinorista          = ObtenerMontoProducto(montoProductoMinorista, 1, TipoCliente.Minorista);
            PorcentajeBonificacionMinorista = porcentajeBonificacionMinorista;
            MontoProductoMayorista          = ObtenerMontoProducto(montoProductoMayorista, 1, TipoCliente.Mayorista);
            PorcentajeBonificacionMayorista = porcentajeBonificacionMayorista;
        }
示例#7
0
        private decimal CalcularSubtota(decimal montoTotal, decimal porcentajeCft)
        {
            decimal subtotal = 0;

            foreach (VentaItem ventaItem in VentaItems)
            {
                MontoProducto montoProductoPendientePago = ventaItem.PendientePago();
                decimal       totalPendientePago         = montoProductoPendientePago.toDecimal();
                if (montoTotal >= totalPendientePago)
                {
                    subtotal   += ventaItem.CalcularSubtotal(totalPendientePago, porcentajeCft, TipoCliente);
                    montoTotal -= totalPendientePago;
                }
                else
                {
                    subtotal  += ventaItem.CalcularSubtotal(montoTotal, porcentajeCft, TipoCliente);
                    montoTotal = 0;
                    break;
                }
            }

            return(subtotal);
        }
示例#8
0
 internal void ActualizarMontoProducto(MontoProducto monto, int cantidad, decimal porcentajeBonificacion, decimal porcentajeFacturacion, TipoCliente tipoCliente)
 {
     Cantidad = cantidad;
     PorcentajeBonificacion = porcentajeBonificacion;
     MontoProducto          = monto;
 }
示例#9
0
        internal MontoPago ObtenerMontoPagoPendiente(decimal porcentajeRecargo, decimal porcentajeFacturacion, TipoCliente tipoCliente, TipoPago formaPago)
        {
            MontoProducto montoProductoPendientePago = PendientePago();

            return(ObtenerMontoPago(montoProductoPendientePago.Valor, porcentajeRecargo, porcentajeFacturacion, tipoCliente, formaPago));
        }