Esempio n. 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult resp = MessageBox.Show($"Esta seguro que desea realizar el abono por el MONTO: {txtAbono.Text} al CLIENTE: { txtIdCliente.Text}-{txtCliente.Text }", "Aplicar abono", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (resp == DialogResult.Yes)
                {
                    docsModificados.Clear();
                    if (Utility.isNumeroDecimal(txtAbono.Text) && txtAbono.Text != string.Empty)
                    {
                        decimal montoAdeudado = decimal.Parse(txtAdeudado.Text);
                        decimal montoAbono    = decimal.Parse(txtAbono.Text);

                        if ((montoAdeudado - montoAbono) >= 0)
                        {
                            foreach (tbDocumento doc in docsGlobal)
                            {
                                abonosModificados.Clear();
                                decimal abono        = (decimal)doc.tbAbonos.Sum(x => x.monto);
                                decimal totalFact    = (decimal)doc.tbDetalleDocumento.Sum(x => x.totalLinea);
                                decimal adeudadoFact = 0;

                                //calculo el total adeudado actual
                                adeudadoFact = totalFact - abono;


                                tbAbonos abonoE = new tbAbonos();
                                abonoE.idDoc           = doc.id;
                                abonoE.tipoDoc         = doc.tipoDocumento;
                                abonoE.estado          = true;
                                abonoE.fecha_crea      = Utility.getDate();
                                abonoE.fecha_ult_mod   = Utility.getDate();
                                abonoE.usuario_crea    = Global.Usuario.nombreUsuario.Trim().ToUpper(); // Global.Usuario.nombreUsuario;
                                abonoE.usuario_ult_mod = Global.Usuario.nombreUsuario.Trim().ToUpper(); // Global.Usuario.nombreUsuario;

                                //verifica si el abono es mayor a lo adeudado, para poner en 0 y cancelar la factura
                                if (montoAbono >= adeudadoFact)
                                {
                                    abonoE.monto        = adeudadoFact;
                                    doc.estadoFactura   = (int)Enums.EstadoFactura.Cancelada;
                                    doc.fecha_ult_mod   = Utility.getDate();
                                    doc.usuario_ult_mod = Global.Usuario.nombreUsuario.Trim().ToUpper();   // Global.Usuario.nombreUsuario;
                                }
                                else
                                {
                                    //sino abona lo indicado
                                    abonoE.monto = montoAbono;
                                }
                                abonosModificados.Add(abonoE);
                                doc.tbAbonos.Add(abonoE);
                                docsModificados.Add(doc);

                                montoAdeudado -= (decimal)abonoE.monto;
                                montoAbono    -= (decimal)abonoE.monto;
                                if (montoAbono <= 0)
                                {
                                    break;
                                }
                            }
                            if (docsModificados.Count() != 0)
                            {
                                facturacionB.guadarFacturaAbonos(docsModificados);
                                MessageBox.Show("Datos guardados correctamente.", "Guardar", MessageBoxButtons.OK, MessageBoxIcon.Information);

                                txtAbono.Text     = string.Empty;
                                txtFacturado.Text = string.Empty;
                                txtPendiente.Text = string.Empty;
                                chkTodos.Checked  = false;
                                cargarDatosCliente();
                                if (chkImprimir.Checked)
                                {
                                    clsImpresionFactura imprimir = new clsImpresionFactura(docsModificados, clienteGlobal, Global.Usuario.tbEmpresa, decimal.Parse(txtAdeudado.Text));
                                    imprimir.print();
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show("Se esta abonando más de lo adeudado", "Error de monto ", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                        }
                    }
                    else
                    {
                        MessageBox.Show("El dato de abono es incorrecto, favor verifique.", "Error de datos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Se produjo un error al realizar el abono, vuelva a intentarlo.", "Error al realizar el abono", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }