diff --git a/src/claim-request-management/claim-request-management.service.ts b/src/claim-request-management/claim-request-management.service.ts index 2b9c16d..5ad5fba 100644 --- a/src/claim-request-management/claim-request-management.service.ts +++ b/src/claim-request-management/claim-request-management.service.ts @@ -207,6 +207,7 @@ import { import { asObjectRecord, collectPartyVinCandidates, + fanavaranIdOrConfigDefault, normalizeVin, parseFanavaranId, pickFanavaranPlaqueLookupFields, @@ -4254,26 +4255,34 @@ export class ClaimRequestManagementService { const inquiryPlaque = pickFanavaranPlaqueLookupFields( asObjectRecord(inquiryMapped) ?? asObjectRecord(inquiryRaw), ); - const plaqueKindId = this.firstPositiveFanavaranId( + const plaqueKindFromApi = this.firstPositiveFanavaranId( apiPlaque.kindId, inquiryPlaque.kindId, cachedDamage.plaqueKindId, lastDamagePayload?.PlaqueKindId, ); - const plaqueSampleId = this.firstPositiveFanavaranId( + const plaqueSampleFromApi = this.firstPositiveFanavaranId( apiPlaque.sampleId, inquiryPlaque.sampleId, cachedDamage.plaqueSampleId, lastDamagePayload?.PlaqueSampleId, ); - if (apiPlaque.kindId == null && plaqueKindId != null) { + const plaqueKindId = fanavaranIdOrConfigDefault( + plaqueKindFromApi, + input.defaults.PlaqueKindId, + ); + const plaqueSampleId = fanavaranIdOrConfigDefault( + plaqueSampleFromApi, + input.defaults.PlaqueSampleId, + ); + if (plaqueKindFromApi == null) { this.logger.log( - `[buildFanavaranDamageCasePayload] PlaqueKindId API miss; using DB value ${plaqueKindId}`, + `[buildFanavaranDamageCasePayload] PlaqueKindId API miss; using config default ${plaqueKindId}`, ); } - if (apiPlaque.sampleId == null && plaqueSampleId != null) { + if (plaqueSampleFromApi == null) { this.logger.log( - `[buildFanavaranDamageCasePayload] PlaqueSampleId API miss; using DB value ${plaqueSampleId}`, + `[buildFanavaranDamageCasePayload] PlaqueSampleId API miss; using config default ${plaqueSampleId}`, ); } const builtYear = @@ -4385,6 +4394,12 @@ export class ClaimRequestManagementService { null, ); } + if (accidentVehicleUsedId == null) { + accidentVehicleUsedId = input.defaults.AccidentVehicleUsedId; + this.logger.log( + `[buildFanavaranDamageCasePayload] AccidentVehicleUsedId API miss; using config default ${accidentVehicleUsedId}`, + ); + } this.logger.log( `[buildFanavaranDamageCasePayload] Final DriverId=${driverFanavaranId ?? "NULL"} for nationalCode=${pickPersonNationalCode(person) ?? "MISSING"}, ` + @@ -5187,7 +5202,8 @@ export class ClaimRequestManagementService { persistPayload?: boolean; /** * Re-run VIN inquiry / vehicle GET for AccidentVehicleUsedId. - * Submit always sets this so Mongo tenant default 1 cannot be reused. + * Submit always re-inquires. If the API still returns nothing, the + * tenant config default is used. */ forceRefreshUsedId?: boolean; }, @@ -5402,6 +5418,14 @@ export class ClaimRequestManagementService { } } + if (parseFanavaranId(payload.AccidentVehicleUsedId) == null) { + payload.AccidentVehicleUsedId = + profile.defaults.AccidentVehicleUsedId; + this.logger.log( + `${logPrefix} AccidentVehicleUsedId API miss; using config default ${payload.AccidentVehicleUsedId}`, + ); + } + if (persistPayload) { await this.claimCaseDbService.findByIdAndUpdate(claimCaseId, { $set: { diff --git a/src/lookups/fanavaran-last-car-policy.spec.ts b/src/lookups/fanavaran-last-car-policy.spec.ts index 67d1239..d191623 100644 --- a/src/lookups/fanavaran-last-car-policy.spec.ts +++ b/src/lookups/fanavaran-last-car-policy.spec.ts @@ -1,5 +1,6 @@ import { collectPartyVinCandidates, + fanavaranIdOrConfigDefault, filterPoliciesByLine, insuranceLineLabel, parseLastCarPolicyInput, @@ -172,6 +173,12 @@ describe("fanavaran last car policy", () => { }); }); + it("uses tenant config default when the API id is missing", () => { + expect(fanavaranIdOrConfigDefault(15, 8)).toBe(15); + expect(fanavaranIdOrConfigDefault(null, 8)).toBe(8); + expect(fanavaranIdOrConfigDefault(0, 10)).toBe(10); + }); + it("matches VIN against ChassisNo when VIN is empty", () => { expect( vehicleMatchesCar( diff --git a/src/lookups/fanavaran-last-car-policy.ts b/src/lookups/fanavaran-last-car-policy.ts index c2ffe26..1459652 100644 --- a/src/lookups/fanavaran-last-car-policy.ts +++ b/src/lookups/fanavaran-last-car-policy.ts @@ -162,6 +162,14 @@ export function parseFanavaranId(value: unknown): number | null { return Number.isFinite(id) && id > 0 ? id : null; } +/** Live Fanavaran / cache id wins; tenant `fanavaranClientConfigs.defaults` if the API returned nothing. */ +export function fanavaranIdOrConfigDefault( + resolved: unknown, + configDefault: number, +): number { + return parseFanavaranId(resolved) ?? configDefault; +} + export function asObjectRecord(value: unknown): Record | null { if (!value || typeof value !== "object") { return null;