Ejemplo n.º 1
0
        private List <AfipAlicuotaIvaRequest> ObtenerAfipAlicuotaIvaRequest(CondicionIVA condicionIVA, List <ProductoRequest> Productos, decimal PorcentajeFacturacion)
        {
            List <AfipAlicuotaIvaRequest>            alicuotasIva = new List <AfipAlicuotaIvaRequest>();
            List <IGrouping <IVA, ProductoRequest> > grupos       = Productos.GroupBy(x => x.IVA).ToList();

            foreach (IGrouping <IVA, ProductoRequest> grupo in grupos)
            {
                decimal monto = Monto.ObtenerMontoSegunTipoDeCliente(grupo.Sum(y => y.NetoTotal), grupo.Key.Valor, condicionIVA);
                alicuotasIva.Add(new AfipAlicuotaIvaRequest()
                {
                    Codigo   = grupo.Key.Id,
                    Monto    = monto,
                    IvaMonto = monto * grupo.Key.Valor
                });
            }

            return(alicuotasIva);
        }
        public ObtenerNumeroNotaCretidoResponse ObtenerNumeroNotaCretido(ObtenerNumeroNotaCretidoRequest request)
        {
            decimal subTotal = 0;
            decimal iva      = 0;

            request.Productos.ForEach(x => {
                decimal montoSinIva = Monto.ObtenerMontoSegunTipoDeCliente(x.NetoTotal, x.IVA.Valor, request.CondicionIVA);
                subTotal           += montoSinIva;
                iva += montoSinIva * x.IVA.Valor;
            });

            return(new ObtenerNumeroNotaCretidoResponse()
            {
                SubTotal = Monto.Redondeo(subTotal),
                Iva = Monto.Redondeo(iva),
                Total = Monto.Redondeo(subTotal + iva),
                NumeroNotaCredito = request.NumerosNotaCredito
            });
        }