diff --git a/src/automats/deliveryAutomat.js b/src/automats/deliveryAutomat.js
index 1fe96ee..e0e91a5 100644
--- a/src/automats/deliveryAutomat.js
+++ b/src/automats/deliveryAutomat.js
@@ -780,7 +780,7 @@ const actions = {
const currentActive = targetFilterKey === getFilterKey(automat.state);
if (currentActive) {
automat.setState({
- items: entry.items,
+ items: [...entry.items],
total: currentTotal,
unfilteredTotal,
status: 'ready',
diff --git a/src/components/manifest/DeliveryList.jsx b/src/components/manifest/DeliveryList.jsx
index d44c523..7d268d3 100644
--- a/src/components/manifest/DeliveryList.jsx
+++ b/src/components/manifest/DeliveryList.jsx
@@ -1,4 +1,4 @@
-import { PureComponent, createRef } from 'react';
+import { Component, PureComponent, createRef } from 'react';
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import Chip from '@mui/material/Chip';
@@ -178,8 +178,9 @@ const rowContext = {
};
// MARK:
-class DeliveryRow extends PureComponent {
- supplierName(supplierId) {
+class DeliveryRow extends Component {
+ supplierName(supplierId, fallbackName) {
+ if (fallbackName) return fallbackName;
if (supplierId == null) return '–';
const supplier = rowContext.suppliersById[supplierId];
return partyDisplayName('delivery', supplier) || `Lieferant #${supplierId}`;
@@ -220,9 +221,14 @@ class DeliveryRow extends PureComponent {
const { busyId, onOpen, onDelete, onOpenBookDialog } = rowContext;
const files = Array.isArray(delivery.files) ? delivery.files : [];
- const totalPositions = delivery.ledger?.totalPositions ?? delivery.ledger?.total ?? delivery.positions ?? 0;
- const completelyBooked = delivery.ledger?.completelyOnLedgerPositions ?? delivery.ledger?.bookedPositions ?? 0;
- const unbooked = delivery.ledger?.unbookedPositions ?? Math.max(0, totalPositions - completelyBooked);
+ const totalPositions = Number(delivery.positions || delivery.ledger?.totalPositions || delivery.ledger?.total || 0);
+ const isBooked = Boolean(delivery.ledger?.isBooked || delivery.isBooked);
+ const completelyBooked = Number(delivery.ledger?.completelyOnLedgerPositions || delivery.ledger?.bookedPositions || (isBooked ? totalPositions : 0));
+ const unbooked = isBooked
+ ? 0
+ : (delivery.ledger?.unbookedPositions != null
+ ? Number(delivery.ledger.unbookedPositions)
+ : Math.max(0, totalPositions - completelyBooked));
return (
- {this.supplierName(delivery.supplierId)}
+ {this.supplierName(delivery.supplierId, delivery.supplierName)}
@@ -659,6 +665,13 @@ export class DeliveryList extends PureComponent {
unfilteredTotal: state.unfilteredTotal ?? 0,
filterKey: deliveryAutomat.getFilterKey(state),
}));
+ if (this.state.items !== deliveryAutomat.state.items) {
+ this.setState({
+ items: deliveryAutomat.state.items,
+ unfilteredTotal: deliveryAutomat.state.unfilteredTotal ?? 0,
+ filterKey: deliveryAutomat.getFilterKey(deliveryAutomat.state),
+ });
+ }
this.unsubNumber = numberAutomat.subscribe(this, () => {
this.headerItem = createDummyTestDelivery();
this.forceUpdate();