docs(发票): PR #4311 收口——4份发票 changelog 勘误(amount 改 JSON number 元)

修正范围:
- 23_4290_发票申请入参票种修正-修改接口-管理后台.md
- 23_4290_发票申请票种修正-修改接口-小程序端.md
- 23_4258_发票详情接口-新增接口-管理后台.md
- 23_4265_发票列表page结构调整-修改接口-管理后台.md

主要变更(4份文件均已对齐最终线上契约):
1. amount 入参/出参全部改为 JSON number(单位元,如 986.00),
   原「integer 分/字符串分/×100」描述已作废
2. 各文件顶部勘误节追加「截至 PR #4311 收口」条目,
   关联 Issue #4290/#4296/#4310、PR #4292/#4302/#4311
3. 详情接口边界示例:专票 email 由 null 改为始终有值(全电子交付)
4. 列表接口:records.amount 和 stats.amount 均改为 number 类型
这个提交包含在:
yaosutu 2026-06-23 17:09:06 +08:00
父节点 3e00271082
当前提交 f85aa74eb5
共有 4 个文件被更改,包括 44 次插入35 次删除

查看文件

@ -6,6 +6,8 @@
> ⚠️ **破坏性变更**`invoiceType` 删除 `ELECTRONIC``email` 改为始终必填 + 格式校验、专票限公司抬头 + 必填五项、删除 `mailAddress` 字段。小程序开票页与详情页均需同步改动,上线时前后端须同步发布。 > ⚠️ **破坏性变更**`invoiceType` 删除 `ELECTRONIC``email` 改为始终必填 + 格式校验、专票限公司抬头 + 必填五项、删除 `mailAddress` 字段。小程序开票页与详情页均需同步改动,上线时前后端须同步发布。
> **勘误(截至 PR #4311 收口)**:抬头字段统一 `titleName`、金额 `amount` 改 JSON number单位元,非分/x100、票种仅 2 值(`VAT_NORMAL`/`VAT_SPECIAL`)、专票限公司抬头、入参和出参均无 `mailAddress`。关联 Issue [#4290](https://git.1814.love:8443/wx/HL/issues/4290) [#4296](https://git.1814.love:8443/wx/HL/issues/4296) [#4310](https://git.1814.love:8443/wx/HL/issues/4310) / PR [#4292](https://git.1814.love:8443/wx/HL/pulls/4292) [#4302](https://git.1814.love:8443/wx/HL/pulls/4302) [#4311](https://git.1814.love:8443/wx/HL/pulls/4311)。
--- ---
## 接口背景 ## 接口背景
@ -86,7 +88,7 @@
| `bankAccount` | string | `invoiceType=VAT_SPECIAL` 时必填 | 银行账号 | | `bankAccount` | string | `invoiceType=VAT_SPECIAL` 时必填 | 银行账号 |
| `registAddress` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册地址 | | `registAddress` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册地址 |
| `registPhone` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册电话 | | `registPhone` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册电话 |
| `amount` | integer | 始终必填 | 开票金额,单位**分**,须 > 0 且不超过订单总金额 | | `amount` | number | 始终必填 | 开票金额,JSON number,单位**元**(如 `986.00`,须 > 0 且不超过订单总金额 |
| `email` | string | 始终必填 | 收件邮箱,须通过邮箱格式校验 | | `email` | string | 始终必填 | 收件邮箱,须通过邮箱格式校验 |
| `remark` | string | 选填 | 备注 | | `remark` | string | 选填 | 备注 |
@ -167,7 +169,7 @@ Content-Type: application/json
"titleType": "PERSONAL", "titleType": "PERSONAL",
"titleName": "张三", "titleName": "张三",
"taxNo": null, "taxNo": null,
"amount": 98600, "amount": 986.00,
"email": "zhangsan@qq.com", "email": "zhangsan@qq.com",
"remark": "旅游报销" "remark": "旅游报销"
} }
@ -200,7 +202,7 @@ Content-Type: application/json
"bankAccount": "1234567890123456", "bankAccount": "1234567890123456",
"registAddress": "上海市浦东新区XX路XX号", "registAddress": "上海市浦东新区XX路XX号",
"registPhone": "021-88888888", "registPhone": "021-88888888",
"amount": 298000, "amount": 2980.00,
"email": "finance@company.com" "email": "finance@company.com"
} }
``` ```
@ -228,7 +230,7 @@ Content-Type: application/json
"titleType": "PERSONAL", "titleType": "PERSONAL",
"titleName": "李四", "titleName": "李四",
"taxNo": null, "taxNo": null,
"amount": 50000, "amount": 500.00,
"email": "lisi@example.com" "email": "lisi@example.com"
} }
``` ```
@ -256,7 +258,7 @@ Content-Type: application/json
- 管理后台代客申请走 admin 专属接口 - 管理后台代客申请走 admin 专属接口
**特殊边界** **特殊边界**
- 金额单位:`amount`整数**分**,前端显示元时需在提交前 ×100 - 金额单位:`amount` JSON number,单位**元**(如 `986.00`),前端输入框以元为单位直接提交,无需 x100
- 一单一票:同一订单至多一张有效发票 - 一单一票:同一订单至多一张有效发票
- 专票抬头联动:选专票后,抬头类型需强制为单位,个人选项需禁用或隐藏 - 专票抬头联动:选专票后,抬头类型需强制为单位,个人选项需禁用或隐藏
- 详情回显:`mailAddress` 字段已不存在,前端不应渲染邮寄地址块 - 详情回显:`mailAddress` 字段已不存在,前端不应渲染邮寄地址块
@ -319,7 +321,7 @@ Content-Type: application/json
2. 重开接口reissue入参字段矩阵与 apply 完全相同,改动同步适用 2. 重开接口reissue入参字段矩阵与 apply 完全相同,改动同步适用
3. 专票五项taxNo + 开户行 + 账号 + 注册地址 + 注册电话)在专票场景下全必填,缺一返回 581515 3. 专票五项taxNo + 开户行 + 账号 + 注册地址 + 注册电话)在专票场景下全必填,缺一返回 581515
4. 详情页 `mailAddress` 字段已消失,老版本小程序读到 undefined 需做好空值守卫(不报错) 4. 详情页 `mailAddress` 字段已消失,老版本小程序读到 undefined 需做好空值守卫(不报错)
5. `amount` 单位为分,小程序展示/输入框以元为单位时,提交前须 ×100 5. `amount` 为 JSON number,单位**元**(如 `986.00`),小程序输入框直接传元值,无需 x100
--- ---

查看文件

@ -10,6 +10,7 @@
> 1. `invoiceType` 枚举已删除 `ELECTRONIC`(电子发票),只保留 `VAT_NORMAL`(增值税普通发票)和 `VAT_SPECIAL`(增值税专用发票) > 1. `invoiceType` 枚举已删除 `ELECTRONIC`(电子发票),只保留 `VAT_NORMAL`(增值税普通发票)和 `VAT_SPECIAL`(增值税专用发票)
> 2. 出参已删除 `mailAddress` 字段(无纸质邮寄,全电子交付) > 2. 出参已删除 `mailAddress` 字段(无纸质邮寄,全电子交付)
> 3. `email` 字段始终有值(全电子交付),不再是"电子发票为 null" > 3. `email` 字段始终有值(全电子交付),不再是"电子发票为 null"
> 4. `amount` 字段改为 JSON number单位**元**,如 `986.00`),原「字符串/单位分」均已作废;边界示例专票 `email` 由 null 改为始终有值(全电子交付)。关联 PR [#4311](https://git.1814.love:8443/wx/HL/pulls/4311),Issue [#4290](https://git.1814.love:8443/wx/HL/issues/4290) [#4310](https://git.1814.love:8443/wx/HL/issues/4310)。
## 接口背景 ## 接口背景
@ -77,7 +78,7 @@
| `bankAccount` | string / null | 银行账号,**仅专票**有值,其余 null | | `bankAccount` | string / null | 银行账号,**仅专票**有值,其余 null |
| `registAddress` | string / null | 注册地址,**仅专票**有值,其余 null | | `registAddress` | string / null | 注册地址,**仅专票**有值,其余 null |
| `registPhone` | string / null | 注册电话,**仅专票**有值,其余 null | | `registPhone` | string / null | 注册电话,**仅专票**有值,其余 null |
| `amount` | string | 开票金额,单位**分**,字符串防精度丢失,如 `"98600"` | | `amount` | number | 开票金额,JSON number,单位**元**(如 `986.00` |
| `email` | string | 收件邮箱(始终有值,全电子交付) | | `email` | string | 收件邮箱(始终有值,全电子交付) |
| `applyReason` | string / null | 备注(申请原因) | | `applyReason` | string / null | 备注(申请原因) |
@ -185,7 +186,7 @@ Authorization: Bearer <token>
"bankAccount": null, "bankAccount": null,
"registAddress": null, "registAddress": null,
"registPhone": null, "registPhone": null,
"amount": "98600", "amount": 986.00,
"email": "finance@hulalv.com", "email": "finance@hulalv.com",
"applyReason": "报销使用", "applyReason": "报销使用",
"status": "REQUESTED", "status": "REQUESTED",
@ -235,8 +236,8 @@ Authorization: Bearer <token>
"bankAccount": "6222 0000 0000 0001", "bankAccount": "6222 0000 0000 0001",
"registAddress": "上海市浦东新区XX路XX号", "registAddress": "上海市浦东新区XX路XX号",
"registPhone": "021-12345678", "registPhone": "021-12345678",
"amount": "150000", "amount": 1500.00,
"email": null, "email": "finance@company.com",
"applyReason": null, "applyReason": null,
"status": "ISSUED", "status": "ISSUED",
"statusText": "已开票(待推送)", "statusText": "已开票(待推送)",
@ -292,14 +293,14 @@ Authorization: Bearer <token>
- 专票五项字段(`taxNo` / `bankName` / `bankAccount` / `registAddress` / `registPhone`taxNo 普票公司抬头也需填,专票四项仅 `invoiceType=VAT_SPECIAL` 时有值,前端按 invoiceType 决定是否展示 - 专票五项字段(`taxNo` / `bankName` / `bankAccount` / `registAddress` / `registPhone`taxNo 普票公司抬头也需填,专票四项仅 `invoiceType=VAT_SPECIAL` 时有值,前端按 invoiceType 决定是否展示
- 开票痕迹字段(`invoiceNo` / `fileUrl` / `pdfName` / `pdfSize` / `issuedBy` / `issuedAt`):状态为 `ISSUED``PUSHED` 时有值,`REQUESTED``VOIDED` 时为 null - 开票痕迹字段(`invoiceNo` / `fileUrl` / `pdfName` / `pdfSize` / `issuedBy` / `issuedAt`):状态为 `ISSUED``PUSHED` 时有值,`REQUESTED``VOIDED` 时为 null
- 推送痕迹字段(`pushedAt` / `pushedChannels`):仅 `PUSHED` 时有值 - 推送痕迹字段(`pushedAt` / `pushedChannels`):仅 `PUSHED` 时有值
- `amount` 单位为**分**,前端展示时除以 100 转为元 - `amount` 为 JSON number,单位**元**(如 `986.00`),前端直接渲染,无需除以 100
--- ---
## 注意事项 ## 注意事项
1. `id` / `orderId` 为 Long 雪花 ID,前端必须以**字符串**接收,不可用 JS number 类型(会丢失精度) 1. `id` / `orderId` 为 Long 雪花 ID,前端必须以**字符串**接收,不可用 JS number 类型(会丢失精度)
2. `amount` 单位为**分**,字符串格式,展示时除以 100 转为元 2. `amount` 为 JSON number,单位**元**(如 `986.00`),前端直接渲染,无需除以 100
3. `pdfSize` 单位为**字节**,字符串格式,展示时自行换算为 KB / MB 3. `pdfSize` 单位为**字节**,字符串格式,展示时自行换算为 KB / MB
4. `pushedChannels` 未推送时为 null,不是空数组 `[]`,前端判断时注意区分 4. `pushedChannels` 未推送时为 null,不是空数组 `[]`,前端判断时注意区分

查看文件

@ -9,6 +9,8 @@
--- ---
> **勘误2026-06-23,#4292 #4302**`invoiceType` 枚举已删除 `ELECTRONIC`(电子发票),当前系统只有 `VAT_NORMAL`(增值税普通发票)和 `VAT_SPECIAL`(增值税专用发票)两种类型。列表行 `invoiceType` 字段不会出现 `ELECTRONIC` 值,前端发票类型筛选下拉也只保留普票/专票两项。 > **勘误2026-06-23,#4292 #4302**`invoiceType` 枚举已删除 `ELECTRONIC`(电子发票),当前系统只有 `VAT_NORMAL`(增值税普通发票)和 `VAT_SPECIAL`(增值税专用发票)两种类型。列表行 `invoiceType` 字段不会出现 `ELECTRONIC` 值,前端发票类型筛选下拉也只保留普票/专票两项。
>
> **同步修正(截至 PR [#4311](https://git.1814.love:8443/wx/HL/pulls/4311) 收口)**records 行 `amount` 及 stats `amount` 均改为 JSON number单位**元**,如 `986.00`),原「字符串/单位分」已全部作废。关联 Issue [#4290](https://git.1814.love:8443/wx/HL/issues/4290) [#4310](https://git.1814.love:8443/wx/HL/issues/4310)。
## 接口背景 ## 接口背景
@ -89,7 +91,7 @@
| `invoiceType` | string / null | 发票类型;NONE tab 行为 null | | `invoiceType` | string / null | 发票类型;NONE tab 行为 null |
| `invoiceTypeText` | string / null | 发票类型中文名;NONE tab 行为 null | | `invoiceTypeText` | string / null | 发票类型中文名;NONE tab 行为 null |
| `titleName` | string / null | 发票抬头;NONE tab 行为 null | | `titleName` | string / null | 发票抬头;NONE tab 行为 null |
| `amount` | string / null | 开票金额(分),字符串;NONE tab 行为 null | | `amount` | number / null | 开票金额,JSON number,单位**元**(如 `986.00`;NONE tab 行为 null |
| `status` | string | 发票状态;NONE tab 行固定为 `"NONE"` | | `status` | string | 发票状态;NONE tab 行固定为 `"NONE"` |
| `statusText` | string | 发票状态中文名;NONE tab 行固定为 `"未申请"` | | `statusText` | string | 发票状态中文名;NONE tab 行固定为 `"未申请"` |
| `requestedAt` | string / null | 申请时间;NONE tab 行为 null | | `requestedAt` | string / null | 申请时间;NONE tab 行为 null |
@ -119,7 +121,7 @@
| `code` | string | 统计维度枚举值 | | `code` | string | 统计维度枚举值 |
| `name` | string | 统计维度中文名(直接渲染,无需前端自行拼接) | | `name` | string | 统计维度中文名(直接渲染,无需前端自行拼接) |
| `count` | integer | 该维度数量 | | `count` | integer | 该维度数量 |
| `amount` | string | 该维度金额,单位分,字符串,保留两位小数,如 `"98600.00"` | | `amount` | number | 该维度金额,JSON number,单位**元**(如 `986.00` |
--- ---
## 枚举 / 数据字典 ## 枚举 / 数据字典
@ -200,7 +202,7 @@ Authorization: Bearer <token>
"invoiceType": "VAT_NORMAL", "invoiceType": "VAT_NORMAL",
"invoiceTypeText": "增值税普通发票", "invoiceTypeText": "增值税普通发票",
"titleName": "呼籁科技有限公司", "titleName": "呼籁科技有限公司",
"amount": "98600", "amount": 986.00,
"status": "REQUESTED", "status": "REQUESTED",
"statusText": "待开票", "statusText": "待开票",
"requestedAt": "2026-06-20T14:30:00", "requestedAt": "2026-06-20T14:30:00",
@ -222,10 +224,10 @@ Authorization: Bearer <token>
{ "code": "ALL", "name": "全部", "count": 12 } { "code": "ALL", "name": "全部", "count": 12 }
], ],
"stats": [ "stats": [
{ "code": "REQUESTED", "name": "待开票", "count": 3, "amount": "1000.00" }, { "code": "REQUESTED", "name": "待开票", "count": 3, "amount": 1000.00 },
{ "code": "ISSUED", "name": "已开票·待推送", "count": 2, "amount": "98600.00" }, { "code": "ISSUED", "name": "已开票·待推送", "count": 2, "amount": 98600.00 },
{ "code": "PUSHED", "name": "已推送", "count": 2, "amount": "50000.00" }, { "code": "PUSHED", "name": "已推送", "count": 2, "amount": 50000.00 },
{ "code": "CURRENT_MONTH_ISSUED", "name": "本月已开票", "count": 4, "amount": "148600.00" } { "code": "CURRENT_MONTH_ISSUED", "name": "本月已开票", "count": 4, "amount": 148600.00 }
] ]
} }
} }
@ -278,10 +280,10 @@ Authorization: Bearer <token>
{ "code": "ALL", "name": "全部", "count": 12 } { "code": "ALL", "name": "全部", "count": 12 }
], ],
"stats": [ "stats": [
{ "code": "REQUESTED", "name": "待开票", "count": 3, "amount": "1000.00" }, { "code": "REQUESTED", "name": "待开票", "count": 3, "amount": 1000.00 },
{ "code": "ISSUED", "name": "已开票·待推送", "count": 2, "amount": "98600.00" }, { "code": "ISSUED", "name": "已开票·待推送", "count": 2, "amount": 98600.00 },
{ "code": "PUSHED", "name": "已推送", "count": 2, "amount": "50000.00" }, { "code": "PUSHED", "name": "已推送", "count": 2, "amount": 50000.00 },
{ "code": "CURRENT_MONTH_ISSUED", "name": "本月已开票", "count": 4, "amount": "148600.00" } { "code": "CURRENT_MONTH_ISSUED", "name": "本月已开票", "count": 4, "amount": 148600.00 }
] ]
} }
} }
@ -318,7 +320,7 @@ Authorization: Bearer <token>
**特殊边界** **特殊边界**
- NONE tab 行是订单行,不是发票行:`id` 为 null,发票字段均为 null,`status` 固定为字符串 `"NONE"`,前端需按 status 判断是否展示发票操作按钮 - NONE tab 行是订单行,不是发票行:`id` 为 null,发票字段均为 null,`status` 固定为字符串 `"NONE"`,前端需按 status 判断是否展示发票操作按钮
- ALL tab 混合 NONE 行和发票行:遍历 records 时需按 `status === "NONE"` 区分行类型 - ALL tab 混合 NONE 行和发票行:遍历 records 时需按 `status === "NONE"` 区分行类型
- `amount` 单位为分,字符串格式,前端展示时除以 100 转为元 - `amount` 为 JSON number,单位**元**(如 `986.00`),前端直接渲染,无需除以 100
--- ---
@ -374,10 +376,10 @@ Authorization: Bearer <token>
```json ```json
{ {
"stats": [ "stats": [
{ "code": "REQUESTED", "name": "待开票", "count": 3, "amount": "1000.00" }, { "code": "REQUESTED", "name": "待开票", "count": 3, "amount": 1000.00 },
{ "code": "ISSUED", "name": "已开票·待推送", "count": 2, "amount": "98600.00" }, { "code": "ISSUED", "name": "已开票·待推送", "count": 2, "amount": 98600.00 },
{ "code": "PUSHED", "name": "已推送", "count": 2, "amount": "50000.00" }, { "code": "PUSHED", "name": "已推送", "count": 2, "amount": 50000.00 },
{ "code": "CURRENT_MONTH_ISSUED", "name": "本月已开票", "count": 4, "amount": "148600.00" } { "code": "CURRENT_MONTH_ISSUED", "name": "本月已开票", "count": 4, "amount": 148600.00 }
] ]
} }
``` ```
@ -430,7 +432,7 @@ Authorization: Bearer <token>
1. `tabCounts``stats` **均已变为数组**,旧的扁平对象键名已全部废弃,前端读取方式必须更新 1. `tabCounts``stats` **均已变为数组**,旧的扁平对象键名已全部废弃,前端读取方式必须更新
2. NONE tab 行中 `status` 是字符串 `"NONE"`,而不是 null,前端用 `status === "NONE"` 判断行类型 2. NONE tab 行中 `status` 是字符串 `"NONE"`,而不是 null,前端用 `status === "NONE"` 判断行类型
3. `stats` 中的 `amount` 单位为**分**,字符串格式,保留两位小数,前端展示时除以 100 转为元 3. `stats` 中的 `amount` 为 JSON number,单位**元**(如 `986.00`),前端直接渲染,无需除以 100
4. `ISSUED` 在 tabCounts 和 stats 中 `name` 不同,直接渲染 `name` 字段即可,不要自行拼接 4. `ISSUED` 在 tabCounts 和 stats 中 `name` 不同,直接渲染 `name` 字段即可,不要自行拼接
5. `adultCount` / `childCount` / `youngChildCount` 为整数,0 的维度建议展示时省略 5. `adultCount` / `childCount` / `youngChildCount` 为整数,0 的维度建议展示时省略

查看文件

@ -6,6 +6,10 @@
> ⚠️ **破坏性变更**`invoiceType` 删除 `ELECTRONIC``email` 改为始终必填 + 格式校验、新增 `taxNo`/银行/注册信息专票五项校验、删除 `mailAddress` 字段、专票限 `COMPANY` 抬头。前端申请表单需同步改动,上线时前后端须同步发布。 > ⚠️ **破坏性变更**`invoiceType` 删除 `ELECTRONIC``email` 改为始终必填 + 格式校验、新增 `taxNo`/银行/注册信息专票五项校验、删除 `mailAddress` 字段、专票限 `COMPANY` 抬头。前端申请表单需同步改动,上线时前后端须同步发布。
> **勘误(截至 PR #4311 收口)**:抬头字段统一 `titleName`、金额 `amount` 改 JSON number单位元,非分/×100、票种仅 2 值(`VAT_NORMAL`/`VAT_SPECIAL`)、专票限公司抬头、入参和出参均无 `mailAddress`。关联 Issue [#4290](https://git.1814.love:8443/wx/HL/issues/4290) [#4296](https://git.1814.love:8443/wx/HL/issues/4296) [#4310](https://git.1814.love:8443/wx/HL/issues/4310) / PR [#4292](https://git.1814.love:8443/wx/HL/pulls/4292) [#4302](https://git.1814.love:8443/wx/HL/pulls/4302) [#4311](https://git.1814.love:8443/wx/HL/pulls/4311)。
> **勘误(截至 PR #4311 收口)**:抬头字段统一 `titleName`、金额 `amount` 改 JSON number单位元,非分/x100、票种仅 2 值(`VAT_NORMAL`/`VAT_SPECIAL`)、专票限公司抬头、入参和出参均无 `mailAddress`。关联 Issue [#4290](https://git.1814.love:8443/wx/HL/issues/4290) [#4296](https://git.1814.love:8443/wx/HL/issues/4296) [#4310](https://git.1814.love:8443/wx/HL/issues/4310) / PR [#4292](https://git.1814.love:8443/wx/HL/pulls/4292) [#4302](https://git.1814.love:8443/wx/HL/pulls/4302) [#4311](https://git.1814.love:8443/wx/HL/pulls/4311)。
--- ---
## 接口背景 ## 接口背景
@ -65,7 +69,7 @@
| `bankAccount` | string | `invoiceType=VAT_SPECIAL` 时必填 | 银行账号 | | `bankAccount` | string | `invoiceType=VAT_SPECIAL` 时必填 | 银行账号 |
| `registAddress` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册地址 | | `registAddress` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册地址 |
| `registPhone` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册电话 | | `registPhone` | string | `invoiceType=VAT_SPECIAL` 时必填 | 注册电话 |
| `amount` | integer | 始终必填 | 开票金额,单位**分**,须 > 0 且 ≤ 订单总金额 | | `amount` | number | 始终必填 | 开票金额,JSON number,单位**元**(如 `986.00`,须 > 0 且 ≤ 订单总金额 |
| `email` | string | 始终必填 | 收件邮箱,全电子交付,须通过邮箱格式校验 | | `email` | string | 始终必填 | 收件邮箱,全电子交付,须通过邮箱格式校验 |
| `remark` | string | 选填 | 申请备注 | | `remark` | string | 选填 | 申请备注 |
| `applyReason` | string | 选填 | 申请原因(与 remark 二选一或并用) | | `applyReason` | string | 选填 | 申请原因(与 remark 二选一或并用) |
@ -139,7 +143,7 @@ Content-Type: application/json
"titleType": "PERSONAL", "titleType": "PERSONAL",
"titleName": "李四", "titleName": "李四",
"taxNo": null, "taxNo": null,
"amount": 98600, "amount": 986.00,
"email": "lisi@example.com", "email": "lisi@example.com",
"remark": "报销使用" "remark": "报销使用"
} }
@ -172,7 +176,7 @@ Content-Type: application/json
"bankAccount": "6222000000000001", "bankAccount": "6222000000000001",
"registAddress": "上海市浦东新区XX路XX号", "registAddress": "上海市浦东新区XX路XX号",
"registPhone": "021-12345678", "registPhone": "021-12345678",
"amount": 150000, "amount": 1500.00,
"email": "finance@company.com", "email": "finance@company.com",
"remark": null "remark": null
} }
@ -201,7 +205,7 @@ Content-Type: application/json
"titleType": "PERSONAL", "titleType": "PERSONAL",
"titleName": "张三", "titleName": "张三",
"taxNo": null, "taxNo": null,
"amount": 50000, "amount": 500.00,
"email": "zhangsan@example.com" "email": "zhangsan@example.com"
} }
``` ```
@ -230,7 +234,7 @@ Content-Type: application/json
**特殊边界** **特殊边界**
- 一单一票同一订单只允许一张有效发票REQUESTED / ISSUED / PUSHED 状态),若已有则返回 581511,须先作废旧发票再申请 - 一单一票同一订单只允许一张有效发票REQUESTED / ISSUED / PUSHED 状态),若已有则返回 581511,须先作废旧发票再申请
- 订单状态:仅 `COMPLETED`(已完成)状态订单可申请,其他状态返回 581510 - 订单状态:仅 `COMPLETED`(已完成)状态订单可申请,其他状态返回 581510
- 金额单位:`amount`整数**分**(不是元),前端输入元时需在提交前 ×100 - 金额单位:`amount` JSON number,单位**元**(如 `986.00`),>0,≤ 订单总金额;前端输入框以元为单位直接提交,无需 ×100
--- ---
@ -288,7 +292,7 @@ Content-Type: application/json
1. `ELECTRONIC` 枚举值已删除,前端下拉不可出现此选项;老订单历史数据如有该枚举值,出参展示时可显示「未知类型」或联系后端处理 1. `ELECTRONIC` 枚举值已删除,前端下拉不可出现此选项;老订单历史数据如有该枚举值,出参展示时可显示「未知类型」或联系后端处理
2. `email` 无论票种均必填,前端不可根据票种做条件隐藏 2. `email` 无论票种均必填,前端不可根据票种做条件隐藏
3. 专票表单区块(税号 + 开户行 + 账号 + 注册地址 + 注册电话)共 5 个字段,在选专票时全部必填,不可缺任何一项 3. 专票表单区块(税号 + 开户行 + 账号 + 注册地址 + 注册电话)共 5 个字段,在选专票时全部必填,不可缺任何一项
4. `amount` 单位为**分**,前端展示/输入框单位通常为元,提交前须乘以 100 4. `amount` 为 JSON number,单位**元**(如 `986.00`),前端输入框直接传元值,无需 ×100;后端已按元存储和校验
--- ---