85 lines
4.5 KiB
Markdown
85 lines
4.5 KiB
Markdown
# Dibang Plan Quantity (地磅月计划量运输联动)
|
||
|
||
## ADDED Requirements
|
||
|
||
### Requirement: 运输联动地磅月计划量累加
|
||
|
||
当运输计划安排运输且勾选「生成地磅单」(`generateDibangPlan=true`)时,系统 SHALL 按产品行联动地磅月计划,并按运输计划产品数量更新月计划 `planned_quantity`(单位:吨)。
|
||
|
||
贡献量 SHALL 取自 `pl_plan_product`,优先级为:`quantity` → `inbound_estimate_qty` → `outbound_estimate_qty` → `0`。
|
||
|
||
月计划匹配维度 SHALL 与现有 `find_monthly_db_plan` 一致:同租户、同业务类型(入库/出库)、同 CRM `product_id`、同 `specification`、同 `customer_name`(往来单位),且计划有效期与运输计划地磅日期所在自然月相交。
|
||
|
||
#### Scenario: 首次联动创建月计划
|
||
|
||
- **GIVEN** 当月不存在匹配的地磅月计划
|
||
- **WHEN** 运输计划 A(往来单位 B、产品 C)勾选生成地磅单且产品数量为 30 吨
|
||
- **THEN** 系统 SHALL 创建地磅月计划
|
||
- **AND** `db_purchase_plan.planned_quantity` SHALL 为 `30`
|
||
- **AND** 系统 SHALL 创建出入库单与 `pl_transport_db_link`
|
||
- **AND** `pl_transport_db_link.contributed_qty` SHALL 为 `30`
|
||
|
||
#### Scenario: 后续联动累加月计划
|
||
|
||
- **GIVEN** 当月已存在匹配的地磅月计划且 `planned_quantity` 为 `30`
|
||
- **WHEN** 运输计划 B(同往来单位 B、同产品 C)勾选生成地磅单且产品数量为 31 吨
|
||
- **THEN** 系统 SHALL 复用该地磅月计划(不新建第二条同维度月计划)
|
||
- **AND** `db_purchase_plan.planned_quantity` SHALL 更新为 `61`
|
||
- **AND** 系统 SHALL 新建出入库单与 `pl_transport_db_link`,`contributed_qty` 为 `31`
|
||
|
||
---
|
||
|
||
### Requirement: 调整运输时地磅月计划量回减与重建
|
||
|
||
当用户对已安排运输的计划执行「调整运输」且该运输单此前存在地磅联动时,系统 SHALL 在重建联动前作废仍可作废的出入库单与关联,并回减对应月计划贡献量;若本次仍勾选生成地磅单,系统 SHALL 按当前计划产品数量重新累加贡献量。
|
||
|
||
#### Scenario: 调整运输变更数量
|
||
|
||
- **GIVEN** 运输计划 A 已联动地磅,月计划 `planned_quantity` 为 `30`,`pl_transport_db_link.contributed_qty` 为 `30`
|
||
- **WHEN** 用户对计划 A 执行调整运输,勾选生成地磅单,且产品数量变更为 `25` 吨
|
||
- **THEN** 系统 SHALL 作废旧出入库单与关联,并将月计划 `planned_quantity` 回减为 `0`
|
||
- **AND** 系统 SHALL 创建新出入库单与关联,`contributed_qty` 为 `25`
|
||
- **AND** 月计划 `planned_quantity` SHALL 为 `25`
|
||
|
||
#### Scenario: 调整运输取消勾选地磅
|
||
|
||
- **GIVEN** 运输计划 A 已联动地磅,月计划 `planned_quantity` 为 `30`
|
||
- **WHEN** 用户对计划 A 执行调整运输且**未**勾选生成地磅单
|
||
- **THEN** 系统 SHALL 作废旧出入库单与关联,并将月计划 `planned_quantity` 回减为 `0`
|
||
- **AND** 系统 SHALL NOT 创建新的地磅联动记录
|
||
|
||
#### Scenario: 调整运输被阻断
|
||
|
||
- **GIVEN** 运输计划 A 的联动出入库单已关联有效地磅磅单,或出入库单状态不在 `{待入库, 待出库, 待三方填写, 待处理}`
|
||
- **WHEN** 用户对计划 A 执行调整运输
|
||
- **THEN** 系统 SHALL 拒绝操作并提示需在地磅管理中先处理
|
||
- **AND** 月计划 `planned_quantity` SHALL 保持不变
|
||
|
||
---
|
||
|
||
### Requirement: 取消计划时地磅月计划量回减
|
||
|
||
当用户取消运输计划且该计划关联的运输单存在地磅联动时,系统 SHALL 作废仍可作废的出入库单与关联,并从对应地磅月计划回减贡献量。
|
||
|
||
#### Scenario: 取消计划回减月计划量
|
||
|
||
- **GIVEN** 运输计划 A(30 吨)与运输计划 B(31 吨)均已联动同一地磅月计划,`planned_quantity` 为 `61`
|
||
- **WHEN** 用户取消运输计划 A
|
||
- **THEN** 系统 SHALL 软删计划 A 的出入库单与 `pl_transport_db_link`
|
||
- **AND** 地磅月计划 `planned_quantity` SHALL 更新为 `31`
|
||
- **AND** 计划 A 的 `follow_status` SHALL 为 `cancelled`
|
||
|
||
#### Scenario: 取消计划被阻断
|
||
|
||
- **GIVEN** 运输计划 A 的联动出入库单已关联有效地磅磅单或状态不可作废
|
||
- **WHEN** 用户取消运输计划 A
|
||
- **THEN** 系统 SHALL 拒绝取消并提示需在地磅管理中先处理
|
||
- **AND** 月计划 `planned_quantity` SHALL 保持不变
|
||
|
||
#### Scenario: 取消后月计划量下限
|
||
|
||
- **GIVEN** 仅运输计划 A(30 吨)联动地磅月计划,`planned_quantity` 为 `30`
|
||
- **WHEN** 用户取消运输计划 A
|
||
- **THEN** 月计划 `planned_quantity` SHALL 为 `0`
|
||
- **AND** 系统 SHALL NOT 物理删除该 `db_purchase_plan` 记录
|