YARA-1202 FIX removed all damaged parts

This commit is contained in:
SepehrYahyaee
2026-08-03 14:29:13 +03:30
parent 70d05a7624
commit 65870c8d66
2 changed files with 31 additions and 23 deletions

View File

@@ -8198,8 +8198,12 @@ export class ClaimRequestManagementService {
); );
} }
// 4. Validate outer parts haven't been selected yet // 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;
if ( if (
!isFileMakerRejectedRerun &&
claimCase.damage?.selectedParts && claimCase.damage?.selectedParts &&
claimCase.damage.selectedParts.length > 0 claimCase.damage.selectedParts.length > 0
) { ) {
@@ -8266,7 +8270,9 @@ export class ClaimRequestManagementService {
})); }));
const selectedPartIds = selectedItems.map((p) => p.id); const selectedPartIds = selectedItems.map((p) => p.id);
// 6. Update claim case with selected parts and move to next step // 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.
const updatedClaim = await this.claimCaseDbService.findByIdAndUpdate( const updatedClaim = await this.claimCaseDbService.findByIdAndUpdate(
claimRequestId, claimRequestId,
{ {
@@ -8276,7 +8282,10 @@ export class ClaimRequestManagementService {
status: ClaimCaseStatus.SELECTING_OTHER_PARTS, status: ClaimCaseStatus.SELECTING_OTHER_PARTS,
"workflow.currentStep": ClaimWorkflowStep.SELECT_OTHER_PARTS, "workflow.currentStep": ClaimWorkflowStep.SELECT_OTHER_PARTS,
"workflow.nextStep": ClaimWorkflowStep.CAPTURE_PART_DAMAGES, "workflow.nextStep": ClaimWorkflowStep.CAPTURE_PART_DAMAGES,
$unset: { "damage.selectedOuterParts": "" }, $unset: {
"damage.selectedOuterParts": "",
"fileMakerRejectedPendingReview": "",
},
$push: { $push: {
"workflow.completedSteps": ClaimWorkflowStep.SELECT_OUTER_PARTS, "workflow.completedSteps": ClaimWorkflowStep.SELECT_OUTER_PARTS,
history: { history: {
@@ -8401,8 +8410,11 @@ export class ClaimRequestManagementService {
); );
} }
// 4. Validate other parts and bank info haven't been submitted yet // 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;
if ( if (
!isFileMakerRejectedRerun &&
claimCase.money?.sheba && claimCase.money?.sheba &&
claimCase.money?.nationalCodeOfInsurer && claimCase.money?.nationalCodeOfInsurer &&
claimCase.workflow?.currentStep !== ClaimWorkflowStep.USER_EXPERT_RESEND claimCase.workflow?.currentStep !== ClaimWorkflowStep.USER_EXPERT_RESEND

View File

@@ -10615,8 +10615,8 @@ export class RequestManagementService {
const newRejectionCount = currentRejections + 1; const newRejectionCount = currentRejections + 1;
const actorName = `${fileMaker.firstName || ""} ${fileMaker.lastName || ""}`.trim(); const actorName = `${fileMaker.firstName || ""} ${fileMaker.lastName || ""}`.trim();
// Steps that belong to the damage-assessment cycle being discarded. // Steps that belong to the re-run assessment cycle.
// They are pulled from completedSteps so the FileReviewer can re-run them. // Pulled from completedSteps so workflow ordering guards pass on re-run.
const assessmentSteps = [ const assessmentSteps = [
ClaimWorkflowStep.SELECT_OUTER_PARTS, ClaimWorkflowStep.SELECT_OUTER_PARTS,
ClaimWorkflowStep.SELECT_OTHER_PARTS, ClaimWorkflowStep.SELECT_OTHER_PARTS,
@@ -10630,21 +10630,18 @@ export class RequestManagementService {
claimStatus: ClaimStatus.NEEDS_REVISION, claimStatus: ClaimStatus.NEEDS_REVISION,
fileMakerRejectionCount: newRejectionCount, fileMakerRejectionCount: newRejectionCount,
fileMakerRejectionReason: reason ?? null, fileMakerRejectionReason: reason ?? null,
// Reset to UPLOAD_REQUIRED_DOCUMENTS so advanceV3ClaimToOuterPartsIfReady // Land directly at SELECT_OUTER_PARTS: the FileReviewer sees the
// can advance the claim to SELECT_OUTER_PARTS when the FileReviewer calls // existing parts pre-populated and can adjust or confirm them.
// select-outer-parts again. "workflow.currentStep": ClaimWorkflowStep.SELECT_OUTER_PARTS,
"workflow.currentStep": ClaimWorkflowStep.UPLOAD_REQUIRED_DOCUMENTS, "workflow.nextStep": ClaimWorkflowStep.SELECT_OTHER_PARTS,
"workflow.nextStep": ClaimWorkflowStep.SELECT_OUTER_PARTS,
"workflow.locked": false, "workflow.locked": false,
// Flag consumed by selectOuterPartsV2 / selectOtherPartsV2 to allow
// overwriting previously submitted data instead of throwing ConflictException.
"fileMakerRejectedPendingReview": true,
}, },
// Clear all stale data from the rejected assessment cycle: // Clear stale lock/evaluation fields and media that must be re-captured.
// - workflow lock fields left over from the completed review cycle // Part selections (damage.selectedParts, damage.otherParts) are intentionally
// - evaluation sub-documents (reply, resend, approvals) // preserved as a pre-populated starting point for the FileReviewer to adjust.
// - damage selections: selectedParts, otherParts
// - media captures: damagedPart photos, walk-around video
// (the FileReviewer must re-select parts and re-photograph everything)
// - assignedForReviewBy intentionally kept so the same reviewer
// is still scoped to this file on re-lock
$unset: { $unset: {
"workflow.lockedAt": "", "workflow.lockedAt": "",
"workflow.expiredAt": "", "workflow.expiredAt": "",
@@ -10654,14 +10651,13 @@ export class RequestManagementService {
"evaluation.damageExpertResend": "", "evaluation.damageExpertResend": "",
"evaluation.ownerInsurerApproval": "", "evaluation.ownerInsurerApproval": "",
"evaluation.ownerPricedPartsApproval": "", "evaluation.ownerPricedPartsApproval": "",
"damage.selectedParts": "", // Photos and walk-around video must be re-taken for the new part set.
"damage.otherParts": "",
"media.damagedParts": "", "media.damagedParts": "",
"media.captures": "", "media.captures": "",
"media.videoCaptureId": "", "media.videoCaptureId": "",
}, },
// Remove assessment-cycle steps from completedSteps so none of the // Remove assessment-cycle steps from completedSteps so workflow ordering
// "already completed" guards fire when the FileReviewer re-runs them. // guards pass when the FileReviewer re-runs each step.
$pull: { $pull: {
"workflow.completedSteps": { $in: assessmentSteps }, "workflow.completedSteps": { $in: assessmentSteps },
}, },