forked from Yara724/api
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { CreationMethod } from "src/request-management/entities/schema/request-management.schema";
|
|
|
|
export type ClaimPriceCapBlameOrigin = {
|
|
creationMethod?: CreationMethod | string | null;
|
|
expertInitiated?: boolean | null;
|
|
registrarInitiated?: boolean | null;
|
|
callCenterInitiated?: boolean | null;
|
|
initiatedByFieldExpertId?: unknown;
|
|
initiatedByRegistrarId?: unknown;
|
|
initiatedByCallCenterId?: unknown;
|
|
};
|
|
|
|
/**
|
|
* The total-payment cap is a V1 business rule. V1 files are created directly
|
|
* by a user (`NORMAL`); expert/registrar LINK or IN_PERSON files and V6
|
|
* call-center files must not inherit it. Missing creationMethod is treated as
|
|
* NORMAL for older user-created records, while initiator markers take
|
|
* precedence so legacy non-V1 records cannot be misclassified.
|
|
*/
|
|
export function claimPriceCapAppliesToBlame(
|
|
blame?: ClaimPriceCapBlameOrigin | null,
|
|
): boolean {
|
|
if (!blame) return false;
|
|
|
|
const hasNonV1Initiator =
|
|
blame.expertInitiated === true ||
|
|
blame.registrarInitiated === true ||
|
|
blame.callCenterInitiated === true ||
|
|
blame.initiatedByFieldExpertId != null ||
|
|
blame.initiatedByRegistrarId != null ||
|
|
blame.initiatedByCallCenterId != null;
|
|
|
|
if (hasNonV1Initiator) return false;
|
|
|
|
return (
|
|
blame.creationMethod == null ||
|
|
blame.creationMethod === CreationMethod.NORMAL
|
|
);
|
|
}
|