From bac7e0b214d069f5347e53c46b4c6b2f6ead71dd Mon Sep 17 00:00:00 2001 From: liuyihe <2513762445@qq.com> Date: Fri, 9 Oct 2026 15:53:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B4=E6=A0=87=E7=94=B3=E8=AF=B7=EF=BC=8C?= =?UTF-8?q?=E4=BB=93=E5=82=A8=E8=BD=AC=E8=BF=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../phase4-overseas-return-followups.mjs | 6 +++--- .../phase4-overseas-return-receipt-contract.test.mjs | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/admin-test-env-modules/phase4-overseas-return-followups.mjs b/scripts/admin-test-env-modules/phase4-overseas-return-followups.mjs index da71efdfc..cca62cca9 100644 --- a/scripts/admin-test-env-modules/phase4-overseas-return-followups.mjs +++ b/scripts/admin-test-env-modules/phase4-overseas-return-followups.mjs @@ -293,7 +293,7 @@ export async function verifyReturnOutbound(context, merchantToken, pdaToken, { const before = await snapshot() const carton = before.carton require('出库箱历史明细归属及SKU数量有效', carton?.cartonMark === cartonMark && carton.customerId === customerId - && carton.overseasWarehouseId === warehouseId && carton.sourceReturnNo === returnNo && carton.status === 'AVAILABLE' + && carton.overseasWarehouseId === warehouseId && carton.sourceReturnNo === returnNo && carton.status === 'OUTBOUND_PENDING' && carton.items?.length > 0 && new Set(carton.items.map(row => row.skuCode)).size === carton.items.length && Number(carton.skuTypes) === carton.items.length && carton.items.every(row => nonBlank(row.skuCode) && Number.isSafeInteger(Number(row.quantity)) && Number(row.quantity) > 0) @@ -315,7 +315,7 @@ export async function verifyReturnOutbound(context, merchantToken, pdaToken, { const quantities = new Map(carton.items.map(row => [row.skuCode, Number(row.quantity)])) require('待出库SKU库存唯一且足够', new Set(before.balances.map(row => row.skuCode)).size === before.balances.length && [...quantities].every(([sku, quantity]) => before.balances.some(row => row.skuCode === sku - && Number(row.totalQuantity) >= quantity && Number(row.availableQuantity) >= quantity && Number(row.cartonQuantity) >= 1))) + && Number(row.totalQuantity) >= quantity && Number(row.cartonQuantity) >= 1))) const pickBody = { outboundPalletItemId: item.outboundPalletItemId, inventoryPositionId: null, packages: 1, cartonMarks: [position.cartonMark], idempotencyKey: key(context, `${action}-PICK`) } await command(pdaToken, 'POST', 'PDA扫描真实退货箱', `${path}/pick`, pickBody) @@ -323,7 +323,7 @@ export async function verifyReturnOutbound(context, merchantToken, pdaToken, { const expectedBalances = before.balances.map(row => { const quantity = quantities.get(row.skuCode) return quantity === undefined ? row : { ...row, totalQuantity: Number(row.totalQuantity) - quantity, - availableQuantity: Number(row.availableQuantity) - quantity, cartonQuantity: Number(row.cartonQuantity) - 1 } + cartonQuantity: Number(row.cartonQuantity) - 1 } }) const withoutTime = rows => rows.map(({ updatedAt, ...row }) => row) require('逐SKU扣减实际件数与一个可用箱且其他SKU不变', facts(withoutTime(picked.balances)) === facts(withoutTime(expectedBalances)), diff --git a/scripts/admin-test-env-modules/phase4-overseas-return-receipt-contract.test.mjs b/scripts/admin-test-env-modules/phase4-overseas-return-receipt-contract.test.mjs index b1216edc3..f1bd550b5 100644 --- a/scripts/admin-test-env-modules/phase4-overseas-return-receipt-contract.test.mjs +++ b/scripts/admin-test-env-modules/phase4-overseas-return-receipt-contract.test.mjs @@ -37,7 +37,7 @@ test('relabelled outbound refuses another relabel application before creating an function outboundHarness(fault = '', quantity = 5, multiSku = false, wire = true) { const calls = [] - let picked = false, completed = false, duplicate = false, drift = false + let picked = false, completed = false, duplicate = false, drift = false, reserved = true const context = { marker: 'fixture', token: 'admin', context: { merchantQualificationFixture: { tenantId: '123' } }, createdResources: { phase4OverseasReturnReceipt: {} }, addStep() {}, assert(_m, name, _r, passed) { assert.ok(passed, name) }, @@ -56,14 +56,14 @@ function outboundHarness(fault = '', quantity = 5, multiSku = false, wire = true } else if (fault === 'replay deducts') duplicate = true data = { status: 'IN_PROGRESS' } } else if (path.endsWith('/complete')) { completed = true; data = { status: 'COMPLETED' } } - else if (path.endsWith('/candidates')) data = [{ returnNo: 'RT-1', cartonMark: 'BOX' }] - else if (path.endsWith('/outbound-orders/return')) data = { taskNo: 'TASK', outboundNo: 'OUT' } + else if (path.endsWith('/candidates')) { reserved = false; data = [{ returnNo: 'RT-1', cartonMark: 'BOX' }] } + else if (path.endsWith('/outbound-orders/return')) { reserved = true; data = { taskNo: 'TASK', outboundNo: 'OUT' } } else if (path.endsWith('/return-inventory')) { assert.equal(url.searchParams.get('customerId'), '123'); assert.equal(url.searchParams.get('overseasWarehouseId'), '42') let deducted = picked ? (fault === 'package count deduction' ? 1 : quantity) : 0 if (duplicate || (completed && fault === 'complete deducts')) deducted += quantity const stock = { customerId: fault === 'wrong scope' ? 'other' : '123', overseasWarehouseId: '42', skuCode: 'SKU', - totalQuantity: quantity - deducted, availableQuantity: quantity - deducted, + totalQuantity: quantity - deducted, availableQuantity: reserved ? 0 : quantity - deducted, cartonQuantity: picked && fault !== 'carton not deducted' ? 0 : 1, updatedAt: picked ? 'after' : 'before' } const unrelated = { ...stock, skuCode: 'OTHER', totalQuantity: drift ? 8 : 9, availableQuantity: 9, cartonQuantity: 1 } data = { total: fault === 'truncated page' ? 3 : 2, records: url.searchParams.get('page') === '1' ? [stock] @@ -77,7 +77,7 @@ function outboundHarness(fault = '', quantity = 5, multiSku = false, wire = true data = { records: rows.reverse(), total: rows.length } } else if (path.includes('/return-inventory/cartons/')) data = { cartonMark: 'BOX', customerId: '123', overseasWarehouseId: '42', sourceReturnNo: 'RT-1', relabelNo: 'RL-1', relabelStatus: 'COMPLETED', - status: picked ? 'OUTBOUNDED' : 'AVAILABLE', skuTypes: 1, totalQuantity: quantity, + status: picked ? 'OUTBOUNDED' : reserved ? 'OUTBOUND_PENDING' : 'AVAILABLE', skuTypes: 1, totalQuantity: quantity, receivedAt: picked && fault === 'history time drift' ? '2026-10-02T17:54:38.305' : '2026-10-02T17:52:56.794', items: [{ skuCode: 'SKU', quantity: picked && fault === 'history erased' ? 0 : quantity }] } else if (path.endsWith('/outbound-orders/OUT')) data = { outbound: { outboundNo: 'OUT', outboundType: 'RETURN_OUTBOUND', status: completed ? 'OUTBOUNDED' : 'WAIT_PICK' }, pallets: [{ id: '9', cartonMarks: 'BOX', pickedPackageCount: picked ? 1 : 0 }] } @@ -89,7 +89,7 @@ function outboundHarness(fault = '', quantity = 5, multiSku = false, wire = true if (multiSku && path.endsWith('/return-inventory')) { data.total += 1 if (url.searchParams.get('page') === '2') data.records.push({ customerId: '123', overseasWarehouseId: '42', - skuCode: 'SKU-B', totalQuantity: picked ? 0 : 2, availableQuantity: picked ? 0 : 2, cartonQuantity: picked ? 0 : 1 }) + skuCode: 'SKU-B', totalQuantity: picked ? 0 : 2, availableQuantity: reserved ? 0 : picked ? 0 : 2, cartonQuantity: picked ? 0 : 1 }) } if (multiSku && path.includes('/return-inventory/cartons/')) { data.skuTypes = 2; data.totalQuantity += 2; data.items.push({ skuCode: 'SKU-B', quantity: 2 })