diff --git a/src/claim-request-management/claim-request-management.service.ts b/src/claim-request-management/claim-request-management.service.ts index 2b2aad8..601aee7 100644 --- a/src/claim-request-management/claim-request-management.service.ts +++ b/src/claim-request-management/claim-request-management.service.ts @@ -6331,27 +6331,41 @@ export class ClaimRequestManagementService { } // V5 flow: FileMaker approval required before fanavaran. - // Instead of submitting, hold the claim at WAITING_FOR_FILE_MAKER_APPROVAL. + // Cross-check the blame record — only V5 blame files carry requiresFileMakerApproval. + // V4 claims may have the flag set from an old bug; we ignore it if the blame + // itself does not carry the flag. if ((claimCase as any).requiresFileMakerApproval) { - await this.claimCaseDbService.findByIdAndUpdate(claimCaseId, { - $set: { status: ClaimCaseStatus.WAITING_FOR_FILE_MAKER_APPROVAL }, - $push: { - history: { - type: "V5_HELD_FOR_FILE_MAKER_APPROVAL", - actor: { actorType: "system" }, - timestamp: new Date(), - metadata: { claimCaseId }, + const blameId = (claimCase as any).blameRequestId; + const blame = blameId + ? await this.blameRequestDbService.findById(String(blameId)) + : null; + const isV5 = !!(blame as any)?.requiresFileMakerApproval; + + if (isV5) { + await this.claimCaseDbService.findByIdAndUpdate(claimCaseId, { + $set: { status: ClaimCaseStatus.WAITING_FOR_FILE_MAKER_APPROVAL }, + $push: { + history: { + type: "V5_HELD_FOR_FILE_MAKER_APPROVAL", + actor: { actorType: "system" }, + timestamp: new Date(), + metadata: { claimCaseId }, + }, }, - }, + }); + return { + attempted: false, + submitted: false, + skipped: true, + skipReason: + "V5 flow: FileMaker approval required before Fanavaran submission. " + + "Claim is now in WAITING_FOR_FILE_MAKER_APPROVAL.", + }; + } + // V4 claim with stale flag — clear it so this path is not hit again. + await this.claimCaseDbService.findByIdAndUpdate(claimCaseId, { + $unset: { requiresFileMakerApproval: "" }, }); - return { - attempted: false, - submitted: false, - skipped: true, - skipReason: - "V5 flow: FileMaker approval required before Fanavaran submission. " + - "Claim is now in WAITING_FOR_FILE_MAKER_APPROVAL.", - }; } const skipReason = await this.getFanavaranAutoSubmitSkipReason(claimCase);