服装ERP零售单据表创建提示词
核心需求
基于服装行业ERP系统,创建统一的零售单据表,包含销售、退货、盘点、调拨、入库等所有业务单据,并完整记录交易明细。
表基本信息
- 表名:
dw_retail_document
- 模型名:
DWRetailDocument
- 表注释: 零售单据主表 - 统一管理所有零售业务单据
- 开发框架: Go + GORM
必需字段列表
1. 单据主信息
- document_id - 单据ID (主键,全局唯一)
- document_no - 单据编号 (业务可见编号,如XS202401010001)
- document_type - 单据类型:
- SALE: 销售单
- RETURN: 退货单
- STOCKTAKE: 盘点单
- TRANSFER_IN: 调拨入库单
- TRANSFER_OUT: 调拨出库单
- PURCHASE_IN: 采购入库单
- ADJUST_IN: 调整入库单
- ADJUST_OUT: 调整出库单
- ALLOCATION: 配货单
- document_status - 单据状态:
- DRAFT: 草稿
- PENDING: 待审核
- APPROVED: 已审核
- COMPLETED: 已完成
- CANCELLED: 已取消
2. 业务关联
- shop_id - 店铺ID
- shop_code - 店铺编码
- shop_name - 店铺名称
- related_shop_id - 关联店铺ID (调拨、配货时使用)
- related_shop_code - 关联店铺编码
- related_shop_name - 关联店铺名称
- supplier_id - 供应商ID (采购入库时使用)
3. 会员与促销信息
- member_id - 会员ID
- member_code - 会员卡号
- member_name - 会员姓名
- member_level - 会员等级
- is_member_sale - 是否会员消费 (0否/1是)
- promotion_id - 促销活动ID
- promotion_code - 促销活动编码
- promotion_name - 促销活动名称
- promotion_type - 促销类型 (DISCOUNT折扣/COUPON优惠券/GIFT赠品/PACKAGE套餐)
- promotion_desc - 促销描述
4. 商品信息
- product_id - 商品ID
- product_code - 商品编码
- product_name - 商品名称
- color_code - 颜色编码
- color_name - 颜色名称
- size_code - 尺码编码
- size_name - 尺码名称
- sku_code - SKU编码 (商品+颜色+尺码唯一编码)
- style_code - 款式编码
- season_code - 季节代码 (SS/FW)
- year - 年份
5. 价格与金额信息(核心交易信息)
- quantity - 销售数量 (正数表示入库/增加,负数表示出库/减少)
- tag_price - 吊牌价/建议零售价
- cost_price - 成本价
- original_price - 原售价 (促销前的价格)
- discount_rate - 折扣率 (0-1,如8折为0.8)
- discount_amount - 折扣金额 (单件商品折扣金额)
- final_price - 成交价/实售价 (最终销售单价)
- line_amount - 行金额 (quantity * final_price)
- line_cost - 行成本 (quantity * cost_price)
- line_gross_margin - 行毛利率 ((final_price - cost_price) / final_price)
6. 单据汇总信息
- total_quantity - 总数量 (绝对值)
- total_tag_amount - 吊牌价总金额
- total_cost_amount - 成本总金额
- total_discount_amount - 总折扣金额
- total_final_amount - 成交总金额
- total_gross_margin - 总毛利率
- total_items - 商品种类数
7. 支付与交易信息
- transaction_date - 业务发生日期
- transaction_time - 业务发生时间
- operator_id - 操作员ID
- operator_name - 操作员姓名
- cashier_id - 收银员ID
- cashier_name - 收银员姓名
- payment_method - 支付方式 (CASH/ALIPAY/WECHAT/CREDIT_CARD/UNIONPAY)
- payment_status - 支付状态 (UNPAID/PARTIAL/PAID/REFUNDED)
- invoice_no - 发票号码
- reference_no - 参考单号 (如退货对应原销售单号)
8. 审核与状态
- approver_id - 审核人ID
- approver_name - 审核人姓名
- approve_time - 审核时间
- remark - 备注
9. 时间信息
- created_at - 创建时间
- updated_at - 更新时间
- data_date - 数据日期 (数据仓库快照)
- sync_batch - 同步批次号
索引要求
- 主键: document_id
- 唯一索引: document_no
- 普通索引:
- document_type
- document_status
- shop_id
- member_id
- product_id
- sku_code
- transaction_date
- promotion_id
- 复合索引:
- (shop_id, transaction_date, document_type) - 店铺日销售查询
- (member_id, transaction_date) - 会员消费记录
- (product_id, shop_id, transaction_date) - 商品销售追踪
- (document_type, document_status, transaction_date) - 单据状态监控
特别说明
- 完整价格链条: 吊牌价→原售价→折扣→成交价,完整记录价格变化
- 会员关联: 记录会员信息,支持会员消费分析
- 促销追溯: 记录促销活动,分析促销效果
- 毛利率计算: 支持单品毛利率和单笔交易毛利率分析
- 正负数设计: quantity正负表示库存增减方向
- 合并设计: 所有单据类型统一存储,便于全链路分析
业务场景示例
```sql
-- 1. 会员消费分析
SELECT member_level,
COUNT(DISTINCT member_id) as member_count,
SUM(total_final_amount) as total_sales,
AVG(total_final_amount) as avg_basket_size
FROM dw_retail_document
WHERE document_type = ‘SALE’
AND is_member_sale = 1
AND transaction_date BETWEEN ‘2024-01-01’ AND ‘2024-01-31’
GROUP BY member_level;
-- 2. 促销效果分析
SELECT promotion_name,
promotion_type,
COUNT(DISTINCT document_id) as order_count,
SUM(total_quantity) as total_qty,
SUM(total_final_amount) as total_sales,
AVG(discount_rate) as avg_discount
FROM dw_retail_document
WHERE document_type = ‘SALE’
AND promotion_id IS NOT NULL
GROUP BY promotion_id, promotion_name, promotion_type;
-- 3. 商品价格分析
SELECT product_code, product_name,
AVG(tag_price) as avg_tag_price,
AVG(final_price) as avg_final_price,
AVG(discount_rate) as avg_discount_rate,
AVG(line_gross_margin) as avg_gross_margin
FROM dw_retail_document
WHERE document_type = ‘SALE’
GROUP BY product_id, product_code, product_name;
-- 4. 店铺销售日报
SELECT shop_code, shop_name,
COUNT(DISTINCT document_id) as order_count,
SUM(total_quantity) as total_qty,
SUM(total_final_amount) as total_sales,
SUM(total_cost_amount) as total_cost,
SUM(total_final_amount - total_cost_amount) as total_gross_profit
FROM dw_retail_document
WHERE document_type = ‘SALE’
AND document_status = ‘COMPLETED’
AND transaction_date = ‘2024-01-01’
GROUP BY shop_id, shop_code, shop_name;