$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\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.";
Exemplo n.º 2
0
/**
 *
 */
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);
}