private async Task <FECAEResponse.FECAEDetResponse> GetComprobanteProd(ElectronicInvoiceProd.FECAESolicitarResponse input, ElectronicInvoiceProd.FEAuthRequest _auth, ElectronicInvoiceProd.ServiceSoapClient soapClient, FECAERequestInfo requestInfo, ElectronicInvoiceProd.FECAEDetResponse x, FECAEResponse.FECAECabResponse feCaeCabResponse) { var result = _mapper.Map <ElectronicInvoiceProd.FECAEDetResponse, FECAEResponse.FECAEDetResponse>(x); if (feCaeCabResponse.Resultado == "A") { if (input.Body.FECAESolicitarResult.FeDetResp.Count() == 1) { result.ImpTotal = Convert.ToDouble(requestInfo.Invoices.Sum()); } else { var consultar = new ElectronicInvoiceProd.FECompConsultaReq { CbteNro = x.CbteDesde, CbteTipo = feCaeCabResponse.CbteTipo, PtoVta = feCaeCabResponse.PtoVta }; try { var comprobate = await soapClient.FECompConsultarAsync(_auth, consultar); result.ImpTotal = comprobate.Body.FECompConsultarResult.ResultGet.ImpTotal; } catch { } } } return(result); }
private async Task <FECAEResponse> ParseFeCaeResponseAsync(ElectronicInvoiceProd.FECAESolicitarResponse input, ElectronicInvoiceProd.FEAuthRequest _auth, ElectronicInvoiceProd.ServiceSoapClient soapClient, FECAERequestInfo requestInfo) { var errs = input.Body.FECAESolicitarResult.Errors?.Select(x => _mapper.Map <ElectronicInvoiceProd.Err, FECAEResponse.CodeMessage>(x)); var events = input.Body.FECAESolicitarResult.Events?.Select(x => _mapper.Map <ElectronicInvoiceProd.Evt, FECAEResponse.CodeMessage>(x)); var feCaeCabResponse = _mapper.Map <ElectronicInvoiceProd.FECAECabResponse, FECAEResponse.FECAECabResponse>(input.Body.FECAESolicitarResult.FeCabResp); var feDetResp = await Task.WhenAll(input.Body.FECAESolicitarResult.FeDetResp?.Select(x => GetComprobanteProd(input, _auth, soapClient, requestInfo, x, feCaeCabResponse))); return(new FECAEResponse(errs, events, feCaeCabResponse, feDetResp)); }