diff --git a/docs/specs/M1-clients/spec-back.md b/docs/specs/M1-clients/spec-back.md index 0476b45..fb30551 100644 --- a/docs/specs/M1-clients/spec-back.md +++ b/docs/specs/M1-clients/spec-back.md @@ -883,6 +883,7 @@ Cf. § 2.6. Pattern Shared standard. ### Onglet Comptabilité +- **RG-1.30** _(ajoutée — correctif incohérence spec-front/spec-back)_ : à la **validation complète de l'onglet Comptabilité**, les six champs scalaires `siren`, `accountNumber`, `tvaMode`, `nTva`, `paymentDelay`, `paymentType` sont **obligatoires** (alignement sur spec-front § Onglet Comptabilité). Colonnes `nullable` en base (l'onglet est rempli dans un second temps, et l'onglet principal ne les envoie pas) + validateur contextuel `ClientAccountingCompletenessValidator` invoqué par le `ClientProcessor` — même parti que RG-1.04 (Information). Déclenchement : uniquement quand **les six champs sont présents dans le payload** (le front les envoie toujours ensemble via « Valider ») ; un PATCH ciblant un sous-ensemble de champs comptables (édition ponctuelle) n'est pas soumis à la complétude. Chaque champ manquant → 422 sur son `propertyPath` (mapping inline front, ERP-101). `bank` reste hors complétude (conditionnel RG-1.12). - **RG-1.12** : Le champ `bank` est visible et obligatoire **uniquement** si `paymentType.code = 'VIREMENT'`. Validation server-side dans le `ClientProcessor` : si `payment_type.code = VIREMENT` et `bank IS NULL` → 422. - **RG-1.13** : Les champs RIB (`label`, `bic`, `iban`) sont obligatoires si **au moins un bloc RIB est présent ET** `paymentType.code = 'LCR'`. C'est-à-dire : - Si `paymentType.code = LCR` ET `client.ribs.count() = 0` → 422 « Au moins un RIB est obligatoire pour le type LCR ». diff --git a/frontend/i18n/locales/fr.json b/frontend/i18n/locales/fr.json index 5744828..cf7bc63 100644 --- a/frontend/i18n/locales/fr.json +++ b/frontend/i18n/locales/fr.json @@ -168,13 +168,18 @@ "prospect": "Prospect", "delivery": "Adresse de livraison", "billing": "Facturation", + "addressType": "Type d'adresse", + "addressTypeProspect": "Prospect", + "addressTypeDelivery": "Livraison", + "addressTypeBilling": "Facturation", + "addressTypeDeliveryBilling": "Adresse + Facturation", "categories": "Catégorie", "country": "Pays", "postalCode": "Code postal", "city": "Ville", "street": "Adresse", "streetComplement": "Adresse complémentaire", - "sites": "Sites Starseed", + "sites": "Sites", "contacts": "Contact(s) rattaché(s)", "billingEmail": "Email de facturation", "remove": "Supprimer l'adresse", diff --git a/frontend/modules/commercial/components/ClientAddressBlock.vue b/frontend/modules/commercial/components/ClientAddressBlock.vue index ee6e08b..1745a4b 100644 --- a/frontend/modules/commercial/components/ClientAddressBlock.vue +++ b/frontend/modules/commercial/components/ClientAddressBlock.vue @@ -10,34 +10,53 @@ @click="$emit('remove')" /> - - + - - - -