优化
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
export function defaultPackingBoxes(items) {
|
||||
return items.filter(item => Number(item.quantity) > 0).map(item => ({
|
||||
quantities: { [item.skuCode]: Number(item.quantity) }, length: '', width: '', height: '', weight: ''
|
||||
}))
|
||||
}
|
||||
|
||||
export function packingBoxPayload(box) {
|
||||
return { items: Object.entries(box.quantities || {}).filter(([, quantity]) => Number(quantity) > 0)
|
||||
.map(([skuCode, quantity]) => ({ skuCode, quantity: Number(quantity) })),
|
||||
length: Number(box.length), width: Number(box.width), height: Number(box.height), weight: Number(box.weight) }
|
||||
}
|
||||
|
||||
export function validPackingAllocation(boxes, expected) {
|
||||
if (!boxes.length) return false
|
||||
const totals = {}
|
||||
for (const box of boxes) {
|
||||
const payload = packingBoxPayload(box)
|
||||
if (!payload.items.length || !['length', 'width', 'height', 'weight'].every(key => Number.isFinite(payload[key]) && payload[key] > 0)) return false
|
||||
for (const item of payload.items) {
|
||||
if (!Number.isSafeInteger(item.quantity) || item.quantity <= 0 || !Object.hasOwn(expected, item.skuCode)) return false
|
||||
totals[item.skuCode] = (totals[item.skuCode] || 0) + item.quantity
|
||||
}
|
||||
}
|
||||
return Object.entries(expected).filter(([, quantity]) => Number(quantity) > 0).every(([sku, quantity]) => totals[sku] === Number(quantity))
|
||||
&& Object.keys(totals).length === Object.values(expected).filter(quantity => Number(quantity) > 0).length
|
||||
}
|
||||
Reference in New Issue
Block a user