diff --git a/src/claim-request-management/claim-request-management.service.ts b/src/claim-request-management/claim-request-management.service.ts index baf443e..b79edd0 100644 --- a/src/claim-request-management/claim-request-management.service.ts +++ b/src/claim-request-management/claim-request-management.service.ts @@ -8198,12 +8198,8 @@ export class ClaimRequestManagementService { ); } - // 4. Validate outer parts haven't been selected yet. - // Skip this guard when FileMaker rejected the claim and the FileReviewer - // is updating (overwriting) the previous selection. - const isFileMakerRejectedRerun = !!(claimCase as any).fileMakerRejectedPendingReview; + // 4. Validate outer parts haven't been selected yet if ( - !isFileMakerRejectedRerun && claimCase.damage?.selectedParts && claimCase.damage.selectedParts.length > 0 ) { @@ -8270,9 +8266,7 @@ export class ClaimRequestManagementService { })); const selectedPartIds = selectedItems.map((p) => p.id); - // 6. Update claim case with selected parts and move to next step. - // Also clear fileMakerRejectedPendingReview now that the reviewer has - // actively re-submitted outer parts. + // 6. Update claim case with selected parts and move to next step const updatedClaim = await this.claimCaseDbService.findByIdAndUpdate( claimRequestId, { @@ -8282,10 +8276,7 @@ export class ClaimRequestManagementService { status: ClaimCaseStatus.SELECTING_OTHER_PARTS, "workflow.currentStep": ClaimWorkflowStep.SELECT_OTHER_PARTS, "workflow.nextStep": ClaimWorkflowStep.CAPTURE_PART_DAMAGES, - $unset: { - "damage.selectedOuterParts": "", - "fileMakerRejectedPendingReview": "", - }, + $unset: { "damage.selectedOuterParts": "" }, $push: { "workflow.completedSteps": ClaimWorkflowStep.SELECT_OUTER_PARTS, history: { @@ -8410,11 +8401,8 @@ export class ClaimRequestManagementService { ); } - // 4. Validate other parts and bank info haven't been submitted yet. - // Skip when FileMaker rejected the claim — the FileReviewer can update bank info. - const isFileMakerRejectedRerun = !!(claimCase as any).fileMakerRejectedPendingReview; + // 4. Validate other parts and bank info haven't been submitted yet if ( - !isFileMakerRejectedRerun && claimCase.money?.sheba && claimCase.money?.nationalCodeOfInsurer && claimCase.workflow?.currentStep !== ClaimWorkflowStep.USER_EXPERT_RESEND diff --git a/src/request-management/request-management.service.ts b/src/request-management/request-management.service.ts index d3b7092..a3dec4d 100644 --- a/src/request-management/request-management.service.ts +++ b/src/request-management/request-management.service.ts @@ -10615,51 +10615,30 @@ export class RequestManagementService { const newRejectionCount = currentRejections + 1; const actorName = `${fileMaker.firstName || ""} ${fileMaker.lastName || ""}`.trim(); - // Steps that belong to the re-run assessment cycle. - // Pulled from completedSteps so workflow ordering guards pass on re-run. - const assessmentSteps = [ - ClaimWorkflowStep.SELECT_OUTER_PARTS, - ClaimWorkflowStep.SELECT_OTHER_PARTS, - ClaimWorkflowStep.CAPTURE_PART_DAMAGES, - ClaimWorkflowStep.USER_SUBMISSION_COMPLETE, - ]; - await this.claimCaseDbService.findByIdAndUpdate(claimRequestId, { $set: { status: ClaimCaseStatus.WAITING_FOR_DAMAGE_EXPERT, claimStatus: ClaimStatus.NEEDS_REVISION, fileMakerRejectionCount: newRejectionCount, fileMakerRejectionReason: reason ?? null, - // Land directly at SELECT_OUTER_PARTS: the FileReviewer sees the - // existing parts pre-populated and can adjust or confirm them. - "workflow.currentStep": ClaimWorkflowStep.SELECT_OUTER_PARTS, - "workflow.nextStep": ClaimWorkflowStep.SELECT_OTHER_PARTS, + "workflow.currentStep": ClaimWorkflowStep.EXPERT_DAMAGE_ASSESSMENT, + "workflow.nextStep": ClaimWorkflowStep.EXPERT_DAMAGE_ASSESSMENT, "workflow.locked": false, - // Flag consumed by selectOuterPartsV2 / selectOtherPartsV2 to allow - // overwriting previously submitted data instead of throwing ConflictException. - "fileMakerRejectedPendingReview": true, }, - // Clear stale lock/evaluation fields and media that must be re-captured. - // Part selections (damage.selectedParts, damage.otherParts) are intentionally - // preserved as a pre-populated starting point for the FileReviewer to adjust. + // Clear stale lock fields and the owner-cycle evaluation data. + // evaluation.damageExpertReply is intentionally preserved so the FileReviewer + // sees their previous prices / daghi / severity pre-populated in the claim + // detail and can adjust them. submitExpertReplyV2 overwrites it with $set. + // - assignedForReviewBy intentionally kept so the same reviewer + // is still scoped to this file on re-lock. $unset: { "workflow.lockedAt": "", "workflow.expiredAt": "", "workflow.lockedBy": "", "workflow.preLockQueueSnapshot": "", - "evaluation.damageExpertReply": "", "evaluation.damageExpertResend": "", "evaluation.ownerInsurerApproval": "", "evaluation.ownerPricedPartsApproval": "", - // Photos and walk-around video must be re-taken for the new part set. - "media.damagedParts": "", - "media.captures": "", - "media.videoCaptureId": "", - }, - // Remove assessment-cycle steps from completedSteps so workflow ordering - // guards pass when the FileReviewer re-runs each step. - $pull: { - "workflow.completedSteps": { $in: assessmentSteps }, }, $push: { history: {