45 lines
3.4 KiB
JavaScript
45 lines
3.4 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import path from "node:path";
|
|
|
|
const root = process.cwd();
|
|
|
|
function readSource(relativePath) {
|
|
return readFileSync(path.join(root, relativePath), "utf8");
|
|
}
|
|
|
|
const inventory = readSource("src/views/InventoryLedgerView.vue");
|
|
const delivery = readSource("src/views/DeliveryManagementView.vue");
|
|
const app = readSource("src/App.vue");
|
|
const router = readSource("src/router/index.js");
|
|
const deliveryWorkspace = readSource("src/views/DeliveryWorkspaceView.vue");
|
|
|
|
assert.match(inventory, /delivery_mode:\s*"SALES_ORDER"/, "sales-out form should default to sales-order delivery mode");
|
|
assert.match(inventory, /直接客户发货/, "warehouse sales-out drawer should support direct customer delivery");
|
|
assert.match(inventory, /销售订单发货/, "warehouse sales-out drawer should keep sales-order delivery mode");
|
|
assert.match(inventory, /isSalesOrderDelivery/, "sales-out drawer should centralize mode-dependent behavior");
|
|
assert.match(inventory, /setDeliveryMode\("DIRECT_CUSTOMER"\)/, "direct customer mode should be selectable");
|
|
assert.match(inventory, /deliveryForm\.delivery_mode === "SALES_ORDER"/, "sales order fields should be conditional");
|
|
assert.match(inventory, /source_material_summary/, "pre-submit allocation rows should expose source material summary");
|
|
assert.match(inventory, />来源材料摘要</, "pre-submit allocation table should show source material summary column");
|
|
assert.match(inventory, />成品库存批次号</, "pre-submit allocation table should show finished stock lot column");
|
|
assert.match(inventory, />来源原材料库存批次号</, "pre-submit allocation table should show source raw-material lot column");
|
|
assert.match(inventory, /sales_order_id:\s*isSalesOrderDelivery\.value \? Number\(deliveryForm\.sales_order_id\) : null/, "direct customer delivery should send null sales_order_id");
|
|
assert.match(inventory, /sales_order_item_id:\s*isSalesOrderDelivery\.value \? Number\(deliveryForm\.sales_order_item_id\) : null/, "direct customer delivery lines should send null sales_order_item_id");
|
|
|
|
assert.match(delivery, /发货台账/, "delivery management should be renamed to delivery ledger");
|
|
assert.match(delivery, /交付查询/, "delivery ledger should describe query/trace use");
|
|
assert.match(delivery, />销售订单号</, "delivery ledger should show sales order number");
|
|
assert.match(delivery, /source_material_summary/, "delivery ledger detail should keep material trace summary");
|
|
assert.doesNotMatch(delivery, /新增发货/, "delivery ledger must not expose create-delivery button");
|
|
assert.doesNotMatch(delivery, /openCreateDrawer/, "delivery ledger must not keep create drawer action");
|
|
assert.doesNotMatch(delivery, /submitDelivery/, "delivery ledger must not keep create submit handler");
|
|
assert.doesNotMatch(delivery, /postResource/, "delivery ledger must not import write API helpers");
|
|
assert.doesNotMatch(delivery, /uploadResource/, "delivery ledger must not upload logistics photos");
|
|
assert.doesNotMatch(delivery, /title="新增发货"/, "delivery ledger must not contain create drawer");
|
|
assert.match(app, /label: "发货台账"/, "main navigation should expose delivery ledger naming");
|
|
assert.match(router, /title: "发货台账"/, "route tab title should expose delivery ledger naming");
|
|
assert.match(deliveryWorkspace, /label: "发货台账"/, "delivery workspace section should expose delivery ledger naming");
|
|
|
|
console.log("delivery entry unification checks passed");
|