[OOP] contact,inventory,ics,dashboard
This commit is contained in:
@@ -1,122 +1,25 @@
|
||||
<?php
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
require '../../../assets/utils/db_auth.php';
|
||||
require '../../../assets/utils/classes/StockManager.php';
|
||||
require '../../../assets/utils/classes/WarehouseManager.php';
|
||||
|
||||
try {
|
||||
|
||||
dbTransaction($pdo2, function($pdo) use ($data, $company_id, $logging, $uuid, &$answer) {
|
||||
|
||||
$id = (int)$data['id'];
|
||||
$warehouse_id = (int)$data["warehouse"];
|
||||
$whMgmt = new WarehouseManager($pdo, $company_id);
|
||||
|
||||
$warehouse = $whMgmt->getStockContext($warehouse_id, $id);
|
||||
$row = $warehouse['row'] ?? [];
|
||||
$table = $warehouse['table'];
|
||||
|
||||
// Append this edit/create event to td_stock_<wh>.log (stock record history)
|
||||
$table_log = json_decode($row['log'] ?? '[]', true);
|
||||
$table_log[] = $logging;
|
||||
|
||||
if ($id > 0) {
|
||||
|
||||
// UPDATE existing stock_in record
|
||||
$sql = "UPDATE `$table` SET
|
||||
`contact_id` = :contact_id,
|
||||
`description` = :description,
|
||||
`log` = :log
|
||||
WHERE id = :id AND company_id = :company_id";
|
||||
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute([
|
||||
":id" => $id,
|
||||
":company_id" => $company_id,
|
||||
":contact_id" => (int)$data["contact_id"],
|
||||
":description" => $data["description"],
|
||||
":log" => json_encode($table_log),
|
||||
]);
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
// Upsert md_lot if lot_number + expiry_date provided
|
||||
$lot_number = $data["lot_number"] ?: null;
|
||||
$expiry_date = $data["expiry_date"] ?: null;
|
||||
|
||||
if ($lot_number && $expiry_date) {
|
||||
$sth = $pdo->prepare("
|
||||
INSERT INTO md_lot (company_id, product_sku, lot_number, expiry_date)
|
||||
VALUES (:company_id, :product_sku, :lot_number, :expiry_date)
|
||||
ON DUPLICATE KEY UPDATE expiry_date = expiry_date
|
||||
");
|
||||
$sth->execute([
|
||||
":company_id" => $company_id,
|
||||
":product_sku" => $data["product_sku"],
|
||||
":lot_number" => $lot_number,
|
||||
":expiry_date" => $expiry_date,
|
||||
]);
|
||||
}
|
||||
|
||||
// INSERT new stock_in record
|
||||
$sql = "INSERT INTO `$table`
|
||||
(uuid, company_id, `date`, product_sku, `in`, zone, aisle, rack, contact_id, `description`, `log`, `type`, `lot_number`, `serial_number`)
|
||||
VALUES
|
||||
(:uuid, :company_id, :date, :product_sku, :quantity, :zone, :aisle, :rack, :contact_id, :description, :log, 'in', :lot_number, :serial_number)";
|
||||
|
||||
$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"],
|
||||
":zone" => $data["zone"],
|
||||
":aisle" => $data["aisle"],
|
||||
":rack" => $data["rack"],
|
||||
":contact_id" => (int)$data["contact_id"],
|
||||
":description" => $data["description"],
|
||||
":log" => json_encode($table_log),
|
||||
":lot_number" => $lot_number,
|
||||
":serial_number" => $data["serial_number"] ?: null,
|
||||
]);
|
||||
|
||||
// Grab the newly-generated ID to link the rack
|
||||
$td_stock_id = (int) $pdo->lastInsertId();
|
||||
|
||||
// Link the rack to this new stock record
|
||||
$whMgmt->occupyRack(
|
||||
$warehouse_id,
|
||||
$data['zone'], $data['aisle'], $data['rack'],
|
||||
$data['product_sku'],
|
||||
$td_stock_id
|
||||
);
|
||||
// Balance adjustment handles both INSERT (delta = full qty)
|
||||
// and UPDATE (delta = new - old) via the same formula.
|
||||
$whMgmt->adjustBalance(
|
||||
'in',
|
||||
$warehouse_id,
|
||||
$data["product_sku"],
|
||||
$row['in'] ?? 0,
|
||||
$data["quantity"]
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
dbTransaction($pdo2, function($pdo) use ($data, $company_id, $logging, $uuid) {
|
||||
$stock = new StockManager($pdo, $company_id);
|
||||
$stock->saveStockIn($data, $logging, $uuid);
|
||||
});
|
||||
|
||||
$answer["success"] = 1;
|
||||
$answer['success'] = 1;
|
||||
|
||||
} catch (PDOException $e) {
|
||||
$answer["success"] = 0;
|
||||
$answer["message"] = "Database error, please try again";
|
||||
$answer['success'] = 0;
|
||||
$answer['message'] = 'Database error, please try again';
|
||||
http_response_code(500);
|
||||
|
||||
} catch (Exception $e) {
|
||||
$answer["success"] = 0;
|
||||
$answer["message"] = $e->getMessage();
|
||||
$answer['success'] = 0;
|
||||
$answer['message'] = $e->getMessage();
|
||||
http_response_code(400);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user