forked from Yara724/api
badane update is implemented now
This commit is contained in:
124
src/claim-request-management/fanavaran-hull-expertise.ts
Normal file
124
src/claim-request-management/fanavaran-hull-expertise.ts
Normal file
@@ -0,0 +1,124 @@
|
||||
import { parseFanavaranId } from "src/lookups/fanavaran-last-car-policy";
|
||||
import {
|
||||
fanavaranPartyInquirySources,
|
||||
type FanavaranClaimProduct,
|
||||
} from "./fanavaran-claim-product";
|
||||
|
||||
export type FanavaranHullVehicleIdentity = {
|
||||
motorNo: string | null;
|
||||
chassisNo: string | null;
|
||||
vin: string | null;
|
||||
plaqueNo: string | null;
|
||||
plaqueSerial: string | null;
|
||||
builtYear: number | null;
|
||||
};
|
||||
|
||||
export function pickHullVehicleIdentity(
|
||||
blame?: { parties?: unknown[] } | null,
|
||||
): FanavaranHullVehicleIdentity {
|
||||
const party = (blame?.parties ?? [])[0] as
|
||||
| Parameters<typeof fanavaranPartyInquirySources>[1]
|
||||
| undefined;
|
||||
const first =
|
||||
(blame?.parties ?? []).find(
|
||||
(row) => (row as { role?: string })?.role === "FIRST",
|
||||
) ?? party;
|
||||
const { mapped } = fanavaranPartyInquirySources(
|
||||
"car-body",
|
||||
first as Parameters<typeof fanavaranPartyInquirySources>[1],
|
||||
);
|
||||
const left = text(mapped.plk1 ?? mapped.Plk1);
|
||||
const letter = text(mapped.plk2 ?? mapped.Plk2);
|
||||
const right = text(mapped.plk3 ?? mapped.Plk3);
|
||||
const serial = text(mapped.plksrl ?? mapped.PlkSrl);
|
||||
const plaqueNo = [left, letter, right].filter(Boolean).join("") || null;
|
||||
return {
|
||||
motorNo: text(mapped.MtrNum),
|
||||
chassisNo: text(mapped.ShsNum),
|
||||
vin: text(mapped.VIN),
|
||||
plaqueNo,
|
||||
plaqueSerial: serial,
|
||||
builtYear: parseFanavaranId(mapped.PrdDte),
|
||||
};
|
||||
}
|
||||
|
||||
function text(value: unknown): string | null {
|
||||
if (value == null) return null;
|
||||
const next = String(value).trim();
|
||||
return next ? next : null;
|
||||
}
|
||||
|
||||
export function toFanavaranHullExpertisePayload(input: {
|
||||
claimExpertId: number;
|
||||
dmgAssessmentDate: string;
|
||||
inspectionTime: string;
|
||||
wage: number;
|
||||
componentReplacementCost: number;
|
||||
wasteValue: number;
|
||||
dropAmount: number;
|
||||
vehicleCurrentValue: number | null;
|
||||
vehicle: FanavaranHullVehicleIdentity;
|
||||
dmgSections: Record<string, unknown>[];
|
||||
}): Record<string, unknown> {
|
||||
return {
|
||||
ClaimExpertId: input.claimExpertId,
|
||||
DmgAssessmentDate: input.dmgAssessmentDate,
|
||||
InspectionTime: input.inspectionTime,
|
||||
MotorNo: input.vehicle.motorNo,
|
||||
ChassisNo: input.vehicle.chassisNo,
|
||||
BuiltYear: input.vehicle.builtYear,
|
||||
VIN: input.vehicle.vin,
|
||||
PlaqueNo: input.vehicle.plaqueNo,
|
||||
PlaqueSerial: input.vehicle.plaqueSerial,
|
||||
Wage: input.wage,
|
||||
ComponentReplacementCost: input.componentReplacementCost,
|
||||
WasteValue: input.wasteValue,
|
||||
CarryAndRescueCost: null,
|
||||
RepairDuration: null,
|
||||
VehicleCurrentValue: input.vehicleCurrentValue,
|
||||
WreckHighestValue: null,
|
||||
InspectionDeduction: null,
|
||||
DmgAndWasteDesc: null,
|
||||
WentDistanceByExpert: null,
|
||||
IsDestruction: null,
|
||||
DropAmount: input.dropAmount,
|
||||
ColorId: null,
|
||||
PlaqueDesignId: null,
|
||||
PlaqueCityId: null,
|
||||
AccidentPercent: null,
|
||||
TheftCases: [],
|
||||
DmgSections: input.dmgSections,
|
||||
};
|
||||
}
|
||||
|
||||
export function toFanavaranHullExpertiseDmgSection(input: {
|
||||
partId?: unknown;
|
||||
desc: string;
|
||||
wasteValue: number;
|
||||
amount: number;
|
||||
}): Record<string, unknown> {
|
||||
return {
|
||||
Count: 1,
|
||||
Desc: input.desc,
|
||||
WasteValue: input.wasteValue,
|
||||
AccessoryKindId: parseFanavaranId(input.partId),
|
||||
DmgKindId: null,
|
||||
VehicleHullAccessoryId: null,
|
||||
DmgSectionCosts: [
|
||||
{
|
||||
Caption: input.desc,
|
||||
Amount: input.amount,
|
||||
DmgCostKindId: null,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
export function hullExpertiseAssertFields(
|
||||
product: FanavaranClaimProduct,
|
||||
): { requireDmgCaseId: boolean; requireThirdPartyLookups: boolean } {
|
||||
if (product === "car-body") {
|
||||
return { requireDmgCaseId: false, requireThirdPartyLookups: false };
|
||||
}
|
||||
return { requireDmgCaseId: true, requireThirdPartyLookups: true };
|
||||
}
|
||||
Reference in New Issue
Block a user