fix: Corriger logique AEM status (éviter faux positif "À traiter" avec includes('traite'))

This commit is contained in:
odentas 2025-12-05 18:06:08 +01:00
parent e0f1b48453
commit 9a922ce77e
3 changed files with 19 additions and 4 deletions

View file

@ -1125,8 +1125,9 @@ export default function ContratMultiPage() {
const label = payLabel(p) || (p.ordre ? `Paie ${p.ordre}` : 'Paie');
// Normalize aem_statut for robust checks (API can return 'OK', 'ok', 'Traité', etc.)
const aemNorm = String((p as any).aem_statut || '').normalize('NFD').replace(/\p{Diacritic}/gu, '').trim().toLowerCase();
const aemOk = aemNorm === 'ok' || aemNorm === 'oui' || aemNorm.includes('ok') || aemNorm === 'traite' || aemNorm === 'traitee' || aemNorm.includes('traite');
const aemPending = aemNorm.includes('a_traiter') || aemNorm.includes('a traiter') || (aemNorm.includes('traiter') && !aemNorm.includes('traite'));
// Vérifier d'abord "À traiter" pour éviter les faux positifs
const aemPending = aemNorm.includes('a_traiter') || aemNorm.includes('a traiter');
const aemOk = !aemPending && (aemNorm === 'ok' || aemNorm === 'oui' || aemNorm.includes('ok') || aemNorm === 'valide');
const CardInner = (
<div className="h-full rounded-2xl border bg-white p-4 hover:shadow-md transition-shadow relative">

View file

@ -1560,7 +1560,12 @@ return (
<Field label="Coût total employeur" value={formatEUR(slip.employer_cost)} />
<Field label="AEM" value={(() => {
const aemNorm = String(slip.aem_status || '').normalize('NFD').replace(/\p{Diacritic}/gu, '').trim().toLowerCase();
const aemOk = aemNorm === 'ok' || aemNorm === 'oui' || aemNorm.includes('ok') || aemNorm === 'traite' || aemNorm === 'traitee' || aemNorm.includes('traite');
// Vérifier d'abord si c'est "À traiter" pour éviter les faux positifs
if (aemNorm.includes('a traiter') || aemNorm.includes('a_traiter')) {
return <Badge tone="warn">À traiter</Badge>;
}
// Ensuite vérifier les cas OK
const aemOk = aemNorm === 'ok' || aemNorm === 'oui' || aemNorm.includes('ok') || aemNorm === 'valide';
return aemOk ? <Badge tone="ok">AEM OK</Badge> : <Badge tone="warn">À traiter</Badge>;
})()} />
</div>

View file

@ -1433,7 +1433,16 @@ return (
<Field label="Net après PAS" value={formatEUR(slip.net_after_withholding)} />
<Field label="Brut" value={formatEUR(slip.gross_amount)} />
<Field label="Coût total employeur" value={formatEUR(slip.employer_cost)} />
<Field label="AEM" value={slip.aem_status === "OK" ? <Badge tone="ok">AEM OK</Badge> : <Badge tone="warn">À traiter</Badge>} />
<Field label="AEM" value={(() => {
const aemNorm = String(slip.aem_status || '').normalize('NFD').replace(/\p{Diacritic}/gu, '').trim().toLowerCase();
// Vérifier d'abord si c'est "À traiter" pour éviter les faux positifs
if (aemNorm.includes('a traiter') || aemNorm.includes('a_traiter')) {
return <Badge tone="warn">À traiter</Badge>;
}
// Ensuite vérifier les cas OK
const aemOk = aemNorm === 'ok' || aemNorm === 'oui' || aemNorm.includes('ok') || aemNorm === 'valide';
return aemOk ? <Badge tone="ok">AEM OK</Badge> : <Badge tone="warn">À traiter</Badge>;
})()} />
</div>
))
) : (