train loading for import

This commit is contained in:
Hagernesh
2026-07-04 09:33:07 +00:00
parent 5b4f624188
commit 00cd1fccf6
13 changed files with 534 additions and 34 deletions

View File

@@ -73,6 +73,10 @@ export function CustomerTruckAssignmentCard({
(n) => !assignedNumbers.has(n),
);
// EXPORT trucks deliver known containers (pre-selected). IMPORT trucks don't —
// staff register + weigh what was loaded when the truck leaves.
const isExport = booking.tradeDirection === "EXPORT";
const resetForm = () => {
setPlateNumber("");
setDriverName("");
@@ -87,7 +91,8 @@ export function CustomerTruckAssignmentCard({
truckPlateNumber: plateNumber.trim().toUpperCase(),
driverName: driverName.trim(),
truckType: truckType.trim(),
containerNumbers: containers,
// Import: containers are registered + weighed on departure, not here.
containerNumbers: isExport ? containers : [],
}),
onSuccess: (list) => {
queryClient.setQueryData(trucksKey, list);
@@ -118,7 +123,7 @@ export function CustomerTruckAssignmentCard({
setError("Plate number, driver name and truck type are required.");
return;
}
if (containers.length < 1 || containers.length > 2) {
if (isExport && (containers.length < 1 || containers.length > 2)) {
setError("Select 1 or 2 container numbers for this truck.");
return;
}
@@ -202,8 +207,8 @@ export function CustomerTruckAssignmentCard({
</Alert>
)}
{/* Add-truck form */}
{availableContainers.length > 0 ? (
{/* Add-truck form. Export needs unassigned containers; import always allows another truck. */}
{(isExport ? availableContainers.length > 0 : true) ? (
<>
<Divider label="Add a truck" labelPosition="center" />
<SimpleGrid cols={{ base: 1, sm: 2 }} spacing="sm">
@@ -226,17 +231,19 @@ export function CustomerTruckAssignmentCard({
value={truckType || null}
onChange={(value) => setTruckType(value ?? "")}
/>
<MultiSelect
label="Containers to load (12)"
required
placeholder="Select container numbers"
data={availableContainers}
value={containers}
onChange={setContainers}
maxValues={2}
searchable
nothingFoundMessage="No unassigned containers"
/>
{isExport && (
<MultiSelect
label="Containers to load (12)"
required
placeholder="Select container numbers"
data={availableContainers}
value={containers}
onChange={setContainers}
maxValues={2}
searchable
nothingFoundMessage="No unassigned containers"
/>
)}
</SimpleGrid>
<Group justify="flex-end">
<Button