update
This commit is contained in:
parent
4a65a0c157
commit
f85a2f28a2
@ -147,7 +147,7 @@ async def _fetch_source_rows(sor, args):
|
||||
AND sd.accounting_orgid=${accounting_orgid}$
|
||||
AND sd.del_flg='0'
|
||||
AND sd.accounting_dir='贷'
|
||||
AND sd.subjectname LIKE '待结转%'
|
||||
AND sd.subjectname LIKE '待结转%%'
|
||||
"""
|
||||
else:
|
||||
filters.append('cust.parentid=${counterparty_orgid}$')
|
||||
|
||||
@ -161,7 +161,7 @@ async def _fetch_source_rows(sor, args):
|
||||
AND sd.accounting_orgid=${accounting_orgid}$
|
||||
AND sd.del_flg='0'
|
||||
AND sd.accounting_dir='贷'
|
||||
AND sd.subjectname LIKE '待结转%'
|
||||
AND sd.subjectname LIKE '待结转%%'
|
||||
"""
|
||||
settlement_expr = 'COALESCE(sd.amount, 0)'
|
||||
sale_mode_expr = 'sd.subjectname'
|
||||
|
||||
@ -91,7 +91,7 @@ async def _fetch_source_rows(sor, args):
|
||||
AND bd.accounting_orgid = ${accounting_orgid}$
|
||||
AND bd.del_flg = '0'
|
||||
AND bd.accounting_dir = '贷'
|
||||
AND bd.subjectname LIKE '待结转%'
|
||||
AND bd.subjectname LIKE '待结转%%'
|
||||
"""
|
||||
if args.get('counterparty_orgid'):
|
||||
filters.append('b.providerid = ${counterparty_orgid}$')
|
||||
|
||||
480
finance_settlement - 副本.md
Normal file
480
finance_settlement - 副本.md
Normal file
@ -0,0 +1,480 @@
|
||||
# 财务结算接口文档
|
||||
|
||||
本文档汇总财务结算相关接口,覆盖供应商/分销商日结、月结费用查询,平台收入查询,结算单创建、审批和记账闭环。
|
||||
|
||||
## 通用说明
|
||||
|
||||
接口域名: https://dev.opencomputing.cn
|
||||
|
||||
金额口径:
|
||||
|
||||
- `sales_amount`:销售金额,来源于 `bill.amount`。
|
||||
- `settlement_amount`:应结算金额。
|
||||
- 供应商:当前账本 `bill_detail.subjectname LIKE '待结转%'` 且 `accounting_dir='贷'`。
|
||||
- 分销商:当前账本 `bill_detail.subjectname='分销商存放资金'` 且 `accounting_dir='借'`,`participantid=分销商orgid`。
|
||||
- `platform_income_amount`:平台收入,当前账本 `bill_detail.subjectname IN ('折扣收入', '底价收入')` 且 `accounting_dir='贷'`。
|
||||
- 所有正式结算金额只统计已记账账单:`bill.bill_state = '1'`。
|
||||
|
||||
状态说明:
|
||||
|
||||
| 状态 | 含义 |
|
||||
| --- | --- |
|
||||
| `draft` | 草稿,已创建结算单但未提交审批 |
|
||||
| `approving` | 审批中 |
|
||||
| `approved` | 审批通过,等待或正在记账 |
|
||||
| `rejected` | 审批拒绝 |
|
||||
| `settled` | 已完成结算记账 |
|
||||
| `failed` | 结算记账失败 |
|
||||
| `cancelled` | 审批撤销 |
|
||||
|
||||
推荐调用流程:
|
||||
|
||||
```text
|
||||
summary -> preview -> create -> submit -> apv_callback
|
||||
```
|
||||
|
||||
## 1. 汇总查询
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_summary.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
查询供应商或分销商在指定日结/月结账期内的销售金额、结算金额、平台收入和账单数量。支持按对手方聚合,也支持指定某个供应商或分销商查询。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 是 | string | `supplier` 供应商,`reseller` 分销商 |
|
||||
| `period_type` | 否 | string | `day` 或 `month`,默认 `day` |
|
||||
| `start_date` | 是 | string | 查询开始日期,格式 `YYYY-MM-DD` |
|
||||
| `end_date` | 是 | string | 查询结束日期,格式 `YYYY-MM-DD` |
|
||||
| `counterparty_orgid` | 否 | string | 指定供应商或分销商机构 ID |
|
||||
| `current_page` | 否 | number | 页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 每页数量,默认 `20` |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "supplier",
|
||||
"period_type": "month",
|
||||
"start_date": "2026-06-01",
|
||||
"end_date": "2026-06-30",
|
||||
"current_page": 1,
|
||||
"page_size": 20
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.summary.sales_amount` | 销售金额合计 |
|
||||
| `data.summary.settlement_amount` | 结算金额合计 |
|
||||
| `data.summary.platform_income_amount` | 平台收入合计 |
|
||||
| `data.summary.bill_count` | 账单数量 |
|
||||
| `data.items[].period` | 账期,日结为 `YYYY-MM-DD`,月结为 `YYYY-MM` |
|
||||
| `data.items[].counterparty_orgid` | 对手方机构 ID |
|
||||
| `data.items[].counterparty_name` | 对手方名称 |
|
||||
| `data.items[].sales_amount` | 当前行销售金额 |
|
||||
| `data.items[].settlement_amount` | 当前行结算金额 |
|
||||
| `data.items[].platform_income_amount` | 当前行平台收入 |
|
||||
| `data.items[].bill_count` | 当前行账单数量 |
|
||||
|
||||
返回示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": true,
|
||||
"msg": "ok",
|
||||
"data": {
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "supplier",
|
||||
"period_type": "month",
|
||||
"start_date": "2026-06-01",
|
||||
"end_date": "2026-06-30",
|
||||
"summary": {
|
||||
"sales_amount": 1000.0,
|
||||
"settlement_amount": 700.0,
|
||||
"platform_income_amount": 300.0,
|
||||
"bill_count": 10
|
||||
},
|
||||
"total_count": 1,
|
||||
"current_page": 1,
|
||||
"page_size": 20,
|
||||
"items": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 2. 结算单预览
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_preview.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
创建结算单前预览明细,检查指定账期是否已有结算单,并返回可结算账单明细。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 是 | string | `supplier` 或 `reseller` |
|
||||
| `counterparty_orgid` | 是 | string | 供应商或分销商机构 ID |
|
||||
| `period_type` | 否 | string | `day` 或 `month`,默认 `day` |
|
||||
| `period_start` | 是 | string | 账期开始日期 |
|
||||
| `period_end` | 是 | string | 账期结束日期 |
|
||||
| `current_page` | 否 | number | 页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 每页数量,默认 `50` |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "reseller",
|
||||
"counterparty_orgid": "reseller001",
|
||||
"period_type": "month",
|
||||
"period_start": "2026-06-01",
|
||||
"period_end": "2026-06-30"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.can_create` | 是否可以创建结算单 |
|
||||
| `data.existing_settlement` | 已存在结算单信息,没有则为 `null` |
|
||||
| `data.summary` | 汇总金额 |
|
||||
| `data.items[]` | 账单明细 |
|
||||
| `data.items[].bill_id` | 账单 ID |
|
||||
| `data.items[].order_id` | 订单 ID |
|
||||
| `data.items[].bill_date` | 账单日期 |
|
||||
| `data.items[].sale_mode` | 销售模式,`0` 折扣,`1` 代付费,`2` 底价 |
|
||||
| `data.items[].sales_amount` | 销售金额 |
|
||||
| `data.items[].settlement_amount` | 结算金额 |
|
||||
| `data.items[].platform_income_amount` | 平台收入 |
|
||||
|
||||
## 3. 创建结算单
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_create.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
创建结算单主表和明细快照。创建后状态为 `draft`。同一账本机构、对手方、账期不能重复创建。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 是 | string | `supplier` 或 `reseller` |
|
||||
| `counterparty_orgid` | 是 | string | 供应商或分销商机构 ID |
|
||||
| `period_type` | 否 | string | `day` 或 `month`,默认 `day` |
|
||||
| `period_start` | 是 | string | 账期开始日期 |
|
||||
| `period_end` | 是 | string | 账期结束日期 |
|
||||
| `userid` | 否 | string | 当前操作用户 ID |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "supplier",
|
||||
"counterparty_orgid": "supplier001",
|
||||
"period_type": "day",
|
||||
"period_start": "2026-06-01",
|
||||
"period_end": "2026-06-01",
|
||||
"userid": "user001"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.settlement_id` | 结算单 ID |
|
||||
| `data.settlement_no` | 结算单号 |
|
||||
| `data.status` | 初始状态,固定为 `draft` |
|
||||
| `data.summary` | 创建时锁定的汇总金额 |
|
||||
|
||||
## 4. 结算单列表
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_list.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
分页查询结算单主表数据。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 否 | string | `supplier` 或 `reseller` |
|
||||
| `counterparty_orgid` | 否 | string | 对手方机构 ID |
|
||||
| `status` | 否 | string | 结算单状态 |
|
||||
| `period_type` | 否 | string | `day` 或 `month` |
|
||||
| `start_date` | 否 | string | 账期范围开始 |
|
||||
| `end_date` | 否 | string | 账期范围结束 |
|
||||
| `current_page` | 否 | number | 页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 每页数量,默认 `20` |
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.total_count` | 总数 |
|
||||
| `data.current_page` | 当前页 |
|
||||
| `data.page_size` | 每页数量 |
|
||||
| `data.items[]` | 结算单列表 |
|
||||
|
||||
`items[]` 中主要字段:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `id` | 结算单 ID |
|
||||
| `settlement_no` | 结算单号 |
|
||||
| `counterparty_type` | 对手方类型 |
|
||||
| `counterparty_orgid` | 对手方机构 ID |
|
||||
| `counterparty_name` | 对手方名称 |
|
||||
| `period_start` | 账期开始 |
|
||||
| `period_end` | 账期结束 |
|
||||
| `sales_amount` | 销售金额 |
|
||||
| `settlement_amount` | 结算金额 |
|
||||
| `platform_income_amount` | 平台收入 |
|
||||
| `status` | 结算单状态 |
|
||||
| `approval_id` | 审批 ID |
|
||||
|
||||
## 5. 结算单详情
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_detail.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
查询结算单主表和明细快照。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `settlement_id` | 是 | string | 结算单 ID |
|
||||
| `current_page` | 否 | number | 明细页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 明细每页数量,默认 `100` |
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.settlement` | 结算单主表 |
|
||||
| `data.detail_total_count` | 明细总数 |
|
||||
| `data.items[]` | 结算明细快照 |
|
||||
|
||||
## 6. 提交审批
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_submit.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
将 `draft`、`rejected`、`failed` 状态的结算单提交审批。提交成功后状态更新为 `approving`,并写入 `approval_id`。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `settlement_id` | 是 | string | 结算单 ID |
|
||||
| `userid` | 是 | string | 当前操作用户 ID |
|
||||
| `business_name` | 否 | string | 审批业务名,默认 `财务结算` |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"settlement_id": "settlement001",
|
||||
"userid": "user001",
|
||||
"business_name": "财务结算"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.settlement_id` | 结算单 ID |
|
||||
| `data.approval_id` | 审批实例 ID |
|
||||
| `data.status` | `approving` |
|
||||
|
||||
注意:
|
||||
|
||||
- `apv_business` 表中需要存在 `business_name='财务结算'` 的审批业务配置。
|
||||
- 当前账本机构下需要存在角色为 `财务` 的审批用户。
|
||||
|
||||
## 7. 审批回调
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_apv_callback.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
处理审批回调。审批通过后自动结算记账:
|
||||
|
||||
- 供应商结算:调用现有 `SettleAccounting`。
|
||||
- 分销商结算:写入 `bill`、`bill_detail`、`accounting_log`、`acc_detail`、`acc_balance`。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `apv_id` | 是 | string | 审批实例 ID,也可传 `approval_id` |
|
||||
| `status` | 是 | string | 审批状态 |
|
||||
|
||||
`status` 支持:
|
||||
|
||||
| 值 | 说明 |
|
||||
| --- | --- |
|
||||
| `start` | 审批中 |
|
||||
| `agree` | 审批通过,执行结算记账 |
|
||||
| `refuse` | 审批拒绝 |
|
||||
| `terminate` | 审批撤销 |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"apv_id": "approval001",
|
||||
"status": "agree"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data[].settlement_id` | 结算单 ID |
|
||||
| `data[].status` | 处理后的状态 |
|
||||
| `data[].failure_reason` | 失败原因,仅失败时返回 |
|
||||
|
||||
返回示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": true,
|
||||
"msg": "ok",
|
||||
"data": [
|
||||
{
|
||||
"settlement_id": "settlement001",
|
||||
"status": "settled"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 8. 数据库迁移 SQL
|
||||
|
||||
文件:
|
||||
|
||||
```text
|
||||
b/bill/finance_settlement_migration.sql
|
||||
```
|
||||
|
||||
用途:
|
||||
|
||||
- 创建 `finance_settlement`。
|
||||
- 创建 `finance_settlement_detail`。
|
||||
- 已建表场景下补齐 `sale_mode` 字段。
|
||||
- 提供分销商结算前账户检查 SQL 模板。
|
||||
|
||||
## 9. 页面
|
||||
|
||||
文件:
|
||||
|
||||
```text
|
||||
finaace_settlement.html
|
||||
```
|
||||
|
||||
用途:
|
||||
|
||||
浅色科技风财务结算页面,包含:
|
||||
|
||||
- 汇总查询
|
||||
- 平台收入展示
|
||||
- 结算单预览
|
||||
- 创建结算单
|
||||
- 结算单列表
|
||||
- 结算单详情
|
||||
- 提交审批
|
||||
- 审批回调
|
||||
|
||||
## 10. 常见错误
|
||||
|
||||
### 查询失败:`unsupported format character`
|
||||
|
||||
原因:
|
||||
|
||||
SQL 中包含 `%` 通配符时,运行环境可能再次进行 Python 字符串格式化。
|
||||
|
||||
处理:
|
||||
|
||||
在 `.dspy` SQL 字符串中使用:
|
||||
|
||||
```sql
|
||||
LIKE '待结转%%'
|
||||
```
|
||||
|
||||
不要写成:
|
||||
|
||||
```sql
|
||||
LIKE '待结转%'
|
||||
```
|
||||
|
||||
### 分销商结算失败:找不到分销商存放资金账户
|
||||
|
||||
原因:
|
||||
|
||||
分销商结算需要以下账户存在:
|
||||
|
||||
- `accounting_orgid = 上级机构`
|
||||
- `orgid = 分销商机构`
|
||||
- `subjectname = 分销商存放资金`
|
||||
|
||||
以及:
|
||||
|
||||
- `accounting_orgid = 上级机构`
|
||||
- `orgid = 上级机构`
|
||||
- `subjectname = 资金账号`
|
||||
|
||||
处理:
|
||||
|
||||
执行 `b/bill/finance_settlement_migration.sql` 中附带的检查 SQL,确认账户已开通。
|
||||
415
finance_settlement.md
Normal file
415
finance_settlement.md
Normal file
@ -0,0 +1,415 @@
|
||||
# 财务结算接口文档
|
||||
|
||||
本文档汇总财务结算相关接口,覆盖供应商/分销商日结、月结费用查询,平台收入查询,结算单创建、审批和记账闭环。
|
||||
|
||||
## 通用说明
|
||||
|
||||
接口域名: https://dev.opencomputing.cn
|
||||
|
||||
金额口径:
|
||||
|
||||
- `sales_amount`:销售金额,来源于 `bill.amount`。
|
||||
- `settlement_amount`:应结算金额。
|
||||
- 供应商:当前账本 `bill_detail.subjectname LIKE '待结转%'` 且 `accounting_dir='贷'`。
|
||||
- 分销商:当前账本 `bill_detail.subjectname='分销商存放资金'` 且 `accounting_dir='借'`,`participantid=分销商orgid`。
|
||||
- `platform_income_amount`:平台收入,当前账本 `bill_detail.subjectname IN ('折扣收入', '底价收入')` 且 `accounting_dir='贷'`。
|
||||
- 所有正式结算金额只统计已记账账单:`bill.bill_state = '1'`。
|
||||
|
||||
状态说明:
|
||||
|
||||
| 状态 | 含义 |
|
||||
| --- | --- |
|
||||
| `draft` | 草稿,已创建结算单但未提交审批 |
|
||||
| `approving` | 审批中 |
|
||||
| `approved` | 审批通过,等待或正在记账 |
|
||||
| `rejected` | 审批拒绝 |
|
||||
| `settled` | 已完成结算记账 |
|
||||
| `failed` | 结算记账失败 |
|
||||
| `cancelled` | 审批撤销 |
|
||||
|
||||
推荐调用流程:
|
||||
|
||||
```text
|
||||
summary -> preview -> create -> submit -> apv_callback
|
||||
```
|
||||
|
||||
## 1. 汇总查询
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_summary.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
查询供应商或分销商在指定日结/月结账期内的销售金额、结算金额、平台收入和账单数量。支持按对手方聚合,也支持指定某个供应商或分销商查询。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 是 | string | `supplier` 供应商,`reseller` 分销商 |
|
||||
| `period_type` | 否 | string | `day` 或 `month`,默认 `day` |
|
||||
| `start_date` | 是 | string | 查询开始日期,格式 `YYYY-MM-DD` |
|
||||
| `end_date` | 是 | string | 查询结束日期,格式 `YYYY-MM-DD` |
|
||||
| `counterparty_orgid` | 否 | string | 指定供应商或分销商机构 ID |
|
||||
| `current_page` | 否 | number | 页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 每页数量,默认 `20` |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "supplier",
|
||||
"period_type": "month",
|
||||
"start_date": "2026-06-01",
|
||||
"end_date": "2026-06-30",
|
||||
"current_page": 1,
|
||||
"page_size": 20
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.summary.sales_amount` | 销售金额合计 |
|
||||
| `data.summary.settlement_amount` | 结算金额合计 |
|
||||
| `data.summary.platform_income_amount` | 平台收入合计 |
|
||||
| `data.summary.bill_count` | 账单数量 |
|
||||
| `data.items[].period` | 账期,日结为 `YYYY-MM-DD`,月结为 `YYYY-MM` |
|
||||
| `data.items[].counterparty_orgid` | 对手方机构 ID |
|
||||
| `data.items[].counterparty_name` | 对手方名称 |
|
||||
| `data.items[].sales_amount` | 当前行销售金额 |
|
||||
| `data.items[].settlement_amount` | 当前行结算金额 |
|
||||
| `data.items[].platform_income_amount` | 当前行平台收入 |
|
||||
| `data.items[].bill_count` | 当前行账单数量 |
|
||||
|
||||
返回示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": true,
|
||||
"msg": "ok",
|
||||
"data": {
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "supplier",
|
||||
"period_type": "month",
|
||||
"start_date": "2026-06-01",
|
||||
"end_date": "2026-06-30",
|
||||
"summary": {
|
||||
"sales_amount": 1000.0,
|
||||
"settlement_amount": 700.0,
|
||||
"platform_income_amount": 300.0,
|
||||
"bill_count": 10
|
||||
},
|
||||
"total_count": 1,
|
||||
"current_page": 1,
|
||||
"page_size": 20,
|
||||
"items": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 2. 结算单预览
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_preview.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
创建结算单前预览明细,检查指定账期是否已有结算单,并返回可结算账单明细。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 是 | string | `supplier` 或 `reseller` |
|
||||
| `counterparty_orgid` | 是 | string | 供应商或分销商机构 ID |
|
||||
| `period_type` | 否 | string | `day` 或 `month`,默认 `day` |
|
||||
| `period_start` | 是 | string | 账期开始日期 |
|
||||
| `period_end` | 是 | string | 账期结束日期 |
|
||||
| `current_page` | 否 | number | 页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 每页数量,默认 `50` |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "reseller",
|
||||
"counterparty_orgid": "reseller001",
|
||||
"period_type": "month",
|
||||
"period_start": "2026-06-01",
|
||||
"period_end": "2026-06-30"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.can_create` | 是否可以创建结算单 |
|
||||
| `data.existing_settlement` | 已存在结算单信息,没有则为 `null` |
|
||||
| `data.summary` | 汇总金额 |
|
||||
| `data.items[]` | 账单明细 |
|
||||
| `data.items[].bill_id` | 账单 ID |
|
||||
| `data.items[].order_id` | 订单 ID |
|
||||
| `data.items[].bill_date` | 账单日期 |
|
||||
| `data.items[].sale_mode` | 销售模式,`0` 折扣,`1` 代付费,`2` 底价 |
|
||||
| `data.items[].sales_amount` | 销售金额 |
|
||||
| `data.items[].settlement_amount` | 结算金额 |
|
||||
| `data.items[].platform_income_amount` | 平台收入 |
|
||||
|
||||
## 3. 创建结算单
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_create.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
创建结算单主表和明细快照。创建后状态为 `draft`。同一账本机构、对手方、账期不能重复创建。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 是 | string | `supplier` 或 `reseller` |
|
||||
| `counterparty_orgid` | 是 | string | 供应商或分销商机构 ID |
|
||||
| `period_type` | 否 | string | `day` 或 `month`,默认 `day` |
|
||||
| `period_start` | 是 | string | 账期开始日期 |
|
||||
| `period_end` | 是 | string | 账期结束日期 |
|
||||
| `userid` | 否 | string | 当前操作用户 ID |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"accounting_orgid": "org001",
|
||||
"counterparty_type": "supplier",
|
||||
"counterparty_orgid": "supplier001",
|
||||
"period_type": "day",
|
||||
"period_start": "2026-06-01",
|
||||
"period_end": "2026-06-01",
|
||||
"userid": "user001"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.settlement_id` | 结算单 ID |
|
||||
| `data.settlement_no` | 结算单号 |
|
||||
| `data.status` | 初始状态,固定为 `draft` |
|
||||
| `data.summary` | 创建时锁定的汇总金额 |
|
||||
|
||||
## 4. 结算单列表
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_list.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
分页查询结算单主表数据。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `accounting_orgid` | 是 | string | 当前账本机构 ID |
|
||||
| `counterparty_type` | 否 | string | `supplier` 或 `reseller` |
|
||||
| `counterparty_orgid` | 否 | string | 对手方机构 ID |
|
||||
| `status` | 否 | string | 结算单状态 |
|
||||
| `period_type` | 否 | string | `day` 或 `month` |
|
||||
| `start_date` | 否 | string | 账期范围开始 |
|
||||
| `end_date` | 否 | string | 账期范围结束 |
|
||||
| `current_page` | 否 | number | 页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 每页数量,默认 `20` |
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.total_count` | 总数 |
|
||||
| `data.current_page` | 当前页 |
|
||||
| `data.page_size` | 每页数量 |
|
||||
| `data.items[]` | 结算单列表 |
|
||||
|
||||
`items[]` 中主要字段:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `id` | 结算单 ID |
|
||||
| `settlement_no` | 结算单号 |
|
||||
| `counterparty_type` | 对手方类型 |
|
||||
| `counterparty_orgid` | 对手方机构 ID |
|
||||
| `counterparty_name` | 对手方名称 |
|
||||
| `period_start` | 账期开始 |
|
||||
| `period_end` | 账期结束 |
|
||||
| `sales_amount` | 销售金额 |
|
||||
| `settlement_amount` | 结算金额 |
|
||||
| `platform_income_amount` | 平台收入 |
|
||||
| `status` | 结算单状态 |
|
||||
| `approval_id` | 审批 ID |
|
||||
|
||||
## 5. 结算单详情
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_detail.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
查询结算单主表和明细快照。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `settlement_id` | 是 | string | 结算单 ID |
|
||||
| `current_page` | 否 | number | 明细页码,默认 `1` |
|
||||
| `page_size` | 否 | number | 明细每页数量,默认 `100` |
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.settlement` | 结算单主表 |
|
||||
| `data.detail_total_count` | 明细总数 |
|
||||
| `data.items[]` | 结算明细快照 |
|
||||
|
||||
## 6. 提交审批
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_submit.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
将 `draft`、`rejected`、`failed` 状态的结算单提交审批。提交成功后状态更新为 `approving`,并写入 `approval_id`。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `settlement_id` | 是 | string | 结算单 ID |
|
||||
| `userid` | 是 | string | 当前操作用户 ID |
|
||||
| `business_name` | 否 | string | 审批业务名,默认 `财务结算` |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"settlement_id": "settlement001",
|
||||
"userid": "user001",
|
||||
"business_name": "财务结算"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data.settlement_id` | 结算单 ID |
|
||||
| `data.approval_id` | 审批实例 ID |
|
||||
| `data.status` | `approving` |
|
||||
|
||||
注意:
|
||||
|
||||
- `apv_business` 表中需要存在 `business_name='财务结算'` 的审批业务配置。
|
||||
- 当前账本机构下需要存在角色为 `财务` 的审批用户。
|
||||
|
||||
## 7. 审批回调
|
||||
|
||||
接口:
|
||||
|
||||
```text
|
||||
/bill/finance_settlement_apv_callback.dspy
|
||||
```
|
||||
|
||||
功能:
|
||||
|
||||
处理审批回调。审批通过后自动结算记账:
|
||||
|
||||
- 供应商结算:调用现有 `SettleAccounting`。
|
||||
- 分销商结算:写入 `bill`、`bill_detail`、`accounting_log`、`acc_detail`、`acc_balance`。
|
||||
|
||||
入参:
|
||||
|
||||
| 字段 | 必填 | 类型 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `apv_id` | 是 | string | 审批实例 ID,也可传 `approval_id` |
|
||||
| `status` | 是 | string | 审批状态 |
|
||||
|
||||
`status` 支持:
|
||||
|
||||
| 值 | 说明 |
|
||||
| --- | --- |
|
||||
| `start` | 审批中 |
|
||||
| `agree` | 审批通过,执行结算记账 |
|
||||
| `refuse` | 审批拒绝 |
|
||||
| `terminate` | 审批撤销 |
|
||||
|
||||
请求示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"apv_id": "approval001",
|
||||
"status": "agree"
|
||||
}
|
||||
```
|
||||
|
||||
出参:
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --- | --- |
|
||||
| `data[].settlement_id` | 结算单 ID |
|
||||
| `data[].status` | 处理后的状态 |
|
||||
| `data[].failure_reason` | 失败原因,仅失败时返回 |
|
||||
|
||||
返回示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": true,
|
||||
"msg": "ok",
|
||||
"data": [
|
||||
{
|
||||
"settlement_id": "settlement001",
|
||||
"status": "settled"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 8. 页面
|
||||
|
||||
浅色科技风财务结算页面,包含:
|
||||
|
||||
- 汇总查询
|
||||
- 平台收入展示
|
||||
- 结算单预览
|
||||
- 创建结算单
|
||||
- 结算单列表
|
||||
- 结算单详情
|
||||
- 提交审批
|
||||
- 审批回调
|
||||
Loading…
x
Reference in New Issue
Block a user