public List <DocumentoRelacionado> Read_DocumentoRelacionado() { List <DocumentoRelacionado> documentoRelacionados = new List <DocumentoRelacionado>(); DataTable dataTable = readGeneralData.GetDataTable("[dbo].[Read_DocumentoRelacionado]", "@IdCabeceraDocumento", IdCabeceraDocumento); DataRow row; DocumentoRelacionado documentoRelacionado; for (int i = 0; i < dataTable.Rows.Count; i++) { row = dataTable.Rows[i]; documentoRelacionado = new DocumentoRelacionado(); documentoRelacionado.IdDocumentoRelacionado = Convert.ToInt32(row["IdDocumentoRelacionado"].ToString()); documentoRelacionado.NroDocumento = row["NroDocumento"].ToString(); if (string.IsNullOrEmpty(row["IdCat_DocRelacionados"].ToString())) { documentoRelacionado.TipoDocumentoRelacionado = "00"; } else { documentoRelacionado.TipoDocumentoRelacionado = readGeneralData.GetScalarValueSTRING("[dbo].[Query_Scalar_GetValue_TipoDocumentoRelacionado]", "@IdCat_DocRelacionados", Convert.ToInt32(row["IdCat_DocRelacionados"].ToString())); } documentoRelacionado.TipoOperacion = row["IdTipoOperacion"].ToString() ?? string.Empty; string temp = row["IdTipoDocumento"].ToString(); if (string.IsNullOrEmpty(row["IdTipoDocumento"].ToString())) { documentoRelacionado.TipoDocumento = "00"; } else { documentoRelacionado.TipoDocumento = readGeneralData.GetScalarValueSTRING("[dbo].[Query_Scalar_GetValue_TipoDocumento]", "@IdTipoDocumento", Convert.ToInt32(row["IdTipoDocumento"].ToString())); } documentoRelacionados.Add(documentoRelacionado); } return(documentoRelacionados); }
public FrmDocumentoRelacionado(DocumentoRelacionado documentoRelacionado) { InitializeComponent(); documentoRelacionadoBindingSource.DataSource = documentoRelacionado; documentoRelacionadoBindingSource.ResetBindings(false); Load += (s, e) => { using (var ctx = new OpenInvoicePeruDb()) { tipoDocumentoRelacionadoBindingSource.DataSource = ctx.TipoDocumentoRelacionados.ToList(); tipoDocumentoRelacionadoBindingSource.ResetBindings(false); } }; toolOk.Click += (s, e) => { documentoRelacionadoBindingSource.EndEdit(); DialogResult = DialogResult.OK; }; toolCancel.Click += (s, e) => DialogResult = DialogResult.Cancel; }
public PartialViewResult AgregarFacturaComplementoPago(int pagoId, int facturaEmitidaId, int numeroParcialidad, string moneda, double tipoCambio, double importeSaldoAnterior, double importePagado, double importeSaldoInsoluto) { var facturaEmitida = _db.FacturasEmitidas.Find(facturaEmitidaId); var documentoRelacionado = new DocumentoRelacionado { FacturaEmitidaId = facturaEmitida.Id, FacturaEmitida = facturaEmitida, ImportePagado = importePagado, ImporteSaldoAnterior = importeSaldoAnterior, ImporteSaldoInsoluto = importeSaldoInsoluto, NumeroParcialidad = numeroParcialidad, Moneda = (c_Moneda)Enum.Parse(typeof(c_Moneda), moneda, true), TipoCambio = tipoCambio, PagoId = pagoId, IdDocumento = facturaEmitida.Uuid, Folio = facturaEmitida.Folio.ToString(), MetodoPago = c_MetodoPago.PPD, Serie = facturaEmitida.Serie }; return(PartialView("~/Views/ComplementosPagos/FacturasDetalles.cshtml", documentoRelacionado)); }
private void btnAgregar_Click(object sender, EventArgs e) { try { Cursor.Current = Cursors.WaitCursor; switch (tbPaginas.SelectedIndex) { case 0: var detalle = new DetalleDocumento(); using (var frm = new FrmDetalleDocumento(detalle, _documento)) { if (frm.ShowDialog(this) != DialogResult.OK) { return; } _documento.Items.Add(detalle); CalcularTotales(); } break; case 1: var datoAdicional = new DatoAdicional(); using (var frm = new FrmDatosAdicionales(datoAdicional)) { if (frm.ShowDialog(this) != DialogResult.OK) { return; } _documento.DatoAdicionales.Add(datoAdicional); } break; case 2: var documentoRelacionado = new DocumentoRelacionado(); using (var frm = new FrmDocumentoRelacionado(documentoRelacionado)) { if (frm.ShowDialog(this) != DialogResult.OK) { return; } _documento.Relacionados.Add(documentoRelacionado); } break; case 3: var discrepancia = new Discrepancia(); using (var frm = new FrmDiscrepancia(discrepancia, _documento.TipoDocumento)) { if (frm.ShowDialog(this) != DialogResult.OK) { return; } _documento.Discrepancias.Add(discrepancia); } break; } } catch (Exception ex) { MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } finally { documentoElectronicoBindingSource.ResetBindings(false); Cursor.Current = Cursors.Default; } }
private async void CrearXmlFacturas(int ii) { try { string idDoc = Convert.ToString(DtDocumentos.Rows[ii]["Seriedocumento"] + "-" + DtDocumentos.Rows[ii]["NumeroDocumento"]); string vletras = Convert.ToString(DtDocumentos.Rows[ii]["letras"]); decimal vDscto = 0; string vNroDocumento = Convert.ToString(DtDocumentos.Rows[ii]["clienteID"]); string vTipoDocumento = Convert.ToString(DtDocumentos.Rows[ii]["IdentidadID"]); string vNombreLegal = Convert.ToString(DtDocumentos.Rows[ii]["ClienterazonSocial"]); DocumentoElectronico _xDocumento = new DocumentoElectronico { Emisor = CrearEmisor(DtEmpresa), Receptor = new Contribuyente { NroDocumento = vNroDocumento, TipoDocumento = vTipoDocumento, NombreLegal = vNombreLegal, }, }; _xDocumento.IdDocumento = idDoc; _xDocumento.FechaEmision = DtpFechaDoc.Value.ToString(FormatoFecha); _xDocumento.Moneda = "PEN"; _xDocumento.MontoEnLetras = vletras; _xDocumento.CalculoIgv = 18m; _xDocumento.CalculoIsc = Convert.ToDecimal(DtDocumentos.Rows[ii]["porcentajeIsc"]); _xDocumento.CalculoDetraccion = 0.00m; _xDocumento.TipoDocumento = Convert.ToString(DtDocumentos.Rows[ii]["documentoID"]); _xDocumento.TotalGravadas = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteGravado"]); _xDocumento.TotalInafectas = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteinafecto"]); _xDocumento.TotalExoneradas = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteexonerado"]); _xDocumento.TotalGratuitas = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteGratuitas"]); _xDocumento.TotalOtrosTributos = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteOtros"]); _xDocumento.TotalIsc = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteisc"]); _xDocumento.TotalIgv = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteIgv"]); _xDocumento.DescuentoGlobal = vDscto; _xDocumento.TotalVenta = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteventa"]); _xDocumento.Items = new List <DetalleDocumento>(); // nuevo 2.1 // _xDocumento.PorcentajeIgv = Convert.ToDecimal(DtDocumentos.Rows[ii]["PorcentajeIgv"]); _xDocumento.FechaRegistro = Convert.ToString(DtDocumentos.Rows[ii]["fechaRegistro"]); _xDocumento.AnexoSunat = Convert.ToString(DtDocumentos.Rows[ii]["AnexoSunat"]); _xDocumento.NroPedido = Convert.ToString(DtDocumentos.Rows[ii]["pedidonumero"]); DtArticulos = DetalleArticulos(DtDocumentos, ii); _xDocumento.TotItem = DtArticulos.Rows.Count; for (int i3 = 0; i3 <= DtArticulos.Rows.Count - 1; i3++) { _xDocumento.Items.Add(DetalleItem(DtArticulos, i3)); } string vTipoDoc = Convert.ToString(DtDocumentos.Rows[ii]["DocumentoID"]); string vNroDocumentoModifica = Convert.ToString(DtDocumentos.Rows[ii]["SeriedocumentoModifica"]) + "-" + Convert.ToString(DtDocumentos.Rows[ii]["NumeroDocumentoModifica"]); if (vTipoDoc == "08") { string vNroDocumentoModifica1 = Convert.ToString(DtDocumentos.Rows[ii]["SeriedocumentoModifica"]); } if (vTipoDoc == "07" || vTipoDoc == "08") { // nota de credito var vRelacionado = new DocumentoRelacionado { TipoDocumento = Convert.ToString(DtDocumentos.Rows[ii]["TipoDocumentoModifica"]), NroDocumento = vNroDocumentoModifica }; _xDocumento.Relacionados.Add(vRelacionado); // nota de debito var vDiscrepancia = new Discrepancia { Tipo = Convert.ToString(DtDocumentos.Rows[ii]["TipodocumentoModifica"]), NroReferencia = vNroDocumentoModifica, Descripcion = Convert.ToString(DtDocumentos.Rows[ii]["DescripcionMotivoNota"]) }; _xDocumento.Discrepancias.Add(vDiscrepancia); } string _metodoApi = ""; switch (vTipoDoc) { case "07": _metodoApi = "api/GenerarNotaCredito"; break; case "08": _metodoApi = "api/GenerarNotaDebito"; break; default: _metodoApi = "api/GenerarFactura"; break; } var response = await _client.PostAsJsonAsync(_metodoApi, _xDocumento); var respuesta = await response.Content.ReadAsAsync <DocumentoResponse>(); if (!respuesta.Exito) { throw new ApplicationException(respuesta.MensajeError); } idDoc = DtEmpresa.Rows[0]["EmpresaRuc"] + "-" + vTipoDoc; idDoc += "-" + Convert.ToString(DtDocumentos.Rows[ii]["Seriedocumento"] + "-" + DtDocumentos.Rows[ii]["NumeroDocumento"]); vArchivoXML = Path.Combine(vRutaXml, $"{idDoc}.xml"); // File.WriteAllBytes(vArchivoXML, Convert.FromBase64String(respuesta.TramaXmlSinFirma)); // return; // String vRutaXml = Convert.ToString(DtEmpresa.Rows[0]["CarpetaEnviosXml"]); var tramaXmlSinFirma = respuesta.TramaXmlSinFirma; String vRutaCertificado = Convert.ToString(DtEmpresa.Rows[0]["CarpetaCertificadoDigital"]) + Convert.ToString(DtEmpresa.Rows[0]["NombreCertificadoDigital"]); var firmadoRequest = new FirmadoRequest { TramaXmlSinFirma = tramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes(vRutaCertificado)), PasswordCertificado = Convert.ToString(DtEmpresa.Rows[0]["PasswCertificadoDigital"]), UnSoloNodoExtension = true }; var jsonFirmado = await _client.PostAsJsonAsync("api/Firmar", firmadoRequest); var respuestaFirmado = await jsonFirmado.Content.ReadAsAsync <FirmadoResponse>(); if (!respuestaFirmado.Exito) { throw new ApplicationException(respuestaFirmado.MensajeError); } vArchivoXML = Path.Combine(vRutaXml, $"{idDoc}.xml"); File.WriteAllBytes(vArchivoXML, Convert.FromBase64String(respuestaFirmado.TramaXmlFirmado)); ReemplaCaracteres(Convert.ToString(vArchivoXML)); } catch (Exception ex) { MessageBox.Show(ex.Message); txtResult.Text = txtResult.Text + ex.Message + Environment.NewLine; } }
private void DatosNDebito() { var dtsEmisor = new Contribuyente() { NroDocumento = "20525411401", TipoDocumento = "6", Direccion = "MZA. 228 LOTE. 06 ZONA INDUSTRIAL PIURA - PIURA - PIURA", Departamento = "PIURA", Provincia = "PIURA", Distrito = "PIURA", NombreLegal = "PIURAMAQ S.R.L.", NombreComercial = "", Ubigeo = "200101" }; var dtsReceptor = new Contribuyente() { NroDocumento = "10472308616", TipoDocumento = "6", NombreLegal = "MEJIA MOSCOL JUAN JOSE", NombreComercial = "", Direccion = "JR. TUMBES NRO. 100 CENTRO PIURA (A 1 CUADRA DE AV. LIBERTAD CON BOLOGNESI)" }; var dtsItems = new DetalleDocumento { Id = 1, Cantidad = 2000, UnidadMedida = "NIU", CodigoItem = "COD001", ItemClassificationCode = "82141601", Descripcion = "PRODUCTO PRUEBA", PrecioUnitario = 21.92m, PrecioReferencial = 25.86m, TipoPrecio = "01", TipoImpuesto = "10", OtroImpuesto = 0, Descuento = 0, Suma = 2000 * 21.92m, //_detalle.PrecioUnitario * _detalle.Cantidad Impuesto = (2000 * 21.92m) * _documento.CalculoIgv, //_detalle.Suma * _documento.CalculoIgv ImpuestoSelectivo = 0, //_detalle.Suma * _documento.CalculoIsc; TotalVenta = (2000 * 21.92m) - 0 //_detalle.Suma - _detalle.Descuento }; _documento.IdDocumento = "FND1-00000001"; _documento.TipoDocumento = "08"; _documento.Emisor = dtsEmisor; _documento.Receptor = dtsReceptor; _documento.FechaEmision = DateTime.Today.ToShortDateString(); _documento.Moneda = "PEN"; _documento.TipoOperacion = "0101"; //Agregamos Detalle _documento.Items.Add(dtsItems); CalcularTotales(); //Nota de Credito var dtsDocumentoRelacionado = new DocumentoRelacionado { NroDocumento = "F001-00000001", TipoDocumento = "01" }; _documento.Relacionados.Add(dtsDocumentoRelacionado); var dtsDiscrepancia = new Discrepancia { NroReferencia = "F001-00000001", Tipo = "01", Descripcion = "Nota de Debito del usuario admin" }; _documento.Discrepancias.Add(dtsDiscrepancia); }
private void DatosNCredito() { var dtsEmisor = new Contribuyente() { NroDocumento = "20561278441", TipoDocumento = "6", Direccion = "AV. TACNA NRO. 516 LAMBAYEQUE - FERREÑAFE - FERREÑAFE", Departamento = "LAMBAYEQUE", Provincia = "FERREÑAFE", Distrito = "FERREÑAFE", NombreLegal = "INVERSIONES NANDO´S CHICKEN SAC", NombreComercial = "", Ubigeo = "140201", CodDomicilioFiscal = "0000" //Código de cuatro dígitos asignado por SUNAT }; var dtsReceptor = new Contribuyente() { NroDocumento = "-", TipoDocumento = "0", NombreLegal = "TORRES LEON ERWIN STALIN", NombreComercial = "", Direccion = "PIURA - PIURA - PIURA" }; _documento.Items.Clear(); for (var i = 1; i < 3; i++) { _documento.CalculoIgv = 0.00m; var dtsItems = new DetalleDocumento { Id = i, Cantidad = 1m, UnidadMedida = "NIU", CodigoItem = "COD001" + i, //ItemClassificationCode = "82141601",// Este código será obligatorio para el 1-1-2019 - catálogo N° 15 del Anexo N° 8 - OBLIGATOIO PARA EXPORTACIONES DESDE NOVIEMBRE Descripcion = "PRODUCTO PRUEBA", PrecioUnitario = 42.3728m, //Consignar 0.00 siempre y cuando la factura sea gratuita - TipoImpuesto=21 PrecioReferencial = 50m, TipoPrecio = "01", //Se usa 02 cuando el tipo de impuesto es gratuito - Valor referencial unitario en operaciones no onerosas TipoImpuesto = "40", OtroImpuesto = 0, Descuento = 0, Suma = 42.3728m * 1m, //_detalle.PrecioUnitario * _detalle.Cantidad Impuesto = (42.3728m * 1m) * _documento.CalculoIgv, //_detalle.Suma * _documento.CalculoIgv ImpuestoSelectivo = 0, //_detalle.Suma * _documento.CalculoIsc; TotalVenta = (42.3728m * 1m) - 0 //_detalle.Suma - _detalle.Descuento }; //Agregamos Detalle _documento.Items.Add(dtsItems); } _documento.Cargos = 2.00m; _documento.IdDocumento = "FC05-00000005"; _documento.TipoDocumento = "07"; _documento.Emisor = dtsEmisor; _documento.Receptor = dtsReceptor; _documento.FechaEmision = DateTime.Today.ToShortDateString(); _documento.Moneda = "PEN"; _documento.TipoOperacion = "0200"; //_documento.Imcoterm = "FCA"; //Esto se usa para la factura de exportacion - ver listado de IMCOTERM CalcularTotales(); //Nota de Credito _documento.Relacionados.Clear(); var dtsDocumentoRelacionado = new DocumentoRelacionado { NroDocumento = "F005-00000005", TipoDocumento = "01" }; _documento.Relacionados.Add(dtsDocumentoRelacionado); _documento.Discrepancias.Clear(); var dtsDiscrepancia = new Discrepancia { NroReferencia = "F005-00000005", Tipo = "09", Descripcion = "Nota de Credito del usuario admin" }; _documento.Discrepancias.Add(dtsDiscrepancia); }
public List <ComplementoPago> Importar(string path, int sucursalId, Meses mes, bool previsualizacion) { var errores = new List <String>(); var complementosPago = new List <ComplementoPago>(); using (StreamReader archivo = File.OpenText(path)) { try { var csv = new CsvReader(archivo); var registros = new List <List <String> >(); var sucursal = _db.Sucursales.Find(sucursalId); while (csv.Read()) { var registro = new List <String>(); for (int i = 0; csv.TryGetField(i, out string value); i++) { registro.Add(value); } registros.Add(registro); } var pagos = new List <Pago>(); //var facturasEmitidas = _db.FacturasEmitidas.Where(fe => fe.EmisorId == sucursalId).ToList(); for (int i = 1; i < registros.Count(); i++) { try { var fechaPago = Convert.ToDateTime(registros[i][0]); var formaPago = ParseEnum <c_FormaPago>(registros[i][1], i); var monto = Convert.ToDouble(registros[i][2]); var moneda = ParseEnum <c_Moneda>(registros[i][3], i); var tipoCambioPago = Convert.ToDouble(registros[i][4]); var tipoCambioDocumentoRelacionado = Convert.ToDouble(registros[i][5]); var numeroOperacion = registros[i][6]; if (String.IsNullOrEmpty(numeroOperacion)) { numeroOperacion = null; } var serie = registros[i][10]; var folio = registros[i][11]; var facturaEmitida = _db.FacturasEmitidas.FirstOrDefault(fe => fe.EmisorId == sucursalId && fe.Serie == serie && fe.Folio == folio); if (facturaEmitida == null) { errores.Add(String.Format("La factura {0} - {1} no fue encontrada para el registro {2}", serie, folio, i)); continue; } //Se desorganizaron los numeros por que necesito el cliente para determinar el banco var nombreBancoOrdenante = registros[i][7]; BancoCliente bancoOrdenante = null; if (!String.IsNullOrEmpty(nombreBancoOrdenante)) { bancoOrdenante = _db.BancosClientes.FirstOrDefault(b => b.Nombre == nombreBancoOrdenante && b.Cliente.SucursalId == sucursalId && b.ClienteId == facturaEmitida.ReceptorId); if (bancoOrdenante == null) { errores.Add(String.Format("El banco {0} no fue encontrado para el registro {1}", nombreBancoOrdenante, i)); continue; } } var nombreBancoBeneficiario = registros[i][8]; BancoSucursal bancoBeneficiario = null; if (!String.IsNullOrEmpty(nombreBancoBeneficiario)) { bancoBeneficiario = _db.BancosSucursales.FirstOrDefault(b => b.Nombre == nombreBancoBeneficiario && b.SucursalId == sucursalId); if (bancoBeneficiario == null) { errores.Add(String.Format("El banco {0} no fue encontrado para el registro {1}", nombreBancoBeneficiario, i)); continue; } } var numeroParcialidad = registros[i][9]; var importePagado = String.IsNullOrEmpty(registros[i][12]) ? facturaEmitida.Total : Convert.ToDouble(registros[i][12]); var importeSaldoAnterior = String.IsNullOrEmpty(registros[i][13]) ? facturaEmitida.Total : Convert.ToDouble(registros[i][13]); var importeSaldoInsoluto = String.IsNullOrEmpty(registros[i][14]) ? 0.0 : Convert.ToDouble(registros[i][14]); #region Pagos #region Documentos Relacionados var documentoRelacionado = new DocumentoRelacionado { FacturaEmitidaId = facturaEmitida.Id, FacturaEmitida = facturaEmitida, Folio = facturaEmitida.Folio, IdDocumento = facturaEmitida.Uuid, ImportePagado = importePagado, ImporteSaldoAnterior = importeSaldoAnterior, ImporteSaldoInsoluto = importeSaldoInsoluto, MetodoPago = facturaEmitida.MetodoPago, Moneda = facturaEmitida.Moneda, NumeroParcialidad = Convert.ToInt32(String.IsNullOrEmpty(numeroParcialidad) ? "1" : numeroParcialidad), Serie = facturaEmitida.Serie, TipoCambio = tipoCambioDocumentoRelacionado }; #endregion if (pagos.Any(p => p.NumeroOperacion == numeroOperacion && p.FechaPago == fechaPago && p.Monto == monto && p.DocumentosRelacionados.Any(dr => dr.FacturaEmitida.ReceptorId == documentoRelacionado.FacturaEmitida.ReceptorId))) { pagos.First(p => p.NumeroOperacion == numeroOperacion && p.FechaPago == fechaPago && p.Monto == monto && p.DocumentosRelacionados.Any(dr => dr.FacturaEmitida.ReceptorId == documentoRelacionado.FacturaEmitida.ReceptorId)).DocumentosRelacionados.Add(documentoRelacionado); } else { var pago = new Pago { FechaPago = fechaPago, FormaPago = formaPago, Moneda = moneda, Monto = monto, NumeroOperacion = numeroOperacion, SucursalId = sucursalId, TipoCambio = tipoCambioPago }; if (bancoOrdenante != null) { pago.BancoOrdenante = bancoOrdenante; pago.BancoOrdenanteId = bancoOrdenante.Id; } if (bancoBeneficiario != null) { pago.BancoBeneficiario = bancoBeneficiario; pago.BancoBeneficiarioId = bancoBeneficiario.Id; } if (pago.DocumentosRelacionados == null) { pago.DocumentosRelacionados = new List <DocumentoRelacionado>(); } pago.DocumentosRelacionados.Add(documentoRelacionado); pagos.Add(pago); } #endregion } catch (Exception ex) { errores.Add(String.Format("No se pudo procesar el registro {0} el motivo reportado: {1} </br>", i, ex.Message)); continue; } } foreach (var pago in pagos) { var receptor = pago.DocumentosRelacionados.FirstOrDefault().FacturaEmitida.Receptor; if (receptor == null) { errores.Add(String.Format("El pago {0} no tiene documentos relacionados", pago.Desplegado)); } var complementoPago = complementosPago.FirstOrDefault(cp => cp.ReceptorId == receptor.Id); if (complementoPago == null) { complementoPago = new ComplementoPago { FechaDocumento = DateTime.Now, Generado = false, ReceptorId = receptor.Id, Receptor = receptor, Status = Status.Activo, Mes = mes, SucursalId = sucursal.Id, Sucursal = sucursal, Version = "1.0", Pagos = new List <Pago> { pago } }; complementosPago.Add(complementoPago); } else { complementoPago.Pagos.Add(pago); } } } catch (Exception ex) { errores.Add(ex.Message); } finally { archivo.Close(); archivo.Dispose(); } } if (errores.Count > 0) { throw new Exception(String.Join("|", errores)); } if (!previsualizacion) { foreach (var complementoPago in complementosPago) { _db.ComplementosPago.Add(complementoPago); try { _db.SaveChanges(); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { errores.Add(String.Format("Propiedad: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage)); } } } } //foreach (var complementoPago in complementosPago) //{ // try // { // _pagosManager.GenerarComplementoPago(sucursalId, complementoPago.ReceptorId, complementoPago.Id); // errores.Add(String.Format("Comando realizado con éxito del complemento del receptor {0} con total de montos {1:c}", complementoPago.Receptor.RazonSocial, complementoPago.Pagos.Sum(p => p.Monto))); // } // catch (Exception ex) // { // errores.Add(String.Format("Error de generación del complemento del receptor {0} con total de montos {1:c}: {2}", complementoPago.Receptor.RazonSocial, complementoPago.Pagos.Sum(p => p.Monto), ex.Message)); // } //} } return(complementosPago); }