private void btnAbonar_Click(object sender, EventArgs e) { try { if (Convert.ToDouble(txtDevuelta.Text) >= 0 && txtAbonar.Text != "0") //comprueba que devuelta sea mayor o igual a cero y que se haya introducido un monto a pagar { using (TransactionScope transact = new TransactionScope()) //uso de una transaccion por si algo falla { PagoDeudaTableAdapter adapterDeu = new PagoDeudaTableAdapter(); //objeto para usar los querys de tblPagoDeuda int idCliente = Convert.ToInt32(txtId.Text); //se almacena el id del cliente en una variable int decimal abono = Convert.ToDecimal(txtAbonar.Text); //se almacena la cantidad a abonar en una variable decimal adapterDeu.InsertarPD(idCliente, usuario.Id, DateTime.Now, MontoDebe, abono); //se inserta en tblPagoDeuda el cliente que realizó el pago, el usuario que lo atendió, la fecha, el monto que debía y el monto abonado adapterCli.ActualizarMontoC(idCliente, MontoDebe - abono); //se actualiza el monto que debe el cliente foreach (DataGridViewRow fila in dgvFacturas.Rows) //recorre cada fila del datagridview facturas { if (abono > 0) //si la cantidad a abonar es mayor a 0 { decimal deuda = Convert.ToDecimal(fila.Cells["clmAPagar"].Value.ToString()); //se almacena el valor de la deuda de la factura decimal pagado = Convert.ToDecimal(fila.Cells["clmPagado"].Value.ToString()); //se almacena el valor que se ha pagado de la factura int idFactura = Convert.ToInt32(fila.Cells["IdFactura"].Value.ToString()); //se almacena el id de la factura if (abono >= deuda) //si la cantidad a abonar es mayor o igual a la cantidad que se tiene de deuda de la factura { adapterFac.ActualizarPagoDeFac(deuda + pagado, idFactura, idCliente); //se actualiza el pago de la factura a lo mismo que se tenia que pagar abono -= deuda; //resta la cantidad que se pagó de esa factura a la cantidad a abonar } else//si abono es menor a la deuda { adapterFac.ActualizarPagoDeFac(pagado + abono, idFactura, idCliente); //se actualiza el pago de la factura agregando la cantidad a abonar restante abono = 0; //cantidad a abonar se queda en 0 } } else//si no hay mas que abonar { break;//se sale del recorrido de filass } } MessageBox.Show($"Abonado: RD$ {txtAbonar.Text} al cliente {cboNombre.Text}", "Pago de deuda", MessageBoxButtons.OK, MessageBoxIcon.Information); //notifica al usuario que se abonó al cliente por un mensaje log.Info($"El cliente con el id {idCliente} pagó un monto de {txtAbonar.Text} de una deuda total de {MontoDebe} atendido por el usuario {usuario.Nombre} {usuario.Apellidos}"); //registra que se realizó un pago de deuda al cliente _menu.CargarDashboard(); LimpiarTodo(); //se limpia todo transact.Complete(); //indica que se completó la transaccion } } else//si el dinero ingresado para pagar no es el suficiente { MessageBox.Show("Dinero pagado insuficiente", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);//notifica al usuario que la cantidad que ingresó para pagar no es la suficiente txtPagado.Focus();//hace focus en el textbox pagado } } catch (Exception error) { log.Error($"Error: {error.Message}", error); MessageBox.Show($"Error: {error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void ReporteDelDia_Load(object sender, EventArgs e) { try { lblReporteDelDia.Text += $": {DateTime.Today.ToString("dd/MM/yyyy")}"; //se coloca en el label reportedeldia el dia que tiene el sistema lblFechaPequena.Text = $"{DateTime.Today.ToString("dddd")}, {DateTime.Today.ToString("dd")} de {DateTime.Today.ToString("MMMM")} del año {DateTime.Today.ToString("yyyy")}"; //coloca de forma extendida en la fecha que tiene el sistema FacturasCajTableAdapter adapterFac = new FacturasCajTableAdapter(); //objeto para utilizar querys de tblFactura relacionada con tblUsuario y tblCliente FacturasCajDataTable dataFac = adapterFac.BuscarFacConCajeroHoy(DateTime.Today); //objeto para almacenar las facturas hechas hoy decimal totalVentas = 0, totalDeuda = 0, totalPagado = 0; ushort contDeudas = 0; foreach (FacturasCajRow facturas in dataFac) //se recorre cada factura de hoy { DetalleProTableAdapter adapterDet = new DetalleProTableAdapter(); //objeto para utilizar los querys de tblFacturaD DetalleProDataTable dataDet = adapterDet.DetallePorIdFacConProd(facturas.IdFactura); //objeto almacenar el detalle de las facturas foreach (DetalleProRow detalles in dataDet) //objeto para recorrer cada detalle de la factura { decimal itbis = detalles.ITBIS; //se almacena el itbis // double ITBIS = Convert.ToDouble(detalles.Precio * detalles.Cantidad) * 0.18;//calcula y almacena el itbis //ITBIS = Math.Round(ITBIS, 2);//redondea el itbis decimal importe = detalles.Precio * detalles.Cantidad + itbis; //se calcula el importe importe = Math.Round(importe, 2); //se redondea hacia arriba el importe con dos decimales dgvDetalles.Rows.Add(facturas.Cajero, facturas.IdFactura, detalles.Descripcion, detalles.Precio, detalles.Cantidad, itbis, detalles.Descuento, importe - detalles.Descuento); //se ingresa cada detalle en el dgvDetalles } totalVentas += facturas.TotalGeneral; //almacena el valor de total de cada factura y se va sumando al total de ventas del dia if (facturas.Pago < facturas.TotalGeneral) //si la cantidad pagada es menor que el total de la factura (si no se ha terminado de pagar la factura) { decimal deudaHoy = facturas.Pago - facturas.TotalGeneral; //se almacena la cantidad por pagar deudaHoy *= -1; //se pone positiva el valor de la deuda dgvDeudas.Rows.Add(facturas.Cajero, facturas.NomCliente, deudaHoy.ToString(), facturas.MontoDebe); //se añade la factura en el datagridview de deudas totalDeuda += deudaHoy; //se suma el valor de la deuda al total de deudas del dia contDeudas++; //se suma uno a la cantidad de deudas } } PagoDeudaTableAdapter adapterPaD = new PagoDeudaTableAdapter(); //objeto para utilizar los querys de tblPagoDeuda PagoDeudaDataTable dataPaD = adapterPaD.BuscarHoyPD(DateTime.Today); //se buscan los pagos que se pagaron de deuda foreach (PagoDeudaRow item in dataPaD) //recorre cada pago de deuda { dgvPagoDeudas.Rows.Add(item.NomCliente, item.DeudaAnterior, item.Abono, item.DeudaActual); //se inserta la deuda en el datagridview pagodeudas totalPagado += item.Abono; //se suma al total pagado la cantidad que se abonó en este pago de deuda } txtTotalVentas.Text = totalVentas.ToString(); //se coloca el el total que se generaron de ventas en el textbox ventas txtDeudas.Text = totalDeuda.ToString(); //se coloca el total de deudas generadas en el textbox deudas txtAbonos.Text = totalPagado.ToString(); //se coloca el total abonado en el textbox total abonado txtNumVentas.Text = dataFac.Rows.Count.ToString(); //se coloca el numero de ventas en el textbox numventas txtNumDeudas.Text = contDeudas.ToString(); //se coloca el numero de deudas en el textbox numdeudas txtNumAbonos.Text = dataPaD.Rows.Count.ToString(); //se coloca el numero de pago de deudas en el textbox numabonos txtTotal.Text = (totalVentas - totalDeuda).ToString(); //se coloca el total generado del dia en el textbox total } catch (Exception error) { log.Error($"Error: {error.Message}", error); MessageBox.Show($"Error: {error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void GenerarReporte(DateTime FechaInicio, DateTime FechaFin) { try { FacturasCajTableAdapter adapterFac = new FacturasCajTableAdapter(); FacturasCajDataTable dataFac = adapterFac.BuscarFacConCajEntreFechas(FechaInicio, fechaFin); decimal totalVentas = 0, totalDeuda = 0, totalPagado = 0; ushort contDeudas = 0; foreach (FacturasCajRow facturas in dataFac) { DetalleProTableAdapter adapterDet = new DetalleProTableAdapter(); DetalleProDataTable dataDet = adapterDet.DetallePorIdFacConProd(facturas.IdFactura); foreach (DetalleProRow detalles in dataDet) { double ITBIS = Convert.ToDouble(detalles.Precio * detalles.Cantidad) * 0.18; ITBIS = Math.Round(ITBIS, 2); double importe = Convert.ToDouble(detalles.Precio * detalles.Cantidad) + ITBIS; importe = Math.Round(importe, 2); dgvDetalles.Rows.Add(facturas.Cajero, facturas.IdFactura, detalles.Descripcion, detalles.Precio, detalles.Cantidad, ITBIS, detalles.Descuento, importe - Convert.ToDouble(detalles.Descuento)); } totalVentas += facturas.TotalGeneral; if (facturas.Pago < facturas.TotalGeneral) { decimal deudaHoy = facturas.Pago - facturas.TotalGeneral; deudaHoy *= -1; dgvDeudas.Rows.Add(facturas.Cajero, facturas.NomCliente, deudaHoy.ToString(), facturas.MontoDebe); totalDeuda += deudaHoy; contDeudas++; } } PagoDeudaTableAdapter adapterPaD = new PagoDeudaTableAdapter(); PagoDeudaDataTable dataPaD = adapterPaD.BuscarEntreFechasPD(FechaInicio, fechaFin); foreach (PagoDeudaRow item in dataPaD) { dgvPagoDeudas.Rows.Add(item.NomCliente, item.DeudaAnterior, item.Abono, item.DeudaActual); totalPagado += (decimal)item.Abono; } txtTotalVentas.Text = totalVentas.ToString(); txtDeudas.Text = totalDeuda.ToString(); txtAbonos.Text = totalPagado.ToString(); txtNumVentas.Text = dataFac.Rows.Count.ToString(); txtNumDeudas.Text = contDeudas.ToString(); txtNumAbonos.Text = dataPaD.Rows.Count.ToString(); txtTotal.Text = (totalVentas - totalDeuda).ToString(); } catch (Exception error) { log.Error($"Error: {error.Message}", error); MessageBox.Show($"Error: {error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }