1
0
forked from erp-dev/erp

feat: sales return order and purchase return order

This commit is contained in:
2025-12-01 16:52:59 +08:00
parent a3b4af2602
commit fae33809ac
17 changed files with 1745 additions and 6 deletions

View File

@@ -43,7 +43,20 @@
- 作废时已有出库记录:`ValueError('销售单已生成出入库记录,无法作废')` -> `400`
- ID 不存在或不属于当前商户:`404`
## 6. 创建接口参数约定
## 6. 销售退货(销退)流程补充
- API`/api/v1/sales-return-orders/`(创建、列表)与 `/review/` 审批接口,与销售单保持完全一致的认证/权限。
- 创建时字段改为 `return_date`,其余 `items` 结构与销售单一致(根据仓库 mode 填写 `numbers``quantity` / `num_of_rolls`)。严进严出仓在退货场景下视为“入库”,故无需 `consume_detail_ids`
- 审批通过:
1. 事务锁定单据与明细。
2. 状态置为 `APPROVED`
3. 调用 `BalanceService.adjust_customer_balance(delta=-total_amount, source=SALES_RETURN_ORDER)`,写 `BalanceChangeRecord`,减少客户欠款。
4. 根据商户设置触发 `create_sales_return_order_stock_entries`,底层走 `StockFlowService.stock_in`source=`SALES_RETURN`)。
- 作废:同销售单,只允许 `PENDING` 且未生成 `StockChangeRecord` 的单据作废;审批后不可逆。
---
## 7. 创建接口参数约定
销售单创建接口沿用采购单的参数格式,根据仓库模式填写 `items`
@@ -55,7 +68,7 @@
> 说明:在严出模式下,`consume_detail_ids` 列表中的 ID 必须为同仓库、同商户且未被消耗的入库明细 ID。系统会在审批通过时逐条扣减对应库存。
## 6. 红冲(对冲)规划
## 8. 红冲(对冲)规划
与采购单一致,后续将通过库存红冲入口(`StockFlowService.offset_stock_change` 占位方法)实现销售单出库的反向抵销。关键原则: