public ObtenerNumeroNotaCretidoResponse ObtenerNumeroNotaCretido(ObtenerNumeroNotaCretidoRequest request)
        {
            using (EpsonPrinter epsonFP = new EpsonPrinter(request.TipoCliente, request.CondicionIVA, request.PorcentajeFacturacion, request.NombreYApellido, request.Direccion, request.Localidad, request.Cuit, request.NumeroFacturaOrigen.ToString(), request.PuntoVentaOrigen.ToString(), request.CondicionIVAOriginal))
            {
                //pongo primer los productos con monto positibo y luego con monto negativo porque la controladora no puede operar con mantos negativos
                List <ProductoTicketRequest> productos = request.Productos
                                                         .Where(x => x.Cantidad >= 0)
                                                         .Select(x => new ProductoTicketRequest(x.Codigo, x.Nombre, x.Cantidad, x.MontoUnitario, x.DescuentoUnitario, x.CFTUnitario, x.IVA.Valor)).ToList();

                productos.AddRange(
                    request.Productos
                    .Where(x => x.Cantidad < 0)
                    .Select(x => new ProductoTicketRequest(x.Codigo, x.Nombre, x.Cantidad, x.MontoUnitario, x.DescuentoUnitario, x.CFTUnitario, x.IVA.Valor)).ToList());

                List <PagoTicketRequest> pagos = request.Pagos.Select(x => new PagoTicketRequest(x.TipoPago, x.NumeroCuotas, x.Monto, x.Descuento, x.CFT, x.IVA)).ToList();

                string  TipoFactura   = string.Empty;
                decimal MontoTotal    = 0;
                decimal MontoIvaTotal = 0;
                decimal MontoVuelto   = 0;

                int numeroNotaCredito = epsonFP.ObtenerNumeroNotaCretido(productos, pagos, out TipoFactura, out MontoTotal, out MontoIvaTotal, out MontoVuelto);

                return(new ObtenerNumeroNotaCretidoResponse()
                {
                    SubTotal = MontoTotal - MontoIvaTotal,
                    Iva = MontoIvaTotal,
                    Total = MontoTotal,
                    NumeroNotaCredito = new List <int>()
                    {
                        numeroNotaCredito
                    }
                });
            }
        }
        public ObtenerNumeroNotaCretidoResponse ObtenerNumeroNotaCretido(ObtenerNumeroNotaCretidoRequest request)
        {
            List <AfipAlicuotaIvaRequest> alicuotasIva = ObtenerAfipAlicuotaIvaRequest(request.CondicionIVA, request.Productos, request.PorcentajeFacturacion);

            AfipObtenerCAERequest afipObtenerCAERequest = new AfipObtenerCAERequest()
            {
                TipoDocumentoFiscal = TipoDocumentoFiscal.NotaCredito,
                TipoCliente         = request.TipoCliente,
                CondicionIVA        = request.CondicionIVA,
                Cuit                = request.Cuit,
                ImporteNeto         = alicuotasIva.Sum(x => x.Monto),
                AlicuotasIva        = alicuotasIva,
                NumeroFacturaOrigen = request.NumeroFacturaOrigen,
                PuntoVentaOrigen    = request.NumeroFacturaOrigen,
                PasswordCertificado = PasswordCertificado,
                RutaCertificado     = RutaCertificado
            };

            AfipObtenerCAEResponse response = AfipFacturacionElectronicaService.ObtenerCEA(afipObtenerCAERequest);

            return(new ObtenerNumeroNotaCretidoResponse()
            {
                SubTotal = response.Subtotal,
                Iva = response.Iva,
                Total = response.Total,
                CAE = response.Codigo,
                FechaVencimientoCAE = response.FechaVencimiento,
                NumeroNotaCredito = new List <int>()
                {
                    response.NumeroComprobante
                }
            });
        }
        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
            });
        }
示例#4
0
 public ObtenerNumeroNotaCretidoResponse ObtenerNumeroNotaCretido(ObtenerNumeroNotaCretidoRequest request)
 {
     return(notaCreditoStrategy.ObtenerNumeroNotaCretido(request));
 }