// 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\n\tItem\n SET\n\tItem.stock_disponible = Item.stock_disponible + {$cantidad_factor}\n WHERE (\n\t(Item.id_item = {$item['2']})\n )"; $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\n Item\n SET\n Item.stock_transito = Item.stock_transito - {$cantidad_factor}\n WHERE (\n (Item.id_item = {$item['2']})\n )"; $result = mysql_query($query); // update item de la orden (cantidad pendiente) $query = "UPDATE\n OrdenItem\n SET\n OrdenItem.cantidad_pendiente = OrdenItem.cantidad_pendiente - {$item['1']}\n WHERE (\n (OrdenItem.id_orden_item = {$item['0']})\n )"; $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);
/** * */ function update_orden($id_orden, $id_orden_item, $cantidad, $precio) { $cantidad_anterior = get_cantidad_pendiente_comprar($id_orden_item); $id_item = get_ordenitem_id_item($id_orden_item); $stock_transito_actual = get_stock_transito($id_item); $factor_unidades = get_factor_unidades($id_item); $nuevo_stock = $stock_transito_actual + ($cantidad - $cantidad_anterior) * $factor_unidades; set_stock_transito($id_item, $nuevo_stock); // DEBUG intended -> por ahora logueo siempre //if($nuevo_stock < 0) { log_stock_transito_negativo($_SESSION['valid_user'], $id_item, $id_orden, $stock_transito_actual, $nuevo_stock, $cantidad_anterior, $cantidad, 'manual'); //} if ($cantidad == 0 or $cantidad == "") { $query = "SELECT id_orden, id_item FROM OrdenItem WHERE id_orden_item = {$id_orden_item}"; $result = mysql_query($query); $row = mysql_fetch_array($result); $query = "DELETE FROM OrdenItem WHERE id_orden_item = {$id_orden_item}"; // logueo item borrado de la orden (8) log_trans($_SESSION['valid_user'], 8, $row[1], 0, date("Y-m-d"), $row[0]); } else { if ($precio == "") { $precio = "NULL"; } // update cantidad pendiente del item de la orden y update del precio if (obtener_tipo_proveedor_por_orden_item($id_orden_item) == "EXTRANJERO") { $query = "UPDATE\n\t OrdenItem\n\t \t\tSET "; if ($cantidad_anterior != 0) { $query .= "cantidad = (cantidad + ({$cantidad} - cantidad_pendiente)),"; } $query .= "\n\t\taereo_pendiente = (aereo_pendiente + ({$cantidad} - cantidad_pendiente)),\n\t\tcantidad_pendiente = {$cantidad},\n\t precio_fob = {$precio}\n\t \tWHERE\n\t id_orden_item = {$id_orden_item}"; } else { $query = "UPDATE\n\t OrdenItem\n\t \t\tSET "; if ($cantidad_anterior != 0) { $query .= "cantidad = (cantidad + ({$cantidad} - cantidad_pendiente)),"; } $query .= "\n\t\taereo_pendiente = (aereo_pendiente + ({$cantidad} - cantidad_pendiente)),\n\t\tcantidad_pendiente = {$cantidad},\n\t precio_ref = {$precio}\n\t \tWHERE\n\t id_orden_item = {$id_orden_item}"; } // restar del stock la cantidad ingresada, solo si la cantidad pendiente anterior era 0 (es cancelar arribo) if ($cantidad_anterior == 0) { // logueo transaccion de recupero -> agrego movimiento negativo para representarlo reduccion de stock disp. log_trans($_SESSION['valid_user'], 1, $id_item, $cantidad * -1, date("Y-m-d"), $id_orden); $stock_query = "UPDATE Item SET stock_disponible = stock_disponible - ({$cantidad} * {$factor_unidades}) WHERE id_item = {$id_item}"; var_dump($stock_query); $result = mysql_query($stock_query); } } $result = mysql_query($query); // mantener siempre el status de la orden en 1 (en transito) -> si la orden estaba cerrada la vuelva a poner en transito $query = "UPDATE Orden SET id_status = 1 WHERE id_orden = {$id_orden}"; $result = mysql_query($query); }