
Actualizar stock de bodega.
Publicado por Catalina (1 intervención) el 06/03/2020 18:03:02
Hola. Tengo un proyecto de bodega en el cual se deben registrar la salida y entrada de productos(estos con fecha, nombre, etc). En cada orden se puede sacar distintos productos con su cantidad. Las tablas que utilizadas para la salida y el ingreso de productos son:
productos: Donde se guardan los datos del producto
inventorio_orden:Donde se guardan los datos de la orden
inventorio_orden_producto:Donde se guardan los datos de los productos sacados en la orden.
En el código funciona el insert para las tablas de inventario pero no afecta el stock del producto.
El SQL es
productos: Donde se guardan los datos del producto
inventorio_orden:Donde se guardan los datos de la orden
inventorio_orden_producto:Donde se guardan los datos de los productos sacados en la orden.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
if(isset($_POST['btn_action']))
{
if($_POST['btn_action'] == 'Agregar')
{
$query = "
INSERT INTO inventorio_orden (usuario_id, inventorio_orden_fecha, inventorio_orden_destino, inventorio_orden_nombre,
inventorio_orden_status, inventorio_orden_fecha_creada)
VALUES (:usuario_id, :inventorio_orden_fecha, :inventorio_orden_destino, :inventorio_orden_nombre,
:inventorio_orden_status, :inventorio_orden_fecha_creada
)
";
$statement = $connect->prepare($query);
$statement->execute(
array(
':usuario_id' => $_SESSION["usuario_id"],
':inventorio_orden_fecha' => $_POST['inventorio_orden_fecha'],
':inventorio_orden_destino' => $_POST['inventorio_orden_destino'],
':inventorio_orden_nombre' => $_POST['inventorio_orden_nombre'],
':inventorio_orden_status' => 'active',
':inventorio_orden_fecha_creada' => date("Y-m-d"),
)
);
$statement = $connect->query("SELECT LAST_INSERT_ID()");
$inventorio_orden_id = $statement->fetchColumn();
if(isset($inventorio_orden_id))
{
for($count = 0; $count<count($_POST["producto_id"]); $count++)
{
$product_details = fetch_product_details($_POST["producto_id"][$count], $connect);
$sub_query = "
INSERT INTO inventorio_orden_producto (inventorio_orden_id, producto_id,cantidad) VALUES (:inventorio_orden_id, :producto_id, :cantidad)
";
$statement = $connect->prepare($sub_query);
$statement->execute(
array(
':inventorio_orden_id'=> $inventorio_orden_id,
':producto_id' => $_POST["producto_id"][$count],
':cantidad' => $_POST["cantidad"][$count]
)
);
$query1 = "
SELECT inventorio_orden_producto.cantidad FROM inventorio_orden_producto
INNER JOIN inventorio_orden ON inventorio_orden.inventorio_orden_id = inventorio_orden_producto.inventorio_orden_id
WHERE inventorio_orden_producto.producto_id = '".$producto_id."'";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$total = 0;
foreach($result as $row)
{
$total = $total + $row['cantidad'];
}
$available_quantity = intval($producto_data['cantidad']) - intval($total);
if(isset($available_quantity))
{
$update_query = "
UPDATE productos SET
producto_cantidad = '".$available_quantity."' WHERE 'producto_id' = '".$producto_id."'
";
$statement = $connect->prepare($update_query);
$statement->execute(
array(
':producto_id' => $producto_id,
':producto_cantidad' => $available_quantity
)
);
}
if(isset($result))
{
echo 'Orden Creada';
}
}
}
}
En el código funciona el insert para las tablas de inventario pero no afecta el stock del producto.
El SQL es
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
CREATE TABLE `inventorio_orden` (
`inventorio_orden_id` int(11) NOT NULL,
`usuario_id` int(11) NOT NULL,
`inventorio_orden_fecha` date NOT NULL,
`inventorio_orden_destino` varchar(255) COLLATE ucs2_spanish_ci NOT NULL,
`inventorio_orden_nombre` varchar(255) COLLATE ucs2_spanish_ci NOT NULL,
`inventorio_orden_status` enum('active','inactive') COLLATE ucs2_spanish_ci NOT NULL,
`inventorio_orden_fecha_creada` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=ucs2 COLLATE=ucs2_spanish_ci;
--
-- Volcado de datos para la tabla `inventorio_orden`
--
INSERT INTO `inventorio_orden` (`inventorio_orden_id`, `usuario_id`, `inventorio_orden_fecha`, `inventorio_orden_destino`, `inventorio_orden_nombre`, `inventorio_orden_status`, `inventorio_orden_fecha_creada`) VALUES
(3, 3, '2020-02-25', 'D', 'D', 'active', '2020-02-25'),
(4, 3, '2020-02-27', 'e', 'w', 'active', '2020-03-06'),
(5, 3, '2020-03-05', 'a', 'g', 'active', '2020-03-06'),
(6, 3, '2020-03-05', '1', 'd', 'active', '2020-03-06');
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `inventorio_orden_producto`
--
CREATE TABLE `inventorio_orden_producto` (
`inventorio_orden_producto_id` int(11) NOT NULL,
`inventorio_orden_id` int(11) NOT NULL,
`producto_id` int(11) NOT NULL,
`cantidad` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=ucs2 COLLATE=ucs2_spanish_ci;
--
-- Volcado de datos para la tabla `inventorio_orden_producto`
--
INSERT INTO `inventorio_orden_producto` (`inventorio_orden_producto_id`, `inventorio_orden_id`, `producto_id`, `cantidad`) VALUES
(4, 3, 3, 3),
(5, 4, 3, 1),
(6, 5, 3, 9),
(7, 6, 3, 1);
CREATE TABLE `productos` (
`producto_id` int(11) NOT NULL,
`categoria_id` int(11) NOT NULL,
`marca_id` int(11) NOT NULL,
`producto_nombre` text COLLATE ucs2_spanish_ci NOT NULL,
`producto_descripcion` text COLLATE ucs2_spanish_ci NOT NULL,
`producto_cantidad` int(11) NOT NULL,
`producto_unidad` varchar(125) COLLATE ucs2_spanish_ci NOT NULL,
`producto_ingresado_por` int(11) NOT NULL,
`producto_status` enum('active','inactive') COLLATE ucs2_spanish_ci NOT NULL,
`producto_fecha` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=ucs2 COLLATE=ucs2_spanish_ci;
--
-- Volcado de datos para la tabla `productos`
--
INSERT INTO `productos` (`producto_id`, `categoria_id`, `marca_id`, `producto_nombre`, `producto_descripcion`, `producto_cantidad`, `producto_unidad`, `producto_ingresado_por`, `producto_status`, `producto_fecha`) VALUES
(1, 4, 4, 'Papel Fotocopia Carta', '.', 7, 'Resmas', 3, 'active', '2020-01-17'),
(2, 7, 8, 'Cookie', 'Galletas para capacitación', 6, 'Paquetes', 3, 'active', '2020-01-24'),
(3, 4, 9, 'Carpeta A4', 'CARPETA ACOCLIP CARTULINA CAFE PBSI', 155, 'Unidades', 8, 'active', '2020-01-24');
-- ------------------
Valora esta pregunta


0