示例#1
0
        /// <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();
        }
示例#2
0
        /// <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);
            }
        }