# 繁花惠 / 优花速达开票

> 票种与出票方、金额拆分与封顶规则、物流费算法、申请撤销口径、「为什么没看到」速查表、拍板时间线

- 类型：业务口径
- 分类：分销开票
- 更新：2026-09-20
- 网页版：https://doc.xfun.fun/partner-invoice-logic

## 哪些订单能进开票池

- 分销小程序（繁花惠 / 优花速达）的订单，订单状态为 **已完成**；
- **确认收货时间在近 3 个月内**（没有确认收货时间的订单不进池，测试造数时注意补 confirm_time）；
- 发票、收据共用同一个池子，一个订单的钱按下面的规则拆到各票种，互不重复。

## 票种一览

| 票种 | 内容 | 出票方 | 进入条件 |
|----|----|----|----|
| 花材发票 | 可开票供应商的花材款，按 **供货价×数量** | 对应供应商 | 该供应商已标记「可开票」 |
| 花材收据 | 未标记可开票供应商的花材款 | 平台出具（分平台盖章） | 供应商未标记可开票 |
| 干线物流费发票 | 订单的物流费（算法见「物流费专项」） | 捷通公司 | 订单实际使用的 **物流商**已标记「可开票」 |
| 物流费收据 | 同上 | 平台出具 | 物流商未标记可开票 |
| 供应链服务费发票 | 订单的打包服务费 | 花序公司 | 有剩余额度即生成 |
| 平台服务费发票 | 以上都分完后的 **剩余部分** | 花古德公司 | 剩余额度 \> 0 |

两个「可开票」开关都在运营端维护：供应商侧是商品/供应商的可开票标识，物流商侧是物流列表里的「是否可开票」。注意物流商是按 **订单实际发货用的物流商**判断，不是下单页选的那个名字相近的。

## 金额怎么拆（核心规则）

一切从「这单实际付了多少钱」出发：

```text
可开票总额 = 现金实付 + 寻梦币抵扣        （寻梦币按正常付款算，9-18 拍板）
优惠券 / 满减 / 平台补贴 不算钱，会等比压缩能开的票
```

按固定顺序分配，每一步都不能超过还剩的额度：

**花材（发票 + 收据）** 按各供应商供货价×数量；可开票供应商进发票，其余进收据

**物流费** 三者取最小：实际运费、订单物流加价、剩余额度（详见「物流费专项」）

**供应链服务费** = min(订单打包服务费, 剩余额度)

**平台服务费** = 前面全部分完后的剩余，剩多少开多少

**钱不够时的兜底**：实付连花材都覆盖不了时，先从 **收据**里扣，收据扣到 0 还不够，再按比例压低 **花材发票**。所以永远满足恒等式：

```text
花材发票 + 花材收据 + 物流费 + 供应链服务费 + 平台服务费 = 实付（含寻梦币）
```

### 两个测试期间的真实例子

| 场景 | 数据 | 结果 |
|----|----|----|
| 实付低于供货价 | 实付145.52，供货价 90(可开票)+60(收据)=150 | 发票 90 全额保住，收据 60−4.48= **55.52**，服务费/物流/平台全为 0 |
| 物流加价被剩余额度封顶 | 实付29.90，花材 15+8.8=23.8，加价10.8，运费100 | 物流费 = min(100, 10.8, 剩余6.10) = **6.10** |

## 物流费专项

1.  **实际运费**取发货单的实付运费减赔付，**不要求物流结算完成**（9-18 拍板：录了运费就能用）；
2.  运费是发货单级的，同一发货单下多笔订单按各自的 **物流加价等比分摊**；
3.  已开过物流票的部分从发货单额度里扣掉，同一发货单不会开两遍；
4.  单笔订单票面 = min(分摊到的实际运费, 该订单物流加价, 剩余额度)；
5.  物流商可开票 → 捷通发票；不可开票 → 进收据；运费超过加价的部分本来就开不出，加价超过实付剩余的部分计入不了。

## 申请、撤销与记录

- **一键申请**：默认发票+收据一起申请；也支持 **只开发票**或 **只开收据**（9-9 拍板可分开）。收据按平台各出一张，两行汇总（花材 / 物流），场次文案如「2026.08.04-2026.09.19 共三个场次」。
- **发票撤销**：待商家开票的可撤；供应商已在开票平台受理或已开出的，撤销入口消失且接口拒绝。撤销后的额度回到池子可重新申请。
- **收据不可撤销**（产品口径），开过收据的订单不再回池。测试期间造废的收据要清数据才能重开。
- **开票记录**按申请单/票据维度展示；平台三项每类合并为一张票据，卡片和详情都显示真实关联订单数（9-18 修正）。
- 分组名不带公司前缀（显示「平台服务费」而非「花古德公司-平台服务费」，9-18 拍板），出票公司在票据详情中展示。

## 运营端

- **平台开票列表**：只展示供应链服务费 / 干线物流费 / 平台服务费三类，支持按平台（繁花惠/优花速达）筛选，带三格金额汇总；
- **发票申请列表**：花材类发票在这里看，新增平台筛选与平台字段；
- **物流商管理**：新增/编辑物流商时可设置「是否可开票」（该开关 9-18 修复后已生效）；
- 平台三项由内部开票公司的供应商账号出票，不进逾期扣款、不发短信。

## 「为什么没看到」速查表

测试期间实际遇到的全部案例，产品和测试可按这张表自查：

| 现象 | 原因 | 怎么让它出现 |
|----|----|----|
| 整个池子是空的 | 订单没确认收货，或超过 3 个月 | 走完确认收货，测试数据补 confirm_time |
| 某供应商花材只在收据里 | 该供应商未标「可开票」 | 运营端标记后重新看 |
| 没有物流费 | 发货单没录运费 / 订单物流加价为 0 / 实付剩余为 0 / 物流商未标可开票（注意认准订单实际用的那家） | 四个条件逐一核对 |
| 没有服务费 / 平台服务费 | 实付（含寻梦币）扣完花材已经没有剩余 | 下一单不用优惠，实付高于供货价合计 |
| 金额比预期小 | 用了优惠/满减，开票总额被实付封顶，按顺序从后往前砍 | 属正常口径，票面合计恒等于实付 |
| 订单在别的账号看不到 | 各账号只能看自己的池子 | 用下单账号查看 |
| 开过收据的订单不见了 | 收据不可撤销，订单已被占用 | 属正常口径 |

## 本轮测试确认的口径（时间线）

| 日期  | 拍板内容                                     |
|-------|----------------------------------------------|
| 09-09 | 发票与收据可以分开申请；收据只装不可开票部分 |
| 09-18 | 寻梦币按正常付款计入可开票总额（不是优惠券） |
| 09-18 | 票据分组名去掉「XX公司-」前缀                |
| 09-18 | 平台项卡片显示真实订单数（原固定为 1）       |
| 09-18 | 物流费不再要求发货单已结算，录入运费即可用   |

> [!NOTE]
> **一个已知风险**（物流费不等结算的代价）：未结算的运费金额没有写保护，结算被驳回时金额会清零，但先开出去的票不会回滚。产品已知悉并接受。

依据测试环境当前部署版本整理（purchaser / admin 均为 9-18 之后的构建）。数据示例均来自本轮真实测试订单。
