feat: support mixed-SKU dropship cartons

This commit is contained in:
2026-09-11 15:38:19 +08:00
parent 0db11517db
commit cc7c2f0954
42 changed files with 1263 additions and 128 deletions
@@ -1793,6 +1793,7 @@ CALL phase1_add_column('ord_order_cargo', 'product_height_cm', "DECIMAL(12,2) NU
CALL phase1_add_column('ord_order_cargo', 'shipment_id', "VARCHAR(64) NULL COMMENT 'Cargo Amazon Shipment ID'");
CALL phase1_add_column('ord_order_cargo', 'reference_id', "VARCHAR(64) NULL COMMENT 'Cargo Amazon Reference ID'");
CALL phase1_add_column('ord_order_cargo', 'product_image_file_id', "BIGINT UNSIGNED NULL COMMENT 'Product image logical file ID'");
CALL phase1_add_column('ord_order_cargo', 'packing_group_no', "VARCHAR(32) NULL COMMENT '混箱组合号;同组货物行共享同一批物理箱'");
CALL phase1_add_column('ord_order_cargo', 'wooden_product', "TINYINT(1) NOT NULL DEFAULT 0 COMMENT '木制品权威判定快照;1时订单必须商检'");
UPDATE ord_order_cargo cargo
@@ -2906,6 +2907,23 @@ CREATE TABLE IF NOT EXISTS fl_inbound_carton_label (
KEY idx_carton_label_detail (tenant_id, inbound_id, inbound_detail_id),
CONSTRAINT fk_carton_label_inbound FOREIGN KEY (inbound_id) REFERENCES fl_inbound_order (id)
) ENGINE=InnoDB COMMENT='首次打印前冻结的实际箱号与订单货物明细映射';
CREATE TABLE IF NOT EXISTS fl_inbound_carton_label_sku (
id BIGINT UNSIGNED NOT NULL COMMENT '箱唛SKU快照ID',
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '客户ID和数据隔离键',
inbound_id BIGINT UNSIGNED NOT NULL COMMENT '入库单ID',
carton_label_id BIGINT UNSIGNED NOT NULL COMMENT '物理箱唛ID',
inbound_detail_id BIGINT UNSIGNED NOT NULL COMMENT '订单货物明细ID',
sku_code VARCHAR(128) NOT NULL COMMENT 'SKU编码快照',
cargo_name VARCHAR(255) NULL COMMENT '货物名称快照',
expected_quantity INT UNSIGNED NOT NULL COMMENT '该物理箱内应收SKU数量',
line_no INT UNSIGNED NOT NULL COMMENT '箱内SKU展示顺序',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
PRIMARY KEY (id),
UNIQUE KEY uk_carton_label_sku_detail (carton_label_id,inbound_detail_id),
KEY idx_carton_label_sku_code (tenant_id,inbound_id,sku_code),
CONSTRAINT fk_carton_label_sku_label FOREIGN KEY (carton_label_id) REFERENCES fl_inbound_carton_label(id)
) ENGINE=InnoDB COMMENT='物理箱唛内的多SKU冻结快照';
-- 存量环境可能缺少稳定箱码映射兼容字段;CREATE TABLE IF NOT EXISTS 不会补列。
DROP PROCEDURE IF EXISTS unified_carton_label_add_column;
@@ -18242,6 +18260,23 @@ CREATE TABLE IF NOT EXISTS fl_dropship_pallet_carton (
CONSTRAINT fk_dropship_carton_pallet FOREIGN KEY (pallet_id) REFERENCES fl_dropship_pallet(id),
CONSTRAINT fk_dropship_carton_label FOREIGN KEY (carton_label_id) REFERENCES fl_inbound_carton_label(id)
) ENGINE=InnoDB COMMENT='一件代发托盘内逐箱SKU和入仓单明细';
CREATE TABLE IF NOT EXISTS fl_dropship_pallet_carton_sku (
id BIGINT UNSIGNED NOT NULL COMMENT '清点箱SKU明细ID',
carton_id BIGINT UNSIGNED NOT NULL COMMENT '清点物理箱ID',
inbound_detail_id BIGINT UNSIGNED NOT NULL COMMENT '入仓货物明细ID',
sku_code VARCHAR(128) NOT NULL COMMENT 'SKU编码快照',
cargo_name VARCHAR(255) NULL COMMENT '货物名称快照',
expected_quantity INT UNSIGNED NOT NULL COMMENT '应收数量',
actual_quantity INT UNSIGNED NOT NULL COMMENT '实收数量',
discrepancy_status VARCHAR(24) NOT NULL COMMENT 'MATCH或ACCEPTED_VARIANCE',
discrepancy_remark VARCHAR(500) NULL COMMENT '差异处理说明',
line_no INT UNSIGNED NOT NULL COMMENT '箱内SKU顺序',
PRIMARY KEY (id),
UNIQUE KEY uk_dropship_carton_sku_detail (carton_id,inbound_detail_id),
KEY idx_dropship_carton_sku_code (sku_code,carton_id),
CONSTRAINT fk_dropship_carton_sku_carton FOREIGN KEY (carton_id) REFERENCES fl_dropship_pallet_carton(id)
) ENGINE=InnoDB COMMENT='一件代发物理箱内逐SKU清点事实';
-- 已存在开发库直接收敛到逐箱清点与整托分柜结构;新建库由上面的最新定义一次完成。
DROP PROCEDURE IF EXISTS converge_dropship_palletization_schema;