36 lines
1.5 KiB
TypeScript
36 lines
1.5 KiB
TypeScript
/**
|
|
* 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<string, unknown> {
|
|
return {
|
|
country: address.country,
|
|
postalCode: address.postalCode || null,
|
|
city: address.city || null,
|
|
street: address.street || null,
|
|
streetComplement: address.streetComplement || null,
|
|
}
|
|
}
|