1
0
forked from erp-dev/erp
Files
erpnew/docs/orders_edit_api.md

59 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 订单编辑 API 概览
用于更新业务订单(销售单、销售退货单、采购单、采购退货单)的共同约束:
- 仅允许 **审批中**`PENDING`)状态编辑;若订单已审批/作废,服务层会抛出错误 `"{实体}当前状态不可修改"`
- 更新接口统一使用 `PUT/PATCH /api/v1/<order-type>/<id>/`,请求体必须包含 `items`,且为非空数组。
- 数量校验与创建逻辑一致:严进仓需 `numbers`,宽进仓需 `quantity + num_of_rolls`,严进严出(出库)需 `consume_detail_ids`
- 订单字段(客户/供应商、仓库、备注、日期等)可被更新,未提供的字段沿用原值。
## SalesOrder 更新
- 路径:`PUT/PATCH /api/v1/sales-orders/<id>/`
- 请求体字段(全部可选,但 `items` 必须存在且非空):
- `customer`:客户 ID
- `warehouse` / `warehouse_id`:仓库 ID
- `order_date``YYYY-MM-DD`
- `remarks`
- `items`:与创建时一致(支持可选 `printing_job`
- 响应:`200 OK`,返回最新销售单详情(同 `GET` 列表项,额外包含 `quantity_of_rolls` 数组)
- 错误:
- `400`:参数缺失或状态不可编辑(`{"error": "销售单当前状态不可修改"}`
- `404`:订单不存在
> 其余订单SalesReturn/Purchase/PurchaseReturn的编辑接口请在实现后按同一规范补充到本文件。
## SalesReturnOrder 更新
- 路径:`PUT/PATCH /api/v1/sales-return-orders/<id>/`
- 请求体字段:
- `customer``warehouse``return_date``remarks`(可选)
- `sales_order`:可重新绑定关联销售单,同样必须属于当前客户
- `items`:与创建规则一致(严进模式需 `numbers`,宽进模式 `quantity/num_of_rolls` 等)
- 响应:`200 OK`,结构同 `GET /sales-return-orders/` + `quantity_of_rolls`
- 错误示例:
- `{"error": "销售退货单当前状态不可修改"}`(状态非 PENDING
- `{"error": "销售退货单的客户必须与原销售单一致"}`(客户不匹配)
## PurchaseOrder 更新
- 路径:`PUT/PATCH /api/v1/purchase-orders/<id>/`
- 请求体字段:
- `supplier``warehouse``order_date``remarks`
- `items`:与创建规则相同(严进模式 `numbers`,宽进 `quantity/num_of_rolls`
- 响应:`200 OK`,返回最新采购单,新增 `quantity_of_rolls` 字段
- 错误示例:
- `{"error": "采购单当前状态不可修改"}`(状态非 PENDING
## PurchaseReturnOrder 更新
- 路径:`PUT/PATCH /api/v1/purchase-return-orders/<id>/`
- 请求体字段:
- `supplier``warehouse``return_date``remarks`
- `purchase_order`:可重新绑定关联采购单,必须属于当前供应商
- `items`:结构同创建(严出仓仍需 `consume_detail_ids`
- 响应:`200 OK`,返回采购退货单详情(含 `quantity_of_rolls`
- 错误示例:
- `{"error": "采购退货单当前状态不可修改"}`
- `{"error": "采购退货单的供应商必须与原采购单一致"}`