none
Restar productos del inventario RRS feed

  • Pregunta

  • El problema radica en que solo logro restar el ultimo producto agregado al carrito, el primero por ejemplo, no se actualiza.

    Les dejo mi código:

                

    private void btCompletarVenta_Click(object sender, EventArgs e)
            {
                //Al dar clic, eliminara los productos que estan en el dgv del inventario
                foreach (DataGridViewRow fila in dgvArticulos.Rows)
                {
                    instruccion.Parameters.Clear();
                    RestarInventario(va1=Convert.ToInt32(fila.Cells["codigo"].Value), va2=Convert.ToInt32(fila.Cells["cantidad"].Value));

                    //va1 = (fila.Cells["codigo"].Value).ToString();
                    //va2 = (fila.Cells["cantidad"].Value).ToString();
                    //instruccion.Parameters.Clear();
                    //va1=instruccion.Parameters.AddWithValue("codigo", (fila.Cells[0]).Value).ToString();
                    //va2=instruccion.Parameters.AddWithValue("cantidad", (fila.Cells[3]).Value).ToString();
                }

                instruccion.CommandText = "UPDATE detalle_ingreso T1 INNER JOIN articulo T2 ON T1.id_articulo= T2.id_articulo AND T2.codigo=T2.codigo SET stock_actual = (stock_actual - '" + va2 + "') WHERE codigo='" + va1 + "';";

                try
                {
                    conexion.Open();
                    instruccion.ExecuteNonQuery();
                    MessageBox.Show("Venta correctamente completada.");
                }
                catch (MySqlException mysqle)
                {
                    MessageBox.Show("Ocurrió un error.\nError: " + mysqle.Message);
                }
                conexion.Close();
            }

    public void RestarInventario(int elcodigo, int lacantidad)
            {
                instruccion.CommandType = CommandType.StoredProcedure;
                instruccion = conexion.CreateCommand();
                //instruccion.CommandText = "UPDATE detalle_ingreso T1 INNER JOIN articulo T2 ON T1.id_articulo= T2.id_articulo AND T2.codigo=T2.codigo SET stock_actual = (stock_actual - '" + va2 + "') WHERE codigo='" + va1 + "';";
                //instruccion.CommandText = "UPDATE detalle_ingreso SET stock_actual = (stock_actual - '" + va1 + "') WHERE id_articulo='" + va2 + "';";

                instruccion.Parameters.Add(new MySqlParameter("codigo", MySqlDbType.Int32));
                instruccion.Parameters["codigo"].Value = Convert.ToInt32(elcodigo);

                instruccion.Parameters.Add(new MySqlParameter("cantidad", MySqlDbType.Int32));
                instruccion.Parameters["cantidad"].Value = Convert.ToInt32(lacantidad);
            }

    martes, 9 de octubre de 2018 21:32