```
✨ 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:
@@ -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 => {
|
||||
|
||||
27
assets/libs/StripeCommissionCalculator.js
Normal file
27
assets/libs/StripeCommissionCalculator.js
Normal 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');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user