1
0
forked from erp-dev/erp

feat: shipment patch

This commit is contained in:
2026-04-02 18:07:06 +08:00
parent d36d9c1d9c
commit 1be840a8c2
14 changed files with 979 additions and 72 deletions

View File

@@ -28,7 +28,7 @@
| limit | int | 分页大小LimitOffsetPagination |
| offset | int | 偏移量 |
| customer | int | 客户ID |
| status | int | 状态1=待送货, 2=已交付, 3=已取消) |
| status | int | 状态1=草稿(未发布), 2=已发布, 3=已取消, 4=已驳回, 5=已审核 |
| external_id | string | 外部订单号(精确匹配) |
| shipment_date_from | string | 出货日期起始YYYY-MM-DD |
| shipment_date_to | string | 出货日期结束YYYY-MM-DD |
@@ -50,6 +50,13 @@
"customer": 1,
"customer_name": "客户A",
"shipment_date": "2026-01-14",
"status": 1,
"status_display": "草稿(未发布)",
"status_modified_at": null,
"cancelled_by_id": null,
"cancelled_by_name": null,
"approved_by_id": null,
"approved_by_name": null,
"remark": "备注信息",
"items_count": 3,
"sales_items": [],
@@ -69,12 +76,25 @@
- **Method**: `GET`
- **认证**: 需要登录JWT Token
#### 查询参数(可选)
| 参数 | 类型 | 说明 |
|------|------|------|
| status | int | 可选状态过滤;取值为 1=草稿(未发布), 2=已发布, 3=已取消, 4=已驳回, 5=已审核。传入后仅当该出货单状态匹配时才返回详情 |
---
## 创建出货单
创建出货单并关联销售品。
业务规则补充:
-`sales_items` 非空时,所有销售品都必须关联有效的 `printing_job`
- 并且这些销售品必须全部来自同一个 `printing_order`
- 如果存在缺少生产任务、生产任务不存在、或跨生产订单混装,接口会拒绝创建
- 新创建的出货单默认状态为 `草稿(未发布)`
### 接口信息
- **URL**: `/api/v1/shipment/shipments/`
@@ -115,6 +135,13 @@
"shipment_date": "2026-01-14",
"area": "华东",
"remark": "备注信息",
"status": 1,
"status_display": "草稿(未发布)",
"status_modified_at": null,
"cancelled_by_id": null,
"cancelled_by_name": null,
"approved_by_id": null,
"approved_by_name": null,
"items_count": 3,
"sales_items": [],
"external_finished_products": [],
@@ -137,12 +164,29 @@
| shipment_date | string | 出货日期 |
| area | string | 出货地区 |
| remark | string | 备注 |
| status | int | 状态枚举1=草稿(未发布), 2=已发布, 3=已取消, 4=已驳回, 5=已审核) |
| status_display | string | 状态显示名称 |
| status_modified_at | string/null | 最后一次状态修改时间 |
| cancelled_by_id | int/null | 取消人 ID仅当进入已取消时可能有值 |
| cancelled_by_name | string/null | 取消人名称,仅当进入已取消时可能有值 |
| approved_by_id | int/null | 审核人 ID仅当进入已审核时可能有值 |
| approved_by_name | string/null | 审核人名称,仅当进入已审核时可能有值 |
| items_count | int | 关联的销售品数量 |
| created_by_id | int | 创建人ID |
| created_by_name | string | 创建人名称 |
| created_at | string | 创建时间 |
| updated_at | string | 更新时间 |
### 状态流转规则
- `草稿(未发布)` 只能流转到 `已发布`
- `已发布` 可以流转到 `已审核` / `已驳回` / `已取消`
- `已驳回` 可以流转到 `已审核` / `已取消`
- `已审核` 可以流转到 `已取消`
- `已取消` 不可再流转到其他状态
- 重复设置同一状态保持幂等,不报错
- 进入 `已审核` 时必须提供审核人
### 错误响应
#### 400 Bad Request - 客户不存在
@@ -169,6 +213,30 @@
}
```
#### 400 Bad Request - 销售品缺少关联生产任务
```json
{
"detail": "以下销售品缺少关联生产任务,无法创建出货单: [1]"
}
```
#### 400 Bad Request - 销售品关联的生产任务不存在
```json
{
"detail": "以下销售品关联的生产任务不存在,无法创建出货单: [1]"
}
```
#### 400 Bad Request - 销售品来自不同生产订单
```json
{
"detail": "出货单中的销售品必须来自同一个生产订单"
}
```
---
## 创建出货单external 版)
@@ -229,11 +297,13 @@
"area": "华南",
"remark": "external 备注(可选)",
"status": 1,
"status_display": "待送货",
"status_display": "草稿(未发布)",
"external_id": "EXT-ORDER-001",
"cancelled_at": null,
"status_modified_at": null,
"cancelled_by_id": null,
"cancelled_by_name": null,
"approved_by_id": null,
"approved_by_name": null,
"items_count": 0,
"external_finished_products_count": 2,
"created_by_id": 1,