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) }); }
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)); } }