示例#1
0
        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);
            }
        }
示例#2
0
        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}.");
                }
                ;
            }
        }
示例#3
0
 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
 };
示例#4
0
 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);
     }
 }