Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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;
            }
        }
Ejemplo n.º 5
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;
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        //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);
        }
Ejemplo n.º 9
0
 public abstract EItemVenta AgregarArticulo(EArticulo articulo, int cantidad, string codigoLeido, List <EImpuesto> impuestos, bool implementaImpuestoCompuesto, out Respuesta respuesta);