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
@@ -230,6 +230,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 fl_inbound_measurement (
id BIGINT UNSIGNED NOT NULL COMMENT '测量批次ID',
@@ -1030,3 +1047,19 @@ 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清点事实';