diff --git a/frontend/modules/commercial/components/ClientAddressBlock.vue b/frontend/modules/commercial/components/ClientAddressBlock.vue index ff2c574..db956fe 100644 --- a/frontend/modules/commercial/components/ClientAddressBlock.vue +++ b/frontend/modules/commercial/components/ClientAddressBlock.vue @@ -191,6 +191,7 @@ import { import { useAddressAutocomplete, type AddressSuggestion } from '~/shared/composables/useAddressAutocomplete' import type { CategoryOption, RefOption } from '~/modules/commercial/composables/useClientReferentials' import type { AddressFormDraft } from '~/modules/commercial/types/clientForm' +import { sanitizeAddress, sanitizeEmail } from '~/shared/utils/textSanitize' // Masque code postal FR : 5 chiffres. const POSTAL_CODE_MASK = '#####' @@ -284,9 +285,23 @@ const addressLoading = ref(false) // Conserve les suggestions d'adresse pour retrouver ville/CP au moment du select. let lastAddressSuggestions: AddressSuggestion[] = [] -/** Emet un nouveau brouillon avec le champ modifie (immutabilite). */ +// Filtres de saisie par champ (ERP-193) : voie / complement / ville = profil +// adresse, emails de facturation = profil email. +const FIELD_SANITIZERS: Partial string>> = { + street: sanitizeAddress, + streetComplement: sanitizeAddress, + city: sanitizeAddress, + billingEmail: sanitizeEmail, + billingEmailSecondary: sanitizeEmail, +} + +/** Emet un nouveau brouillon avec le champ modifie (immutabilite), sanitise si besoin. */ function update(field: K, value: AddressFormDraft[K]): void { - emit('update:modelValue', { ...props.modelValue, [field]: value }) + const sanitizer = FIELD_SANITIZERS[field] + const next = (sanitizer && typeof value === 'string') + ? (sanitizer(value) as AddressFormDraft[K]) + : value + emit('update:modelValue', { ...props.modelValue, [field]: next }) } /** Revele le 2e champ email de facturation (clic sur le « + »). */ diff --git a/frontend/modules/commercial/components/ClientContactBlock.vue b/frontend/modules/commercial/components/ClientContactBlock.vue index e4284c7..0ecfd86 100644 --- a/frontend/modules/commercial/components/ClientContactBlock.vue +++ b/frontend/modules/commercial/components/ClientContactBlock.vue @@ -71,6 +71,7 @@