diff --git a/doc/docs/业务流程/2026-10-17-结算调整单操作流程说明(分场景).md b/doc/docs/业务流程/2026-10-17-结算调整单操作流程说明(分场景).md new file mode 100644 index 00000000..16522c1b --- /dev/null +++ b/doc/docs/业务流程/2026-10-17-结算调整单操作流程说明(分场景).md @@ -0,0 +1,190 @@ +# 结算调整单操作流程说明(分场景) + +> 整理日期:2026-10-17 +> 定位:面向操作者的流程说明,只讲"谁在哪个页面做什么、系统发生什么、结果是什么",不含代码细节。 +> 依据:`2026-10-16-结算调整单接入金蝶设计(未推送自动推-已推送冲销后重推新单).md` 及当前已落地实现。 + +--- + +## 一、结算调整单是什么 + +正式结算单**审批通过后不允许直接改金额**,一切费用调整都必须通过「结算调整单」完成。 + +- **作用**:对一张已审批通过的正式结算单,调整其费用项目和金额(调增、调减、新增手工费用)。 +- **单号规则**:`TZ + 日期 + 4 位流水`,保存草稿时自动生成。 +- **只能手工新增**:系统不会自动生成调整单,全部由业务人员在页面发起。 +- **没有作废功能**:调整单一旦提交走审批,不支持作废;错了只能走"驳回 → 修改"或重新建单。 +- **推送金蝶按钮是高危操作**:点击前有二次确认,请确认金蝶侧状态后再操作。 + +--- + +## 二、状态与可用操作总览 + +### 2.1 状态流转 + +``` +新增/保存草稿 ──→ 草稿 ──提交──→ 审批中 ──审批通过──→ 审批通过(终态) + ↑ │ + │ 驳回 + └──── 已驳回 ←───┘ + (可改后重新提交) +``` + +- 草稿、已驳回:可编辑、可删除(草稿)、可提交。 +- 审批中:只能"通过"或"驳回"。 +- 审批通过:终态,只剩金蝶推送相关操作。 + +### 2.2 各状态下的按钮 + +| 状态 | 可用操作 | 说明 | +|---|---|---| +| 草稿 | 编辑 / 删除 / 提交 | 删除为物理删除,含明细 | +| 已驳回 | 编辑 / 提交 | 须先"编辑"保存一次(保存自动回到草稿)才能提交,直接提交会被拒绝 | +| 审批中 | 通过 / 驳回 | 审批人操作 | +| 审批通过 | 推送金蝶 / 重新推送(合一按钮)| 按金蝶状态自动分流,高危确认 | + +### 2.3 金蝶同步状态(调整单上的展示字段) + +| 状态 | 含义 | +|---|---| +| 未同步 | 原结算单还没推过金蝶,或推送尚未发生 | +| 已同步 | 已在金蝶生成应付/应收单,调整单上可看到金蝶单据号 | +| 生成失败 | 推送失败,可用"推送金蝶"重试或等定时重推 | + +--- + +## 三、通用操作说明(每个操作:前置条件 → 系统动作 → 结果) + +### 3.1 新增调整单 + +| 项 | 说明 | +|---|---| +| 入口 | 结算调整单列表 → 新增 | +| 前置 | 必须先选定一张**可调整的正式结算单**,条件缺一不可:① 审批通过;② 未完成收款/付款;③ 非尾款结算;④ 未发起尾款付款/付款申请。不满足的单在选单列表里根本搜不到 | +| 系统动作 | 选定结算单后自动回带:客商、调整类型(应收/应付)、合同、原结算金额、原单费用明细;同时做一次**金蝶冲销预检(软提示)** | +| 预检提示 | ① 未推送金蝶 → 正常继续;② 已推送且旧单已冲销 → 提示"审批后可重新推送新单";③ 已推送且旧单未冲销 → 醒目提示"审批后需先由财务在金蝶完成冲销,才能重新推送";④ 金蝶查不到/超时 → 提示"未校验",**不阻断建单** | +| 结果 | 生成一张草稿,获得单号 | + +> 预检只是提示,不拦人;真正的拦截在"重新推送"那一步。填单时必须至少录入一条调整费用,否则无法提交。 + +### 3.2 保存草稿 / 编辑 / 删除 + +- 草稿和已驳回的单可反复编辑;删除仅限草稿,删除后单号作废、不留痕迹。 +- 手工费用行(不对应原单明细的费用)与关联原单明细的费用行在明细里混排,提交时会校验关联完整性。 + +### 3.3 提交 + +- 草稿 / 已驳回 → 审批中,进入审批人的待办。 +- 提交后单据锁定,提交人不能再改。 + +### 3.4 审批通过 ★ 核心分流点 + +审批人点"通过"后,系统按**原结算单是否推送过金蝶**自动走两条完全不同的路(见第四、五节场景 A / B): + +- **原单未推送**:把调整直接回写到原结算单,然后自动推金蝶。 +- **原单已推送**:原单数据一律不动,只留一条变更记录,等财务冲销后再人工重推。 + +> 注:审批接口会顺带返回自动推送的失败原因(如有),前端直接提示,不用去翻日志。 + +### 3.5 驳回 + +- 审批中 → 已驳回,驳回原因写入备注。 +- 驳回后单据解锁,提交人可修改后重新提交,回到审批中。注意:重新提交前必须先点一次「编辑」并保存(保存会把单据重置回草稿),对已驳回单直接点提交会被拒绝。 + +### 3.6 推送金蝶 / 重新推送(合一按钮,高危) + +列表和详情里只有一个按钮,系统按金蝶状态自动分流: + +| 调整单金蝶状态 | 按钮实际行为 | 前置闸门 | +|---|---|---| +| 未同步 / 生成失败 | 推送其关联的**原结算单**到金蝶 | 无冲销要求 | +| 已同步 | **重新推送(高危)**:确认金蝶旧单已冲销后,克隆一张新正式结算单并推送 | 硬闸门:金蝶旧单必须已冲销,否则直接拒绝并提示先冲销 | + +按钮点击均有高危二次确认弹窗。 + +--- + +## 四、分场景流程 + +### 场景 A:原结算单未推送金蝶(最常见、全自动) + +适用:正式结算单审批通过了,但还没推到金蝶。 + +| 步骤 | 操作人 | 操作 | 系统动作 | +|---|---|---|---| +| 1 | 业务 | 新增调整单,选定结算单,录调整费用,保存草稿 | 回带信息、生成 TZ 单号 | +| 2 | 业务 | 提交 | 草稿 → 审批中 | +| 3 | 审批人 | 审批通过 | ① 调整直接回写原结算单(费用、明细、合计、结算金额全部更新);② 原单追加变更记录;③ 调整单 → 审批通过;④ 事务提交后**自动触发金蝶推送**(走正式结算单既有的推送链路:生成财务应付/应收单 + 单据落锁 + 附件上传) | +| 4 | 系统 | — | 推送成功:调整单回填"已同步 + 金蝶单据号";推送失败:调整单置"生成失败"+ 原因,**审批结果不受影响**,转入场景 D 处理 | + +结束后:原结算单即调整后的金额,金蝶里是一张含调整金额的应付/应收单。 + +> 注意:审批后自动推送受系统开关控制。若环境未开启自动同步,审批仍成功,但需人工在列表点"推送金蝶"完成推送。 + +### 场景 B:原结算单已推送金蝶(需财务在金蝶冲销后重推) + +适用:正式结算单已在金蝶生成应付/应收单。核心约束:**原单一经推送金蝶即冻结,本地数据一律不动**。 + +| 步骤 | 操作人 | 操作 | 系统动作 | +|---|---|---|---| +| 1 | 业务 | 新增调整单(选单时预检会提示"旧单未冲销"或"已冲销"),提交 | 同场景 A 步骤 1-2 | +| 2 | 审批人 | 审批通过 | ① 原结算单业务数据**零改动**,只追加 1 条变更记录("调整单XX审批通过,调整金额XX,待重推金蝶");② 调整单 → 审批通过,金蝶状态保持"已同步"快照("重新推送"按钮因此亮起);③ 前端提示:**"原结算单已推送金蝶,请财务人员在金蝶手工完成旧应付/应收单冲销处理"** | +| 3 | 财务 | **在金蝶系统内手工冲销**旧的应付/应收单 | TMS 不参与,这是金蝶侧的人工操作 | +| 4 | 业务 | 回到 TMS,点"重新推送(高危)"并二次确认 | 系统依次:① 硬闸门——按原结算单号去金蝶查旧单,**必须已冲销**(部分冲销也算已冲销),未冲销直接拒绝;② **克隆一张新的正式结算单**(全新 FJS/SJS 单号),把调整应用上去,直接置为审批通过(新单不再走审批流);③ 用新单号推送金蝶,生成**全新**的财务应付/应收单 + 落锁 + 附件;④ 调整单改挂到新单,回填"已同步 + 金蝶单据号";⑤ 原单标记"已调整",原单在金蝶的旧锁解锁 | +| 5 | 系统 | — | 完成。此时列表里**新旧两张正式结算单并存**,带标识区分(见第六节) | + +失败处理:第 4 步若推送失败,已克隆的新单不回滚,新单置"生成失败";再点"重新推送"会**复用已克隆的新单**从推送步骤继续,不会重复建单(幂等)。调整单已改挂新单后再点重推,会被冲销闸门拦截,无副作用。 + +> 为什么第 2 步不自动推:金蝶侧已有一张旧单,直接再推会重复生成应付/应收单;必须先冲销旧单,且冲销只能由财务在金蝶完成,TMS 无法代办。 + +### 场景 C:审批驳回 → 修改后重新提交 + +1. 审批人在"审批中"单据上点"驳回",填写驳回原因。 +2. 单据回到"已驳回",提交人可编辑(改费用、改金额),重新提交。 +3. 提交后回到"审批中",等同重新走审批。 +4. 若已驳回单不想调了:留置即可(无作废功能),或改对后再次提交。 + +> 已审批通过的单**无法驳回、无法作废、无法撤回**,录入时请谨慎;金额确认错的分析原因后新建调整单二次调整。 + +### 场景 D:金蝶推送失败 + +| 触发 | 现象 | 处理 | +|---|---|---| +| 场景 A 审批后自动推送失败 | 调整单状态"生成失败",审批接口直接返回失败原因,原结算单也有失败标记 | ① 等定时重推任务自动扫描重试;② 或人工在调整单列表点"推送金蝶"立即重试 | +| 场景 B 重推新单失败 | 新正式结算单"生成失败",调整单显示失败状态 | 再点"重新推送",系统复用已克隆的新单从推送步骤续推,不会重复建单 | + +审批结果与推送结果相互独立:推送失败不影响"审批通过",只影响金蝶侧是否生成单据。 + +### 场景 E:边界情况速查 + +| 情况 | 系统行为 | +|---|---| +| 未审批就点重推 | 拒绝,要求先审批通过 | +| 金蝶旧单未冲销就点重推 | 硬拦截,提示先冲销 | +| 金蝶旧单被删除(非冲销)| 查不到旧单 → 同样拦截 | +| 部分冲销 | 视同已冲销,放行重推 | +| 审批时原单刚好已被推送到金蝶 | 按**当下**状态走场景 B,选单时的预检结论不作数 | +| 选单时金蝶超时/不可用 | 预检降级"未校验",不阻断建单 | +| 重推成功前原单旧锁残留 | 重推成功时统一解锁 | +| 应收结算单 | 与应付完全同一套流程,仅接口不同(应收 A302 系 / 应付 A102 系) | + +--- + +## 五、单据标识与字段说明(列表里怎么认单) + +| 单据/字段 | 含义 | +|---|---| +| 正式结算单标"**已调整**" | 该单已被调整单重推过,金额已作废(数据保留),不要再用它做下游业务 | +| 正式结算单标"**调整后单**"并显示原单号 | 这是重推克隆出的新单,金额 = 原单 + 调整 | +| 调整单"金蝶单据号" | 该调整最终落到金蝶哪张应付/应收单上 | +| 调整单"金蝶同步状态" | 见 2.3 | +| 调整金额 / 原结算金额 / 调整后金额 | 调整后金额 = 原结算金额 + 调整金额 | + +--- + +## 六、重要业务口径(须知) + +1. **原单冻结原则**:原结算单一经推送金蝶,TMS 本地对其零改动;调整金额只体现在重推克隆的新单上。 +2. **新单是全新独立单**:原单的下游关联(开票申请、收款认领、对账)**不迁移**,留在原单;新单发票状态、收付款状态均从零开始(未收票、未付款)。应收场景下新单会显示"未开票/未收款",属正常现象。 +3. **新单不走审批流**:克隆的新正式结算单直接是审批通过状态,无需再审批。 +4. **冲销是财务的人工操作**:TMS 不自动冲销金蝶单据,也不会因为调整单驳回/删除而自动恢复冲销——所以建单阶段只做软提示,把硬拦截留在重推。