|
|
|
@@ -1,5 +1,5 @@
|
|
|
|
|
-- OVERSEAS 当前纯空库初始化入口(文件名沿用原入口,不提供增量升级语义)。
|
|
|
|
|
-- 海外费用资金、仓租四表、审核人名称快照、采购退款请求幂等字段及唯一索引均在本文件最终建表定义中维护。
|
|
|
|
|
-- 海外费用资金、仓租四表、审核人名称快照及简化采购六表均在本文件最终建表定义中维护。
|
|
|
|
|
-- MySQL 8.0+;只允许目标测试环境的服务 schema 为空,已有表立即报错;禁止 --force/遇错继续。
|
|
|
|
|
-- 字段、索引、约束及注释直接定义在 CREATE TABLE 内;不回填、不清理、不改造存量。
|
|
|
|
|
-- 国内 IAM 管理两区域权限;海外不访问国内库。执行方法及系统种子清单见同目录 README.md。
|
|
|
|
@@ -2060,53 +2060,6 @@ CREATE TABLE ll_outbound_pda_task (
|
|
|
|
|
UNIQUE KEY uk_ll_outbound_pda_complete_key (customer_id,completion_idempotency_key)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='一件代发出库PDA拣货任务';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_overseas_procurement_fee (
|
|
|
|
|
purpose VARCHAR(32) NULL COMMENT '费用业务用途;由履约节点确定',
|
|
|
|
|
confirmation_origin VARCHAR(16) NOT NULL DEFAULT 'BUSINESS' COMMENT '核定入口:BUSINESS业务节点、FINANCIAL财务操作',
|
|
|
|
|
fee_version INT NULL COMMENT '同用途费用确认版本',
|
|
|
|
|
active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否当前有效版本',
|
|
|
|
|
determination VARCHAR(24) NULL COMMENT 'POSITIVE正额、ZERO零元、NOT_APPLICABLE不适用',
|
|
|
|
|
original_currency CHAR(3) NULL COMMENT '核定原币CNY或USD',
|
|
|
|
|
original_amount DECIMAL(20,2) NULL COMMENT '核定原币金额',
|
|
|
|
|
exchange_rate DECIMAL(20,6) NULL COMMENT '已确认汇率快照',
|
|
|
|
|
exchange_rate_month CHAR(7) NULL COMMENT '已确认汇率所属月份',
|
|
|
|
|
business_date DATE NULL COMMENT '实际费用业务日期',
|
|
|
|
|
wallet_business_id BIGINT NULL COMMENT '资金冻结对应采购费用记录',
|
|
|
|
|
wallet_business_no VARCHAR(128) NULL COMMENT '资金冻结业务号;实际国际运费引用原预估',
|
|
|
|
|
wallet_hold_id VARCHAR(64) NULL COMMENT 'Finance冻结引用',
|
|
|
|
|
wallet_ledger_id VARCHAR(64) NULL COMMENT 'Finance实际处理流水引用',
|
|
|
|
|
settled_command_event_id VARCHAR(64) NULL COMMENT '成功实扣或退款的资金命令事件',
|
|
|
|
|
source_fee_id BIGINT NULL COMMENT '已实扣费用来源ID',
|
|
|
|
|
parent_fee_id BIGINT NULL COMMENT '原费用或预估引用',
|
|
|
|
|
idempotency_key VARCHAR(128) NULL COMMENT '退款请求幂等键,独立于业务单号',
|
|
|
|
|
request_hash CHAR(64) NULL COMMENT '确认请求摘要',
|
|
|
|
|
id bigint NOT NULL COMMENT '主键ID',
|
|
|
|
|
order_id bigint NOT NULL COMMENT '采购订单ID',
|
|
|
|
|
customer_id varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户ID',
|
|
|
|
|
fee_no varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用业务号',
|
|
|
|
|
fee_item_code varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项编码',
|
|
|
|
|
fee_item_name varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用项名称',
|
|
|
|
|
amount decimal(20,2) NOT NULL COMMENT 'CNY金额',
|
|
|
|
|
currency char(3) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CNY' COMMENT '费用币种',
|
|
|
|
|
voucher_file_id bigint NULL COMMENT '凭证文件ID',
|
|
|
|
|
voucher_file_name varchar(255) COLLATE utf8mb4_unicode_ci NULL COMMENT '凭证文件名',
|
|
|
|
|
remark varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '说明',
|
|
|
|
|
wallet_status varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '资金状态',
|
|
|
|
|
wallet_error_code varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金错误码',
|
|
|
|
|
wallet_error_message varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '资金错误说明',
|
|
|
|
|
wallet_command_event_id varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '当前资金指令事件ID',
|
|
|
|
|
created_by varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登记人',
|
|
|
|
|
created_at datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
|
|
|
|
updated_at datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
|
|
|
|
|
CONSTRAINT chk_procurement_confirmation_origin CHECK(confirmation_origin IN('BUSINESS','FINANCIAL')),
|
|
|
|
|
UNIQUE KEY uk_ll_procurement_fee_version(order_id,purpose,fee_item_code,fee_version),
|
|
|
|
|
UNIQUE KEY uk_ll_procurement_refund_request(order_id,purpose,idempotency_key),
|
|
|
|
|
PRIMARY KEY (id),
|
|
|
|
|
UNIQUE KEY uk_ll_procurement_fee_no (fee_no),
|
|
|
|
|
KEY idx_ll_procurement_fee_order (customer_id,order_id,created_at),
|
|
|
|
|
CONSTRAINT chk_ll_procurement_fee_amount CHECK ((amount >= 0)),
|
|
|
|
|
CONSTRAINT chk_ll_procurement_fee_currency CHECK ((currency = _utf8mb4'CNY'))
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='海外采购费用明细及资金生命周期';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_overseas_procurement_file (
|
|
|
|
|
id bigint NOT NULL COMMENT '主键ID',
|
|
|
|
@@ -3977,245 +3930,33 @@ CREATE TABLE ll_return_carton_count_session (
|
|
|
|
|
UNIQUE KEY uk_ll_return_count_session_receipt(receipt_id)
|
|
|
|
|
) ENGINE=InnoDB COMMENT='退货箱内清点单人单任务持久会话';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_wallet_attempt (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '请求尝试ID',
|
|
|
|
|
order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
|
|
|
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
fee_id BIGINT NOT NULL COMMENT '不可变费用版本ID',
|
|
|
|
|
attempt_no BIGINT NOT NULL COMMENT '费用版本内请求序号',
|
|
|
|
|
operation VARCHAR(32) NOT NULL COMMENT '资金操作:FREEZE冻结、SETTLE结算、SETTLE_ACTUAL实际结算、RELEASE释放、REFUND退款',
|
|
|
|
|
business_no VARCHAR(128) NOT NULL COMMENT 'Finance资金业务号',
|
|
|
|
|
amount DECIMAL(20,2) NULL COMMENT '请求金额;全额结算或释放可空',
|
|
|
|
|
command_event_id VARCHAR(64) NOT NULL COMMENT '资金指令事件唯一引用',
|
|
|
|
|
status VARCHAR(16) NOT NULL COMMENT '资金请求结果:PENDING未决、SUCCEEDED成功、FAILED明确失败',
|
|
|
|
|
result_hash CHAR(64) NULL COMMENT '原业务回执摘要',
|
|
|
|
|
wallet_hold_id VARCHAR(64) NULL COMMENT 'Finance冻结引用',
|
|
|
|
|
wallet_ledger_id VARCHAR(64) NULL COMMENT 'Finance处理流水引用',
|
|
|
|
|
error_code VARCHAR(64) NULL COMMENT '业务失败码',
|
|
|
|
|
error_message VARCHAR(500) NULL COMMENT '内部失败诊断,不直接对客展示',
|
|
|
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '请求时间',
|
|
|
|
|
completed_at DATETIME(3) NULL COMMENT '最终结果时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_attempt_event(command_event_id),
|
|
|
|
|
UNIQUE KEY uk_procurement_attempt_number(fee_id,attempt_no),
|
|
|
|
|
KEY idx_procurement_attempt_order(customer_id,order_id,status),
|
|
|
|
|
CONSTRAINT chk_procurement_attempt_status CHECK(status IN('PENDING','SUCCEEDED','FAILED'))
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用资金命令尝试与不可变结果';
|
|
|
|
|
|
|
|
|
|
-- 采购节点事实与操作幂等;不补写历史订单的购买、授权或收货事实。
|
|
|
|
|
CREATE TABLE ll_procurement_flow (
|
|
|
|
|
order_id BIGINT NOT NULL COMMENT '采购订单ID,一单一个履约批次',
|
|
|
|
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
purchased_at DATETIME(3) NULL COMMENT '真实购买时间',
|
|
|
|
|
purchased_product_name VARCHAR(255) NULL COMMENT '实际购买商品',
|
|
|
|
|
purchased_specification VARCHAR(500) NULL COMMENT '实际购买规格',
|
|
|
|
|
purchased_quantity BIGINT NULL COMMENT '实际购买件数',
|
|
|
|
|
purchase_amount DECIMAL(20,2) NULL COMMENT '供应商实付原币金额',
|
|
|
|
|
purchase_currency CHAR(3) NULL COMMENT '供应商实付原币CNY或USD',
|
|
|
|
|
purchase_voucher_id BIGINT NULL COMMENT '购买凭证引用',
|
|
|
|
|
purchase_issue VARCHAR(500) NULL COMMENT '购买未核定或异常说明',
|
|
|
|
|
purchase_confirmed_at DATETIME(3) NULL COMMENT '货款核定时间,不代表扣费成功',
|
|
|
|
|
actual_warehouse_id BIGINT NULL COMMENT '首次实际收货冻结的仓库ID',
|
|
|
|
|
actual_warehouse_code VARCHAR(128) NULL COMMENT '实际收货仓编码快照',
|
|
|
|
|
actual_warehouse_name VARCHAR(255) NULL COMMENT '实际收货仓名称快照',
|
|
|
|
|
overseas_received_at DATETIME(3) NULL COMMENT '海外整批收货完成时间',
|
|
|
|
|
packing_version INT NULL COMMENT '当前确认装箱清单版本',
|
|
|
|
|
overseas_shipped_at DATETIME(3) NULL COMMENT '国际段整批实际交寄时间',
|
|
|
|
|
domestic_received_at DATETIME(3) NULL COMMENT '国内整批收货完成时间',
|
|
|
|
|
charges_confirmed_at DATETIME(3) NULL COMMENT '国内整单费用核定时间',
|
|
|
|
|
customer_shipped_at DATETIME(3) NULL COMMENT '国内寄客户实际交寄时间',
|
|
|
|
|
domestic_receiver_name VARCHAR(128) NULL COMMENT '国际段国内收件人',
|
|
|
|
|
domestic_receiver_phone VARCHAR(64) NULL COMMENT '国际段国内收件电话',
|
|
|
|
|
domestic_receiver_address VARCHAR(1000) NULL COMMENT '国际段国内接收地址',
|
|
|
|
|
cancelled_at DATETIME(3) NULL COMMENT '购买前取消时间',
|
|
|
|
|
closed_at DATETIME(3) NULL COMMENT '异常关闭时间',
|
|
|
|
|
control_reason VARCHAR(1000) NULL COMMENT '取消或关闭原因',
|
|
|
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
|
|
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
|
|
|
|
|
PRIMARY KEY(order_id), KEY idx_procurement_flow_customer(customer_id,order_id),
|
|
|
|
|
CONSTRAINT chk_procurement_purchase_quantity CHECK(purchased_quantity IS NULL OR purchased_quantity>0),
|
|
|
|
|
CONSTRAINT chk_procurement_purchase_amount CHECK(purchase_amount IS NULL OR purchase_amount>=0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购单一批次履约事实';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_command (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '操作记录ID', order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
|
|
|
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键', action VARCHAR(48) NOT NULL COMMENT '采购节点动作',
|
|
|
|
|
idempotency_key VARCHAR(128) NOT NULL COMMENT '操作幂等键', request_hash CHAR(64) NOT NULL COMMENT '请求摘要',
|
|
|
|
|
operator_id VARCHAR(128) NOT NULL COMMENT '执行人', reason VARCHAR(1000) NOT NULL COMMENT '操作依据',
|
|
|
|
|
detail_json JSON NOT NULL COMMENT '内部操作及更正依据快照,不直接对客展示',
|
|
|
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '执行时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_command(order_id,action,idempotency_key),
|
|
|
|
|
KEY idx_procurement_command_customer(customer_id,order_id,created_at)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购节点幂等与不可变审计';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_budget_authorization (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '预算授权ID', order_id BIGINT NOT NULL COMMENT '采购订单ID',
|
|
|
|
|
customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
previous_amount DECIMAL(20,2) NULL COMMENT '原货款预算总上限;未授权保持空', previous_currency CHAR(3) NOT NULL COMMENT '原预算币种',
|
|
|
|
|
authorized_amount DECIMAL(20,2) NOT NULL COMMENT '客户授权的新货款总上限', currency CHAR(3) NOT NULL COMMENT '客户授权币种',
|
|
|
|
|
voucher_file_id BIGINT NOT NULL COMMENT '客户确认书面或聊天凭证', reason VARCHAR(1000) NOT NULL COMMENT '授权依据',
|
|
|
|
|
reviewed_by VARCHAR(128) NOT NULL COMMENT '核验人员', reviewed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '核验时间',
|
|
|
|
|
PRIMARY KEY(id), KEY idx_procurement_budget_order(customer_id,order_id,id),
|
|
|
|
|
CONSTRAINT chk_procurement_budget_amount CHECK(authorized_amount>=0 AND previous_amount>=0),
|
|
|
|
|
CONSTRAINT chk_procurement_budget_currency CHECK(currency IN('CNY','USD') AND previous_currency IN('CNY','USD'))
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购货款预算授权核验历史';
|
|
|
|
|
|
|
|
|
|
-- 采购实收、差异、装箱和两段整批发运事实。不产生WMS库存流水,不回填历史采购数量。
|
|
|
|
|
CREATE TABLE ll_procurement_receipt (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '实收明细ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
receipt_no VARCHAR(64) NOT NULL COMMENT '采购收货业务编号', leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS海外或DOMESTIC国内',
|
|
|
|
|
source_carton_id BIGINT NULL COMMENT '国内实收关联原国际交寄箱,海外为空', warehouse_id BIGINT NULL COMMENT '海外实际收货仓',
|
|
|
|
|
good_quantity BIGINT NOT NULL COMMENT '可发合格件数', damaged_quantity BIGINT NOT NULL COMMENT '破损待处置件数', extra_quantity BIGINT NOT NULL COMMENT '多到件数,不增加可发数量',
|
|
|
|
|
received_at DATETIME(3) NOT NULL COMMENT '实际收货时间', active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '当前有效实收事实',
|
|
|
|
|
supersedes_id BIGINT NULL COMMENT '受控更正所替代的原实收记录', created_by VARCHAR(128) NOT NULL COMMENT '登记人员',
|
|
|
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_receipt_no(receipt_no), KEY idx_procurement_receipt_source(order_id,leg,source_carton_id,active),
|
|
|
|
|
CONSTRAINT chk_procurement_receipt_quantity CHECK(good_quantity>=0 AND damaged_quantity>=0 AND extra_quantity>=0 AND good_quantity+damaged_quantity+extra_quantity>0),
|
|
|
|
|
CONSTRAINT chk_procurement_receipt_leg CHECK((leg='OVERSEAS' AND source_carton_id IS NULL) OR (leg='DOMESTIC' AND source_carton_id IS NOT NULL))
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购分次实收与受控更正事实';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_disposition (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '差异处理ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS海外或DOMESTIC国内', source_carton_id BIGINT NULL COMMENT '国内原交寄箱来源',
|
|
|
|
|
receipt_id BIGINT NULL COMMENT '破损或多货对应实收记录,短少为空', kind VARCHAR(24) NOT NULL COMMENT 'SHORTAGE短少、DAMAGED破损、EXTRA多货',
|
|
|
|
|
quantity BIGINT NOT NULL COMMENT '已批准处置件数', decision VARCHAR(32) NOT NULL COMMENT 'ACCEPT_SHORTAGE确认短少、DISPOSE_DAMAGED拒收或处置、RETURN_EXTRA退回多货',
|
|
|
|
|
active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '当前有效处置;撤销只改变有效性并保留原事实',
|
|
|
|
|
voucher_file_id BIGINT NOT NULL COMMENT '本单客户确认或实际处置凭证', reason VARCHAR(1000) NOT NULL COMMENT '处置依据',
|
|
|
|
|
created_by VARCHAR(128) NOT NULL COMMENT '采购管理人员', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间',
|
|
|
|
|
PRIMARY KEY(id), KEY idx_procurement_disposition_source(order_id,leg,source_carton_id,receipt_id,kind),
|
|
|
|
|
CONSTRAINT chk_procurement_disposition_quantity CHECK(quantity>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购单内差异处置,不自动退款';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_manifest (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '装箱清单ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
version INT NOT NULL COMMENT '订单内装箱版本', status VARCHAR(16) NOT NULL COMMENT 'DRAFT草稿、CONFIRMED已确认、SUPERSEDED已替代',
|
|
|
|
|
confirmed_at DATETIME(3) NULL COMMENT '确认时间', created_by VARCHAR(128) NOT NULL COMMENT '制单人',
|
|
|
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '版本保存时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_manifest_version(order_id,version),
|
|
|
|
|
CONSTRAINT chk_procurement_manifest_status CHECK(status IN('DRAFT','CONFIRMED','SUPERSEDED'))
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购装箱清单不可变版本';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_carton (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '版本内箱记录ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', manifest_id BIGINT NOT NULL COMMENT '装箱清单版本',
|
|
|
|
|
carton_no VARCHAR(64) NOT NULL COMMENT '采购订单内业务箱号', length_cm DECIMAL(12,2) NOT NULL COMMENT '外箱长厘米',
|
|
|
|
|
width_cm DECIMAL(12,2) NOT NULL COMMENT '外箱宽厘米', height_cm DECIMAL(12,2) NOT NULL COMMENT '外箱高厘米',
|
|
|
|
|
gross_weight_kg DECIMAL(12,3) NOT NULL COMMENT '封箱毛重千克', quantity BIGINT NOT NULL COMMENT '本箱合格商品总件数',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_carton_version(manifest_id,carton_no), KEY idx_procurement_carton_order(order_id,manifest_id),
|
|
|
|
|
CONSTRAINT chk_procurement_carton_measurement CHECK(length_cm>0 AND width_cm>0 AND height_cm>0 AND gross_weight_kg>0 AND quantity>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购版本化逐箱实测与件数';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_carton_source (
|
|
|
|
|
carton_id BIGINT NOT NULL COMMENT '版本内箱ID', receipt_id BIGINT NOT NULL COMMENT '海外实收明细来源', quantity BIGINT NOT NULL COMMENT '从该实收装入本箱的件数',
|
|
|
|
|
PRIMARY KEY(carton_id,receipt_id), KEY idx_procurement_carton_receipt(receipt_id), CONSTRAINT chk_procurement_carton_source_quantity CHECK(quantity>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购箱内货物的实收来源与数量';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_shipment (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '采购交寄ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
shipment_no VARCHAR(64) NOT NULL COMMENT '交寄业务编号', leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS国际交寄或DOMESTIC寄客户',
|
|
|
|
|
manifest_id BIGINT NOT NULL COMMENT '原海外装箱清单版本', shipped_at DATETIME(3) NOT NULL COMMENT '整批真实交承运方时间',
|
|
|
|
|
address_snapshot JSON NOT NULL COMMENT '本段交寄时的收寄姓名电话地址快照', created_by VARCHAR(128) NOT NULL COMMENT '交寄确认人',
|
|
|
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_shipment_leg(order_id,leg), UNIQUE KEY uk_procurement_shipment_no(shipment_no),
|
|
|
|
|
CONSTRAINT chk_procurement_shipment_leg CHECK(leg IN('OVERSEAS','DOMESTIC'))
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购两段各一次整批真实交寄';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_shipment_item (
|
|
|
|
|
shipment_id BIGINT NOT NULL COMMENT '采购交寄ID', carton_id BIGINT NOT NULL COMMENT '原海外装箱版本内箱ID', quantity BIGINT NOT NULL COMMENT '本次实际交寄件数',
|
|
|
|
|
carrier VARCHAR(128) NOT NULL COMMENT '承运商快照', tracking_no VARCHAR(128) NOT NULL COMMENT '运单号快照',
|
|
|
|
|
label_snapshot JSON NOT NULL COMMENT '当次箱规、面单及货物来源快照',
|
|
|
|
|
PRIMARY KEY(shipment_id,carton_id), CONSTRAINT chk_procurement_shipment_item_quantity CHECK(quantity>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购整批交寄逐箱事实';
|
|
|
|
|
|
|
|
|
|
USE baiyue_lastleg;
|
|
|
|
|
-- 采购面单、逐箱贴单、预估核对与国内一对一换包装;不重建历史发运事实。
|
|
|
|
|
CREATE TABLE ll_procurement_label_set (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '面单批版本ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
leg VARCHAR(16) NOT NULL COMMENT 'OVERSEAS国际段或DOMESTIC寄客户段', version INT NOT NULL COMMENT '订单段内面单版本',
|
|
|
|
|
manifest_id BIGINT NOT NULL COMMENT '原海外确认装箱版本', cargo_hash CHAR(64) NOT NULL COMMENT '箱规及有效货物来源摘要',
|
|
|
|
|
sender_snapshot JSON NOT NULL COMMENT '寄件人姓名电话地址快照', receiver_snapshot JSON NOT NULL COMMENT '收件人姓名电话地址快照',
|
|
|
|
|
created_by VARCHAR(128) NOT NULL COMMENT '制单操作人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '上传确认时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_label_version(order_id,leg,version),
|
|
|
|
|
CONSTRAINT chk_procurement_label_leg CHECK(leg IN('OVERSEAS','DOMESTIC'))
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购两段面单不可变版本和地址快照';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_label_item (
|
|
|
|
|
label_set_id BIGINT NOT NULL COMMENT '面单批版本ID', carton_id BIGINT NOT NULL COMMENT '原海外清单箱ID',
|
|
|
|
|
file_id BIGINT NOT NULL COMMENT '本采购订单面单文件', page_no INT NOT NULL COMMENT '该箱对应文件页码,从1开始',
|
|
|
|
|
carrier VARCHAR(128) NOT NULL COMMENT '承运商', tracking_no VARCHAR(128) NOT NULL COMMENT '箱主或子运单号',
|
|
|
|
|
applied_at DATETIME(3) NULL COMMENT '真实贴单时间', applied_by VARCHAR(128) NULL COMMENT '贴单确认人',
|
|
|
|
|
PRIMARY KEY(label_set_id,carton_id), CONSTRAINT chk_procurement_label_page CHECK(page_no>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购逐箱文件页关联及贴单事实';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_estimate_review (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '预估核对ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', label_set_id BIGINT NOT NULL COMMENT '已核对国际面单版本',
|
|
|
|
|
fee_id BIGINT NOT NULL COMMENT '唯一有效预估费用版本', reviewed_by VARCHAR(128) NOT NULL COMMENT '核价人员',
|
|
|
|
|
reviewed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '核对时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_estimate_review(label_set_id,fee_id)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='面单清单与预估冻结的显式核对关联';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_repack (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '换包装版本ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', carton_id BIGINT NOT NULL COMMENT '原国际交寄箱ID,保持一对一来源',
|
|
|
|
|
length_cm DECIMAL(12,2) NOT NULL COMMENT '新外箱长厘米', width_cm DECIMAL(12,2) NOT NULL COMMENT '新外箱宽厘米',
|
|
|
|
|
height_cm DECIMAL(12,2) NOT NULL COMMENT '新外箱高厘米', gross_weight_kg DECIMAL(12,3) NOT NULL COMMENT '新封箱毛重千克',
|
|
|
|
|
voucher_file_id BIGINT NOT NULL COMMENT '本单换包装证据', reason VARCHAR(1000) NOT NULL COMMENT '换包装依据',
|
|
|
|
|
created_by VARCHAR(128) NOT NULL COMMENT '国内作业人员', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间',
|
|
|
|
|
PRIMARY KEY(id), KEY idx_procurement_repack_carton(order_id,carton_id,id),
|
|
|
|
|
CONSTRAINT chk_procurement_repack_measurement CHECK(length_cm>0 AND width_cm>0 AND height_cm>0 AND gross_weight_kg>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购国内原箱一对一换包装不可变历史';
|
|
|
|
|
|
|
|
|
|
USE baiyue_lastleg;
|
|
|
|
|
-- 费用链目标更正快照与关联;资金流水仍唯一归Finance,不回填旧费用。
|
|
|
|
|
CREATE TABLE ll_procurement_fee_correction (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '费用链更正ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
correction_no VARCHAR(64) NOT NULL COMMENT '财务更正业务号', root_fee_id BIGINT NOT NULL COMMENT '原实际费用链根',
|
|
|
|
|
idempotency_key VARCHAR(128) NOT NULL COMMENT '本单更正请求幂等键', request_hash CHAR(64) NOT NULL COMMENT '更正目标及凭证请求摘要',
|
|
|
|
|
target_original_amount DECIMAL(20,2) NOT NULL COMMENT '本次正确原币总额', original_currency CHAR(3) NOT NULL COMMENT '沿用原费用币种',
|
|
|
|
|
exchange_rate DECIMAL(20,6) NOT NULL COMMENT '沿用原费用汇率快照', exchange_rate_month CHAR(7) NOT NULL COMMENT '原汇率月份,不取本次操作月份',
|
|
|
|
|
target_amount DECIMAL(20,2) NOT NULL COMMENT '正确总额折算CNY', previous_net_amount DECIMAL(20,2) NOT NULL COMMENT '确认前整链净实扣CNY',
|
|
|
|
|
difference_amount DECIMAL(20,2) NOT NULL COMMENT 'CNY正差额追加、负差额退款、零差额仅留核对记录',
|
|
|
|
|
voucher_file_id BIGINT NOT NULL COMMENT '本订单财务更正凭证', reason VARCHAR(500) NOT NULL COMMENT '更正依据',
|
|
|
|
|
created_by VARCHAR(128) NOT NULL COMMENT '授权财务操作人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '确认时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_correction_no(correction_no), UNIQUE KEY uk_procurement_correction_request(order_id,idempotency_key),
|
|
|
|
|
KEY idx_procurement_correction_root(order_id,root_fee_id,id),
|
|
|
|
|
CONSTRAINT chk_procurement_correction_amount CHECK(target_original_amount>=0 AND target_amount>=0 AND previous_net_amount>=0 AND exchange_rate>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用链更正目标与原汇率快照';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_fee_correction_item (
|
|
|
|
|
correction_id BIGINT NOT NULL COMMENT '本次费用链更正ID', fee_id BIGINT NOT NULL COMMENT '本次产生的独立正差额或退款费用ID',
|
|
|
|
|
PRIMARY KEY(correction_id,fee_id), UNIQUE KEY uk_procurement_correction_fee(fee_id)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购费用目标更正与逐笔资金事实关联';
|
|
|
|
|
|
|
|
|
|
USE baiyue_lastleg;
|
|
|
|
|
-- 单采购订单内的更正说明、阻断异常与关闭证据。不生成WMS库存或退货运输任务。
|
|
|
|
|
CREATE TABLE ll_procurement_control_note (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '采购更正说明ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
note_no VARCHAR(64) NOT NULL COMMENT '更正说明业务号', target_type VARCHAR(24) NOT NULL COMMENT '购买、仓库、实收或交寄事实类型',
|
|
|
|
|
target_id BIGINT NULL COMMENT '本单事实对象引用,购买为空', blocking TINYINT(1) NOT NULL COMMENT '是否阻断后续计划履约',
|
|
|
|
|
voucher_file_id BIGINT NOT NULL COMMENT '本单内部事实更正凭证', reason VARCHAR(1000) NOT NULL COMMENT '内部更正说明',
|
|
|
|
|
client_summary VARCHAR(500) NULL COMMENT '人工确认的对客摘要,不复制内部原始内容',
|
|
|
|
|
original_value_json JSON NULL COMMENT '服务端记录的原事实快照', corrected_value_json JSON NULL COMMENT '服务端记录的更正事实快照',
|
|
|
|
|
created_by VARCHAR(128) NOT NULL COMMENT '采购管理操作人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '登记时间',
|
|
|
|
|
resolved_by VARCHAR(128) NULL COMMENT '处理确认人', resolved_at DATETIME(3) NULL COMMENT '阻断解除时间',
|
|
|
|
|
resolution_reason VARCHAR(1000) NULL COMMENT '内部处理结果', resolution_voucher_id BIGINT NULL COMMENT '本单处理凭证',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_note_no(note_no), KEY idx_procurement_note_block(order_id,blocking,resolved_at)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购不可覆盖事实的更正说明及阻断异常';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_closure (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '采购异常关闭ID', order_id BIGINT NOT NULL COMMENT '采购订单ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户隔离键',
|
|
|
|
|
closure_no VARCHAR(64) NOT NULL COMMENT '异常关闭业务号', customer_voucher_file_id BIGINT NOT NULL COMMENT '客户同意停止履约凭证',
|
|
|
|
|
financial_conclusion VARCHAR(1000) NOT NULL COMMENT '已知费用及后续无需收费的处理结论,不改变资金事实',
|
|
|
|
|
reason VARCHAR(1000) NOT NULL COMMENT '内部关闭原因', client_summary VARCHAR(500) NOT NULL COMMENT '人工确认的对客关闭摘要',
|
|
|
|
|
created_by VARCHAR(128) NOT NULL COMMENT '采购管理确认人', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '关闭确认时间',
|
|
|
|
|
PRIMARY KEY(id), UNIQUE KEY uk_procurement_closure_order(order_id), UNIQUE KEY uk_procurement_closure_no(closure_no)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='采购实物资金收口后的异常关闭事实';
|
|
|
|
|
|
|
|
|
|
CREATE TABLE ll_procurement_closure_item (
|
|
|
|
|
id BIGINT NOT NULL COMMENT '关闭货物处置ID', closure_id BIGINT NOT NULL COMMENT '采购关闭ID',
|
|
|
|
|
source_kind VARCHAR(32) NOT NULL COMMENT '购买未达、在途未达、合格、破损或多货来源', source_id BIGINT NULL COMMENT '原实收或国际交寄箱,购买未达为空',
|
|
|
|
|
quantity BIGINT NOT NULL COMMENT '本来源最终明确去向件数', decision VARCHAR(40) NOT NULL COMMENT '供应商保管、退还、报失、客户授权保管或处置',
|
|
|
|
|
destination VARCHAR(500) NOT NULL COMMENT '实际去向及接收方说明', voucher_file_id BIGINT NOT NULL COMMENT '本单实物处置证明',
|
|
|
|
|
PRIMARY KEY(id), KEY idx_procurement_closure_source(closure_id,source_kind,source_id),
|
|
|
|
|
CONSTRAINT chk_procurement_closure_quantity CHECK(quantity>0)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='异常关闭逐来源剩余货物最终去向,不产生新发运';
|
|
|
|
|
|
|
|
|
|
USE baiyue_lastleg;
|
|
|
|
|
|
|
|
|
@@ -5156,4 +4897,4 @@ CREATE TABLE IF NOT EXISTS ll_procurement_workflow_command (
|
|
|
|
|
PRIMARY KEY (order_id,command_key)
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购操作幂等及审计';
|
|
|
|
|
|
|
|
|
|
SELECT 'PASS' AS initialization_status, 'OVERSEAS' AS region, 243 AS initialized_tables;
|
|
|
|
|
SELECT 'PASS' AS initialization_status, 'OVERSEAS' AS region, 222 AS initialized_tables;
|
|
|
|
|