feat(admin.js): Ajoute le calculateur de commission Stripe.
 feat(add.twig): Affiche la commission Stripe estimée pour les tarifs.
 feat(view.twig): Affiche la commission Stripe estimée sur le total contrat et le solde.
```
This commit is contained in:
Serreau Jovann
2026-02-02 12:06:55 +01:00
parent 9bcf2a6823
commit 7ab37b4d8b
4 changed files with 60 additions and 5 deletions

View File

@@ -11,6 +11,7 @@ import { SearchProductDevis, SearchOptionsDevis } from "./libs/SearchProductDevi
import { SearchProductFormule, SearchOptionsFormule } from "./libs/SearchProductFormule.js";
import PlaningLogestics from "./libs/PlaningLogestics.js";
import {SortableReorder} from "./libs/SortableReorder.js";
import { StripeCommissionCalculator } from "./libs/StripeCommissionCalculator.js";
// --- CONFIGURATION SENTRY ---
Sentry.init({
@@ -37,7 +38,8 @@ const registerCustomElements = () => {
{ name: 'search-options', class: SearchOptions, extends: 'button' },
{ name: 'search-productdevis', class: SearchProductDevis, extends: 'button' },
{ name: 'search-optionsdevis', class: SearchOptionsDevis, extends: 'button' },
{ name: 'crm-editor', class: CrmEditor, extends: 'textarea' }
{ name: 'crm-editor', class: CrmEditor, extends: 'textarea' },
{ name: 'stripe-commission-calculator', class: StripeCommissionCalculator, extends: 'div' }
];
elements.forEach(el => {

View File

@@ -0,0 +1,27 @@
export class StripeCommissionCalculator extends HTMLDivElement {
constructor() {
super();
}
connectedCallback() {
this.input = this.querySelector('input');
this.display = this.querySelector('.commission-display');
if (this.input && this.display) {
this.input.addEventListener('input', this.calculate.bind(this));
// Initial calculation
this.calculate();
}
}
calculate() {
const value = parseFloat(this.input.value);
if (!isNaN(value)) {
const commission = (value * 0.015) + 0.25;
this.display.textContent = `~ ${commission.toLocaleString('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} €`;
this.display.parentElement.classList.remove('hidden');
} else {
this.display.parentElement.classList.add('hidden');
}
}
}