优化
This commit is contained in:
@@ -18,9 +18,29 @@ function page(overrides = {}) {
|
||||
return { vm, calls, definition }
|
||||
}
|
||||
|
||||
test('scanning a discard outbound document opens the discard workflow with its linked number', () => {
|
||||
const { vm } = page()
|
||||
vm.discardTasks = [{ discardNo: 'CD-1', outboundNo: 'OB-1', palletNo: 'P-1', status: 'PENDING' }]
|
||||
vm.openScannedTask = () => { throw new Error('must not enter regular inventory picking') }
|
||||
vm.handleScan('OB-1')
|
||||
assert.equal(vm.discardCurrent.discardNo, 'CD-1')
|
||||
assert.equal(vm.discardCurrent.outboundNo, 'OB-1')
|
||||
})
|
||||
|
||||
test('discard pallet resolution passes the selected discard number', async () => {
|
||||
let received
|
||||
const { vm } = page({ resolveCargoDiscardPallet: async (...args) => {
|
||||
received = args
|
||||
return { discardNo: 'CD-2', palletNo: 'P-1', skus: [] }
|
||||
} })
|
||||
vm.discardCurrent = { discardNo: 'CD-2' }
|
||||
await vm.resolveDiscardPallet('P-1')
|
||||
assert.deepEqual(received, ['P-1', 'CD-2'])
|
||||
})
|
||||
|
||||
test('discard requires restored photos and retains task while native camera returns', async () => {
|
||||
const { vm, definition } = page({ requireSession: () => true, restoreFulfillmentDraft() {} })
|
||||
vm.discardCurrent = { discardNo: 'CD-1' }; vm.discardTask = { palletNo: 'PALLET', status: 'PENDING', skus: [{ itemId: 'sku', plannedPackages: 3 }] }; vm.discardActuals = { sku: 1 }
|
||||
vm.discardCurrent = { discardNo: 'CD-1' }; vm.discardTask = { palletNo: 'PALLET', status: 'PENDING', skus: [{ itemId: 'sku', plannedPackages: 3 }] }; vm.discardActuals = { sku: 3 }
|
||||
assert.equal(vm.canConfirmDiscard, false)
|
||||
vm.discardPhotoReady = true; assert.equal(vm.canConfirmDiscard, false)
|
||||
vm.discardPhotos = [{ fileId: '101' }]; assert.equal(vm.canConfirmDiscard, true)
|
||||
@@ -129,3 +149,37 @@ test('closing or switching discard order ignores the previous resolve response',
|
||||
pending.resolve({ discardNo: 'FIRST', palletNo: 'PALLET', skus: [] }); await first
|
||||
assert.equal(vm.discardTask, null); assert.equal(vm.error, null)
|
||||
})
|
||||
|
||||
|
||||
test('loose disposal opens all marks, blocks partial scans and accepts explicit bulk confirmation', async () => {
|
||||
const { vm } = page()
|
||||
vm.discardTasks = [{ discardNo: 'CD-L', palletNo: '散箱', scanMode: 'CARTON', cartonMarks: ['BOX-1', 'BOX-2'], status: 'PENDING', skus: [{ itemId: 'sku', plannedPackages: 2 }] }]
|
||||
vm.openDiscardOrder('CD-L')
|
||||
await Promise.resolve()
|
||||
assert.equal(vm.discardTask.scanMode, 'CARTON')
|
||||
assert.deepEqual(vm.discardTask.cartonMarks, ['BOX-1', 'BOX-2'])
|
||||
vm.discardPhotoReady = true; vm.discardPhotos = [{ fileId: '101' }]
|
||||
assert.equal(vm.canConfirmDiscard, false)
|
||||
await vm.resolveDiscardPallet('BOX-1'); await vm.resolveDiscardPallet('BOX-1')
|
||||
assert.deepEqual(vm.discardScannedMarks, ['BOX-1'])
|
||||
assert.equal(vm.canConfirmDiscard, false)
|
||||
await vm.resolveDiscardPallet('BOX-2')
|
||||
assert.equal(vm.canConfirmDiscard, true)
|
||||
vm.discardActuals.sku = 1; assert.equal(vm.canConfirmDiscard, false)
|
||||
vm.discardActuals.sku = 2; vm.discardScannedMarks = []; vm.discardAllCartons = true
|
||||
assert.equal(vm.canConfirmDiscard, true)
|
||||
vm.discardPhotos = []; assert.equal(vm.canConfirmDiscard, false)
|
||||
})
|
||||
|
||||
|
||||
test('partial bound pallet confirmation sends only selected marks and preserves all photo gates', async () => {
|
||||
let payload
|
||||
const { vm } = page({ confirmCargoDiscard: async (...args) => { payload = args }, listCargoDiscardTasks: async () => [] })
|
||||
vm.discardTasks = [{ discardNo: 'CD-P', outboundNo: 'OB-P', palletNo: 'P-1', scanMode: 'CARTON', cartonMarks: ['BOX-2'], status: 'PENDING', skus: [{ itemId: 'sku', plannedPackages: 1 }] }]
|
||||
vm.openDiscardOrder('CD-P'); await Promise.resolve()
|
||||
vm.discardPhotoReady = true; vm.discardPhotos = [{ fileId: '101' }]
|
||||
await vm.resolveDiscardPallet('BOX-2'); assert.equal(vm.canConfirmDiscard, true)
|
||||
await vm.resolveDiscardPallet('BOX-OTHER'); assert.deepEqual(vm.discardScannedMarks, ['BOX-2']); assert.equal(vm.discardTask.palletNo, 'P-1')
|
||||
await vm.confirmDiscard()
|
||||
assert.deepEqual(payload, ['CD-P', 'P-1', [{ itemId: 'sku', actualPackages: 1 }], ['101'], ['BOX-2'], false])
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user