Exemplo n.º 1
0
        /*****************************************************/
        private void iniciarCobroVenta()
        {
            // se captura fecha del computador
            fecha             = DateAndTime.Today;
            txtFechaCaja.Text = fecha.ToShortDateString().ToString();
            // se captura nuevo numero de caja
            modCaja modcajax = new modCaja();

            txtId_Caja.Text = Convert.ToString(modcajax.capturarNuevoNumeroCaja());

            // se capturar notas de ventas a cobrar del dia con estado 0
            dsVentaPendiente        = modcajax.verNotaAcobrar(fecha);
            grillaVentas.DataSource = dsVentaPendiente.Tables["rsVentaPendiente"];
            modSesion modSesion = new modSesion();

            grillaVentas.Columns["Total Neto"].DefaultCellStyle.Format    = modSesion.formato_precio;
            grillaVentas.Columns["Total Neto"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
        }
Exemplo n.º 2
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
            }
        }