Files
T
2026-07-12 12:04:43 +08:00

85 lines
4.5 KiB
Markdown
Raw 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.
# 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` 记录