优化
This commit is contained in:
+10
-5
@@ -12,7 +12,7 @@ export function createItemStates(items) {
|
||||
}, {})
|
||||
}
|
||||
|
||||
export function getPickSummary(items, states) {
|
||||
export function getPickSummary(items, states, partialQuantities = {}) {
|
||||
const summary = {
|
||||
total: items.length,
|
||||
picked: 0,
|
||||
@@ -23,7 +23,11 @@ export function getPickSummary(items, states) {
|
||||
|
||||
items.forEach((item) => {
|
||||
const status = states[item.id] || ITEM_STATUS.PENDING
|
||||
summary[status] += 1
|
||||
const quantity = Math.max(1, Number(item.qty || 1))
|
||||
summary.total += quantity - 1
|
||||
summary[status] += status === ITEM_STATUS.PARTIAL
|
||||
? Math.max(0, Number(partialQuantities[item.id] || 0))
|
||||
: quantity
|
||||
})
|
||||
|
||||
summary.processed = summary.picked + summary.partial + summary.skipped
|
||||
@@ -56,12 +60,13 @@ export function submitStates(items, states) {
|
||||
}
|
||||
}
|
||||
|
||||
export function classifyScan(items, states, scanCode) {
|
||||
const item = items.find((entry) => entry.sku === scanCode) || null
|
||||
export function classifyScan(items, states, scanCode, scannedBoxCodes = {}) {
|
||||
const item = items.find((entry) => (entry.boxCodes || []).includes(scanCode)) || null
|
||||
if (!item) return { type: 'unknown', item: null }
|
||||
if (scannedBoxCodes[scanCode]) return { type: 'processed', item, status: states[item.id] || ITEM_STATUS.PARTIAL }
|
||||
|
||||
const status = states[item.id] || ITEM_STATUS.PENDING
|
||||
if (status === ITEM_STATUS.PENDING) return { type: 'pending', item }
|
||||
if (status !== ITEM_STATUS.PICKED && status !== ITEM_STATUS.SKIPPED) return { type: 'pending', item }
|
||||
|
||||
return { type: 'processed', item, status }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user