Files
pda-overseas-uniapp/src/utils/return-relabel.js
T
2026-10-12 13:43:37 +08:00

26 lines
1.4 KiB
JavaScript

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 [] }
})
}