# 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` 记录