/***************PAGO EN REALES**************************/ private void CobrarRsCaja() { modSesion modSesion = new modSesion(); if (txtpagors.Text != "") { try { decimal pago; pago = modSesion.convertirDecimal(txtpagors.Text); // se convierte a decimal valor de la caja de texto saldoPrincipal = saldoPrincipal + pagoRs; // suma pagoRs al saldoPrincipal antes de aplicar nuevo pago en Rs if (modSesion.config_moneda == "US") { pagoRs = pago / cotRs; // se convierte nuevo monto a pagar en la moneda principal del sistema } else if (modSesion.config_moneda == "GS") { pagoRs = pago * cotRs; // se convierte nuevo monto a pagar en la moneda principal del sistema } saldoPrincipal = saldoPrincipal - pagoRs; // se resta pagoRs al saldo principal del sistema txtpagors.Text = Convert.ToString(modSesion.mascaraCotizacion(pago)); // se aplica mascara a la caja de texto mostrarSaldoCobrar(); // se recalcula saldoPrincipal en las distintas monedas } catch (Exception ex) { // se limpia caja de texto en caso de ingresar letras en el pago MessageBox.Show(ex.Message); txtpagors.Text = Convert.ToString(modSesion.mascaraCotizacion("0")); txtpagors.Focus(); } } else { // se aplica mascara en caso de que se quede vacio el pago txtpagors.Text = Convert.ToString(modSesion.mascaraCotizacion("0")); } }
/**********VUELTO EN EUROS**********/ public void vueltoEuros() { modSesion modSesion = new modSesion(); if (txtvueltoCr.Text != "") { try { decimal vuelto; vuelto = modSesion.convertirDecimal(txtvueltoCr.Text); // se convierte a decimal valor de la caja de texto saldoPrincipal = saldoPrincipal - vueltoCr; // resta vueltors al saldoPrincipal antes de aplicar nuevo vuelto en cr if (modSesion.config_moneda == "US") { vueltoCr = vuelto / cotCr; // se convierte nuevo monto vuelto en la moneda principal del sistema } else if (modSesion.config_moneda == "GS") { vueltoCr = vuelto * cotCr; // se convierte nuevo monto vuelto en la moneda principal del sistema } saldoPrincipal = saldoPrincipal + vueltoCr; // se suma vuelto al saldo principal del sistema (Saldo Negativo) txtvueltoCr.Text = Convert.ToString(modSesion.mascaraCotizacion(vuelto)); // se aplica mascara a la caja de texto mostrarSaldoCobrar(); // se recalcula saldoPrincipal en las distintas monedas } catch (Exception ex) { // se limpia caja de texto en caso de ingresar letras en el vuelto MessageBox.Show(ex.Message); txtvueltoCr.Focus(); txtvueltoCr.Text = Convert.ToString(modSesion.mascaraCotizacion("0")); } } else { // se aplica mascara en caso de que se quede vacio el pago txtvueltoCr.Text = Convert.ToString(modSesion.mascaraCotizacion("0")); } }
/*************METODOS PARA EL INSERT DE LA CAJA**************/ public void cobrarVenta() { modSesion modSesion = new modSesion(); modUsuario modUsuario = new modUsuario(); frmComprobante frmComprobante = new frmComprobante(txtId_operacion.Text); if (Math.Round(saldoPrincipal, 2) != 0) { MessageBox.Show("Complete monto a pagar o verifique vuelto"); } else { MySqlCommand comando; MySqlTransaction transaccion; string sqlCaja; string sqlStock; string sqlventa; modCaja modCaja = new modCaja(); Conexion_DB.AbrirConexion(); // se abre una conexion con la base de datos MySqlConnection con = Conexion_DB.conexion; transaccion = con.BeginTransaction(); // se inicia una transaccion con la base de datos, acontinuacion se inicia procesos multiples try { // se inicia proceso 1 : insertar registro en la tabla caja----------------------------------------- sqlCaja = "INSERT INTO db_cajaregistro (Fecha,Movimiento,Operacion,id_Operacion,SubTotal,Descuento,TotalNeto,GS, US, RS, PA, CH, TJ, CR,Id_Cotizacion,Estado,Id_Usuarios) value " + "(current_timestamp,@mov,@operacion,@id_op,@subtotal,@descuento,@totalneto,@gs,@us,@rs,@pa,@ch,@tj,@cr,@id_cotizacion,@estado,@user)"; comando = new MySqlCommand(sqlCaja, con); comando.Parameters.AddWithValue("@mov", "E"); comando.Parameters.AddWithValue("@operacion", "VENTA"); comando.Parameters.AddWithValue("@id_op", txtId_operacion.Text); comando.Parameters.AddWithValue("@subtotal", totalPrincipal); comando.Parameters.AddWithValue("@descuento", descuentoPrincipal); comando.Parameters.AddWithValue("@totalneto", totalPrincipal - descuentoPrincipal); comando.Parameters.AddWithValue("@gs", modSesion.convertirDecimal(txtpagogs.Text) - modSesion.convertirDecimal(txtvueltogs.Text)); comando.Parameters.AddWithValue("@us", modSesion.convertirDecimal(txtpagous.Text) - modSesion.convertirDecimal(txtvueltous.Text)); comando.Parameters.AddWithValue("@rs", modSesion.convertirDecimal(txtpagors.Text) - modSesion.convertirDecimal(txtvueltors.Text)); comando.Parameters.AddWithValue("@pa", modSesion.convertirDecimal(txtpagops.Text) - modSesion.convertirDecimal(txtvueltops.Text)); comando.Parameters.AddWithValue("@ch", 0); comando.Parameters.AddWithValue("@tj", 0); comando.Parameters.AddWithValue("@cr", modSesion.convertirDecimal(txtpagoCr.Text) - modSesion.convertirDecimal(txtvueltoCr.Text)); comando.Parameters.AddWithValue("@id_cotizacion", idCotizacion); comando.Parameters.AddWithValue("@estado", "1"); int usr = Convert.ToInt32(modUsuario.VerificarIdUsuarioActivo()); comando.Parameters.AddWithValue("@user", usr); comando.ExecuteNonQuery(); // se inicia proceso 2: Actualizar estado de venta y saldo de venta decimal saldoVenta; string tipo_venta; if (modSesion.convertirDecimal(txtpagoCr.Text) == 0) // se verifica si pago no fue a credito { saldoVenta = 0; tipo_venta = "Contado"; } else { saldoVenta = modSesion.convertirDecimal(txtpagoCr.Text) - modSesion.convertirDecimal(txtvueltoCr.Text); tipo_venta = "Credito"; } sqlventa = "update db_ventas set Estado=2, TotalSaldo=@saldo,TipoDeVenta=@tipo where id= @id"; comando = new MySqlCommand(sqlventa, con); comando.Parameters.AddWithValue("@saldo", saldoVenta); comando.Parameters.AddWithValue("@id", txtId_operacion.Text); comando.Parameters.AddWithValue("@tipo", tipo_venta); comando.ExecuteNonQuery(); // se inicia proceso 3: Descontar stock de la venta cobrada int c, n; var consulta = new MySqlDataAdapter(); var resultado = new DataSet(); decimal cantidad; int idproducto; c = 0; sqlventa = ""; // se genera sql para capturar productos de la venta cobrada sqlventa = "select * from db_ventaitems where Id_Ventas = " + txtId_operacion.Text; consulta = new MySqlDataAdapter(sqlventa, con); consulta.Fill(resultado, "rsVenta"); while (c < resultado.Tables["rsVenta"].Rows.Count) { // se captura cantidad y codigo de producto de la consulta de la venta cantidad = Convert.ToDecimal(resultado.Tables["rsVenta"].Rows[c]["cantidad"]); idproducto = Convert.ToInt32(resultado.Tables["rsVenta"].Rows[c]["id_producto"]); // se genera sql para actualizar stock y se envia parametros sqlStock = "update db_productos set Stock = Stock - @cantidad where id=@idproducto"; comando = new MySqlCommand(sqlStock, con); comando.Parameters.AddWithValue("@cantidad", cantidad); comando.Parameters.AddWithValue("@idproducto", idproducto); comando.ExecuteNonQuery(); c = c + 1; } MensajeDeCheck mensajeDeCheck = new MensajeDeCheck(" Cobro Efectuado con exito"); mensajeDeCheck.ShowDialog(); frmComprobante.ShowDialog(); transaccion.Commit(); // finaliza procesos y aplica cambios en la base de datos Conexion_DB.CerraConexion(); preparaNuevaCaja(); modCaja.capturarNuevoNumeroCaja(); iniciarCobroVenta(); mostrarCotizacion(); } catch (MySqlException ex) { MessageBox.Show("Error al procesar cobro " + ex.Message); transaccion.Rollback(); } // si ocurre algun error no aplica cambios en la base de datos } }