/** * Helpers de saisie des montants des formulaires Client / Fournisseur (commercial). * Purs / testables. Pendant FRONT de la contrainte back `LessThanOrEqual` posee sur * `revenueAmount` (Client/Supplier) — retour metier ERP-193 : le chiffre d'affaires * est plafonne a 999 999 999 999,99. */ /** Plafond metier du chiffre d'affaires (CA) : 999 999 999 999,99. */ export const REVENUE_AMOUNT_MAX = 999_999_999_999.99 /** Valeur « modele » (decimale a point, sans separateur) renvoyee quand on plafonne. */ const REVENUE_AMOUNT_MAX_MODEL = '999999999999.99' /** * Plafonne le CA au maximum metier. Recoit le modele emis par `MalioInputAmount` * (chaine propre a decimale `.`, sans espaces) ; tolere malgre tout une virgule / * des espaces par securite. Renvoie la valeur telle quelle si elle est vide, non * numerique ou sous le plafond ; sinon la valeur plafonnee. */ export function clampRevenueAmount(value: string | null | undefined): string | null | undefined { if (value === null || value === undefined || value === '') { return value } const n = Number(String(value).replace(/\s/g, '').replace(',', '.')) if (Number.isNaN(n)) { return value } return n > REVENUE_AMOUNT_MAX ? REVENUE_AMOUNT_MAX_MODEL : value }