feat(client): surface Excel draft import in order creation

This commit is contained in:
2026-09-01 20:38:12 +08:00
parent fb8a4743f6
commit aadd063028
9 changed files with 118 additions and 41 deletions
@@ -144,11 +144,11 @@ test('requires customs inspection when any cargo is a wooden product', () => {
const draft = validDraft()
draft.items[0].woodenProduct = true
draft.customsInspection = null
assert.ok(validateFirstLegOrderDraft(draft).includes('木制品必须选择商检'))
assert.ok(validateFirstLegOrderDraft(draft).includes('第 1 条货物为木制品,“是否商检”必须选择“是”'))
draft.customsInspection = false
assert.ok(validateFirstLegOrderDraft(draft).includes('木制品必须选择商检'))
assert.ok(validateFirstLegOrderDraft(draft).includes('第 1 条货物为木制品,“是否商检”必须选择“是”'))
draft.customsInspection = true
assert.ok(!validateFirstLegOrderDraft(draft).includes('木制品必须选择商检'))
assert.ok(!validateFirstLegOrderDraft(draft).some((message) => message.includes('为木制品')))
})
test('summarizes cargo values from line items', () => {
+1 -3
View File
@@ -132,10 +132,8 @@ export function validateFirstLegOrderDraft(draft: FirstLegOrderDraft) {
if (!Number.isInteger(item.unitsPerPackage) || item.unitsPerPackage <= 0) errors.push(`${line}每箱数量必须为正整数`)
if (item.grossWeightKg <= 0) errors.push(`${line}毛重必须大于 0`)
if (item.volumeCbm <= 0) errors.push(`${line}体积必须大于 0`)
if (item.woodenProduct && draft.customsInspection !== true) errors.push(`${line}为木制品,“是否商检”必须选择“是”`)
})
if (draft.items.some((item) => item.woodenProduct) && draft.customsInspection !== true) {
errors.push('木制品必须选择商检')
}
return errors
}