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); }
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; }
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); } }
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; }
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); } }
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; }
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); }
internal void ActualizarMontoProducto(MontoProducto monto, int cantidad, decimal porcentajeBonificacion, decimal porcentajeFacturacion, TipoCliente tipoCliente) { Cantidad = cantidad; PorcentajeBonificacion = porcentajeBonificacion; MontoProducto = monto; }
internal MontoPago ObtenerMontoPagoPendiente(decimal porcentajeRecargo, decimal porcentajeFacturacion, TipoCliente tipoCliente, TipoPago formaPago) { MontoProducto montoProductoPendientePago = PendientePago(); return(ObtenerMontoPago(montoProductoPendientePago.Valor, porcentajeRecargo, porcentajeFacturacion, tipoCliente, formaPago)); }