This commit is contained in:
seb
2026-10-18 20:21:27 +02:00
parent 328ba164ec
commit ac9034685f
4 changed files with 151 additions and 63 deletions

View File

@@ -199,22 +199,42 @@ class ManifestLines extends PureComponent {
);
})()}
{(() => {
const hasShippedLines = kind === 'order' && Array.isArray(shipments) && shipments.some((sh) => (sh.lines?.length || 0) > 0);
const hasLedgeredLines = kind === 'delivery' && Array.isArray(lines) && lines.some((line) => {
const ledgerLine = line?.id != null ? ledgerLinesById?.[line.id] : null;
return Boolean(
ledgerLine?.isBooked ||
(ledgerLine && ledgerLine.targetAmount > 0 && ledgerLine.remainingAmount <= 0) ||
(ledgerLine && ledgerLine.bookedAmount > 0) ||
line?.isBooked ||
line?.is_booked
);
});
const disabled = saving || !lines || lines.length === 0 || hasShippedLines || hasLedgeredLines;
const title = hasLedgeredLines
? 'Lieferung enthält bereits im Ledger verbuchte Positionen'
: hasShippedLines
? 'Auftrag enthält bereits ausgelieferte Positionen'
const shippedSkus = new Set();
if (kind === 'order' && Array.isArray(shipments)) {
for (const sh of shipments) {
for (const sl of sh.lines || []) {
if (sl.sku) shippedSkus.add(String(sl.sku).trim().toLowerCase());
}
}
}
const allLinesShipped =
kind === 'order' &&
shippedSkus.size > 0 &&
Array.isArray(lines) &&
lines.length > 0 &&
lines.every((l) => {
const raw = l?.sku != null ? String(l.sku).trim().toLowerCase() : '';
return raw && shippedSkus.has(raw);
});
const allLinesLedgered =
kind === 'delivery' &&
Array.isArray(lines) &&
lines.length > 0 &&
lines.every((line) => {
const ledgerLine = line?.id != null ? ledgerLinesById?.[line.id] : null;
return Boolean(
ledgerLine?.isBooked ||
(ledgerLine && ledgerLine.targetAmount > 0 && ledgerLine.remainingAmount <= 0) ||
(ledgerLine && ledgerLine.bookedAmount > 0) ||
line?.isBooked ||
line?.is_booked
);
});
const disabled = saving || !lines || lines.length === 0 || allLinesShipped || allLinesLedgered;
const title = allLinesLedgered
? 'Alle Positionen der Lieferung sind bereits im Ledger verbucht'
: allLinesShipped
? 'Alle Positionen des Auftrags sind bereits ausgeliefert'
: 'Alle Zeilen entfernen';
return (
<Button