-- 表:wms_outbound -- 用途:出库单。仓库执行单据。一张订单可按仓库拆成多张出库单。 -- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md -- 说明:主路径只能 draft、allocated、picking、picked、packing、packed、shipped、completed 前进。进入 packing 前 review_status 必须为 passed。cancelled 只允许从 draft、allocated 进入,且 allocated 必须先释放预占。状态变更写 wms_status_log。 CREATE TABLE `wms_outbound` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键', `tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码', `outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号,租户内唯一', `order_no` VARCHAR(64) NULL COMMENT '来源订单号;非销售出库必须为 NULL', `outbound_type` VARCHAR(32) NOT NULL COMMENT 'sales 销售,transfer 调拨,supplier_return 退供,scrap 报废,other 其他', `warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码', `customer_code` VARCHAR(32) NOT NULL COMMENT '货主编码', `status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft 草稿,allocated 已分配,picking 拣货中,picked 已拣货,packing 打包中,packed 已打包,shipped 已发货,completed 已完成,cancelled 已取消', `review_status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '复核:pending 待复核,passed 通过,rejected 驳回', `reviewed_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '复核人 user_code', `reviewed_at` DATETIME(3) NULL COMMENT '复核时间', `required_ship_at` DATETIME(3) NULL COMMENT '要求发货时间', `remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注', `created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人 user_code,系统任务为空', `updated_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '更新人 user_code', `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 (`id`), UNIQUE KEY `uk_tenant_outbound_no` (`tenant_code`, `outbound_no`), KEY `idx_tenant_order` (`tenant_code`, `order_no`), KEY `idx_tenant_wh_status_created` (`tenant_code`, `warehouse_code`, `status`, `created_at`), KEY `idx_tenant_customer` (`tenant_code`, `customer_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='出库单';