private static int ObtenerNumeroComprobante(CondicionIVA condicionesIVA, TipoDocumentoFiscal tipoDocumentoFiscal, string passwordCertificado, string rutaCertificado) { try { Afip.Wsfev1.ServiceSoapClient serviceClient = new Afip.Wsfev1.ServiceSoapClient(); Afip.Wsfev1.FERecuperaLastCbteResponse response = serviceClient.FECompUltimoAutorizado(ObtenerAuth(passwordCertificado, rutaCertificado), PUNTO_VENTA, ObtenerTipoComprobante(condicionesIVA, tipoDocumentoFiscal)); VerificarErrorEnRespuesta(response.Errors); return(response.CbteNro + 1); } catch (Exception ex) { throw new NegocioException($"Error al realizar la facturación. No se pudo obtener el numero de factura.", ex); } }
private static int ObtenerTipoComprobante(CondicionIVA condicionIVA, TipoDocumentoFiscal tipoDocumentoFiscal) { if (CONDICION_IVA == CondicionIVA.Monotributo) { switch (tipoDocumentoFiscal) { case TipoDocumentoFiscal.Factura: return(FACTURA_C); case TipoDocumentoFiscal.NotaCredito: return(NOTA_CREDITO_C); default: throw new NegocioException($"Error al realizar la facturación. No se ha podido determinar un tipo de comprobante para el documento fiscal {tipoDocumentoFiscal}."); } ; } else { switch (condicionIVA) { case CondicionIVA.Responsable_Inscripto when tipoDocumentoFiscal == TipoDocumentoFiscal.Factura: return(FACTURA_A); case CondicionIVA.Responsable_Inscripto when tipoDocumentoFiscal == TipoDocumentoFiscal.NotaCredito: return(NOTA_CREDITO_A); case CondicionIVA.Consumidor_Final when tipoDocumentoFiscal == TipoDocumentoFiscal.Factura: case CondicionIVA.Monotributo when tipoDocumentoFiscal == TipoDocumentoFiscal.Factura: case CondicionIVA.Exento when tipoDocumentoFiscal == TipoDocumentoFiscal.Factura: return(FACTURA_B); case CondicionIVA.Consumidor_Final when tipoDocumentoFiscal == TipoDocumentoFiscal.NotaCredito: case CondicionIVA.Monotributo when tipoDocumentoFiscal == TipoDocumentoFiscal.NotaCredito: case CondicionIVA.Exento when tipoDocumentoFiscal == TipoDocumentoFiscal.NotaCredito: return(NOTA_CREDITO_B); default: throw new NegocioException($"Error al realizar la facturación. No se ha podido determinar un tipo de comprobante para el tipo de cliente {condicionIVA} y documento fiscal {tipoDocumentoFiscal}."); } ; } }
private static Afip.Wsfev1.FECAECabRequest ObtenerCabecera(int cantidadRegistros, CondicionIVA condicionIVA, TipoDocumentoFiscal tipoDocumentoFiscal) => new Afip.Wsfev1.FECAECabRequest() { CantReg = cantidadRegistros, CbteTipo = ObtenerTipoComprobante(condicionIVA, tipoDocumentoFiscal), PtoVta = PUNTO_VENTA };
private static CbteAsoc[] ObtenerComprobanteAsociado(CondicionIVA condicionIVA, TipoDocumentoFiscal tipoDocumentoFiscal, int puntoVentaOrigen, int numeroConprobanteOrigen) { if (tipoDocumentoFiscal == TipoDocumentoFiscal.NotaCredito) { return(new CbteAsoc[] { new CbteAsoc { Tipo = ObtenerTipoComprobante(condicionIVA, TipoDocumentoFiscal.Factura), PtoVta = puntoVentaOrigen, Nro = numeroConprobanteOrigen } }); } else { return(null); } }