//Llena datos para movimiento detalle private clsDetalleMovimiento llenarCamposDetalle(int Producto, int Cantidad) { clsDetalleMovimiento auxMantenimiento = new clsDetalleMovimiento(); auxMantenimiento.IdDetalle = movimientosInventarios.generarID("movimiento_inventario_detalle", "pk_id_movimiento_inventario_detalle"); auxMantenimiento.IdMovimiento = int.Parse(txtNoInventario.Text); auxMantenimiento.IdProducto = Producto; auxMantenimiento.Cantidad1 = Cantidad; return(auxMantenimiento); }
//Ingreso de Datos private bool guardarDatos() { int CodLinea = 0, Producto, Cantidad; try { this.mantenimientoInventario = llenarCamposEncabezado(auxRuta, auxVehiculo, noDocu); if (mantenimientoInventario == null) { MessageBox.Show("Ingrese Campos", "Campos Vacios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } else { movimientosInventarios.insertarEncabezadoMovimientos(mantenimientoInventario); int iFilas = dgvMovimiento.Rows.Count; //Linea por linea del grid inserta a detalle movimiento while (CodLinea < (iFilas - 1)) { Producto = int.Parse(dgvMovimiento.Rows[CodLinea].Cells["Producto"].Value.ToString()); Cantidad = int.Parse(dgvMovimiento.Rows[CodLinea].Cells["Cantidad"].Value.ToString()); ++CodLinea; this.detalleMovimiento = llenarCamposDetalle(Producto, Cantidad); movimientosInventarios.insertarDetalleMovimiento(detalleMovimiento, tipoMovimiento, noDocu); } MessageBox.Show("Datos de Movimiento de Inventario Ingresados", "", MessageBoxButtons.OK, MessageBoxIcon.Information); Console.WriteLine("Movimiento Exitosa"); return(true); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine("Compra Fallida"); MessageBox.Show("Error al Guardar Datos de Compras", "", MessageBoxButtons.OK, MessageBoxIcon.Error); return(false); } }
public void insertarDetalleMovimiento(clsDetalleMovimiento detalleMovimiento, int tipoMovimiento, int? docuAsociado) { string SQL = ""; int CantidadAnterior, datosExistentes,bodegaRandom; OdbcConnection con = conexion.conexion(); OdbcCommand comando = con.CreateCommand(); OdbcCommand comandoActualizacion; OdbcTransaction transaction; transaction = con.BeginTransaction(); comando.Connection = con; comando.Transaction = transaction; try { con = conexion.conexion(); comando = con.CreateCommand(); transaction = con.BeginTransaction(); comando.Connection = con; comando.Transaction = transaction; comando.CommandText = "INSERT INTO movimiento_inventario_detalle (pk_id_movimiento_inventario_detalle, fk_id_movimiento_inventario, fk_id_producto, cantidad_inventario_detalle) VALUES (?,?,?,?);"; comando.Parameters.Add("pk_id_movimiento_inventario_detalle", OdbcType.Int).Value = detalleMovimiento.IdDetalle; comando.Parameters.Add("fk_id_movimiento_inventario", OdbcType.Int).Value = detalleMovimiento.IdMovimiento; comando.Parameters.Add("fk_id_producto", OdbcType.Int).Value = detalleMovimiento.IdProducto; comando.Parameters.Add("cantidad_inventario_detalle", OdbcType.Int).Value = detalleMovimiento.Cantidad1; if (tipoMovimiento == 1) { SQL = "SELECT COUNT(*) FROM inventario WHERE fk_id_producto="+detalleMovimiento.IdProducto; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); datosExistentes = int.Parse(comandoActualizacion.ExecuteScalar().ToString()); SQL = "SELECT cantidad_inventario FROM inventario WHERE fk_id_producto=" + detalleMovimiento.IdProducto; OdbcCommand actualizar = new OdbcCommand(SQL, conexion.conexion()); OdbcDataReader registro = actualizar.ExecuteReader(); if (datosExistentes == 0) { SQL = "INSERT INTO inventario (pk_id_inventario, fk_id_producto, cantidad_inventario,estado_inventario) VALUES (" +generarID("inventario","pk_id_inventario")+","+ detalleMovimiento.IdProducto + ","+ detalleMovimiento.Cantidad1 + ",1);"; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } else { while (registro.Read()) { CantidadAnterior = int.Parse(registro["cantidad_inventario"].ToString()); SQL = "UPDATE inventario SET cantidad_inventario=" + (CantidadAnterior + detalleMovimiento.Cantidad1) + " WHERE fk_id_producto=" + detalleMovimiento.IdProducto + ";"; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } } } else if (tipoMovimiento == 2) { SQL = "SELECT COUNT(*) FROM inventario WHERE fk_id_producto=" + detalleMovimiento.IdProducto; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); datosExistentes = int.Parse(comandoActualizacion.ExecuteScalar().ToString()); SQL = "SELECT cantidad_inventario FROM inventario WHERE fk_id_producto=" + detalleMovimiento.IdProducto; OdbcCommand actualizar = new OdbcCommand(SQL, conexion.conexion()); OdbcDataReader registro = actualizar.ExecuteReader(); if (datosExistentes == 0) { MessageBox.Show("No existe inventario para realizar este movimiento", "Error en Inventarios", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { while (registro.Read()) { CantidadAnterior = int.Parse(registro["cantidad_inventario"].ToString()); if (CantidadAnterior > detalleMovimiento.Cantidad1) { SQL = "UPDATE inventario SET cantidad_inventario=" + (CantidadAnterior - detalleMovimiento.Cantidad1) + " WHERE fk_id_producto=" + detalleMovimiento.IdProducto + ";"; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } else MessageBox.Show("La cantidad a actualizar es mayor que la que existe en stock", "ADVERTENCIA", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else if (tipoMovimiento == 3) { SQL = "SELECT COUNT(*) FROM existencia WHERE fk_id_producto=" + detalleMovimiento.IdProducto; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); datosExistentes = int.Parse(comandoActualizacion.ExecuteScalar().ToString()); SQL = "SELECT cantidad_existencia FROM existencia WHERE fk_id_producto=" + detalleMovimiento.IdProducto; OdbcCommand actualizar = new OdbcCommand(SQL, conexion.conexion()); OdbcDataReader registro = actualizar.ExecuteReader(); if (datosExistentes == 0) { SQL = "SELECT pk_id_bodega FROM bodega ORDER BY RAND() LIMIT 1 "; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); bodegaRandom = int.Parse(comandoActualizacion.ExecuteScalar().ToString()); SQL = "INSERT INTO existencia (pk_id_existencia, fk_id_bodega, fk_id_producto, cantidad_existencia, estado_existencia) VALUES (" + generarID("existencia", "pk_id_existencia") +","+bodegaRandom+"," + detalleMovimiento.IdProducto + "," + detalleMovimiento.Cantidad1 + ",1);"; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } else { while (registro.Read()) { CantidadAnterior = int.Parse(registro["cantidad_existencia"].ToString()); SQL = "UPDATE existencia SET cantidad_existencia=" + (CantidadAnterior + detalleMovimiento.Cantidad1) + " WHERE fk_id_producto=" + detalleMovimiento.IdProducto + ";"; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } } } comando.ExecuteNonQuery(); if (docuAsociado != null) { if (tipoMovimiento == 1) { SQL = "UPDATE compra_detalle SET estado_compra_detalle=0 WHERE fk_id_compra_encabezado=" + docuAsociado; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); SQL = "UPDATE compra_encabezado SET estado_encabezado_compra=0 WHERE pk_id_compra_encabezado=" + docuAsociado; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } else if (tipoMovimiento == 2) { SQL = "DELETE FROM detalle_factura WHERE fk_id_factura=" + docuAsociado; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); SQL = "DELETE FROM facturas WHERE pk_id_factura=" + docuAsociado; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } else if (tipoMovimiento == 3) { SQL = "UPDATE pedido_detalle SET estado_pedido_detalle=0 WHERE fk_id_pedido_encabezado=" + docuAsociado; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); SQL = "UPDATE pedido_encabezado SET estado_pedido_encabezado=0 WHERE pk_id_pedido_encabezado=" + docuAsociado; comandoActualizacion = new OdbcCommand(SQL, conexion.conexion()); comandoActualizacion.ExecuteNonQuery(); } } transaction.Commit(); Console.WriteLine("Transaccion Exitosa Tabla 2"); } catch (Exception ex) { transaction.Rollback(); Console.WriteLine(ex.Message); MessageBox.Show("Error transaccion movimiento detalle", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } }