purchaseOrderId 必选,供应商自动带出(以采购订单的供应商为准,前端无需传 supplierId,由后端按采购订单查询设置)。invoiceId 必填):从 GET /erp/purchase-invoice/simple-list?supplierId=&purchaseOrderId= 选择,仅显示"已上传附件 + 剩余可付金额 > 0"的来票;选择后 remainingInvoicePrice 可用于预填付款金额上限。对应关系:**采购订单(1) -> 来票(N) -> 付款(M)**。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /erp/purchase-invoice/create | 创建来票 |
| PUT | /erp/purchase-invoice/update | 更新来票 |
| DELETE | /erp/purchase-invoice/delete?id= | 删除来票 |
| GET | /erp/purchase-invoice/get?id= | 获得来票详情 |
| GET | /erp/purchase-invoice/page | 来票分页 |
| GET | /erp/purchase-invoice/export-excel | 导出来票 Excel |
| GET | /erp/purchase-invoice/simple-list?supplierId=&purchaseOrderId= | 精简列表(付款表单选来票) |
已移除接口:
/erp/purchase-invoice/update-status(审核/反审核)、/erp/purchase-invoice/audit-count(待审核数量)。前端请同步删除对应按钮与接口调用。
创建/更新来票请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 否 | 更新时必填 |
| purchaseOrderId | Long | 是 | 采购订单编号,必选 |
| supplierId | Long | 否 | 供应商编号,**不传**,由后端按采购订单查询设置 |
| invoiceNo | String | 否 | 发票号码 |
| invoiceTitle | String | 否 | 发票抬头 |
| price | BigDecimal | 是 | 来票金额(元) |
| invoiceTime | LocalDateTime | 是 | 来票日期 |
| remark | String | 否 | 备注 |
| blobIds | List<Long> | 否 | 发票附件 blobId 列表 |
来票分页/详情响应字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| no | String | 来票编号(后端生成,前缀 FPD) |
| supplierName | String | 供应商名称 |
| order | Object | 采购订单信息(嵌套) |
| attachmentList | List | 发票附件列表 |
| hasAttachment | Boolean | 是否已上传发票附件 |
| remainingInvoicePrice | BigDecimal | 剩余可付金额 = 来票金额 - 该来票已付款金额 |
已移除响应字段:
auditStatus(审批状态)、processInstanceId(工作流编号)。
simple-list 响应:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Long | 来票编号 |
| no | String | 来票编号 |
| invoiceNo | String | 发票号码 |
| invoiceTitle | String | 发票抬头 |
| price | BigDecimal | 来票金额 |
| supplierId | Long | 供应商编号 |
| purchaseOrderId | Long | 采购订单编号 |
| hasAttachment | Boolean | 是否已上传附件(恒为 true) |
| remainingInvoicePrice | BigDecimal | 剩余可付金额 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /erp/finance-payment/create | 创建付款单,请求体含 invoiceId(必填) |
| PUT | /erp/finance-payment/update | 更新付款单,请求体含 invoiceId(必填) |
| GET | /erp/finance-payment/get | 响应含 invoiceId、invoice 嵌套对象 |
| GET | /erp/finance-payment/page | 响应含 invoiceId、invoice 嵌套对象 |
请求参数新增:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| invoiceId | Long | 是 | 关联的来票编号(新建付款单必填) |
响应字段新增:
| 字段 | 类型 | 说明 |
|---|---|---|
| invoiceId | Long | 关联的来票编号 |
| invoice | Object | 关联的来票信息(含 no、invoiceNo、invoiceTitle、price 等) |
响应示例:
{
"code": 0,
"data": {
"id": 1,
"no": "FKD20260810000001",
"invoiceId": 100,
"invoice": {
"id": 100,
"no": "FPD20260810000001",
"invoiceNo": "02564178",
"invoiceTitle": "XX科技有限公司",
"price": 9000.00
},
"paymentPrice": 5000.00
}
}
| 字段 | 展示位置 | 说明 |
|---|---|---|
| 来票编号 | 来票列表、详情、付款详情 | 前缀 FPD |
| 供应商 | 来票列表、详情 | 按采购订单带出 |
| 采购订单 | 来票列表、详情 | 展示订单编号/信息 |
| 发票号码/抬头 | 来票列表、详情 | 录入字段 |
| 来票金额 | 来票列表、详情、付款表单 | 元 |
| 来票日期 | 来票列表、详情 | |
| 发票附件 | 来票详情、来票列表 | 上传/预览/下载,有附件显示"已上传"Tag |
| 剩余可付金额 | 来票列表、付款表单 | 来票金额 - 已付款金额 |
| 关联来票 | 付款列表、付款详情 | 展示 invoice.no / invoice.invoiceNo / invoice.price |
已移除展示字段:来票列表的"审批状态"列、搜索条件"审核状态"、"审核/反审核"操作按钮。
| 场景 | 规则 |
|---|---|
| 来票创建 | 采购订单必须审核通过;来票供应商与采购订单一致;来票金额不超过订单剩余可开票金额;**创建即生效,无需审核** |
| 来票编辑 | 任意状态可编辑,无审核状态限制 |
| 来票删除 | 已有有效付款单(未作废且付款金额 > 0)关联的来票不可删除,其余可删除 |
| 付款选择来票 | 已上传发票附件且剩余可付金额 > 0 的来票可选(**不再要求审核通过**) |
| 付款金额上限 | 付款金额 <= 该来票金额 - 该来票已付款金额(未审核+审批中+已审核付款,排除作废) |
| 供应商一致性 | 付款的供应商必须与关联来票的供应商一致 |
| 存量付款单 | invoiceId 为空的存量付款单,编辑时需重新选择合格来票 |
supplierId),可选订单时传 purchaseOrderId 进一步过滤。remainingInvoicePrice 为负数或 0 的来票不会出现在 simple-list 中,前端可直接按返回列表渲染。remainingInvoicePrice 作为付款金额输入上限提示。