-
Notifications
You must be signed in to change notification settings - Fork 0
07 settlement and ledger
V1 需要处理两条独立结算链:
商户:普通商品货款、云仓首次供货货款
用户:云仓代销本金返还、销售收益、到期回购款
用户租地/认养按订单、实际产出和邮寄履约管理,不生成用户收益账本。
| 层级 | 作用 |
|---|---|
| 业务事实 | 订单、付款、退款、库存流水、批次进度、供货验收、履约 |
| 业务账本 | 按规则计算应付商户或用户的可审计明细 |
| 商户结算单 | 按商户和自然日汇总已满足条件的货款账本,审核后统一入账 |
| 资金入账记录 | 以唯一幂等键衔接业务账本/商户结算单与 CRMEB 余额、资金流水 |
| 对账 | 业务账本、商户结算单、入账记录和 CRMEB 资金流水之间核对 |
业务账本不是支付流水,也不能只依赖 CRMEB 余额变动反推业务原因。
V1 不为用户另建汇总结算单。用户云仓业务账本通过审核和风险检查后逐笔生成资金入账记录;商户货款则按自然日生成不可变结算单后统一入账。
- 每笔账本都有明确来源主体、业务类型、订单明细和规则快照。
- 商户货款与用户云仓本金/收益分开计算,并走不同的入账链路。
- 云仓首次购买与二次零售分开记录。
- 配置变化不影响历史订单。
- 账本只追加,不物理删除。
- 退款和售后通过冻结、冲正、解冻或作废处理。
- 每个计算任务都有唯一幂等键。
- 用户本金、收益和回购款分开展示。
- V1 优先做到可核算、可复核、可导出,不强求支付机构自动分账。
| 来源码建议 | 说明 |
|---|---|
platform_self_goods |
平台自营普通商品收入 |
merchant_goods |
商户普通商品货款 |
merchant_cloud_primary_supply |
商户云仓首次供货货款 |
user_cloud_principal |
用户云仓已售本金返还 |
user_cloud_profit |
用户云仓代销收益 |
user_cloud_buyback |
用户到期未售回购款 |
user_cloud_reversal |
云仓冲正 |
user_land_order |
租地订单收入与退款,不生成用户收益 |
user_adoption_order |
认养订单收入与退款,不生成用户收益 |
商户结算基数
= 商品成交金额
- 商户承担优惠
- 商品退款扣减
商户应结算货款
= 商户结算基数
- 平台佣金
- 约定手续费
- 商户承担运费
平台券和平台补贴由平台承担,不减少商户结算基数。
V1 采用供货价模式:
商户有效首次购买数量
= 用户已付款数量
- 首次交易退款数量
- 入库/供货验收不合格数量
商户云仓供货货款
= 商户供货价 × 商户有效首次购买数量
- 首次退款扣减
- 商户承担的约定履约扣减
结算条件:
首次购买完成
+ 入库/供货验收完成
+ 首次售后观察期结束
+ 无退款/质量争议/冻结
→ 进入待结算
首次购买完成时间按去向认定:邮寄为确认/自动收货,自提为核销,代销为持仓进入正式批次。不同去向可能影响可结算时间,但不改变商户有效首次购买数量;平台二次零售是否售完也不影响商户供货货款。
本金是用户首次购买进入代销的商品价款,不包含邮寄补运费。
按活动 SKU 的结算模式,本金可能在进度节点分期返还,也可能在批次结束统一返还。
批次累计可分配销售利润
= max(0, 批次累计确认销售收入 - 批次累计已售本金)
用户累计应得收益
= 批次累计可分配销售利润
× 用户持仓占比
× 用户收益分成率快照
平台日常仓储、推广、包装、平台券和支付手续费从平台分成中承担,不临时减少用户收益基数。
用户回购款
= 用户最终未售数量
× 用户云仓抢购单价
× 回购比例快照
回购款不是代销收益。回购完成后,对应商品所有权转为平台。
每次节点结算都使用累计差额:
本次应生成账本
= 当前累计应结算
- 历史已正式入账
- 已生成但尚未完成入账的业务账本
这样即使一次销售跨越多个进度节点,也不会重复发放。
| 模式 | 25%/50%/75%/100% 节点 | 批次结束 |
|---|---|---|
| 批次结束统一结算 | 不入账 | 已售本金、全部收益、未售回购款 |
| 分期收益,结束返本金 | 只入账新增收益 | 已售本金、收益尾差、未售回购款 |
| 分期本金和收益 | 入账新增本金和收益 | 本金/收益尾差、未售回购款 |
批次可能因全部商品提前有效售完而提前结束,也可能到期后通过回购结束。到期未售不伪造 100% 销售进度。
业务状态和资金入账状态分开保存,不用一个字段同时表达计算、审核和入账结果。
| 业务账本状态 | 说明 |
|---|---|
| 待条件 | 尚未满足观察期、验收或节点条件 |
| 待审核 | 计算完成,等待自动或人工校验 |
| 可入账 | 已满足规则和风控条件 |
| 已纳入商户结算单 | 仅商户账本使用,已锁定到不可变结算单 |
| 已冻结 | 存在退款、争议、库存或质量异常 |
| 已冲正 | 有对应反向账本抵消原事实 |
| 已作废 | 来源订单无效且未发生资金入账 |
| 入账状态 | 说明 |
|---|---|
| 未创建 | 尚未生成资金入账记录 |
| 待处理 | 已生成入账记录,等待执行 |
| 人工复核 | 单笔或当日累计金额超过阈值,或存在风险标记 |
| 处理中 | 已锁定记录并执行余额与流水事务 |
| 已完成 | CRMEB 余额和配套资金流水均已成功写入 |
| 失败待重试 | 可恢复错误,等待任务重试 |
| 追偿处理中 | 冲正时余额不足,不允许部分扣款或产生负余额 |
所有变化记录操作者、时间、原因和原状态。资金入账使用唯一 posting_key,重试不得重复加减余额。
订单完成
→ 售后观察期结束
→ 无退款/争议
→ 可入账货款账本
→ 商户自然日结算单
→ 商户可用余额
用户首次购买有效
→ 入库/供货验收
→ 首次售后观察期结束
→ 可入账供货货款账本
→ 商户自然日结算单
→ 商户可用余额
二次零售订单完成并过售后观察期
→ 更新批次有效销售进度
→ 达到节点或批次结束
→ 生成累计差额账本
→ 审核/冻结检查
→ 生成唯一资金入账记录
→ 用户余额与用户账单在同一事务内入账
批次到期
→ 停止新二次分配
→ 等待已锁定订单完成/释放
→ 确认最终未售数量
→ 生成回购单和回购账本
→ 商品转平台库存
→ 最终结算并关闭批次
- 直接冻结、作废或重新计算尚未正式入账的业务账本。
- 二次零售退款不再计入有效销售进度。
- 商户首次交易退款冲减有效首次购买数量。
- 暂停未执行的资金入账记录,并锁定相关业务账本。
- 商户结算单一旦生成不得修改明细;发现差异时把未入账结单标为争议/冻结,复核后恢复原结单或生成独立调整结单,不取消原结单后覆盖重算。
- 用户账本尚未完成入账时可作废原入账记录并重新计算,但必须保留完整审计链。
- 原账本保留。
- 新增反向冲正账本。
- 仅审计确认的重复/错误入账,或最终外部支付撤销且权益已灭失时允许资金冲正。
- 日常滞销、折扣回购、仓储成本、推广成本和平台原因损失不得冲减用户或商户既得金额。
- 反向入账使用新的唯一资金入账记录并关联原记录,不修改原记录。
- 目标余额不足时不得部分扣款或产生负余额,转为追偿处理中,冻结后续农业业务入账并人工复核。
商户结算单按“商户 + 结算自然日 + 结算类型 + 版本”唯一生成,汇总前一自然日已满足条件的普通商品或云仓供货账本。生成后明细和金额不可直接编辑;重新计算必须产生新版本或调整账本。
| 字段 | 说明 |
|---|---|
| 结算单号 | 唯一编号 |
| 结算单类型 | 商户普通、商户云仓 |
| 商户 ID | 结算主体 |
| 结算自然日/版本 | 汇总周期与重算版本 |
| 账本数量 | 包含明细数量 |
| 商户货款合计 | 商户结算使用 |
| 扣减/冲正合计 | 退款和调整 |
| 应付合计 | 最终金额 |
| 状态 | 草稿、待审核、待入账、处理中、已完成、已驳回、已取消 |
| 审核人/时间 | 财务操作 |
| 资金入账记录 ID | 实际入账关联 |
| 备注 | 说明 |
用户账本和商户结算单都通过统一资金入账记录连接 CRMEB 余额与流水。入账记录至少保存来源类型/ID/版本、目标账户、收支方向、金额、状态、入账前后余额、CRMEB 流水 ID、重试次数、错误信息和冲正关联。
自动入账阈值默认如下,均可在平台配置中调整:
| 场景 | 默认阈值 | 超限处理 |
|---|---|---|
| 用户单笔入账 | 10,000 元 | 金额不拆分、不改变,进入人工复核 |
| 用户单日累计入账 | 50,000 元 | 后续记录进入人工复核 |
| 商户单张结算单 | 100,000 元 | 整单进入人工复核 |
商户货款满足售后观察期后已经具备入账资格,因此农业业务不得调用 CRMEB 的全局商户资金锁定方法再次延迟;商户余额入账和财务流水必须在同一事务内完成。
活动付款数量
→ 首次退款数量
→ 有效首次购买数量
→ 入库/验收数量
→ 供货价货款
→ 待结算/已结算
用户代销数量
→ 批次有效销售数量与占比
→ 应返本金
→ 应得收益
→ 到期回购
→ 冻结/冲正
→ 待结算/已结算
用户业务账本应付合计
= 用户成功资金入账 + 用户仍在处理金额
商户可入账账本应付合计
= 商户结算单应付合计
= 商户成功资金入账 + 商户仍在处理金额
上线前统一将相关核心金额字段扩展至 DECIMAL(14,2);中间计算使用不低于 DECIMAL(20,8) 的精度,并在应用层执行显式容量校验,不能依赖当前非严格 SQL 模式自动截断或钳制。
财务导出至少包含:
- 业务和账本编号。
- 主体名称和 ID。
- 首次订单、二次订单、退款和批次关联。
- 商品、SKU、数量和单价。
- 供货价、用户本金、确认销售收入。
- 分成率、进度节点、回购比例。
- 本金、收益、回购、扣减和应付金额。
- 观察期、入库验收和可结算时间。
- 业务状态、商户结算单(如适用)、资金入账记录和 CRMEB 资金流水。
- 创建、审核和结算时间。
- 首页
- 项目总览
- 项目立项
- 端与角色
- 供应链经营闭环
- 模块地图
- V1 范围 PRD
- 任务拆解
- 结算与账本
- V1 结算口径
- 云仓秒杀
- CRMEB 底座能力映射
- 当前菜单页面审计
- V1 决策与术语
- 云仓流程与状态机
- 租地认养与溯源 PRD
- V1 数据模型草案
- 开发前设计计划
- V1 信息架构
- 页面与原型规格
- V1 API 契约草案
- 事件任务权限通知
- 五项目代码改造蓝图
- 测试验收发布与手册计划
- CRMEB 视觉基线审计
- G3/G4 决策登记表
- 用户端 uni-app 复用审计
- 开发前主清单
- 自主设计工作指引
- V1 需求追踪矩阵
- G3 技术专项验证报告
- V1 P0 页面矩阵
- 写操作契约注册表
- 事件任务操作注册表
- 状态异常事务矩阵
- 数据库字段字典
- 页面 API 文件追踪
- V1 ER 图
- API 字段契约注册表
- 平台管理员手册
- 商户手册
- 用户帮助
- 服务与现场手册
- 开发任务包
- 测试目录与 Fixtures
- 发布与运维手册
- 设计交付与研发交接