forked from erp-dev/erp
38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# 付款单 / 收款单流程说明
|
||
|
||
## 1. 概述
|
||
- `PaymentOrder`:针对供应商的资金支出单据,审批通过后代表“确认付款”。
|
||
- `ReceiptOrder`:针对客户的资金收入单据,审批通过后代表“确认收款”。
|
||
- 两者均位于 `business` 模块,API 路径分别为 `/api/v1/payment-orders/`、`/api/v1/receipt-orders/`。
|
||
- 与采购/销售相比,不涉及产品与库存,仅维护资金方向、对方主体、金额与状态。
|
||
- 审批通过会同步更新供应商/客户余额表(`SupplierBalance` / `CustomerBalance`),提供 O(1) 的欠款查询。
|
||
|
||
## 2. 创建流程
|
||
| 字段 | 付款单 | 收款单 |
|
||
|------|--------|--------|
|
||
| 对方主体 | `supplier` (供应商 ID) | `customer` (客户 ID) |
|
||
| 日期 | `payment_date` | `receipt_date` |
|
||
| 金额 | `amount`,必须 > 0 | `amount`,必须 > 0 |
|
||
| 其他 | `remarks`(可选) | `remarks`(可选) |
|
||
|
||
创建成功返回 `201`,包含新建单据 ID、状态(默认 `PENDING`)与提示信息。
|
||
|
||
## 3. 审批 / 作废
|
||
- 接口:`POST /api/v1/<payment|receipt>-orders/<id>/review/`
|
||
- 请求体:`{"action": "approve"}` 或 `{"action": "cancel"}`
|
||
- 审批通过:状态变为 `APPROVED`,后续可用于应付/应收对账。
|
||
- 作废:状态变为 `CANCELLED`;若已是目标状态则返回原状态(幂等)。
|
||
|
||
## 4. 常见异常
|
||
| 场景 | 响应 |
|
||
|------|------|
|
||
| 缺少主体/日期/金额 | `400 + {"error": "缺少 ... "}` |
|
||
| 金额 ≤ 0 | `400 + {"error": "amount 必须大于 0"}` |
|
||
| 目标单据不存在或非当前商户 | `404` |
|
||
| 无权限(用户非员工) | `403` |
|
||
|
||
## 5. 与采购/销售单的关系
|
||
- 继承相同的方向抽象(`get_direction()`),可与采购/销售的金额统计组合成统一的应收/应付报表。
|
||
- 不触发库存任务,也没有 `items`、仓库等字段;扩展字段(如付款方式、附件)可在此基础上继续添加。
|
||
|