fujian_water_biz_doc/specs/002-rev005-invoice-flow/contracts/if-rev-008-invoice-application.md
tangweijie 82d307bda6 docs: 补齐 REV-005 发票闭环设计与任务台账
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 00:45:21 +08:00

2.8 KiB

Contract: IF-REV-008 发票申请接口

1. 合同定位

本合同用于固化 REV-005 一期后台发票申请 / 单笔与批量开票接口口径,服务于后续正式接口文档修订、任务拆解与 backend 实施。

2. 适用范围

适用场景:

  • 后台营业收费员 / 财务人员发起单笔开票
  • 后台按已收费账单集合批量发起开票
  • 生成发票申请记录并提交 SYS-008

不适用范围:

  • 客户侧直接申请开票
  • 原始单账单直接任意部分金额开票
  • 复杂拆分/合并开票策略配置

3. 请求合同

字段 类型 必填 说明 约束
applicationNo String 发票申请单号 服务端生成,作为幂等主键之一
chargeIds Array 关联账单 ID 列表 所有账单必须已收费且未开票
custId Long 客户 ID 必须存在可用开票信息
invoiceType String 发票类型 ELECTRONIC / PAPER
invoiceTitle String 发票抬头 来自 biz_cust_invoice 或后台确认输入
taxNo String 纳税人识别号 企业抬头场景建议必填
email String 接收邮箱 电子发票场景优先使用
mobile String 接收手机号 推送或通知场景使用
sourceChannel String 来源渠道 COUNTER / FINANCE_BACKOFFICE
remark String 申请备注 进入操作留痕

4. 响应合同

字段 类型 说明 约束
invoiceId Long 发票申请记录 ID 对应 biz_invoice.id
applicationNo String 发票申请单号 后续查询与幂等主键
invoiceStatus String 当前状态 SUBMITTED / PENDING / REJECTED
sysRequestNo String SYS-008 受理号 异步查询主键
msg String 处理说明 不可开票时返回明确原因

5. 共性规则

  1. 所有账单必须处于“已收费、未开票、未作废”状态。
  2. 一期不支持对原始单账单直接任意部分金额开票。
  3. 如需多张发票,需来源于拆账/分账后的账单集合。
  4. 幂等控制可采用 applicationNocustId + chargeIds 组合。
  5. 申请成功后必须生成查询补偿任务,不可依赖回调作为唯一结果来源。
  6. 所有申请动作必须写入操作留痕。

6. 物理承接口径

逻辑对象 物理承接
发票申请主对象 biz_invoice
客户开票信息 biz_cust_invoice
税率配置 biz_invoice_taxrate
关联账单 biz_charge*
操作留痕 biz_operat_log*

7. 验收关注点

  • 是否支持后台单笔 / 批量已收费账单开票
  • 是否拒绝原始单账单直接部分金额开票
  • 是否生成申请单号与查询主键
  • 是否与 SYS-008 查询兜底模式一致