shoc-frontend-new/src/domain/vendor-portal/lib/uplift-validation.ts
2026-08-11 08:57:38 -03:00

35 lines
1,011 B
TypeScript

export type UpliftFormValues = {
amount: number;
reason: string;
evidenceFile?: File;
};
export function isApprovalRequired(requested: string, currentNte: number | undefined): boolean {
const amount = Number.parseFloat(requested);
if (!Number.isFinite(amount)) {
return currentNte == null;
}
return currentNte == null || amount > currentNte;
}
export function validateUpliftAmount(
requested: string,
currentNte: number | undefined,
reason: string,
evidence: { file?: File; hasExisting?: boolean },
): string {
const amount = Number.parseFloat(requested);
if (!Number.isFinite(amount) || amount <= 0) {
return "Enter a valid requested NTE amount.";
}
if (!isApprovalRequired(requested, currentNte)) {
return "";
}
if (!reason.trim()) {
return "Please include a reason for the uplift request.";
}
if (!evidence.file && !evidence.hasExisting) {
return "Attach PDF, JPG, or PNG evidence — approval-required requests need evidence.";
}
return "";
}