protected bool EsValidoCancelarItem(EArticulo articulo, int cantidad, ref Respuesta respuesta) { bool esValido = true; int total = tirilla.Where(t => t.Articulo.Equals(articulo)).Sum(a => a.Cantidad); if (Math.Abs(cantidad) > Math.Abs(total)) { log.Info("[ValidarCancelarItem.2]: Cantidad a cancelar mayor a la de la tirilla."); respuesta.Mensaje = "La cantidad a cancelar no es válida"; respuesta.Valida = false; esValido = false; } else if (((Math.Abs(total) - Math.Abs(cantidad)) < 0) || !EstaAbierta) { log.Info("[ValidarCancelarItem]: Cantidad a cancelar mayor a la de la tirilla."); respuesta.Valida = false; if (total == 0) { respuesta.Mensaje = "El articulo a cancelar no se encuentra en la tirilla."; } else { respuesta.Mensaje = "La cantidad a cancelar no es valida."; } esValido = false; } return(esValido); }
protected bool EsValidoImpuesto(EArticulo articulo, List <EImpuesto> impuestos, ref Respuesta respuesta) { var ans = true; //todo: incluir try cath para todo el método var impuestosFind = (from i in impuestos where i.Porcentaje == (float)articulo.Impuesto1 select i).ToList(); if (!impuestosFind.IsNullOrEmptyList()) { if (impuestosFind.Count > 1) { log.Warn("[EsValidoImpuesto]: Impuesto invalido."); // respuesta.Valida = false; respuesta.Mensaje = $"Se encontró varios impuestos configurados con porcentaje {articulo.Impuesto1}."; ans = false; } } else { log.Warn("[EsValidoImpuesto]: Impuesto invalido."); // respuesta.Valida = false; respuesta.Mensaje = "Valor del impuesto del artículo no ha sido definido."; ans = false; } return(ans); }
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; }
private void impuestoValidoVentaEspecial(EArticulo articulo, List <EImpuesto> impuestos) { EImpuesto impuesto = impuestos.Find(x => x.Porcentaje == (float)articulo.Impuesto1); if ((!this.TipoVentaEspecial.ManejaImpto1 && impuesto.Orden == 1) || (!this.TipoVentaEspecial.ManejaImpto2 && impuesto.Orden == 2) || (!this.TipoVentaEspecial.ManejaImpto3 && impuesto.Orden == 3) || (!this.TipoVentaEspecial.ManejaImpto4 && impuesto.Orden == 4) || (!this.TipoVentaEspecial.ManejaImpto5 && impuesto.Orden == 5) || (!this.TipoVentaEspecial.ManejaImpto6 && impuesto.Orden == 6)) { articulo.Impuesto1 = 0; } }
public EItemVenta(EArticulo articulo, int cantidad, decimal valor, int consecutivo, decimal impuesto, string codigoLeido) { Articulo = articulo; CodigoLeido = codigoLeido; Peso = 0; Consecutivo = consecutivo; Impuesto = impuesto; Cantidad = cantidad; Valor = valor; }
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 bool EsValidoImpuestoCompuesto(EArticulo articulo, ref Respuesta respuesta) { var ans = true; if (articulo.Impuestos.IsNullOrEmptyList()) { log.Warn("[EsValidoImpuestoCompuesto]: Articulo no tiene impuestos definidos."); // respuesta.Valida = false; respuesta.Mensaje = "El artículo no tiene impuestos definidos."; ans = false; } return(ans); }
//public int Numero { get; private set; } = 0; //public decimal Total { get; private set; } = 0; //public ETipoAjuste Tipo { get; private set; } //protected List<EItemVenta> tirilla { get; private set; } = new List<EItemVenta>(); protected new bool EsValidoCancelarItem(EArticulo articulo, int cantidad, ref Respuesta respuesta) { bool esValido = true; int total = tirilla.Where(t => t.Articulo.Equals(articulo)).Sum(a => a.Cantidad); if ((Math.Abs(total) - Math.Abs(cantidad)) < 0) { log.Info("[ValidarCancelarItem]: Cantidad a cancelar mayor a la de la tirilla."); respuesta.Valida = false; respuesta.Mensaje = "La cantidad a cancelar no es valida"; esValido = false; } return(esValido); }
public abstract EItemVenta AgregarArticulo(EArticulo articulo, int cantidad, string codigoLeido, List <EImpuesto> impuestos, bool implementaImpuestoCompuesto, out Respuesta respuesta);