admin/sql/20260803_pickup_order.sql
zzh c02cb21049 feat: add pickup-order model and door-pickup linking
Support 1 pickup to N logistics orders with create/pay/schedule APIs, parcel inboundMethod auto-attach, plus allocation-trace and inbound-billing updates already in tree.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 12:22:30 +08:00

79 lines
4.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 揽收单(独立履约/结算)+ 与物流单 1:N 关联;物流单冗余到仓方式与揽收 FK。
-- 文档:前端 docs/揽收单与物流单串联方案.md
-- 执行前请备份。
CREATE TABLE IF NOT EXISTS `t_pickup_order` (
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`PickupNo` VARCHAR(32) NOT NULL COMMENT '揽收单号',
`CustomerId` INT NOT NULL COMMENT '客户Id',
`SenderAddressId` INT NOT NULL COMMENT '发件地址簿Id',
`SenderName` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '取件联系人快照',
`SenderPhone` VARCHAR(32) NULL COMMENT '取件电话快照',
`SenderCompany` VARCHAR(255) NULL COMMENT '公司快照',
`SenderCountryCode` VARCHAR(8) NULL COMMENT '国家码快照',
`SenderProvince` VARCHAR(50) NULL COMMENT '省快照',
`SenderCity` VARCHAR(50) NULL COMMENT '市快照',
`SenderZipCode` VARCHAR(50) NULL COMMENT '邮编快照',
`SenderStreetAddress1` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '地址1快照',
`SenderStreetAddress2` VARCHAR(500) NULL COMMENT '地址2快照',
`WarehouseId` INT NOT NULL COMMENT '送到仓库Id',
`CarrierCode` VARCHAR(64) NULL COMMENT '承运商编码(draft可空)',
`CarrierService` VARCHAR(64) NULL COMMENT '承运服务(draft可空)',
`CarrierWaybillNo` VARCHAR(64) NULL COMMENT '承运商回执单号',
`ExpectPickupTime` DATETIME NOT NULL COMMENT '期望揽收时间',
`PickupWindowStart` DATETIME NULL COMMENT '时间窗起',
`PickupWindowEnd` DATETIME NULL COMMENT '时间窗止',
`ActualPickupTime` DATETIME NULL COMMENT '实际取件时间',
`Status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft/scheduled/dispatched/picked/inbound/cancelled/failed',
`ParcelCount` INT NOT NULL DEFAULT 0 COMMENT '关联票数',
`TotalActualWeight` DECIMAL(18,3) NULL COMMENT '汇总实重',
`ChargeableWeight` DECIMAL(18,3) NULL COMMENT '计费重',
`Currency` VARCHAR(8) NOT NULL DEFAULT 'CNY' COMMENT '币种',
`FreightAmount` DECIMAL(18,2) NULL COMMENT '对客揽收运费',
`OtherFeeAmount` DECIMAL(18,2) NULL COMMENT '对客其他费',
`ReceivableAmount` DECIMAL(18,2) NULL COMMENT '对客应收合计',
`PayStatus` VARCHAR(16) NOT NULL DEFAULT 'unpaid' COMMENT 'unpaid/paid',
`PayTime` DATETIME NULL COMMENT '支付时间',
`PayMode` VARCHAR(16) NOT NULL DEFAULT 'prepaid' COMMENT 'prepaid/collect',
`CarrierPayableAmount` DECIMAL(18,2) NULL COMMENT '应付承运商',
`SettlementStatus` VARCHAR(16) NOT NULL DEFAULT 'none' COMMENT 'none/pending/settled',
`SettlementBatchNo` VARCHAR(64) NULL COMMENT '结算批次号',
`SettledAt` DATETIME NULL COMMENT '结算时间',
`Remark` VARCHAR(512) NULL COMMENT '备注',
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除',
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UpdateUserId` INT NULL COMMENT '更新人',
`UpdateTime` DATETIME NULL COMMENT '更新时间',
PRIMARY KEY (`Id`),
UNIQUE KEY `uk_pickup_no` (`PickupNo`),
KEY `idx_pickup_customer_status` (`CustomerId`, `Status`, `CreateTime`),
KEY `idx_pickup_warehouse_time` (`WarehouseId`, `ExpectPickupTime`),
KEY `idx_pickup_pay` (`PayStatus`),
KEY `idx_pickup_settle` (`SettlementStatus`)
) COMMENT='揽收单(上门取件履约+对客收款+承运结算)';
CREATE TABLE IF NOT EXISTS `t_pickup_order_line` (
`Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键',
`PickupOrderId` INT NOT NULL COMMENT '揽收单Id',
`OrderId` INT NOT NULL COMMENT '物流订单Id',
`SortNo` INT NOT NULL DEFAULT 0 COMMENT '展示序',
`IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除',
`CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人',
`CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UpdateUserId` INT NULL COMMENT '更新人',
`UpdateTime` DATETIME NULL COMMENT '更新时间',
PRIMARY KEY (`Id`),
UNIQUE KEY `uk_pickup_line_order` (`OrderId`),
UNIQUE KEY `uk_pickup_line_pair` (`PickupOrderId`, `OrderId`),
KEY `idx_pickup_line_header` (`PickupOrderId`, `IsDeleted`)
) COMMENT='揽收单关联物流订单(1揽收:N物流)';
ALTER TABLE `t_order`
ADD COLUMN `InboundMethod` VARCHAR(16) NULL COMMENT '到仓方式 selfShip/doorPickup' AFTER `CustomerSenderAddressId`,
ADD COLUMN `PickupOrderId` INT NULL COMMENT '关联揽收单Id(冗余)' AFTER `InboundMethod`;
ALTER TABLE `t_order`
ADD KEY `idx_order_pickup` (`PickupOrderId`),
ADD KEY `idx_order_inbound_method` (`InboundMethod`);