fix: SonarQube - refactor ClientsController (21->20 methodes), AdvertController (constante + syncPayment)
ClientsController : - Extraction dispatchPostAction() via match (show: 5->2 returns) - Inline sendWelcomeEmail (3 call sites) et indexInMeilisearch (2 call sites) - Fusion initStripeCustomer -> setupStripeCustomer - Rename finalizeStripeCustomer -> finalizeStripeMetadata - Catch vide geocodeIfNeeded rempli avec commentaire - 21 -> 20 methodes (limite autorisee) AdvertController : - Constante MSG_NOT_FOUND pour literal duplique 7 fois - syncPayment refactore (CC 19->8) : extraction processSyncPayment, resolveMethodLabel, ensureAdvertPayment, ensureFacture JS SonarQube : - app.js : removeAttribute -> delete dataset, ternaires -> payBtnLabel(), window -> globalThis, parseFloat -> Number.parseFloat, catch vides -> console.debug - app.scss : contraste ameliore (white -> #f5f5f5) - entreprise-search.js : && -> optional chaining (?., ??) - app.test.js : extraction cleanupListeners/resetMocks/loadApp (CC 17->12) PHP CS Fixer : 3 fichiers corriges PHPStan level 6 : 0 erreurs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -67,7 +67,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
confirmOk.addEventListener('click', () => {
|
||||
if (pendingForm) {
|
||||
confirmModal.classList.add('hidden');
|
||||
pendingForm.removeAttribute('data-confirm');
|
||||
delete pendingForm.dataset.confirm;
|
||||
pendingForm.requestSubmit();
|
||||
}
|
||||
});
|
||||
@@ -404,6 +404,12 @@ function initStripePayment() {
|
||||
const showModal = () => modal.classList.remove('hidden');
|
||||
const hideModal = () => { if (!isProcessing) modal.classList.add('hidden'); };
|
||||
|
||||
const payBtnLabel = (m) => {
|
||||
if (m === 'sepa') return 'Prelever ' + amount + ' €';
|
||||
if (m === 'paypal') return 'Payer via PayPal ' + amount + ' €';
|
||||
return 'Payer ' + amount + ' €';
|
||||
};
|
||||
|
||||
closeBtn.addEventListener('click', hideModal);
|
||||
overlay.addEventListener('click', hideModal);
|
||||
document.addEventListener('keydown', (e) => { if (e.key === 'Escape') hideModal(); });
|
||||
@@ -429,7 +435,7 @@ function initStripePayment() {
|
||||
if (data.error) {
|
||||
errorsEl.textContent = data.error;
|
||||
errorsEl.classList.remove('hidden');
|
||||
payBtn.textContent = method === 'sepa' ? 'Prelever ' + amount + ' €' : method === 'paypal' ? 'Payer via PayPal ' + amount + ' €' : 'Payer ' + amount + ' €';
|
||||
payBtn.textContent = payBtnLabel(method);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -456,7 +462,7 @@ function initStripePayment() {
|
||||
|
||||
paymentElement.on('ready', () => {
|
||||
payBtn.disabled = false;
|
||||
payBtn.textContent = method === 'sepa' ? 'Prelever ' + amount + ' €' : method === 'paypal' ? 'Payer via PayPal ' + amount + ' €' : 'Payer ' + amount + ' €';
|
||||
payBtn.textContent = payBtnLabel(method);
|
||||
});
|
||||
|
||||
paymentElement.on('change', (event) => {
|
||||
@@ -471,7 +477,7 @@ function initStripePayment() {
|
||||
.catch(() => {
|
||||
errorsEl.textContent = 'Erreur de connexion au serveur de paiement.';
|
||||
errorsEl.classList.remove('hidden');
|
||||
payBtn.textContent = method === 'sepa' ? 'Prelever ' + amount + ' €' : method === 'paypal' ? 'Payer via PayPal ' + amount + ' €' : 'Payer ' + amount + ' €';
|
||||
payBtn.textContent = payBtnLabel(method);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -496,7 +502,7 @@ function initStripePayment() {
|
||||
const { error } = await stripe.confirmPayment({
|
||||
elements: elements,
|
||||
confirmParams: {
|
||||
return_url: window.location.origin + successUrl + '?method=' + currentMethod,
|
||||
return_url: globalThis.location.origin + successUrl + '?method=' + currentMethod,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -591,7 +597,7 @@ function initDevisLines() {
|
||||
function recalc() {
|
||||
let total = 0;
|
||||
container.querySelectorAll('.line-price').forEach(input => {
|
||||
const v = parseFloat(input.value);
|
||||
const v = Number.parseFloat(input.value);
|
||||
if (!Number.isNaN(v)) total += v;
|
||||
});
|
||||
totalEl.textContent = total.toFixed(2) + ' EUR';
|
||||
@@ -674,7 +680,7 @@ function initDevisLines() {
|
||||
});
|
||||
serviceSelect.disabled = false;
|
||||
}
|
||||
} catch (err) { /* silencieux */ }
|
||||
} catch (err) { console.debug('Service loading failed', err); }
|
||||
});
|
||||
|
||||
// Boutons prestations rapides : ajoute une ligne pre-remplie avec type auto
|
||||
@@ -781,11 +787,11 @@ function initDevisLines() {
|
||||
serviceSelect.appendChild(opt);
|
||||
});
|
||||
serviceSelect.disabled = false;
|
||||
} catch (err) { /* ignore */ }
|
||||
} catch (err) { console.debug('Prefill service loading failed', err); }
|
||||
}
|
||||
}
|
||||
});
|
||||
recalc();
|
||||
} catch (e) { /* ignore */ }
|
||||
} catch (e) { console.debug('Initial lines parse failed', e); }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,8 +227,8 @@ body.glass-bg {
|
||||
border-left: 4px solid transparent;
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
color: white;
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
color: #f5f5f5;
|
||||
border-left-color: var(--gold);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,11 +42,11 @@ const resolveTypeCompany = (natureJuridique) => {
|
||||
|
||||
const renderResult = (e, onSelect) => {
|
||||
const s = e.siege || {}
|
||||
const d = (e.dirigeants && e.dirigeants[0]) || {}
|
||||
const d = 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 rna = (e.complements && e.complements.identifiant_association) || ''
|
||||
const rna = e.complements?.identifiant_association ?? ''
|
||||
const isAsso = resolveTypeCompany(e.nature_juridique) === 'association'
|
||||
|
||||
const div = document.createElement('div')
|
||||
@@ -85,7 +85,7 @@ const renderResult = (e, onSelect) => {
|
||||
const typeCompany = resolveTypeCompany(e.nature_juridique)
|
||||
if (typeCompany) fillField('typeCompany', typeCompany)
|
||||
|
||||
const rna = (e.complements && e.complements.identifiant_association) || ''
|
||||
const rna = e.complements?.identifiant_association ?? ''
|
||||
if (rna) fillField('rna', rna)
|
||||
|
||||
const prenom = (d.prenoms || '').split(' ')[0]
|
||||
|
||||
Reference in New Issue
Block a user