优化
This commit is contained in:
@@ -81,6 +81,7 @@
|
|||||||
- 国内装柜完成事件只在海外生成 `PENDING_ASSIGNMENT` 尾程订单、冻结快照和 `FIRST_LEG` 在途库存,不自动生成入仓计划。平台通过 `GET /api/platform/v1/last-leg/orders/container-summaries` 按稳定 `sourceContainerBookingId` 服务端聚合全柜订单、入仓码、计划数、未操作数和 `allPlansReady`,在分页前排除全部入仓码均已生成有效独立计划的柜,仅返回仍有入仓码待生成计划的柜;详情 `/{sourceContainerBookingId}` 返回柜内全部订单与计划且不受订单分页截断。`plannedArrivalAt` 只来自装柜完成事件 `estimatedWarehouseArrivalAt` 冻结到 Lastleg `ll_order.estimated_warehouse_at` 的计划到仓事实,不得使用创建时间、预计到港或当前时间替代,并按该时间升序、空值最后排序。确认后调用 `POST /api/platform/v1/last-leg/inbound-plans/convert-container`;服务端一次锁定整柜、每票独立生成一个计划,整批原子且幂等。转换成功才将尾程订单推进为 `INBOUND_PLANNED`,并把库存余额的来源入仓码展示快照替换为各自 `planNo`。
|
- 国内装柜完成事件只在海外生成 `PENDING_ASSIGNMENT` 尾程订单、冻结快照和 `FIRST_LEG` 在途库存,不自动生成入仓计划。平台通过 `GET /api/platform/v1/last-leg/orders/container-summaries` 按稳定 `sourceContainerBookingId` 服务端聚合全柜订单、入仓码、计划数、未操作数和 `allPlansReady`,在分页前排除全部入仓码均已生成有效独立计划的柜,仅返回仍有入仓码待生成计划的柜;详情 `/{sourceContainerBookingId}` 返回柜内全部订单与计划且不受订单分页截断。`plannedArrivalAt` 只来自装柜完成事件 `estimatedWarehouseArrivalAt` 冻结到 Lastleg `ll_order.estimated_warehouse_at` 的计划到仓事实,不得使用创建时间、预计到港或当前时间替代,并按该时间升序、空值最后排序。确认后调用 `POST /api/platform/v1/last-leg/inbound-plans/convert-container`;服务端一次锁定整柜、每票独立生成一个计划,整批原子且幂等。转换成功才将尾程订单推进为 `INBOUND_PLANNED`,并把库存余额的来源入仓码展示快照替换为各自 `planNo`。
|
||||||
- 尾程订单的 `inboundCode` 只保存并展示真实来源入仓码;换标申请、本土散板等没有入仓关系的海外本土业务保持为空,由页面显示 `—`,不得用换标单号、本土散板单号或内部 ID 冒充入仓码。
|
- 尾程订单的 `inboundCode` 只保存并展示真实来源入仓码;换标申请、本土散板等没有入仓关系的海外本土业务保持为空,由页面显示 `—`,不得用换标单号、本土散板单号或内部 ID 冒充入仓码。
|
||||||
- 平台可按单票尾程订单填写完整入库计划(入库仓、预计到仓日期、入仓码、托数、托盘类型、分配/可合托/加急和备注),写入时校验订单版本、客户归属、仓库主档和幂等键;分配、可合托、加急必须随入库单列表和海外 PDA 入仓码作业返回并展示,其中“可合托”只向现场提供选择:合托时扫描同目的仓已使用的托盘码,独立收货时扫描新托盘码,不作为实收或完成门禁。暂扣也只作用于该票,暂扣期间该票不得进入排车或出库计划,同柜其他订单不受影响。
|
- 平台可按单票尾程订单填写完整入库计划(入库仓、预计到仓日期、入仓码、托数、托盘类型、分配/可合托/加急和备注),写入时校验订单版本、客户归属、仓库主档和幂等键;分配、可合托、加急必须随入库单列表和海外 PDA 入仓码作业返回并展示,其中“可合托”只向现场提供选择:合托时扫描同目的仓已使用的托盘码,独立收货时扫描新托盘码,不作为实收或完成门禁。暂扣也只作用于该票,暂扣期间该票不得进入排车或出库计划,同柜其他订单不受影响。
|
||||||
|
- 头程散货在预装确认且真实集装箱号就绪后,按 `集装箱号-FBA仓编码-三位序号` 冻结托盘码;序号在当前柜、当前 FBA 仓内从 001 独立递增。送柜报关、清关提柜和预装清单共用同一按 FBA 仓分组的打印清单,可整柜打印或选择单仓前 N 张补打。该编号随装柜完成事件进入海外,生成入库计划与海外实体托盘时原样沿用;一件代发继续使用国内装箱打托形成的托盘号,不参与散货重新编号。
|
||||||
- 尾程订单人工节点固定为国内报关完成、预计/实际开船、预计到港、国外清关完成、实际到港等待卸船、预约提柜和卸柜八行完整快照。第一次保存后该订单永久使用 `MANUAL` 来源,读取和页面展示不得再回退柜级节点,也不得反向修改货柜船节点。
|
- 尾程订单人工节点固定为国内报关完成、预计/实际开船、预计到港、国外清关完成、实际到港等待卸船、预约提柜和卸柜八行完整快照。第一次保存后该订单永久使用 `MANUAL` 来源,读取和页面展示不得再回退柜级节点,也不得反向修改货柜船节点。
|
||||||
- 目的港码头拖车归 Firstleg 货柜聚合:平台从 Warehouse `ACTIVE + TRUCKING` 供应商中选择车队,依次记录预约提柜、实际提柜和实际还柜;实际提柜/还柜同时复用标准船节点服务写入 `PICKED_UP`/`EMPTY_RETURNED`。海外卸柜完成后由服务端以 `unloadingCompletedAt + 72h` 计算还柜截止时间和超时天/小时,Admin 只展示服务端预警,不在浏览器重复计算。
|
- 目的港码头拖车归 Firstleg 货柜聚合:平台从 Warehouse `ACTIVE + TRUCKING` 供应商中选择车队,依次记录预约提柜、实际提柜和实际还柜;实际提柜/还柜同时复用标准船节点服务写入 `PICKED_UP`/`EMPTY_RETURNED`。海外卸柜完成后由服务端以 `unloadingCompletedAt + 72h` 计算还柜截止时间和超时天/小时,Admin 只展示服务端预警,不在浏览器重复计算。
|
||||||
- 手动还柜以真实海外卸柜完成且尚未还柜为准,仍校验独立还柜权限;无需事先存在车队、预约或提柜时间。首次命令使用版本 0 创建拖车记录,车队字段可为空,不补造提柜事实。还柜时间不得早于卸柜完成时间或已有提柜时间,成功后同步标准还柜节点并解除报空预警。
|
- 手动还柜以真实海外卸柜完成且尚未还柜为准,仍校验独立还柜权限;无需事先存在车队、预约或提柜时间。首次命令使用版本 0 创建拖车记录,车队字段可为空,不补造提柜事实。还柜时间不得早于卸柜完成时间或已有提柜时间,成功后同步标准还柜节点并解除报空预警。
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# 财务管理闭环盘点与范围建议
|
# 财务管理闭环盘点与范围建议
|
||||||
|
|
||||||
|
当前费用入池 P0 的唯一收口说明见:[财务费用入池 P0 闭环](财务费用入池P0闭环.md)。该文档覆盖头程、柜子、海外仓、尾程、仓租、换标、换箱、应收应付、外币折算、资金账户防重复结算及入池验收标准;与本文历史范围冲突时以该 P0 文档为准。
|
||||||
|
|
||||||
## 当前确认:一件代发客户资金账户(2026-09-05)
|
## 当前确认:一件代发客户资金账户(2026-09-05)
|
||||||
|
|
||||||
当前对话已将资金账户作为一件代发的前置节点重新纳入范围,并覆盖本文后续历史章节中“钱包不做”的旧结论。首批固定为 CNY。账户分别保存实际余额、冻结金额、授信额度、已用授信和冻结授信;`总可用余额 = 实际余额 + 授信额度 - 已用授信 - 冻结金额`,`可用授信 = 授信额度 - 已用授信 - 冻结授信`。扣款及业务冻结先使用未冻结的实际资金,再使用授信;充值先归还已用授信,剩余金额增加实际余额。
|
当前对话已将资金账户作为一件代发的前置节点重新纳入范围,并覆盖本文后续历史章节中“钱包不做”的旧结论。首批固定为 CNY。账户分别保存实际余额、冻结金额、授信额度、已用授信和冻结授信;`总可用余额 = 实际余额 + 授信额度 - 已用授信 - 冻结金额`,`可用授信 = 授信额度 - 已用授信 - 冻结授信`。扣款及业务冻结先使用未冻结的实际资金,再使用授信;充值先归还已用授信,剩余金额增加实际余额。
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# 财务费用入池 P0 闭环
|
||||||
|
|
||||||
|
## 1. P0 目标
|
||||||
|
|
||||||
|
P0 只解决“真实业务费用如何可靠进入应收应付费用池”。费用进入 Finance 后生成对账单、结算单、收付款及核销,继续沿用 Finance 自己的流程。
|
||||||
|
|
||||||
|
统一链路如下:
|
||||||
|
|
||||||
|
```text
|
||||||
|
业务事实(头程 / 柜子 / 海外仓 / 尾程)
|
||||||
|
-> 业务服务生成版本化费用来源
|
||||||
|
-> 审核通过并发布完整不可变快照
|
||||||
|
-> Finance 按 sourceSystem + sourceType + sourceFeeId + sourceVersion 幂等入池
|
||||||
|
-> AVAILABLE 应收进入客户对账候选
|
||||||
|
-> AVAILABLE 应付进入供应商结算候选
|
||||||
|
-> Finance 生成对账单 / 结算单并完成后续财务流程
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. 统一费用来源字段
|
||||||
|
|
||||||
|
每笔费用必须保存以下口径:
|
||||||
|
|
||||||
|
| 维度 | 必填内容 |
|
||||||
|
|---|---|
|
||||||
|
| 业务归属 | 客户、来源类型、来源费用号和版本、业务类型、业务单号;有订单、入仓码、柜子或海外仓时保存真实引用 |
|
||||||
|
| 收付方向 | `RECEIVABLE` 应收客户或 `PAYABLE` 应付供应商 |
|
||||||
|
| 费用内容 | 费用项目编码、名称、业务发生日 |
|
||||||
|
| 计费依据 | 数量、单位、单价;仓租等周期费用同时保存开始和结束日期 |
|
||||||
|
| 金额 | 原币、原币金额、结算币 CNY、月度汇率和汇率月份 |
|
||||||
|
| 应付结算 | 供应商、供应商分类、`ON_ACCOUNT` 或 `DIRECT_PAID`;直接支付必须保存支付时间、方式、流水号和凭证 |
|
||||||
|
| 生命周期 | 草稿、待审核、审核通过、驳回、发布、调整新版本、作废及操作幂等键 |
|
||||||
|
|
||||||
|
USD 费用必须命中业务日期所在月份的有效 USD/CNY 汇率。入池金额统一为 CNY,同时保留原币、原币金额和汇率,保证页面、导出和审计可以还原。
|
||||||
|
|
||||||
|
## 3. 来源覆盖矩阵
|
||||||
|
|
||||||
|
| 大类 | 实际费用 | 归属与入池规则 |
|
||||||
|
|---|---|---|
|
||||||
|
| 头程 | 单票运费、操作费及其他入仓费用 | 按真实入仓单和入仓码发布;应收、应付分别形成独立来源 |
|
||||||
|
| 柜子 | 海运、港杂、拖车、吊柜、维修等单一客户费用 | 按真实柜和客户发布 |
|
||||||
|
| 柜子 | 跨客户公共柜费 | 先按柜内真实订单归属原子分组和守恒分摊,再逐客户发布;审核、调整、驳回和作废整组处理 |
|
||||||
|
| 海外仓 | 海外入仓、仓租、入库/出库操作、托盘费 | 按客户和海外仓发布;能关联尾程订单或入仓码时必须带真实引用;仓租保存计费周期 |
|
||||||
|
| 尾程 | 派送、装车、预约、转仓 | 按真实派送单或尾程订单发布 |
|
||||||
|
| 增值服务 | 换标、换箱、异常处理 | 按真实换标单或尾程订单发布;自动完结的换标费用自动审核发布 |
|
||||||
|
| 海外采购 | 采购服务费 | 采购费用形成统一来源,并与资金账户结算记录关联 |
|
||||||
|
|
||||||
|
## 4. 分摊与供应商结算
|
||||||
|
|
||||||
|
分摊回答“这笔公共成本由哪些客户承担、每个客户分多少”,供应商结算回答“平台应向哪个供应商支付多少”。两者分别保存,不能用客户分摊行替代供应商应付。
|
||||||
|
|
||||||
|
公共柜费的客户分摊金额必须守恒:所有客户分摊之和等于柜费总额。若同一柜费还需要支付供应商,应另有一笔带供应商的 `PAYABLE` 来源;分摊规则不会自动改变供应商应付金额。
|
||||||
|
|
||||||
|
## 5. 入池状态与防重复结算
|
||||||
|
|
||||||
|
| 来源状态 | Finance 处理 |
|
||||||
|
|---|---|
|
||||||
|
| 审核通过、发布、赊账 | `AVAILABLE`,进入应收或应付待结算池 |
|
||||||
|
| `DIRECT_PAID` 应付 | 保留为已确认成本,不进入应付待结算池 |
|
||||||
|
| 已由资金账户结算的应收 | 关联 `walletHoldId` 并标记 `SETTLED`,不再进入客户对账候选 |
|
||||||
|
| 已进入有效账单或结算单 | 冻结来源版本,禁止覆盖和作废 |
|
||||||
|
| 调整 | 新版本替换旧版本;Finance 仍按来源费用号和版本幂等消费 |
|
||||||
|
| 作废 | 仅未冻结来源允许作废;已结算或已出单来源必须走财务调整流程 |
|
||||||
|
|
||||||
|
资金账户事件和费用来源事件可能先后到达。Finance 会在任一事件到达时尝试按客户、业务类型、业务单号和金额互相绑定,保证同一业务不会既自动扣款又再次生成对账单。
|
||||||
|
|
||||||
|
## 6. P0 验收标准
|
||||||
|
|
||||||
|
1. CNY、USD 应收和应付均能生成来源并进入 Finance,USD 能还原原币和月度汇率。
|
||||||
|
2. 单票费、柜级单客费、跨客户公共柜费、海外仓周期费、尾程派送费、换标费、换箱费和采购费均有唯一业务归属。
|
||||||
|
3. 相同幂等键和相同请求只产生一笔结果;相同幂等键不同请求被拒绝。
|
||||||
|
4. 调整生成新版本,作废和审核遵守来源冻结规则。
|
||||||
|
5. `AVAILABLE` 才进入待生成对账单或结算单范围;`DIRECT_PAID` 和 `SETTLED` 不得重复进入。
|
||||||
|
6. 业务费用详情、Finance 费用池、导出均能看到相同的原币、结算金额和计费依据。
|
||||||
|
|
||||||
Reference in New Issue
Block a user