fix(transport) : règle « + Nouveau contact » alignée sur M1/M2/M3 (prénom OU nom) (ERP-168)
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
/**
|
||||
* Helpers purs de l'onglet Contact transporteur (M4 Transport, ERP-168) — miroir
|
||||
* de `providerContact.ts` (M3), avec deux spécificités M4 :
|
||||
* - RG-4.08 : un bloc est valide dès qu'AU MOINS UN champ est rempli (n'importe
|
||||
* lequel) — ≠ M3 qui n'exigeait que le nom.
|
||||
* - les téléphones partent au back dans le tableau virtuel `phones` (max 2),
|
||||
* pas en `phonePrimary` / `phoneSecondary` (mappés par le CarrierContactProcessor).
|
||||
* Helpers purs de l'onglet Contact transporteur (M4 Transport, ERP-168) — ALIGNÉ
|
||||
* sur `providerContact.ts` (M3) / les autres modules : mêmes règles de validité et
|
||||
* de gating « + Nouveau contact » (un contact est « nommé » dès qu'il porte un
|
||||
* prénom OU un nom). Seule spécificité M4 conservée : les téléphones partent au back
|
||||
* dans le tableau virtuel `phones` (max 2), mappés par le CarrierContactProcessor.
|
||||
* Testables sans Vue ni API.
|
||||
*/
|
||||
|
||||
@@ -16,10 +15,10 @@ function isFilled(value: string | null | undefined): boolean {
|
||||
}
|
||||
|
||||
/**
|
||||
* RG-4.08 : un bloc Contact est VIDE tant qu'aucun de ses champs n'est rempli
|
||||
* (prénom / nom / fonction / téléphone(s) / email). Sert le gating « + Nouveau
|
||||
* contact » (on n'ajoute pas de bloc tant que le précédent est vide) et reflète la
|
||||
* garde back (CarrierContactProcessor + CHECK chk_carrier_contact_filled).
|
||||
* Un bloc Contact est VIDE tant qu'aucun champ comptant pour la validité n'est
|
||||
* rempli — prénom / nom / fonction / téléphone principal / email. `phoneSecondary`
|
||||
* est EXCLU (aligné M1/M2/M3 : un bloc ne portant qu'un 2e numéro reste vide). Sert
|
||||
* le filtrage des amorces vides à la soumission.
|
||||
*/
|
||||
export function isCarrierContactBlank(contact: CarrierContactFormDraft): boolean {
|
||||
return ![
|
||||
@@ -27,11 +26,19 @@ export function isCarrierContactBlank(contact: CarrierContactFormDraft): boolean
|
||||
contact.lastName,
|
||||
contact.jobTitle,
|
||||
contact.phonePrimary,
|
||||
contact.phoneSecondary,
|
||||
contact.email,
|
||||
].some(isFilled)
|
||||
}
|
||||
|
||||
/**
|
||||
* Un contact est « nommé » (valide) dès qu'il porte un prénom OU un nom — aligné
|
||||
* sur M1/M2/M3. Pilote le gating « + Nouveau contact » : la fonction / le téléphone
|
||||
* / l'email seuls ne suffisent pas pour ajouter un nouveau bloc.
|
||||
*/
|
||||
export function isCarrierContactNamed(contact: CarrierContactFormDraft): boolean {
|
||||
return isFilled(contact.firstName) || isFilled(contact.lastName)
|
||||
}
|
||||
|
||||
/**
|
||||
* Payload de la sous-ressource contacts (groupe `carrier:write:contacts`). Les
|
||||
* chaînes vides partent à null (le serveur normalise/trim). Les téléphones sont
|
||||
|
||||
Reference in New Issue
Block a user