This commit is contained in:
seb
2026-10-20 03:02:08 +02:00
parent b727e00928
commit 42241ea541
3 changed files with 44 additions and 1 deletions

View File

@@ -1259,6 +1259,7 @@ class ManifestForm extends PureComponent {
<ManifestLines
kind={cfg.kind}
columns={cfg.columns}
docId={this.props.docId}
lines={lines}
saving={saving}
wide={4}

View File

@@ -609,6 +609,25 @@ class ManifestFormLine extends PureComponent {
: null));
const lineAmount = parseNum(getFirstVal(this.props.line?.amount, this.props.line?.menge)) ?? 0;
const undeliveredOrders = Array.isArray(cachedArticle.undeliveredOrders)
? cachedArticle.undeliveredOrders
: [];
const currentDocId = this.props.docId != null
? Number(this.props.docId)
: (this.props.line?.manifestId != null ? Number(this.props.line.manifestId) : null);
const otherOrders = currentDocId != null && kind === 'order'
? undeliveredOrders.filter((ord) => Number(ord.orderId) !== currentDocId)
: undeliveredOrders;
const reservedInOtherOrders = otherOrders.reduce(
(sum, ord) => sum + (Number(ord.amount) || 0),
0,
);
const reservedTitle = isTracked !== false && reservedInOtherOrders > 0
? `Bereits in anderen Aufträgen reserviert:\n${otherOrders
.map((ord) => `• ${ord.orderNumber || (ord.orderId ? `Auftrag #${ord.orderId}` : 'Auftrag')}: ${formatStock(ord.amount)}${ord.customerName ? ` (${ord.customerName})` : ''}`)
.join('\n')}`
: undefined;
return (
<Box
sx={{
@@ -729,19 +748,23 @@ class ManifestFormLine extends PureComponent {
<Typography
variant="caption"
fontWeight={600}
title={reservedTitle}
sx={{
color:
stockVal == null
? 'text.disabled'
: stockVal <= 0
? 'error.main'
: lineAmount > stockVal
: lineAmount > (stockVal - reservedInOtherOrders)
? 'warning.main'
: 'text.secondary',
fontSize: '0.72rem',
}}
>
Bestand: {isTracked === false ? '∞' : formatStock(stockVal)}
{isTracked !== false && reservedInOtherOrders > 0
? ` (${formatStock(reservedInOtherOrders)} reserviert)`
: ''}
</Typography>
{/* Marge */}
@@ -933,6 +956,19 @@ class ManifestFormLine extends PureComponent {
? rawWarehouses.reduce((sum, wh) => sum + (Number(wh.stock) || 0), 0)
: null));
const deliveryUndelivered = Array.isArray(fullArticle.undeliveredOrders)
? fullArticle.undeliveredOrders
: [];
const reservedInOtherOrdersDelivery = deliveryUndelivered.reduce(
(sum, ord) => sum + (Number(ord.amount) || 0),
0,
);
const reservedTitleDelivery = isDeliveryTracked !== false && reservedInOtherOrdersDelivery > 0
? `In Kundenaufträgen reserviert:\n${deliveryUndelivered
.map((ord) => `• ${ord.orderNumber || (ord.orderId ? `Auftrag #${ord.orderId}` : 'Auftrag')}: ${formatStock(ord.amount)}${ord.customerName ? ` (${ord.customerName})` : ''}`)
.join('\n')}`
: undefined;
return (
<Box
sx={{
@@ -1069,6 +1105,7 @@ class ManifestFormLine extends PureComponent {
<Typography
variant="caption"
fontWeight={600}
title={reservedTitleDelivery}
sx={{
color:
deliveryStockVal == null
@@ -1080,6 +1117,9 @@ class ManifestFormLine extends PureComponent {
}}
>
Bestand: {isDeliveryTracked === false ? '∞' : formatStock(deliveryStockVal)}
{isDeliveryTracked !== false && reservedInOtherOrdersDelivery > 0
? ` (${formatStock(reservedInOtherOrdersDelivery)} reserviert)`
: ''}
</Typography>
{/* Marge */}

View File

@@ -24,6 +24,7 @@ class ManifestLines extends PureComponent {
lines,
saving,
partyId,
docId,
linesColor,
dirtyLineFields = {},
shipments,
@@ -145,6 +146,7 @@ class ManifestLines extends PureComponent {
index={index}
positionIndex={index + 1}
kind={kind}
docId={docId}
line={line.key != null ? line : { ...line, key: index }}
columns={columns}
saving={saving}