feat: 已推送金蝶的认领不允许作废——后端硬校验拦截,列表带出流水推送状态
This commit is contained in:
+1
@@ -36,6 +36,7 @@
|
||||
f.summary,
|
||||
f.transaction_time,
|
||||
f.detail_serial_no,
|
||||
f.push_status,
|
||||
(SELECT GROUP_CONCAT(rcs.formal_settlement_no ORDER BY rcs.id SEPARATOR ',')
|
||||
FROM blade_receipt_claim_settlement rcs
|
||||
WHERE rcs.receipt_claim_id = c.id AND rcs.is_deleted = 0) AS associated_settlement_nos
|
||||
|
||||
+4
@@ -203,6 +203,10 @@ public class ReceiptClaimRecordServiceImpl extends BaseServiceImpl<ReceiptClaimM
|
||||
if (flow == null || Objects.equals(flow.getIsDeleted(), 1)) {
|
||||
throw new ServiceException("关联收款流水不存在");
|
||||
}
|
||||
// 已推送金蝶的认领不允许作废:金蝶收款单已生成,冲销/调整由人工在金蝶处置
|
||||
if (KingdeeBfiConstant.RECEIPT_CLAIM_PUSH_PUSHED.equals(flow.getPushStatus())) {
|
||||
throw new ServiceException("该认领已推送金蝶,不允许作废,请在金蝶侧人工处置");
|
||||
}
|
||||
|
||||
List<ReceiptClaimSettlement> relations = claimSettlementMapper.selectList(
|
||||
Wrappers.<ReceiptClaimSettlement>lambdaQuery()
|
||||
|
||||
@@ -173,7 +173,7 @@ claimed 累计有效认领 == unclaimed_amount(且 > 0) ← 「认领
|
||||
`voidClaim()` 现有逻辑保留:
|
||||
|
||||
1. **累计认领不考虑作废**:作废行 `status=0`,分摊聚合天然排除——与「累计认领不考虑作废的」要求一致,无需改代码;作废后重算流水 `claimed_amount/claim_status`(口径按 §3.2)。
|
||||
2. **作废永不触发推送、不生成冲单**:未推送的认领作废 → 纯本地;已推送流水的认领作废 → 不生成本地冲单号,认领记录金蝶信息保留原值,金蝶侧冲销/红冲由人工处置(沿用旧文档原则 5)。作废后即使重认领使等式再次满足,`push_status=pushed` 的终态闸门也阻止二次推送。
|
||||
2. **已推送的认领不允许作废**:流水 `push_status=pushed` 时作废直接拦截(后端硬校验 + 前端按钮隐藏),金蝶侧冲销/调整由人工处置;作废仅对未推送流水生效,永不触发推送、不生成冲单(金蝶单号/状态保留原值)。终态闸门继续兜底:即使数据漂移使等式再次满足,`push_status=pushed` 也阻止二次推送。
|
||||
|
||||
### 4.7 重新同步(A301-2 sync 补一处)
|
||||
|
||||
@@ -248,7 +248,7 @@ claimed 累计有效认领 == unclaimed_amount(且 > 0) ← 「认领
|
||||
| 推送报文 | `buildClaimPushDTO` | billid=流水.bill_id;**单条分录**:e_receivableamt=全部未推送金额(累计有效认领),seq/e_corebillno=第一张结算单id;awrp_src_code=分摊结算单号下划线拼接 |
|
||||
| 手动接口 | `ReceiptFlowController.pushKingdee`(`POST /receipt-flow/push-kingdee`) | 成功返回金蝶收款单号,失败 R.fail(原因);按钮权限 `receipt_flow_push` |
|
||||
| 回写 | `ReceiptClaimRecordServiceImpl.refreshKingdeeResult()` | 轮询对象改流水(push_status=pushed 且回写状态 pushed/approved),按流水 awrp_src_code 匹配,级联刷新认领主单冗余字段 |
|
||||
| 作废 | `ReceiptClaimRecordServiceImpl.voidClaim()` | claim_status 重算口径改对照公告未认领金额;**不再生成本地 KDCX 冲单号**(金蝶单号/状态保留原值),作废不触发推送 |
|
||||
| 作废 | `ReceiptClaimRecordServiceImpl.voidClaim()` | claim_status 重算口径改对照公告未认领金额;**不再生成本地 KDCX 冲单号**(金蝶单号/状态保留原值);**已推送流水(push_status=pushed)作废拦截** |
|
||||
| 同步 | `ReceiptFlowServiceImpl.sync()` + 共享 `queryClaimAnnounces` | unclaimed_amount 刷新后按新口径重算 claim_status;公告查询方法供 sync/手动推送/定时任务共用 |
|
||||
| 常量 | `KingdeeBfiConstant` | 新增 RECEIPT_CLAIM_PUSH_NONE/PUSHED/FAILED、RECEIPT_CLAIM_BILL_NONE |
|
||||
| 实体/VO | `KingdeeReceiptFlow`(推送域6字段)、`ReceiptClaim`(删 awrpSrcCode)、`ReceiptClaimMapper.xml`(删列)、`ReceiptFlowVO/Wrapper`(pushStatusName/kingdeeBillStatusName、剩余可认领改公告口径)、`ReceiptClaimPushResult`(新增 DTO) | — |
|
||||
|
||||
@@ -89,10 +89,8 @@
|
||||
## 五、作废认领
|
||||
|
||||
1. 仅认领人本人可作废自己的认领记录;作废后该笔分摊不再计入累计,流水认领状态相应回退(认领完成 → 部分认领/未认领)。
|
||||
2. **作废永远不会触发推送**。
|
||||
3. 按流水是否已推送区分:
|
||||
- **未推送**:纯本地生效,无金蝶影响;补认领到认领完成后仍可正常推送;
|
||||
- **已推送**:不生成本地冲单,金蝶侧的冲销/红冲由人工在金蝶处置,该流水不会被再次自动推送。
|
||||
2. **已推送金蝶的认领不允许作废**(按钮不显示,后端拦截)——金蝶侧收款单已生成,冲销/调整由人工在金蝶处置。
|
||||
3. **作废永远不会触发推送**:作废仅对未推送流水生效,纯本地生效,无金蝶影响;补认领到认领完成后仍可正常推送。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user