/** * Helpers purs de l'onglet Adresse transporteur (M4 Transport, ERP-167) — miroir * SIMPLIFIÉ de `providerAddress` (M3) / `SupplierAddressBlock` (M2), sans sites / * catégories / contacts (les sites du M4 vivent dans l'onglet Prix). Testables * sans Vue. */ import type { CarrierAddressFormDraft } from '~/modules/transport/types/carrierForm' /** * RG-4.05 : gate du bouton « + Nouvelle adresse ». Une adresse est « complète » * (donc on autorise l'ajout d'un nouveau bloc) dès qu'elle porte un code postal, * une ville ET une rue. Les RG conditionnelles (obligatoire si affrété) restent * validées par le back (422 inline) — ce gate empêche seulement d'empiler des * blocs vides. */ export function isCarrierAddressValid(address: CarrierAddressFormDraft): boolean { return Boolean(address.postalCode?.trim() && address.city?.trim() && address.street?.trim()) } /** * Payload de la sous-ressource addresses (groupe `carrier:write:addresses`). Les * scalaires sont nullable côté entité : on envoie `null` quand le champ est vide * (le `CarrierAddressProcessor` re-valide la présence si affrété — RG-4.05 — et * renvoie une 422 par champ). */ export function buildCarrierAddressPayload(address: CarrierAddressFormDraft): Record { return { country: address.country, postalCode: address.postalCode || null, city: address.city || null, street: address.street || null, streetComplement: address.streetComplement || null, } }