Ejemplo n.º 1
0
        public static AfipObtenerCAEResponse ObtenerCEA(AfipObtenerCAERequest request)
        {
            Afip.Wsfev1.ServiceSoapClient serviceClient = new Afip.Wsfev1.ServiceSoapClient();

            Afip.Wsfev1.DummyResponse dummyResponse = serviceClient.FEDummy();

            Afip.Wsfev1.FECAERequest feCAERequest = new Afip.Wsfev1.FECAERequest()
            {
                FeCabReq = ObtenerCabecera(1, request.CondicionIVA, request.TipoDocumentoFiscal),
                FeDetReq = new Afip.Wsfev1.FECAEDetRequest[] { ObtenerDetalle(request) }
            };

            Afip.Wsfev1.FECAEResponse feCAEResponse = serviceClient.FECAESolicitar(ObtenerAuth(request.PasswordCertificado, request.RutaCertificado), feCAERequest);

            VerificarErrorEnRespuesta(feCAEResponse.Errors);
            VerificarObservacionesEnRespuesta(feCAEResponse);

            return(new AfipObtenerCAEResponse()
            {
                Subtotal = (decimal)feCAERequest.FeDetReq[0].ImpNeto,
                Iva = (decimal)feCAERequest.FeDetReq[0].ImpIVA,
                Total = (decimal)feCAERequest.FeDetReq[0].ImpTotal,
                NumeroComprobante = (int)feCAEResponse.FeDetResp.First().CbteDesde,
                Codigo = feCAEResponse.FeDetResp.First().CAE,
                FechaVencimiento = DateTime.ParseExact(feCAEResponse.FeDetResp.First().CAEFchVto, "yyyyMMdd", CultureInfo.InvariantCulture)
            });
        }
Ejemplo n.º 2
0
        private static void VerificarObservacionesEnRespuesta(Afip.Wsfev1.FECAEResponse CaeResponse)
        {
            List <string> errores = new List <string>();

            if (CaeResponse.FeCabResp.Resultado != APROBADO && CaeResponse.FeDetResp.Any(x => x.Observaciones.Any()))
            {
                CaeResponse.FeDetResp.ToList().ForEach(x => errores.AddRange(x.Observaciones.Select(y => $"{y.Code}: {y.Msg}")));
                throw new NegocioException(string.Join("\n", errores));
            }
        }