154 lines
4.9 KiB
PHP
154 lines
4.9 KiB
PHP
<?php
|
|
session_start();
|
|
require '../../../assets/utils/db_auth.php';
|
|
|
|
function validateLocation(PDO $pdo, int $company_id, int $warehouse_id, string $zone, string $aisle, string $rack): void {
|
|
$sth = $pdo->prepare(
|
|
"SELECT 1 FROM md_rack
|
|
WHERE company_id = :company_id
|
|
AND warehouse = :warehouse
|
|
AND zone = :zone
|
|
AND aisle = :aisle
|
|
AND rack = :rack
|
|
LIMIT 1"
|
|
);
|
|
$sth->execute([
|
|
':company_id' => $company_id,
|
|
':warehouse' => $warehouse_id,
|
|
':zone' => $zone,
|
|
':aisle' => $aisle,
|
|
':rack' => $rack,
|
|
]);
|
|
if (!$sth->fetchColumn()) {
|
|
$answer = ['success' => 0, 'message' => 'Location not found.'];
|
|
http_response_code(404);
|
|
exit(json_encode($answer));
|
|
}
|
|
}
|
|
|
|
$label_action = $data['label_action'] ?? 'create';
|
|
$barcode = trim($data['barcode'] ?? '');
|
|
$warehouse_id = (int)($data['warehouse_id'] ?? 0);
|
|
$zone = trim($data['zone'] ?? '');
|
|
$aisle = trim($data['aisle'] ?? '');
|
|
$rack = trim($data['rack'] ?? '');
|
|
|
|
if ($label_action === 'list') {
|
|
$sth = $pdo2->prepare(
|
|
"SELECT barcode, warehouse_id, zone, aisle, rack, status, print_count, last_printed_dt
|
|
FROM md_barcode
|
|
WHERE company_id = :company_id
|
|
AND barcode_type = 'loc'"
|
|
);
|
|
$sth->execute([':company_id' => $company_id]);
|
|
|
|
$answer['success'] = 1;
|
|
$answer['output'] = $sth->fetchAll(PDO::FETCH_ASSOC);
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
if ($label_action === 'print') {
|
|
if ($barcode === '') {
|
|
$answer['message'] = 'No barcode provided.';
|
|
http_response_code(400);
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
$sth = $pdo2->prepare(
|
|
"UPDATE md_barcode
|
|
SET print_count = print_count + 1,
|
|
last_printed_dt = NOW()
|
|
WHERE company_id = :company_id
|
|
AND barcode = :barcode
|
|
AND barcode_type = 'loc'
|
|
AND status = 1"
|
|
);
|
|
$sth->execute([':company_id' => $company_id, ':barcode' => $barcode]);
|
|
|
|
$answer['success'] = 1;
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
if ($label_action === 'disable') {
|
|
if ($barcode === '') {
|
|
$answer['message'] = 'No barcode provided.';
|
|
http_response_code(400);
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
$sth = $pdo2->prepare(
|
|
"UPDATE md_barcode
|
|
SET status = 0
|
|
WHERE company_id = :company_id
|
|
AND barcode = :barcode
|
|
AND barcode_type = 'loc'
|
|
AND status = 1"
|
|
);
|
|
$sth->execute([':company_id' => $company_id, ':barcode' => $barcode]);
|
|
|
|
$answer['success'] = 1;
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
if ($label_action === 'enable') {
|
|
if ($barcode === '') {
|
|
$answer['message'] = 'No barcode provided.';
|
|
http_response_code(400);
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
$sth = $pdo2->prepare(
|
|
"UPDATE md_barcode
|
|
SET status = 1
|
|
WHERE company_id = :company_id
|
|
AND barcode = :barcode
|
|
AND barcode_type = 'loc'
|
|
AND status <> 1"
|
|
);
|
|
$sth->execute([':company_id' => $company_id, ':barcode' => $barcode]);
|
|
|
|
$answer['success'] = 1;
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
if ($barcode === '' || !$warehouse_id || $zone === '' || $aisle === '' || $rack === '') {
|
|
$answer['message'] = 'Location barcode data is incomplete.';
|
|
http_response_code(400);
|
|
exit(json_encode($answer));
|
|
}
|
|
|
|
validateLocation($pdo2, $company_id, $warehouse_id, $zone, $aisle, $rack);
|
|
|
|
$sth = $pdo2->prepare(
|
|
"INSERT INTO md_barcode
|
|
(company_id, barcode_type, barcode, warehouse_id, zone, aisle, rack)
|
|
VALUES
|
|
(:company_id, 'loc', :barcode, :warehouse_id, :zone, :aisle, :rack)
|
|
ON DUPLICATE KEY UPDATE
|
|
barcode_type = VALUES(barcode_type),
|
|
warehouse_id = VALUES(warehouse_id),
|
|
zone = VALUES(zone),
|
|
aisle = VALUES(aisle),
|
|
rack = VALUES(rack),
|
|
status = 1"
|
|
);
|
|
$sth->execute([
|
|
':company_id' => $company_id,
|
|
':barcode' => $barcode,
|
|
':warehouse_id' => $warehouse_id,
|
|
':zone' => $zone,
|
|
':aisle' => $aisle,
|
|
':rack' => $rack,
|
|
]);
|
|
|
|
$answer['success'] = 1;
|
|
$answer['output'] = [
|
|
'barcode' => $barcode,
|
|
'warehouse_id' => $warehouse_id,
|
|
'zone' => $zone,
|
|
'aisle' => $aisle,
|
|
'rack' => $rack,
|
|
];
|
|
exit(json_encode($answer));
|
|
?>
|