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 }); }
public ObtenerNumeroNotaCretidoResponse ObtenerNumeroNotaCretido(ObtenerNumeroNotaCretidoRequest request) { return(notaCreditoStrategy.ObtenerNumeroNotaCretido(request)); }