Avec les formules vous pouvez réaliser des calculs de prix complexes qui vont au-delà des simples suppléments. Les formules accèdent aux valeurs et aux suppléments de toutes les caractéristiques et en calculent un prix en temps réel.
Pour les cas standard, de simples expressions de formule suffisent. Pour une logique très complexe, du code JavaScript complet est également disponible.
Où les formules sont-elles enregistrées ?
Les formules sont enregistrées dans les paramètres de prix d'une option ou directement comme règle de prix par formule au niveau du composant. Vous pouvez utiliser les formules pour des options individuelles ou comme formule de prix total.
Formules simples
Référencer des valeurs de caractéristiques
[nom_caracteristique] → valeur numérique de la caractéristique (en saisie libre)
[nom_caracteristique.price] → supplément de l'option sélectionnée
[_base_price] → prix de base du composant
Opérateurs de base
+ Addition
- Soustraction
* Multiplication
/ Division
^ Puissance
() Parenthèses pour l'ordre des opérations
Fonctions
ROUND(valeur, chiffres) → arrondir à n décimales
CEIL(valeur) → arrondir au nombre entier supérieur
FLOOR(valeur) → arrondir au nombre entier inférieur
MAX(a, b) → la plus grande des deux valeurs
MIN(a, b) → la plus petite des deux valeurs
IF(condition, a, b) → si condition vraie → a, sinon → b
ABS(valeur) → valeur absolue (sans signe)
Exemples pratiques
Prix à la surface (largeur × hauteur) :
[largeur] * [hauteur] * 0.025
Prix à la surface avec prix minimum :
MAX([largeur] * [hauteur] * 0.025, 49.00)
Prix par mètre arrondi :
CEIL([longueur] / 100) * 12.50
Prix dégressif (remise quantitative) :
IF([quantite] >= 100, [quantite] * 8.90,
IF([quantite] >= 50, [quantite] * 9.50,
[quantite] * 10.90))
Combinaison de surface et de suppléments :
([largeur] * [hauteur] * 0.020) + [couleur.price] + [motorisation.price]
Calculs avancés avec JavaScript
Quand la syntaxe des formules simples ne suffit pas, vous pouvez enregistrer du code JavaScript complet. Cela permet une logique de calcul arbitrairement complexe — boucles, tableaux, recherches externes, algorithmes personnalisés.
Structure de base
Le code JavaScript doit renvoyer une valeur numérique à la fin :
// Toutes les valeurs de caractéristiques sont disponibles comme variables
var surface = largeur * hauteur;
var prix_base = surface * 0.025;
// Prix minimum
if (prix_base < 49) {
prix_base = 49;
}
// Valeur de retour
prix_base;
Valeurs de caractéristiques en JavaScript
Toutes les caractéristiques sont disponibles comme variables JavaScript — nommées d'après leur nom interne :
// Valeurs numériques directement
largeur // valeur de la caractéristique "largeur"
hauteur // valeur de la caractéristique "hauteur"
quantite // valeur de la caractéristique "quantite"
// Suppléments de l'option sélectionnée
couleur_price // supplément de la couleur sélectionnée
motorisation_price // supplément de la motorisation sélectionnée
// Prix de base
_base_price // prix de base du composant
Exemples pratiques
Prix dégressif complexe avec tableau :
var paliers = [
{ de: 1, prix: 10.90 },
{ de: 10, prix: 9.50 },
{ de: 50, prix: 8.90 },
{ de: 100, prix: 7.90 },
{ de: 500, prix: 6.90 }
];
var prix_unitaire = paliers[0].prix;
for (var i = 0; i < paliers.length; i++) {
if (quantite >= paliers[i].de) {
prix_unitaire = paliers[i].prix;
}
}
quantite * prix_unitaire;
Calcul de prix avec majorations selon la combinaison :
var base = largeur * hauteur * 0.022;
// Majoration matériau
var facteurMateriau = 1.0;
if (materiau === 'inox') facteurMateriau = 1.35;
if (materiau === 'bois') facteurMateriau = 1.20;
// Majoration express
var express = (delai_livraison === 'express') ? base * 0.25 : 0;
// Prix minimum
Math.max(base * facteurMateriau + express, 59.00);
Calcul de prix avec règles d'arrondi selon le standard du secteur :
// Surface en m² (saisie en cm)
var surface_m2 = (largeur / 100) * (hauteur / 100);
// Arrondir à 0,1 m² supérieur (quantité minimale de commande)
var surface_arrondie = Math.ceil(surface_m2 * 10) / 10;
// Prix issu de la zone tarifaire
var prix_par_m2 = 45.00;
if (surface_arrondie > 5) prix_par_m2 = 42.00;
if (surface_arrondie > 10) prix_par_m2 = 38.00;
surface_arrondie * prix_par_m2 + motorisation_price;
API JavaScript disponibles
Dans le contexte des formules, les objets JavaScript standard sont disponibles :
Math.round(), Math.ceil(), Math.floor()
Math.min(), Math.max(), Math.abs()
Math.pow(), Math.sqrt()
parseInt(), parseFloat()
Array, Object, JSON
Aucun accès au DOM, aux requêtes HTTP externes ou aux API du navigateur — le calcul s'exécute côté serveur.
Tester les formules
Dans le backend, l'aperçu affiche immédiatement le résultat pour différentes valeurs de saisie. Saisissez des valeurs de test et vérifiez que le calcul est correct.
Agent IA pour les formules et le JavaScript
L'agent IA peut créer aussi bien des formules simples que du code JavaScript complexe :
« Le prix doit être largeur fois hauteur fois 0,025 euro, mais au moins 49 euros. »
« J'ai besoin d'un prix dégressif : jusqu'à 10 unités 10,90 €, à partir de 10 unités 9,50 €, à partir de 50 unités 8,90 €, à partir de 100 unités 7,90 €. »
« Le prix doit être arrondi à 0,1 m² supérieur et devenir moins cher par m² pour les grandes surfaces. »
L'agent écrit le code et l'enregistre directement dans le composant.
Dépannage
La formule donne 0 ou NaN :
- Vérifier les noms des caractéristiques — attention aux majuscules et minuscules
- S'assurer que la caractéristique référencée est un champ numérique
- Vérifier la syntaxe JavaScript (points-virgules ou parenthèses manquants)
Le JavaScript ne renvoie aucune valeur :
- S'assurer qu'une expression numérique figure à la fin (pas de
return, pas deconsole.log) - Vérifier
undefinedounullen cas de logique conditionnelle
Valeurs inattendues :
- Faire attention aux unités (mm vs cm vs m)
console.log()pour le dépannage — les sorties apparaissent dans la console du navigateur de l'aperçu