u
This commit is contained in:
@@ -106,6 +106,7 @@ class ManifestForm extends PureComponent {
|
||||
paidTotal: initialEdit?.paidTotal ?? null,
|
||||
paid: Boolean(initialEdit?.paid),
|
||||
shipped: Boolean(initialEdit?.shipped),
|
||||
isShipped: Boolean(initialEdit?.isShipped ?? initialEdit?.shipped),
|
||||
delivered: Boolean(initialEdit?.delivered),
|
||||
isDirty: Boolean(initialEdit?.isDirty),
|
||||
dirtyFields: initialEdit?.dirtyFields || null,
|
||||
@@ -249,6 +250,7 @@ class ManifestForm extends PureComponent {
|
||||
paidTotal: state.paidTotal ?? null,
|
||||
paid: Boolean(state.paid),
|
||||
shipped: Boolean(state.shipped),
|
||||
isShipped: Boolean(state.isShipped ?? state.shipped),
|
||||
delivered: Boolean(state.delivered),
|
||||
isDirty: Boolean(state.isDirty),
|
||||
dirtyFields: state.dirtyFields,
|
||||
@@ -477,6 +479,7 @@ class ManifestForm extends PureComponent {
|
||||
paidTotal: doc.paidTotal ?? null,
|
||||
paid: Boolean(doc.paid),
|
||||
shipped: Boolean(doc.shipped),
|
||||
isShipped: Boolean(doc.isShipped ?? doc.shipped),
|
||||
delivered: Boolean(doc.delivered),
|
||||
};
|
||||
|
||||
@@ -812,24 +815,52 @@ class ManifestForm extends PureComponent {
|
||||
}
|
||||
|
||||
isFullyDelivered() {
|
||||
if (this.state.delivered) return true;
|
||||
if (this.state.delivered || this.state.isShipped || this.state.shipped) return true;
|
||||
const lines = this.state.lines || [];
|
||||
const validLines = lines.filter((l) => l.sku && Number(l.amount) > 0);
|
||||
if (validLines.length === 0) return false;
|
||||
const shippableLines = lines.filter((l) => l.shippable !== false && Number(l.amount) > 0);
|
||||
if (shippableLines.length === 0) return lines.length > 0;
|
||||
|
||||
const shippedBySku = {};
|
||||
const shippedByOrderLineId = {};
|
||||
const shippedByName = {};
|
||||
for (const sh of this.state.shipments || []) {
|
||||
for (const sl of sh.lines || []) {
|
||||
const amt = Number(sl.amount) || 0;
|
||||
if (sl.sku) {
|
||||
const k = String(sl.sku).trim().toLowerCase();
|
||||
shippedBySku[k] = (shippedBySku[k] || 0) + (Number(sl.amount) || 0);
|
||||
shippedBySku[k] = (shippedBySku[k] || 0) + amt;
|
||||
}
|
||||
if (sl.orderLineId != null) {
|
||||
shippedByOrderLineId[sl.orderLineId] = (shippedByOrderLineId[sl.orderLineId] || 0) + amt;
|
||||
}
|
||||
if (sl.name) {
|
||||
const n = String(sl.name).trim().toLowerCase();
|
||||
shippedByName[n] = (shippedByName[n] || 0) + amt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return validLines.every((l) => {
|
||||
const k = String(l.sku).trim().toLowerCase();
|
||||
return (shippedBySku[k] || 0) >= Number(l.amount);
|
||||
const remainingShippedByName = { ...shippedByName };
|
||||
|
||||
return shippableLines.every((l) => {
|
||||
const amt = Number(l.amount) || 0;
|
||||
if (l.sku) {
|
||||
const k = String(l.sku).trim().toLowerCase();
|
||||
return (shippedBySku[k] || 0) >= amt;
|
||||
}
|
||||
if (l.id != null && shippedByOrderLineId[l.id] != null) {
|
||||
return shippedByOrderLineId[l.id] >= amt;
|
||||
}
|
||||
if (l.name) {
|
||||
const n = String(l.name).trim().toLowerCase();
|
||||
const pool = remainingShippedByName[n] || 0;
|
||||
if (pool >= amt) {
|
||||
remainingShippedByName[n] = pool - amt;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -838,10 +869,15 @@ class ManifestForm extends PureComponent {
|
||||
const lineToRemove = prev.lines.find((line) => line.key === key);
|
||||
if (lineToRemove && this.props.kind === 'order') {
|
||||
const rawSku = lineToRemove.sku != null ? String(lineToRemove.sku).trim().toLowerCase() : '';
|
||||
const orderLineId = lineToRemove.id;
|
||||
const lineName = lineToRemove.name != null ? String(lineToRemove.name).trim().toLowerCase() : '';
|
||||
const isShipped = Boolean(
|
||||
rawSku &&
|
||||
(prev.shipments || []).some((sh) =>
|
||||
(sh.lines || []).some((sl) => sl.sku && String(sl.sku).trim().toLowerCase() === rawSku)
|
||||
(sh.lines || []).some((sl) =>
|
||||
(rawSku && sl.sku && String(sl.sku).trim().toLowerCase() === rawSku) ||
|
||||
(orderLineId != null && sl.orderLineId != null && sl.orderLineId === orderLineId) ||
|
||||
(!rawSku && !sl.sku && lineName && sl.name && String(sl.name).trim().toLowerCase() === lineName)
|
||||
)
|
||||
)
|
||||
);
|
||||
if (isShipped) {
|
||||
|
||||
Reference in New Issue
Block a user