Documentation

Cookies & confidentialité

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Vous pouvez modifier vos préférences à tout moment depuis le pied de page.

Exemples pratiques

Voici une collection d'exemples concrets et réutilisables pour différents domaines métier. Copiez et adaptez-les à vos besoins.

Facturation

Calcul du total TTC d'une facture

Calcule le total TTC en sommant les lignes de produits avec leurs quantités et TVA.

JavaScript
let lignes = facture.lignes;

let totalHT = lignes.map(ligne => ligne.quantite * ligne.prixUnitaire).sum();

let totalTVA = lignes.map(ligne => ligne.quantite * ligne.prixUnitaire * ligne.tauxTVA / 100
  ).sum();

let totalTTC = totalHT + totalTVA;

"HT: ".concat(totalHT.toFixed(2), " € | ",
  "TVA: ", totalTVA.toFixed(2), " € | ",
  "TTC: ", totalTTC.toFixed(2), " €"
)

Ventilation de TVA par taux

Affiche le détail de la TVA pour chaque taux utilisé dans la facture.

JavaScript
let lignes = facture.lignes;
let tauxUniques = lignes.map(ligne => ligne.tauxTVA).unique();

tauxUniques.map(tauxUnique => "TVA ".concat(tauxUnique, "% : ",
      lignes.filter(ligne => ligne.tauxTVA === tauxUnique).map(ligne => ligne.quantite * ligne.prixUnitaire * ligne.tauxTVA / 100
          ).sum().toFixed(2
      ),
      " €"
    )
  ).join(" | "
)

// Résultat: "TVA 5.5% : 12.50 € | TVA 20% : 45.00 €"

Statut de paiement

Affiche un statut clair selon l'état du paiement et l'échéance.

JavaScript
facture.payee === true
? "✅ Payée le " + facture.statusChangedAt("payée").formatDDMMYYYY()
: facture.dateEcheance < today()
? "⚠️ En retard de ".concat(today() - facture.dateEcheance,
  " jours"
)
: facture.dateEcheance === today()
? "📌 Échéance aujourd'hui"
: "⏳ Échéance dans ".concat(facture.dateEcheance - today(),
  " jours"
)

Gestion commerciale

Calcul de remise progressive

Applique une remise selon le montant de la commande.

JavaScript
let montant = commande.totalHT;

let tauxRemise =
  montant >= 5000 ? 15
  : montant >= 2000 ? 10
  : montant >= 1000 ? 7
  : montant >= 500 ? 5
  : 0;

let remise = montant * tauxRemise / 100;
let netHT = montant - remise;

"Montant: ".concat(facture.total.toFixed(2), " € - ",
  "Remise ", tauxRemise, "%: -", remise.toFixed(2), " € = ",
  "Net: ", netHT.toFixed(2), " €"
)

Chiffre d'affaires client sur l'année

Calcule le CA réalisé avec un client sur l'année en cours.

JavaScript
let commandes = findObjects(commande, {});
let commandesClient = client.commandes.filter(commande => commande.clientId === client.id);
let commandesAnnee = commandesClient.filter(x => x.date.year() === today().year()
  && x.statut !== "annulée"
);

let caHT = commandesAnnee.map(x => x.totalHT).sum();
let nbCommandes = commandesAnnee.count();

nbCommandes.concat(" commande(s) - CA: ",
  caHT.toFixed(2), " € HT"
)

Alerte stock bas

Affiche une alerte si le stock est inférieur au seuil minimum.

JavaScript
let stock = produit.stock;
let seuilAlerte = produit.seuilAlerte.ifEmpty(10);
let seuilCritique = produit.seuilCritique.ifEmpty(5);

stock <= 0
? "🔴 Rupture de stock"
: stock <= seuilCritique
? "🟠 Stock critique: ".concat(stock, " unités")
: stock <= seuilAlerte
? "🟡 Stock bas: ".concat(stock, " unités")
: "🟢 En stock: ".concat(stock, " unités")

Ressources humaines

Calcul de jours de mission

Calcule le nombre de jours ouvrés et le coût d'une mission.

JavaScript
let debut = mission.dateDebut;
let fin = mission.dateFin;
let tjm = consultant.tarifJournalier;

let joursOuvres = debut.businessDays(fin);
let coutHT = joursOuvres * tjm;
let coutTTC = coutHT * 1.20;

"Du ".concat(debut.formatDDMMYYYY(), " au ", fin.formatDDMMYYYY(), "\n",
  joursOuvres, " jours × ", tjm, " € = ",
  coutTTC.toFixed(2), " € TTC"
)

Ancienneté d'un employé

Calcule et affiche l'ancienneté en années et mois.

JavaScript
let dateEmbauche = employe.dateEmbauche;
let joursAnciennete = dateEmbauche.daysBetweenInclusive(today());
let annees = joursAnciennete / 365;
let anneesEntieres = annees.toFixed(0).toNumber();
let moisRestants = ((annees - anneesEntieres) * 12).toFixed(0).toNumber();

anneesEntieres >= 1
? anneesEntieres.concat(" an(s) et ", moisRestants, " mois")
: moisRestants.concat(" mois")

Fiche collaborateur

Génère un résumé des informations d'un collaborateur.

JavaScript
let nom = employe.prenom.concat(" ", employe.nom.toUpperCase());
let poste = employe.poste.ifEmpty("Non défini");
let email = employe.email.ifEmpty("N/A");
let tel = employe.telephone.ifEmpty("N/A");
let nationalite = employe.nationalite.nationality().ifError("Non renseignée"
);

"👤 ".concat(nom, "\n",
  "💼 ", poste, "\n",
  "📧 ", email, "\n",
  "📱 ", tel, "\n",
  "🌍 ", nationalite
)

Suivi de projets

Avancement d'un projet

Calcule le pourcentage d'avancement basé sur les tâches terminées.

JavaScript
let taches = projet.taches;
let totalTaches = projet.taches.count();
let tachesTerminees = projet.taches.filter(tache => tache.statut === "terminée").count();

totalTaches === 0
? "Aucune tâche définie"
:
  let pourcentage = (tachesTerminees / totalTaches) * 100;
  let barre = pourcentage >= 75 ? "🟩🟩🟩"
    : pourcentage >= 50 ? "🟩🟩⬜"
    : pourcentage >= 25 ? "🟩⬜⬜"
    : "⬜⬜⬜";

  barre.concat(" ",
    pourcentage.toFixed(0), "% (",
    tachesTerminees, "/", totalTaches, " tâches)"
  )

Tâches en retard

Liste les tâches en retard avec leur nombre de jours de dépassement.

JavaScript
let taches = projet.taches;
let tachesEnRetard = projet.taches.filter(tache => tache.dateEcheance < today()
  && tache.statut !== "terminée"
);

tachesEnRetard.count() === 0
? "✅ Aucune tâche en retard"
:
  "⚠️ ".concat(tachesEnRetard.count(), " tâche(s) en retard:\n",
    tachesEnRetard.map(x => "• ".concat(x.titre, " (",
          today() - x.dateEcheance, " jours)"
        )
      ).join("\n"
    )
  )

Budget consommé

Affiche le budget consommé par rapport au budget total.

JavaScript
let budgetTotal = projet.budget;
let depenses = projet.depenses.montant.sum();
let reste = budgetTotal - depenses;
let pourcentageConsomme = (depenses / budgetTotal) * 100;

let statut =
  pourcentageConsomme >= 100 ? "🔴 Dépassement"
  : pourcentageConsomme >= 90 ? "🟠 Attention"
  : pourcentageConsomme >= 75 ? "🟡 Vigilance"
  : "🟢 OK";

statut.concat(" Budget consommé à ", pourcentageConsomme.toFixed(0), "%\n",
  "Dépensé: ", depenses.toFixed(2), " € / ",
  budgetTotal.toFixed(2), " €\n",
  "Reste: ", reste.toFixed(2), " €"
)

Génération de références

Numéro de facture

Génère un numéro de facture au format FAC-AAAA-MM-NNNN.

JavaScript
let annee = today().year();
let mois = (today().month() + 1).padZeros(2);
let numero = facture.numeroSequentiel.padZeros(4);

"FAC-".concat(annee, "-", mois, "-", numero)

// Résultat: "FAC-2026-01-0042"

Code client automatique

Génère un code client basé sur le nom et un numéro incrémental.

JavaScript
let prefixe = client.nom.slice(0, 3).toUpperCase();
let numero = client.id.padZeros(5);

prefixe.concat("-", numero)

// "ACME" → "ACM-00042"

Référence produit intelligente

Génère une référence incluant catégorie, année et numéro séquentiel.

JavaScript
let categorie = produit.categorie.slice(0, 2).toUpperCase();
let annee = today().year().concat().slice(2, 4);
let numero = produit.numeroSequentiel.padZeros(4);

categorie.concat(annee, "-", numero)

// Catégorie "Électronique", 2026, n°42 → "EL26-0042"

Prochaine étape

Terminez votre apprentissage avec les bonnes pratiques pour écrire des formules performantes et maintenables.