/// <summary> /// Factura: Actualiza los datos del modelo /// con los datos actuales de la vista. /// </summary> private void BindModelFactura() { // Chequear datos if (!DateTime.TryParse(txIssueDate.Text, out DateTime issueDate)) { string _msg = "Debe introducir una fecha correcta"; MessageBox.Show(_msg, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); txIssueDate.Focus(); return; } if (string.IsNullOrEmpty(txAcreedorTaxIdentificationNumber.Text)) { string _msg = "Debe introducir un NIF de Acreedor"; MessageBox.Show(_msg, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); txAcreedorTaxIdentificationNumber.Focus(); return; } if (!string.IsNullOrEmpty(txCountry.Text)) { _FacturaEnCurso.CountryCode = txCountry.Text; } _FacturaEnCurso.InvoiceNumber = txInvoiceNumber.Text; _FacturaEnCurso.IssueDate = Convert.ToDateTime(issueDate); _FacturaEnCurso.APInvoicePayments.Clear(); foreach (DataGridViewRow row in grdPagos.Rows) { APInvoicePayment PagoFact = new APInvoicePayment(); if (row.Cells[0].Value != null) { PagoFact.PaymentDate = Convert.ToDateTime(row.Cells[0].Value); PagoFact.PaymentAmount = ToAmount(row.Cells[1].Value); if (!Enum.TryParse <PaymentTerms>(row.Cells[2].Value.ToString(), out PaymentTerms tipoCobro)) { string _msg = ($"El tipo de cobro {row.Cells[2].Value} es deconocido."); MessageBox.Show(_msg, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); } PagoFact.PaymentTerm = tipoCobro; _FacturaEnCurso.APInvoicePayments.Add(PagoFact); } } // Acreedor BindModelAcreedor(); }
/// <summary> /// Constructor clase ARInvoicesPaymentsBatch. /// </summary> /// <param name="suministroLRPagosRecibidas">Objeto de serialización xml para /// suministro de facturas emitidas.</param> public APInvoicesPaymentsBatch(SuministroLRPagosRecibidas suministroLRPagosRecibidas) { APInvoices = new List <APInvoice>(); Titular = new Party() { TaxIdentificationNumber = suministroLRPagosRecibidas.Cabecera.Titular.NIF, PartyName = suministroLRPagosRecibidas.Cabecera.Titular.NombreRazon }; foreach (var invoice in suministroLRPagosRecibidas.RegistroLRPagos) { APInvoice facturaWrk = new APInvoice(); facturaWrk.InvoiceNumber = invoice.IDFactura.NumSerieFacturaEmisor; facturaWrk.IssueDate = Convert.ToDateTime(invoice.IDFactura.FechaExpedicionFacturaEmisor); facturaWrk.BuyerParty = Titular; Party Emisor = new Party() { PartyName = invoice.IDFactura.IDEmisorFactura.NombreRazon, TaxIdentificationNumber = invoice.IDFactura.IDEmisorFactura.NIF }; facturaWrk.SellerParty = Emisor; if (invoice.IDFactura.IDEmisorFactura.IDOtro != null) { facturaWrk.CountryCode = invoice.IDFactura.IDEmisorFactura.IDOtro.CodigoPais; facturaWrk.SellerParty.TaxIdentificationNumber = invoice.IDFactura.IDEmisorFactura.IDOtro.ID; } foreach (var pagos in invoice.Pagos) { APInvoicePayment pagoWrk = new APInvoicePayment(); pagoWrk.PaymentDate = Convert.ToDateTime(pagos.Fecha); pagoWrk.PaymentAmount = Convert.ToDecimal(pagos.Importe, Settings.DefaultNumberFormatInfo); PaymentTerms tipoPago; if (!Enum.TryParse <PaymentTerms>(pagos.Medio, out tipoPago)) { throw new InvalidOperationException($"Unknown payment term {pagos.Medio}"); } pagoWrk.PaymentTerm = tipoPago; facturaWrk.APInvoicePayments.Add(pagoWrk); } APInvoices.Add(facturaWrk); } }