113 lines
4.6 KiB
PHP
113 lines
4.6 KiB
PHP
<?php
|
|
session_start();
|
|
|
|
require '../../../assets/utils/db_auth.php';
|
|
|
|
try {
|
|
|
|
dbTransaction($pdo2, function($pdo) use ($data, $company_id, $logging, $uuid) {
|
|
|
|
$id = (int)$data['id'];
|
|
$whMgmt = new WarehouseManager($pdo, $company_id);
|
|
|
|
for ($i = 0; $i < 2; $i++) {
|
|
|
|
$data['type'] = ($i == 0) ? "from" : "to";
|
|
$data['ref_type'] = ($i == 0) ? "to" : "from";
|
|
$data['col'] = ($i == 0) ? "out" : "in";
|
|
|
|
$warehouse_id = (int)$data['warehouse_' . $data["type"]];
|
|
$ref_warehouse_id = (int)$data['warehouse_' . $data["ref_type"]];
|
|
$data["warehouse"] = $data['warehouse_' . $data["type"]];
|
|
$data["zone"] = $data['zone_' . $data["type"]];
|
|
$data["aisle"] = $data['aisle_' . $data["type"]];
|
|
$data["rack"] = $data['rack_' . $data["type"]];
|
|
|
|
$warehouse = $whMgmt->getStockContext($warehouse_id, $id);
|
|
$row = $warehouse['row'] ?? [];
|
|
$table = $warehouse['table'];
|
|
|
|
// get uuid for update
|
|
if ($id > 0 && $data['type'] == "from") {
|
|
$sql = "SELECT uuid FROM `$table`
|
|
WHERE company_id = :company_id AND id = :id";
|
|
$sth = $pdo->prepare($sql);
|
|
$sth->execute([
|
|
":company_id" => $company_id,
|
|
":id" => $id
|
|
]);
|
|
$uuid = $sth->fetchColumn();
|
|
}
|
|
|
|
$table_log = json_decode($row['log'] ?? '[]', true);
|
|
$table_log[] = $logging;
|
|
|
|
if ($id > 0) {
|
|
|
|
$sql = "UPDATE `$table` SET
|
|
`product_sku` = :product_sku,
|
|
`{$data['col']}` = :quantity,
|
|
`zone` = :zone,
|
|
`aisle` = :aisle,
|
|
`rack` = :rack,
|
|
`contact_id` = :contact_id,
|
|
`description` = :description,
|
|
`log` = :log
|
|
WHERE uuid = :uuid AND company_id = :company_id";
|
|
|
|
$sth = $pdo->prepare($sql);
|
|
$sth->execute([
|
|
":uuid" => $uuid,
|
|
":company_id" => $company_id,
|
|
":product_sku" => $data["product_sku"],
|
|
":quantity" => $data["quantity"],
|
|
":zone" => $data["zone"],
|
|
":aisle" => $data["aisle"],
|
|
":rack" => $data["rack"],
|
|
":contact_id" => (int)$data["contact_id"],
|
|
":description" => $data["description"],
|
|
":log" => json_encode($table_log),
|
|
]);
|
|
|
|
} else {
|
|
|
|
$sql = "INSERT INTO `$table`
|
|
(uuid, company_id, `date`, product_sku, `{$data['col']}`, ref_warehouse, zone, aisle, rack, contact_id, `description`, `log`, `type`)
|
|
VALUES
|
|
(:uuid, :company_id, :date, :product_sku, :quantity, :ref_warehouse, :zone, :aisle, :rack, :contact_id, :description, :log, 'transfer')";
|
|
|
|
$sth = $pdo->prepare($sql);
|
|
$sth->execute([
|
|
":uuid" => $uuid,
|
|
":company_id" => $company_id,
|
|
":date" => date('Y-m-d H:i:s'),
|
|
":product_sku" => $data["product_sku"],
|
|
":quantity" => $data["quantity"],
|
|
":ref_warehouse" => $ref_warehouse_id,
|
|
":zone" => $data["zone"],
|
|
":aisle" => $data["aisle"],
|
|
":rack" => $data["rack"],
|
|
":contact_id" => (int)$data["contact_id"],
|
|
":description" => $data["description"],
|
|
":log" => json_encode($table_log),
|
|
]);
|
|
}
|
|
|
|
$whMgmt->adjustBalance($data['col'], $warehouse_id, $data["product_sku"], $row[$data['col']] ?? 0, $data["quantity"]);
|
|
}
|
|
|
|
});
|
|
|
|
$answer["success"] = 1;
|
|
|
|
} catch (PDOException $e) {
|
|
$answer["success"] = 0;
|
|
$answer["message"] = "Database error, please try again";
|
|
|
|
} catch (Exception $e) {
|
|
$answer["success"] = 0;
|
|
$answer["message"] = "Something went wrong";
|
|
}
|
|
|
|
exit(json_encode($answer));
|
|
?>
|