-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathform_orden_confirma_arribo.php
143 lines (112 loc) · 3.82 KB
/
form_orden_confirma_arribo.php
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
include 'main.php';
include 'dbutils.php';
include 'include/table-extractor.php';
check_session();
$valid_user = $_SESSION['valid_user'];
// leer valores de cantidad arriba de los input de la tabla
$cant_filas = $_POST['rows'];
$table_map = array();
for ($i = 0; $i < $cant_filas; $i++) {
$table_map[$i][0] = $_POST['orden_item'.$i];
$table_map[$i][1] = $_POST['cant_arribada'.$i];
$table_map[$i][2] = $_POST['item'.$i]; // id del item real del la orden
}
//var_dump($table_map);
$id_orden = $_POST['id_orden'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$fecha = "$ano-$mes-$dia";
$formname = $_POST['formname'];
$mensaje = "";
$focus = "forms[0].pais";
db_connect();
// update stock disponible de cada item de la orden
foreach ($table_map as $item)
{
$cantidad_factor = (get_factor_unidades($item[2])) * $item[1];
$query = "UPDATE
Item
SET
Item.stock_disponible = Item.stock_disponible + $cantidad_factor
WHERE (
(Item.id_item = $item[2])
)";
$result = mysql_query($query);
if($item[1]!=0) // log cantidad arribada distinta a cero
log_trans($valid_user, 1, $item[2], $item[1], $fecha, $id_orden);
}
// update cantidad en transito del item y la cantidad pendiente del item de la orden
foreach ($table_map as $item)
{
// update item cant en transito
$cantidad_factor = (get_factor_unidades($item[2])) * $item[1];
// log para debug de items que quedan con transito negativo
log_stock_transito_negativo($valid_user, $item[2], $id_orden, get_stock_transito($item[2]), (get_stock_transito($item[2])-$cantidad_factor), get_cantidad_pendiente_comprar($item[0]), $item[1], 'auto');
$query = "UPDATE
Item
SET
Item.stock_transito = Item.stock_transito - $cantidad_factor
WHERE (
(Item.id_item = $item[2])
)";
$result = mysql_query($query);
// update item de la orden (cantidad pendiente)
$query = "UPDATE
OrdenItem
SET
OrdenItem.cantidad_pendiente = OrdenItem.cantidad_pendiente - $item[1]
WHERE (
(OrdenItem.id_orden_item = $item[0])
)";
$result = mysql_query($query);
}
//Cambio de estado la orden a arribada (2) si todos los items de la orden estan en 0 (pendiente)
$items_pendientes = obtener_cantidad_items_pendientes($id_orden);
if($items_pendientes == 0){
update_orden_arribada($id_orden, $fecha, $valid_user);
$mensaje = "La orden numero $id_orden se ha registrado como arribada. Los items de esta orden se encuentran disponibles.";
}
else
$mensaje = "La orden numero $id_orden se ha actualizado. Los items arribados se encuentran disponibles.";
$var = array(
"id_orden" => $id_orden,
"mensaje" => $mensaje,
"orden_table" => $table_map
);
eval_html('orden_arribo_fin.html', $var);
/**
* Cambiar el estado de la orden a arribada (2)
*/
function update_orden_arribada($id_orden, $fecha, $valid_user)
{
$query = "UPDATE Orden SET id_status = 2, fecha = '$fecha'
WHERE (id_orden = $id_orden)";
$result = mysql_query($query);
log_trans($valid_user, 6, 0, 0, $fecha, $id_orden);
}
/**
* Obtine la cantidad de items pendientes de una orden dada
*/
function obtener_cantidad_items_pendientes($id_orden)
{
$query = "SELECT count(*) FROM Orden, OrdenItem ordenitem
WHERE Orden.id_orden = $id_orden
AND Orden.id_orden = ordenitem.id_orden
AND ordenitem.cantidad_pendiente <> 0";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
return $row[0];
}
// retorna lo que qeuda por comprar del item en la orden
function get_cantidad_pendiente_comprar($id_orden_item)
{
$query = "SELECT OrdenItem.cantidad_pendiente
FROM OrdenItem
WHERE OrdenItem.id_orden_item = $id_orden_item";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
return $row[0];
}
?>