优化
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
export function returnSelections(task) {
|
||||
return (task?.items || []).filter(item => item.returnCartonId && ['SKU_LABEL', 'CARTON_AND_SKU', 'RETURN_BULK_SKU_LABEL'].includes(item.operationType))
|
||||
}
|
||||
export function returnDeductions(task) {
|
||||
const rows = new Map()
|
||||
for (const item of returnSelections(task)) {
|
||||
const skus = item.operationType === 'RETURN_BULK_SKU_LABEL' ? [{ skuCode: item.skuCode, quantity: item.expectedPackages }] : item.skuItems || []
|
||||
for (const sku of skus) {
|
||||
const key = `${item.cartonMark}::${sku.skuCode}`
|
||||
const row = rows.get(key) || { cartonMark: item.cartonMark, skuCode: sku.skuCode, quantity: 0 }
|
||||
row.quantity += Number(sku.quantity || 0); rows.set(key, row)
|
||||
}
|
||||
}
|
||||
return [...rows.values()]
|
||||
}
|
||||
export function requiresReturnPack(task) {
|
||||
const totals = new Map()
|
||||
for (const row of returnDeductions(task)) totals.set(row.cartonMark, (totals.get(row.cartonMark) || 0) + row.quantity)
|
||||
return returnSelections(task).some(item => !Number(item.returnQuantity) || totals.get(item.cartonMark) < Number(item.returnQuantity))
|
||||
}
|
||||
export function returnPackFacts(task) {
|
||||
return (task?.history || []).filter(row => row.action === 'RETURN_PACK').flatMap(row => {
|
||||
try { const detail = typeof row.detail === 'string' ? JSON.parse(row.detail) : row.detail; return detail?.round === (task.reviewedAt || 'INITIAL') ? [detail] : [] } catch { return [] }
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user