优化
This commit is contained in:
@@ -189,7 +189,7 @@ test('无关联库存按现场箱唛去重计数,提交扫描清单而非手
|
||||
let payload
|
||||
const { vm } = page({ confirmCargoDiscard: async (...args) => { payload = args }, listCargoDiscardTasks: async () => [] })
|
||||
vm.discardCurrent = { discardNo: 'CD-A' }
|
||||
vm.discardTask = { palletNo: 'P-A', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], skus: [{ itemId: 'sku', plannedPackages: 10, actualQuantityEditable: true }] }
|
||||
vm.discardTask = { palletNo: 'P-A', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], skus: [{ itemId: 'sku', plannedPackages: 10, actualQuantityEditable: true, allowedCartonMarks: ['FIELD-A','FIELD-B','FIELD-C','BOX-1','BOX-2',...Array.from({ length: 10 }, (_, i) => 'FIELD-'+i)] }] }
|
||||
vm.discardPhotoReady = true; vm.discardPhotos = [{ fileId: '101' }]
|
||||
for (const value of ['', ' ', null, -1, 11, 1.5, 'abc']) {
|
||||
vm.discardActuals = { sku: value }; assert.equal(vm.canConfirmDiscard, false)
|
||||
@@ -204,7 +204,7 @@ test('无关联库存按现场箱唛去重计数,提交扫描清单而非手
|
||||
})
|
||||
|
||||
test('无关联托盘扫码后从零开始,等待扫描现场箱唛', async () => {
|
||||
const { vm } = page({ resolveCargoDiscardPallet: async () => ({ discardNo: 'CD-A', palletNo: 'P-A', cartonMarks: [], scanMode: 'PALLET', skus: [{ itemId: 'sku', plannedPackages: 10, actualQuantityEditable: true }] }) })
|
||||
const { vm } = page({ resolveCargoDiscardPallet: async () => ({ discardNo: 'CD-A', palletNo: 'P-A', cartonMarks: [], scanMode: 'PALLET', skus: [{ itemId: 'sku', plannedPackages: 10, actualQuantityEditable: true, allowedCartonMarks: ['FIELD-A','FIELD-B','FIELD-C','BOX-1','BOX-2',...Array.from({ length: 10 }, (_, i) => 'FIELD-'+i)] }] }) })
|
||||
vm.discardCurrent = { discardNo: 'CD-A' }
|
||||
await vm.resolveDiscardPallet('P-A')
|
||||
assert.equal(vm.discardActuals.sku, 0)
|
||||
@@ -213,13 +213,14 @@ test('无关联托盘扫码后从零开始,等待扫描现场箱唛', async ()
|
||||
|
||||
test('无关联任务先扫托盘,再扫现场箱唛自动计数', async () => {
|
||||
const { vm } = page()
|
||||
vm.discardTasks = [{ discardNo: 'CD-NO-BOX', palletNo: 'P-1', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], skus: [{ itemId: 'sku', plannedPackages: 2, actualQuantityEditable: true }] }]
|
||||
vm.discardTasks = [{ discardNo: 'CD-NO-BOX', palletNo: 'P-1', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], skus: [{ itemId: 'sku', plannedPackages: 2, actualQuantityEditable: true, allowedCartonMarks: ['FIELD-A','FIELD-B','FIELD-C','BOX-1','BOX-2',...Array.from({ length: 10 }, (_, i) => 'FIELD-'+i)] }] }]
|
||||
vm.openDiscardOrder('CD-NO-BOX'); await Promise.resolve()
|
||||
assert.equal(vm.discardTask, null)
|
||||
await vm.resolveDiscardPallet('P-1')
|
||||
assert.equal(vm.discardTask.palletNo, 'P-1')
|
||||
assert.equal(vm.discardActuals.sku, 0)
|
||||
vm.discardPhotoReady = true; vm.discardPhotos = [{ fileId: '101' }]
|
||||
await vm.scanDiscardCarton('RANDOM-FOREIGN-BOX'); assert.equal(vm.discardActuals.sku, 0); assert.match(vm.error.message, /不属于/);
|
||||
await vm.scanDiscardCarton('FIELD-A'); await vm.scanDiscardCarton('FIELD-B')
|
||||
assert.equal(vm.discardActuals.sku, 2); assert.equal(vm.canConfirmDiscard, true)
|
||||
})
|
||||
@@ -434,7 +435,7 @@ test('失败后刷新仍报错,保留草稿且不再发送出库', async () =>
|
||||
|
||||
test('无关联扫码显示备注,不能扫托盘或超过目标,失败刷新后保留现场箱唛再提交', async () => {
|
||||
let attempts = 0
|
||||
const task = { discardNo: 'CD-FIELD', palletNo: 'PALLET-FIELD', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], remark: '只废弃破损外箱', remainingPackages: 2, skus: [{ itemId: 'sku', plannedPackages: 8, actualQuantityEditable: true }] }
|
||||
const task = { discardNo: 'CD-FIELD', palletNo: 'PALLET-FIELD', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], remark: '只废弃破损外箱', remainingPackages: 2, skus: [{ itemId: 'sku', plannedPackages: 8, actualQuantityEditable: true, allowedCartonMarks: ['FIELD-A','FIELD-B','FIELD-C','BOX-1','BOX-2',...Array.from({ length: 10 }, (_, i) => 'FIELD-'+i)] }] }
|
||||
const { vm } = page({ confirmCargoDiscard: async () => { if (++attempts === 1) throw new Error('余额不足') }, listCargoDiscardTasks: async () => [] })
|
||||
vm.discardTasks = [task]; vm.openDiscardOrder(task.discardNo); await vm.resolveDiscardPallet(task.palletNo)
|
||||
assert.equal(vm.discardOrderRemark, '只废弃破损外箱')
|
||||
@@ -450,7 +451,7 @@ test('无关联扫码显示备注,不能扫托盘或超过目标,失败刷
|
||||
|
||||
test('已扫描现场箱唛可移除并同步回减数量,确认只提交剩余箱唛', async () => {
|
||||
let payload
|
||||
const task = { discardNo: 'CD-REMOVE', palletNo: 'P-REMOVE', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], remainingPackages: 4, skus: [{ itemId: 'sku', plannedPackages: 8, actualQuantityEditable: true }] }
|
||||
const task = { discardNo: 'CD-REMOVE', palletNo: 'P-REMOVE', status: 'PENDING', scanMode: 'PALLET', cartonMarks: [], remainingPackages: 4, skus: [{ itemId: 'sku', plannedPackages: 8, actualQuantityEditable: true, allowedCartonMarks: ['FIELD-A','FIELD-B','FIELD-C','BOX-1','BOX-2',...Array.from({ length: 10 }, (_, i) => 'FIELD-'+i)] }] }
|
||||
const { vm } = page({ confirmCargoDiscard: async (...args) => { payload = args }, listCargoDiscardTasks: async () => [] })
|
||||
vm.discardTasks = [task]; vm.openDiscardOrder(task.discardNo); await vm.resolveDiscardPallet(task.palletNo)
|
||||
await vm.scanDiscardCarton('BOX-1'); await vm.scanDiscardCarton('BOX-2')
|
||||
|
||||
@@ -5,6 +5,15 @@ import vm from 'node:vm'
|
||||
|
||||
const physicalRow = items => ({ items, length: 10, width: 10, height: 10, weight: 1, originalPackaging: true, confirmed: true })
|
||||
|
||||
test('physical volume uses cubic metres while receipt dimensions remain centimetres', () => {
|
||||
const page = setup(async () => ({}))
|
||||
assert.equal(page.rowVolume({ length: 30, width: 20, height: 20 }), '0.012000')
|
||||
assert.equal(page.rowVolume({ length: 1, width: 1, height: 1 }), '0.000001')
|
||||
assert.equal(page.rowVolume({ length: '', width: 20, height: 20 }), '—')
|
||||
page.palletLength = 120; page.palletWidth = 100; page.palletHeight = 150
|
||||
assert.equal(page.palletVolume, '1.800000')
|
||||
})
|
||||
|
||||
test('box and parcel confirmation opens the camera only after every valid row is confirmed', () => {
|
||||
for (const type of ['BOX', 'PARCEL']) {
|
||||
const cameras = []
|
||||
@@ -129,6 +138,7 @@ function setup(confirm, saved = new Map(), scope = 'operator:warehouse', runtime
|
||||
quantity: () => 2, boxCount: () => 1
|
||||
})
|
||||
Object.defineProperty(instance, 'allBoxRowsConfirmed', { get: () => component.computed.allBoxRowsConfirmed.call(instance) })
|
||||
Object.defineProperty(instance, 'palletVolume', { get: () => component.computed.palletVolume.call(instance) })
|
||||
return instance
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user