Docs  /  Prix & Règles  /  Formules de prix & calculs JavaScript

Formules de prix & calculs JavaScript

Dernière mise à jour: 01. janvier 2026

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 de console.log)
  • Vérifier undefined ou null en 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

Prochaines étapes


← Tous les articles Essai gratuit 14 jours