Change 'Rack' to 'Bin'
This commit is contained in:
@@ -121,17 +121,17 @@ class BarcodeManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm a rack row exists for the given warehouse + zone + aisle + rack.
|
||||
* Confirm a bin row exists for the given warehouse + zone + aisle + bin.
|
||||
* Throws if not found.
|
||||
*/
|
||||
private function validateLocation(int $warehouse_id, string $zone, string $aisle, string $rack): void {
|
||||
private function validateLocation(int $warehouse_id, string $zone, string $aisle, string $bin): void {
|
||||
$sth = $this->pdo->prepare(
|
||||
"SELECT 1 FROM md_rack
|
||||
"SELECT 1 FROM md_bin
|
||||
WHERE company_id = :company_id
|
||||
AND warehouse = :warehouse
|
||||
AND COALESCE(zone, '') = :zone
|
||||
AND COALESCE(aisle,'') = :aisle
|
||||
AND rack = :rack
|
||||
AND bin = :bin
|
||||
LIMIT 1"
|
||||
);
|
||||
$sth->execute([
|
||||
@@ -139,7 +139,7 @@ class BarcodeManager {
|
||||
':warehouse' => $warehouse_id,
|
||||
':zone' => $zone,
|
||||
':aisle' => $aisle,
|
||||
':rack' => $rack,
|
||||
':bin' => $bin,
|
||||
]);
|
||||
if (!$sth->fetchColumn()) throw new Exception('Location not found.');
|
||||
}
|
||||
@@ -343,7 +343,7 @@ class BarcodeManager {
|
||||
*/
|
||||
public function listLocationLabels(): array {
|
||||
$sth = $this->pdo->prepare(
|
||||
"SELECT barcode, warehouse_id, zone, aisle, rack, status, print_count, last_printed_dt
|
||||
"SELECT barcode, warehouse_id, zone, aisle, bin, status, print_count, last_printed_dt
|
||||
FROM md_barcode
|
||||
WHERE company_id = :company_id
|
||||
AND barcode_type = 'loc'"
|
||||
@@ -355,30 +355,30 @@ class BarcodeManager {
|
||||
/**
|
||||
* Create a new location barcode label (or re-activate a previously disabled one).
|
||||
*
|
||||
* Validates that the rack exists in md_rack before inserting.
|
||||
* Validates that the bin exists in md_bin before inserting.
|
||||
*
|
||||
* @param string $barcode Full barcode string (e.g. "LOC|1|A|1|R1").
|
||||
* @param int $warehouse_id Warehouse ID.
|
||||
* @param string $zone Zone code.
|
||||
* @param string $aisle Aisle code.
|
||||
* @param string $rack Rack code.
|
||||
* @return array Keys: barcode, warehouse_id, zone, aisle, rack.
|
||||
* @throws Exception If the location is not found in md_rack.
|
||||
* @param string $bin Bin code.
|
||||
* @return array Keys: barcode, warehouse_id, zone, aisle, bin.
|
||||
* @throws Exception If the location is not found in md_bin.
|
||||
*/
|
||||
public function createLocationLabel(string $barcode, int $warehouse_id, string $zone, string $aisle, string $rack): array {
|
||||
$this->validateLocation($warehouse_id, $zone, $aisle, $rack);
|
||||
public function createLocationLabel(string $barcode, int $warehouse_id, string $zone, string $aisle, string $bin): array {
|
||||
$this->validateLocation($warehouse_id, $zone, $aisle, $bin);
|
||||
|
||||
$this->pdo->prepare(
|
||||
"INSERT INTO md_barcode
|
||||
(company_id, barcode_type, barcode, warehouse_id, zone, aisle, rack)
|
||||
(company_id, barcode_type, barcode, warehouse_id, zone, aisle, bin)
|
||||
VALUES
|
||||
(:company_id, 'loc', :barcode, :warehouse_id, :zone, :aisle, :rack)
|
||||
(:company_id, 'loc', :barcode, :warehouse_id, :zone, :aisle, :bin)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
barcode_type = VALUES(barcode_type),
|
||||
warehouse_id = VALUES(warehouse_id),
|
||||
zone = VALUES(zone),
|
||||
aisle = VALUES(aisle),
|
||||
rack = VALUES(rack),
|
||||
bin = VALUES(bin),
|
||||
status = 1"
|
||||
)->execute([
|
||||
':company_id' => $this->company_id,
|
||||
@@ -386,7 +386,7 @@ class BarcodeManager {
|
||||
':warehouse_id' => $warehouse_id,
|
||||
':zone' => $zone,
|
||||
':aisle' => $aisle,
|
||||
':rack' => $rack,
|
||||
':bin' => $bin,
|
||||
]);
|
||||
|
||||
return [
|
||||
@@ -394,7 +394,7 @@ class BarcodeManager {
|
||||
'warehouse_id' => $warehouse_id,
|
||||
'zone' => $zone,
|
||||
'aisle' => $aisle,
|
||||
'rack' => $rack,
|
||||
'bin' => $bin,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -465,7 +465,7 @@ class BarcodeManager {
|
||||
* resolve it from the caller via CompanySettingManager::get('advanced_location').
|
||||
*
|
||||
* @param string $barcode Full barcode string to resolve.
|
||||
* @param bool $advancedLocation True = zone/aisle/rack parts; false = rack only.
|
||||
* @param bool $advancedLocation True = zone/aisle/bin parts; false = bin only.
|
||||
* @return array
|
||||
* @throws Exception On parse or validation failure.
|
||||
*/
|
||||
@@ -515,13 +515,13 @@ class BarcodeManager {
|
||||
if ($advancedLocation) {
|
||||
$zone = trim($parts[2]);
|
||||
$aisle = trim($parts[3]);
|
||||
$rack = trim($parts[4]);
|
||||
$bin = trim($parts[4]);
|
||||
} else {
|
||||
$rack = trim($parts[2]);
|
||||
$zone = $rack;
|
||||
$aisle = $rack;
|
||||
$bin = trim($parts[2]);
|
||||
$zone = $bin;
|
||||
$aisle = $bin;
|
||||
}
|
||||
if (!$warehouse_id || $zone === '' || $aisle === '' || $rack === '') {
|
||||
if (!$warehouse_id || $zone === '' || $aisle === '' || $bin === '') {
|
||||
throw new Exception('Location label is incomplete.');
|
||||
}
|
||||
|
||||
@@ -531,19 +531,19 @@ class BarcodeManager {
|
||||
(int)$label['warehouse_id'] !== $warehouse_id ||
|
||||
$label['zone'] !== $zone ||
|
||||
$label['aisle'] !== $aisle ||
|
||||
$label['rack'] !== $rack
|
||||
$label['bin'] !== $bin
|
||||
) {
|
||||
throw new Exception('Location barcode label does not match its registry.');
|
||||
}
|
||||
|
||||
$this->validateLocation($warehouse_id, $zone, $aisle, $rack);
|
||||
$this->validateLocation($warehouse_id, $zone, $aisle, $bin);
|
||||
|
||||
return [
|
||||
'type' => 'loc',
|
||||
'warehouse_id' => $warehouse_id,
|
||||
'zone' => $zone,
|
||||
'aisle' => $aisle,
|
||||
'rack' => $rack,
|
||||
'bin' => $bin,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user