7.0 KiB
客户、供应商、商品、SKU
约定见 00-conventions.md。Phase 1 锁定,Phase 6 写迁移。
customer 是货主,不是商城买家。3PL 场景下库存、商品、订单都归属某个货主。
sku_code 在租户内唯一。两个货主不能共用同一个 SKU 编码;需要区分时由租户分配不同编码。
wms_customer 客户(货主)
用途:租户服务的货主。
| 字段 | 类型 | 可空 | 默认 | 说明 |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | 租户编码 | |
| customer_code | VARCHAR(64) | N | 客户编码 | |
| name | VARCHAR(128) | N | 名称 | |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | ||
| updated_at | TIMESTAMP | Y | ||
| deleted_at | TIMESTAMP | Y | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
|---|---|---|---|
| uk_tenant_customer_code | UNIQUE | (tenant_code, customer_code) | 按客户编码查找 |
| idx_tenant_status | INDEX | (tenant_code, status) | 列表筛选 |
状态:active、disabled。
关联:商品、库存、入库、出库、订单带 customer_code。
并发 / 审计:已有库存或未完成单据时不能软删。变更写 wms_operation_log。
wms_supplier 供应商
用途:入库来源。customer_code 为空表示租户共用供应商,有值表示该货主的供应商。
| 字段 | 类型 | 可空 | 默认 | 说明 |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | 租户编码 | |
| supplier_code | VARCHAR(64) | N | 供应商编码 | |
| customer_code | VARCHAR(64) | Y | 所属货主,空为租户共用 | |
| name | VARCHAR(128) | N | 名称 | |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | ||
| updated_at | TIMESTAMP | Y | ||
| deleted_at | TIMESTAMP | Y | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
|---|---|---|---|
| uk_tenant_supplier_code | UNIQUE | (tenant_code, supplier_code) | 按供应商编码查找 |
| idx_tenant_customer | INDEX | (tenant_code, customer_code) | 某货主的供应商 |
状态:active、disabled。
关联:wms_inbound.supplier_code、wms_batch.supplier_code。
并发 / 审计:被未完成入库单引用时不能软删。
wms_product 商品
用途:SKU 的上层商品,归属货主。
| 字段 | 类型 | 可空 | 默认 | 说明 |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | 租户编码 | |
| customer_code | VARCHAR(64) | N | 货主 | |
| product_code | VARCHAR(64) | N | 商品编码,租户内唯一 | |
| product_name | VARCHAR(255) | N | 名称 | |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | ||
| updated_at | TIMESTAMP | Y | ||
| deleted_at | TIMESTAMP | Y | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
|---|---|---|---|
| uk_tenant_product_code | UNIQUE | (tenant_code, product_code) | 按商品编码查找 |
| idx_tenant_customer_status | INDEX | (tenant_code, customer_code, status) | 货主下的商品列表 |
状态:active、disabled。
关联:wms_sku.product_code。
并发 / 审计:下属 SKU 仍存在时不能软删。
wms_sku SKU
用途:库存与单据的基本物料。数量的「1」等于本表的基本单位。
| 字段 | 类型 | 可空 | 默认 | 说明 |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | 租户编码 | |
| customer_code | VARCHAR(64) | N | 货主 | |
| product_code | VARCHAR(64) | N | 商品编码 | |
| sku_code | VARCHAR(64) | N | SKU 编码,租户内唯一 | |
| sku_name_cn | VARCHAR(255) | N | 中文名称 | |
| sku_name_en | VARCHAR(255) | N | 英文名称 | |
| sku_unit | VARCHAR(32) | N | pcs | 基本单位 |
| length_cm | DECIMAL(10,2) | Y | 长,厘米 | |
| width_cm | DECIMAL(10,2) | Y | 宽,厘米 | |
| height_cm | DECIMAL(10,2) | Y | 高,厘米 | |
| weight_g | DECIMAL(16,4) | Y | 重量,克 | |
| status | VARCHAR(32) | N | active | 状态 |
| created_at | TIMESTAMP | Y | ||
| updated_at | TIMESTAMP | Y | ||
| deleted_at | TIMESTAMP | Y | 软删除 |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
|---|---|---|---|
| uk_tenant_sku_code | UNIQUE | (tenant_code, sku_code) | 按 SKU 编码查找 |
| idx_tenant_customer_product | INDEX | (tenant_code, customer_code, product_code) | 商品下的 SKU |
| idx_tenant_customer_status | INDEX | (tenant_code, customer_code, status) | 货主下的 SKU 列表 |
状态:active、disabled。停用后禁止新的入库与分配,已有库存仍可出完。
关联:条码、包装、库存、单据明细。
并发 / 审计:存在非零库存时不能软删。变更写 wms_operation_log。
wms_sku_barcode 条码
用途:一个 SKU 多条码。扫描时按租户内条码定位 SKU。
| 字段 | 类型 | 可空 | 默认 | 说明 |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | 租户编码 | |
| sku_code | VARCHAR(64) | N | SKU 编码 | |
| barcode | VARCHAR(64) | N | 条码,租户内唯一 | |
| barcode_type | VARCHAR(32) | N | unit | 类型 |
| created_at | TIMESTAMP | Y | ||
| updated_at | TIMESTAMP | Y |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
|---|---|---|---|
| uk_tenant_barcode | UNIQUE | (tenant_code, barcode) | 扫码 |
| idx_tenant_sku | INDEX | (tenant_code, sku_code) | SKU 的全部条码 |
barcode_type:unit 单品、case 箱、pallet 托。
关联:wms_sku.sku_code。箱、托条码只用于识别 SKU,换算数量以 wms_pack_spec 为准。
并发 / 审计:无软删除。解除绑定即删行,并写 wms_operation_log。
wms_pack_spec 包装规格
用途:相对基本单位的包装。qty_per_pack 表示这一包等于多少基本单位。
| 字段 | 类型 | 可空 | 默认 | 说明 |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | N | AUTO_INCREMENT | 内部主键 |
| tenant_code | VARCHAR(32) | N | 租户编码 | |
| sku_code | VARCHAR(64) | N | SKU 编码 | |
| pack_code | VARCHAR(64) | N | 包装编码,SKU 内唯一 | |
| name | VARCHAR(128) | N | 名称 | |
| qty_per_pack | DECIMAL(16,4) | N | 含基本单位数量,必须大于 0 | |
| length_mm | DECIMAL(10,2) | Y | ||
| width_mm | DECIMAL(10,2) | Y | ||
| height_mm | DECIMAL(10,2) | Y | ||
| weight_g | DECIMAL(16,4) | Y | ||
| created_at | TIMESTAMP | Y | ||
| updated_at | TIMESTAMP | Y |
索引:
| 名称 | 类型 | 字段 | 支撑的查询 |
|---|---|---|---|
| uk_tenant_sku_pack | UNIQUE | (tenant_code, sku_code, pack_code) | 按包装编码查找 |
关联:wms_sku.sku_code。库存与单据数量仍记基本单位,不按包装记账。
并发 / 审计:无软删除。修改 qty_per_pack 不影响已记账数量。