feat: auto-remplissage RCS, APE, TVA depuis recherche entreprise
Customer entity : - Ajout champ ape (VARCHAR 10, nullable) avec getter/setter - Migration : ALTER TABLE customer ADD ape Recherche entreprise (entreprise-search.js) : - RCS construit depuis SIREN + ville du siège (ex: RCS Saint-Quentin 418664058) - TVA intracommunautaire calculée depuis SIREN (clé modulo 97) - Code APE/NAF récupéré depuis activite_principale de l'API - APE affiché dans les résultats de recherche à côté du SIREN/SIRET - Auto-remplissage des champs : raisonSociale, siret, rcs, numTva, ape, address, zipCode, city, firstName, lastName Template create.html.twig : - Ajout champ "Code APE / NAF" dans la section Entreprise ClientsController : - populateCustomerData : ajout setApe depuis le formulaire Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,11 +22,17 @@ const fillFieldIfEmpty = (id, value) => {
|
||||
if (el && !el.value && value) el.value = value
|
||||
}
|
||||
|
||||
const buildRcs = (siren, city) => {
|
||||
if (!siren || !city) return ''
|
||||
return 'RCS ' + capitalize(city) + ' ' + siren
|
||||
}
|
||||
|
||||
const renderResult = (e, onSelect) => {
|
||||
const s = e.siege || {}
|
||||
const d = (e.dirigeants && e.dirigeants[0]) || {}
|
||||
const actif = e.etat_administratif === 'A'
|
||||
const addr = [s.numero_voie, s.type_voie, s.libelle_voie].filter(Boolean).join(' ')
|
||||
const ape = e.activite_principale || ''
|
||||
|
||||
const div = document.createElement('div')
|
||||
div.className = 'glass p-4 cursor-pointer hover:bg-white/80 transition-all'
|
||||
@@ -37,6 +43,7 @@ const renderResult = (e, onSelect) => {
|
||||
<div class="text-xs text-gray-500 mt-1">
|
||||
SIREN <span class="font-mono font-bold">${e.siren || '?'}</span>
|
||||
${s.siret ? ' — SIRET <span class="font-mono font-bold">' + s.siret + '</span>' : ''}
|
||||
${ape ? ' — APE <span class="font-mono font-bold">' + ape + '</span>' : ''}
|
||||
</div>
|
||||
<div class="text-xs text-gray-400 mt-1">${s.geo_adresse || s.adresse || ''}</div>
|
||||
${d.nom ? '<div class="text-xs text-gray-400 mt-1">Dirigeant : ' + (d.prenoms || '') + ' ' + d.nom + '</div>' : ''}
|
||||
@@ -49,7 +56,9 @@ const renderResult = (e, onSelect) => {
|
||||
div.addEventListener('click', () => {
|
||||
fillField('raisonSociale', e.nom_raison_sociale || e.nom_complet || '')
|
||||
fillField('siret', s.siret || '')
|
||||
fillField('rcs', buildRcs(e.siren, s.libelle_commune))
|
||||
fillField('numTva', computeTva(e.siren))
|
||||
fillField('ape', ape)
|
||||
fillField('address', addr)
|
||||
fillField('zipCode', s.code_postal || '')
|
||||
fillField('city', s.libelle_commune || '')
|
||||
|
||||
Reference in New Issue
Block a user