优化
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import test from 'node:test'
|
||||
import ts from 'typescript'
|
||||
|
||||
const source = readFileSync(new URL('./returnRelabelCandidates.ts', import.meta.url), 'utf8')
|
||||
const js = ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.ESNext, target: ts.ScriptTarget.ES2022 } }).outputText
|
||||
const { returnRelabelCandidate } = await import(`data:text/javascript;base64,${Buffer.from(js).toString('base64')}`)
|
||||
const converted = {
|
||||
returnCartonId: '20', cartonMark: 'NEW-BOX', availablePackages: 0, skuItems: [],
|
||||
cartonAvailablePackages: 1, cartonSkuItems: [{ skuCode: 'NEW-A', quantity: 10 }, { skuCode: 'NEW-B', quantity: 5 }],
|
||||
}
|
||||
|
||||
test('carton labeling selects the current box and both converted SKUs', () => {
|
||||
const candidate = returnRelabelCandidate(converted, 'carton')
|
||||
assert.equal(candidate.cartonMark, 'NEW-BOX')
|
||||
assert.equal(candidate.availablePackages, 1)
|
||||
assert.equal(candidate.skuCode, 'NEW-A,NEW-B')
|
||||
assert.deepEqual(candidate.skuItems, converted.cartonSkuItems)
|
||||
})
|
||||
|
||||
test('SKU and combined labeling still exclude completed SKU quantities', () => {
|
||||
for (const mode of ['sku', 'carton_and_sku']) {
|
||||
assert.equal(returnRelabelCandidate(converted, mode).availablePackages, 0)
|
||||
assert.deepEqual(returnRelabelCandidate(converted, mode).skuItems, [])
|
||||
}
|
||||
})
|
||||
|
||||
test('an occupied box cannot be selected for carton labeling', () => {
|
||||
assert.equal(returnRelabelCandidate({ ...converted, cartonAvailablePackages: 0 }, 'carton').availablePackages, 0)
|
||||
})
|
||||
@@ -0,0 +1,11 @@
|
||||
import type { RelabelInventoryCandidate } from '../api/warehouseServices'
|
||||
|
||||
export function returnRelabelCandidate(candidate: RelabelInventoryCandidate, mode: string): RelabelInventoryCandidate {
|
||||
if (!candidate.returnCartonId || mode !== 'carton') return candidate
|
||||
return {
|
||||
...candidate,
|
||||
availablePackages: candidate.cartonAvailablePackages,
|
||||
skuItems: candidate.cartonSkuItems,
|
||||
skuCode: candidate.cartonSkuItems.map(item => item.skuCode).join(','),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user