public override EItemVenta AgregarArticulo(EArticulo articulo, int cantidad, string codigoLeido, List<EImpuesto> impuestos, bool implementaImpuestoCompuesto, out Respuesta respuesta) { respuesta = new Respuesta(true); //Valida si la cantidad es diferente de cero. if (!EsDiferenteCero(cantidad, ref respuesta)) return null; if (cantidad < 0) { if (!EsValidoCancelarItem(articulo, cantidad, ref respuesta)) return null; } if (!EstaAbierta) { IniciarDegustacion(); } decimal valor = CalcularValor(articulo.PrecioVenta1, cantidad); EItemVenta item = new EItemVenta(articulo, cantidad, valor, tirilla.Count + 1, CalcularImpuesto(valor, articulo.Impuesto1), codigoLeido); if (cantidad > 0) { BrutoPositivo += valor; } else { BrutoNegativo += valor * -1; } TotalVenta = BrutoPositivo - BrutoNegativo; AgregarItemVenta(item); ActualizarImpuestosIncluidos(item, impuestos); return item; }
public override EItemVenta AgregarArticulo(EArticulo articulo, int cantidad, string codigoLeido, List <EImpuesto> impuestos, bool implementaImpuestoCompuesto, out Respuesta respuesta) { respuesta = new Respuesta(true); //Valida si la cantidad es diferente de cero. if (!EsDiferenteCero(cantidad, ref respuesta)) { return(null); } if (cantidad > 0) { if (!EsValidoCancelarItem(articulo, cantidad, ref respuesta)) { return(null); } } if (!EstaAbierta) { IniciarDevolucion(); } if (implementaImpuestoCompuesto) { if (!EsValidoImpuestoCompuesto(articulo, ref respuesta)) { return(null); } } else { if (!EsValidoImpuesto(articulo, impuestos, ref respuesta)) { return(null); } } decimal valor = CalcularValor(articulo.PrecioVenta1, cantidad); EItemVenta item = new EItemVenta(articulo, cantidad, valor, tirilla.Count + 1, CalcularImpuesto(valor, articulo.Impuesto1), codigoLeido); ActualizarTotales(cantidad, valor); //Manejo nuevo de impuestos if (implementaImpuestoCompuesto) { item.calcularImpuestos(cantidad); } AgregarItemVenta(item); if (implementaImpuestoCompuesto) { ActualizarImpuestosIncluidosCompuestos(item); } else { ActualizarImpuestosIncluidos(item, impuestos); } return(item); }
protected void ActualizarImpuestosIncluidos(EItemVenta item, List <EImpuesto> impuestos) { EImpuesto impuesto = impuestos.Find(x => x.Porcentaje == (float)item.Articulo.Impuesto1); if (ImpuestosIncluidos.ContainsKey(impuesto)) { ImpuestosIncluidos[impuesto][0] += item.Valor; ImpuestosIncluidos[impuesto][1] += (item.Valor - item.Impuesto); ImpuestosIncluidos[impuesto][2] += item.Impuesto; } else { ImpuestosIncluidos.Add(impuesto, new List <decimal> { item.Valor, item.Valor - item.Impuesto, item.Impuesto }); } }
public List <EItemVenta> tirillaLimpia() { List <EItemVenta> limpia = new List <EItemVenta>(); foreach (var item in this.tirilla) { EItemVenta encontrado = limpia.Where(t => t.Articulo.CodigoImpresion == item.Articulo.CodigoImpresion).FirstOrDefault(); if (encontrado != null) { encontrado.Cantidad += item.Cantidad; encontrado.Valor += item.Valor; if (encontrado.Cantidad == 0) { limpia.Remove(encontrado); } } else { limpia.Add(item.Clone() as EItemVenta); } } return(limpia); }
/// <summary> /// Genera el detalle de los impuestos del tiquete de la venta, calcula los valores para "Compra", "Base / Impuesto", "Impuesto" que serán impresos en la tirilla. /// </summary> /// <param name="item"></param> protected void ActualizarImpuestosIncluidosCompuestos(EItemVenta item) { foreach (KeyValuePair <EImpuestosArticulo, decimal> entry in item.Impuestos) { EImpuestosArticulo impuesto = ImpuestosIncluidosCompuestos.Where(d => d.Key.Id == entry.Key.Id).FirstOrDefault().Key; //impuesto = impuesto !=null? impuesto: entry.Key; decimal compra = entry.Key.TipoImpuesto == 2 ? 0 : item.Valor; decimal compraBase = entry.Key.TipoImpuesto == 2 ? 0 : (item.Valor - item.Impuesto); decimal compraI = entry.Value; if (impuesto != null) { ImpuestosIncluidosCompuestos[impuesto][0] += compra; ImpuestosIncluidosCompuestos[impuesto][1] += compraBase; ImpuestosIncluidosCompuestos[impuesto][2] += compraI; } else { ImpuestosIncluidosCompuestos.Add(entry.Key, new List <decimal> { compra, compraBase, compraI }); } } }
public void AgregarItemVenta(EItemVenta item) { tirilla.Add(item); }