Guide utilisateur de l'application web. Cette plateforme gère toute l'activité d'une entreprise artisanale : clients, chantiers, catalogue, devis (avec PDF et envoi par email), relevés de terrain, et administration. Les données sont isolées par entreprise.
http://localhost:8000/).Sur cette page de connexion : liens publics « Confidentialité » (politique RGPD) et « Mentions légales » — accessibles sans compte.
Les comptes sont créés par l'administrateur de l'entreprise (voir §14) ou via la
commande de démonstration seed_demo :
| Rôle | Mot de passe | |
|---|---|---|
| Admin | admin@demo.artisan-engine.fr | demo-artisan-2026! |
| Manager | manager@demo.artisan-engine.fr | demo-artisan-2026! |
| Commercial | commercial@demo.artisan-engine.fr | demo-artisan-2026! |
| Technicien | tech@demo.artisan-engine.fr | demo-artisan-2026! |
Le mot de passe inclut le
!final.
QUOTELUI est une application web installable (Progressive Web App) :
localhost).
Sur le réseau local en http://, le service worker n'est pas activé — utilisez
la version déployée en HTTPS (§ déploiement).Un même compte peut appartenir à plusieurs entreprises.
Le rôle affiché dans le menu correspond à celui que vous avez dans l'entreprise sélectionnée (le rôle global ne s'applique que si aucun rôle d'entreprise n'est défini).
Les actions sont contrôlées côté serveur (masquer un bouton ne suffit jamais). La hiérarchie des rôles est cumulative.
| Rôle | Peut faire |
|---|---|
| LECTEUR | Consulter le catalogue, les clients, les chantiers, les relevés et les devis. |
| TECHNICIEN | Tout « LECTEUR » + saisir les relevés de terrain (mesures, champs spécifiques, photos, observations) et les valider. |
| COMMERCIAL | Tout « TECHNICIEN » + créer / modifier / gérer les clients, créer, éditer, envoyer et réviser les devis, créer/envoyer les factures (V2.1), les bons de livraison (V2.10) et le pipeline d'affaires / relances (V2.11). |
| MANAGER | Tout « COMMERCIAL » + gérer le catalogue (types de produits, attributs), les prix/TVA, le stock, les fournisseurs et les commandes fournisseurs, et consulter l'audit. |
| ADMIN | Tout « MANAGER » + gérer les membres, les modules métiers et les réglages de l'entreprise. |
Le menu s'adapte à votre rôle : un Technicien ne voit pas « Clients » ni « Devis », mais voit « Relevés », « Catalogue » et ses alertes.
| Entrée | Rôles | Description |
|---|---|---|
| Tableau de bord | Tous | Vue adaptée au rôle (voir §5). |
| Devis | ≠ Technicien | Liste et création des devis (§10). |
| Factures | ≠ Technicien | Devis acceptés → factures, états, PDF/email (§10 bis). |
| Clients | ≠ Technicien | Liste et gestion des clients (§7). |
| Chantiers | ≠ Technicien | Liste et gestion des chantiers/projets (§8). |
| Relevés | Tous | Relevés de chantier, workflow terrain → bureau (§11). |
| Catalogue | Tous | Produits et types de produits (§9). |
| Stock | Tous (mouvements : Manager+) | Suivi des quantités, seuils, mouvements (§13 quater). |
| Fournisseurs | Tous (gestion : Manager+) | Fiches fournisseurs et tarifs d'achat (§13 quinquies). |
| Commandes | Tous (gestion : Manager+) | Commandes fournisseurs, réception → stock (§13 quinquies). |
| Livraisons | Tous (gestion : Commercial+) | Bons de livraison client, sortie de stock (§13 sexies). |
| Affaires | Tous (gestion : Commercial+) | Pipeline commercial, relances CRM (§13 septies). |
| Planning | Tous | Calendrier semaine des chantiers, relevés, RDV et livraisons, avec conflits par technicien (§13 quattuordecies). |
| Recherche | Tous | Recherche globale multi-objets (§6). |
| Alertes (+ badge) | Tous | Rappels automatiques (§6 bis). |
| Statistiques | Manager+ | Pilotage commercial (§5 bis). |
| Historique | Manager+ | Journal d'audit (§15). |
| Réglages | Admin | Paramètres de l'entreprise (§13). |
| Administration → Membres | Admin | Comptes et rôles de l'entreprise (§14). |
| Administration → Modules | Admin | Activation des modules métiers (§14 bis). |
En bas du menu : la liste des entreprises, votre nom et votre rôle, et le bouton de déconnexion (↪).
Sur mobile, le menu se replie ; le bouton ☰ en haut à droite l'ouvre.
Vue d'accueil adaptée au rôle :
Chaque bloc renvoie vers la liste ou la fiche concernée.
Statistiques dans le menu (Manager+) agrège l'activité commerciale de l'entreprise sur les 12 derniers mois :
Détails techniques : les brouillons, modes intermédiaires et devis annulés / expirés sont exclus des CA et des ratios ; les devis refusés sont comptés dans la transformation mais jamais dans le CA.
Une seule zone de recherche interroge tous les objets : clients, contacts, chantiers, devis, produits, documents et relevés.
L'application surveille en continu et affiche un badge orange avec le nombre de rappels. Rien à configurer : les règles sont celles du cahier des charges.
| Type d'alerte | Règle |
|---|---|
| Devis à relancer | Devis envoyé depuis plus de 30 jours sans réponse. |
| Devis expirant | Validité qui arrive à échéance (< 7 jours). |
| Devis expiré | Validité dépassée (le devis passe automatiquement à EXPIRE). |
| Factures non réglées | Facture dont l'échéance est dépassée (montant affiché). |
| Stock bas / rupture | Produit suivi dont le solde est ≤ seuil (rouge si rupture, ≤ 0). |
| Relances en retard | Activité commerciale (appel, email…) à faire dont l'échéance est dépassée. |
| Conflit de planning | Un technicien a 2+ interventions le même jour sur les 14 prochains jours (chantier + relevé + RDV…). |
| Relevé incomplet | Relevé en TERRAIN sans éléments. |
| Photos manquantes | Relevé en TERRAIN/VALIDE sans photo. |
Ouvrez Alertes pour voir le détail ; chaque alerte mène à l'objet concerné.
Address
lié en billing_address), n° TVA intracommunautaire (normalisé en
majuscules) et SIRET optionnel (Customer.siret, migration
customers/0002 — validé : exactement 14 chiffres).set_billing_address(customer, …) crée l'adresse à la demande, la met à
jour sur place (pas de doublon) et la retire si tous les champs sont
vides._snapshot_customer) emporte
address / vat_number / siret : les PDF de devis et de facture
affichent « TVA : … » / « SIRET : … » quand renseignés — figés à l'envoi,
jamais rétro-impactés sur les versions antérieures.La gestion des clients est réservée au Commercial et au-dessus.
Un chantier est un projet rattaché à un client : lieu d'intervention, dates.
Le catalogue est entièrement dynamique : chaque type de produit (fenêtre, chaudière, radiateur…) possède ses propres attributs (largeur, débit, puissance, matériau, énergie…).
nom, reference, type, unite, prix_achat, prix_vente,
ref_fournisseur, description (en-têtes tolérants aux accents et à la
casse ; séparateur ; ou ,). Un modèle CSV est téléchargeable. Options :
mettre à jour les produits existants (même référence), créer les types de
produits manquants, et enregistrer le prix d'achat chez un fournisseur
choisi. Un rapport indique les créations, mises à jour et erreurs par ligne.Catalogue ≠ stock : le catalogue est un référentiel d'offre (ce que vous pouvez proposer, y compris des produits fournisseurs, avec leurs prix). Il ne représente pas votre inventaire : pour suivre ce que vous détenez réellement, utilisez le Stock (§13 quater), qui ne suit que les produits que vous choisissez de suivre.
Les données de base (types, attributs, champs de relevé) sont injectées automatiquement à l'activation d'un module métier (§14 bis). Vous pouvez aussi créer vos propres types de produits sans aucune programmation.
DEV-2026-0001, séquence propre à l'entreprise).update_line recalcule les
totaux ; la TVA figée et le produit lié restent intacts. Les mêmes
opérations existent côté API (set_line_discount, remove_line).Le devis suit une machine d'état stricte :
BROUILLON → A_COMPLETER → EN_REVISION → PRET → ENVOYE → ACCEPTE / REFUSE / EXPIRE
↘ (révision) → nouvelle version
| État | Signification |
|---|---|
| BROUILLON | Créé, en cours de saisie. |
| A_COMPLETER | Vous signalez qu'il manque des informations. |
| EN_REVISION | Correction en cours. |
| PRET | Complet, prêt à l'envoi. |
| ENVOYE | Envoyé au client : le contenu est figé. |
| ACCEPTE / REFUSE / EXPIRE | Issue finale du devis. |
| ANNULE | Devis abandonné. |
Règle d'or : les états modifiables sont BROUILLON, A_COMPLETER, EN_REVISION, PRET. Dès l'envoi, le contenu est gelé (aucune modification silencieuse) ; pour le changer, repassez en EN_REVISION : une nouvelle version est créée (v1 → v2 → …), les versions précédentes restent consultables.
À l'envoi, remarque : l'email du destinataire et les coordonnées de l'entreprise sont pris dans la version figée, jamais dans les données vivantes — c'est une garantie de traçabilité.
Après envoi (contenu figé) :
Tant que le devis est en brouillon ou en état intermédiaire, le bouton PDF n'apparaît pas : son contenu n'est pas encore figé (§10.4). Une fois envoyé, le bouton devient disponible. Si l'URL du PDF est saisie directement sur un devis non envoyé, un message l'indique (aucune erreur serveur).
Sur la fiche du devis, l'historique des versions (v1, v2…) est consultable : chaque version montre le contenu exact envoyé à ce moment-là.
La facturation est le prolongement naturel d'un devis accepté.
Menu Factures → + Nouvelle facture :
BROUILLON → PRETE → ENVOYEE → EN_RETARD → PAYEE
↘ (retour) ↘
BROUILLON ⇄ PRETE ANNULEE (à tout moment)
| État | Signification |
|---|---|
| BROUILLON | En cours de fabrication, modifiable. |
| PRETE | Prête à envoyer, modifiable. |
| ENVOYEE | Envoyée au client : le contenu est figé. |
| EN_RETARD | Échéance dépassée (passage automatique). |
| PAYEE | Règlement reçu. |
| ANNULEE | Annulée. |
Règle d'or : identique au devis. Editable uniquement en BROUILLON/PRETE. Dès ENVOYEE, le contenu est figé (PDF, totaux, TVA, destinataire). Pour la modifier, annulez et créez une nouvelle facture — c'est la garantie de traçabilité d'un document financier.
Après envoi : boutons PDF (téléchargement du document figé, mention d'échéance, numéro du devis d'origine) et Envoyer par email (PDF en pièce jointe, destinataire = la version figée, jamais le client vivant). Chaque envoi est journalisé (Emails) et tracé dans l'historique.
Le bouton PDF n'apparaît que lorsque le contenu est figé (dès ENVOYEE) : tant que la facture est en brouillon ou prête, elle n'a pas de PDF associé (même règle que le devis, §10.3).
Une facture EN_RETARD est mise en évidence (bandeau « RAPPEL » sur le PDF). La bascule ENVOYEE → EN_RETARD est automatique lorsque la date d'échéance est dépassée (commande/boucle de maintenance).
Pour une facture Envoyée ou En retard, le bouton Relancer (fiche ou liste de factures) envoie au client le même PDF figé avec l'objet « Relance de paiement : FAC-… ». La date de dernière relance est affichée sur la fiche, et l'envoi est journalisé dans Emails (historique de relances).
Si la facture n'est pas EN_RETARD alors que l'échéance est passée, la commande périodique s'en charge :
À planifier quotidiennement côté serveur (cron / systemd timer). Seules les entreprises actives sont affectées ; aucun ré-envoi intempestif grâce au délai.
Un point d'export réunit les documents destinés au comptable, accessible depuis Factures → Export comptable :
| Élément | Où | Contenu |
|---|---|---|
| Synoptique annuel (PDF) | bouton « Synoptique PDF » | Total HT/TVA/TTC par mois, ventilation par taux de TVA (base + TVA), encaissement (payées / en attente / en retard, montant TTC). Choisir l'année en haut de page. |
| Export CSV | bouton « CSV des factures » | Une ligne par facture : numéro, date émission, échéance, client, statut, HT, TVA, TTC, devis d'origine, devise. Séparateur ;, UTF-8 (compatible tableur). |
Règles : les factures annulées sont comptées mais exclues des montants
(coches * dans le PDF) ; les montants sont en Decimal arrondis à deux
décimales ; chaque ligne figeant sa TVA, une modification ultérieure d'un taux
ne change pas l'historique.
Depuis Factures → Déclaration TVA, sélectionnez une période (mois ou trimestre) pour afficher la synthèse :
Les factures annulées et les commandes annulées / brouillon sont exclues. Les taux sont ceux figés sur chaque ligne au moment de l'émission (§9) — la modification ultérieure d'un taux ne change pas cet historique.
Exports :
- CSV : bouton « CSV » — format comptable (;, UTF-8 avec BOM).
- PDF : bouton « PDF » — document A4 synthétique avec les deux tableaux
et la TVA nette en encadré.
Réglages → Facture électronique connecte QUOTELUI à la plateforme de dématérialisation (PDP) choisie par l'entreprise :
https://…), identifiant expéditeur, case
activée, et soumission automatique à l'envoi (best effort : un
échec est tracé mais ne bloque jamais l'envoi de la facture).GET {base}/health (test de connexion),
POST {base}/invoices (soumission), GET {base}/invoices/{id}
(acquittement).POST {base}/oauth2/token (si OAuth),
GET {base}/v1.beta/companies/me (test de connexion — renvoie aussi votre
dénomination sociale, preuve que les identifiants sont bons),
POST {base}/v1.beta/invoices avec le document XML brut, puis
GET {base}/v1.beta/invoices/{id} pour l'acquittement.
Saisissez l'URL de base (SUPER PDP : https://api.superpdp.tech, déjà
pré-remplie) — l'application ajoute elle-même les chemins. Vous pouvez même
coller une URL complète (…/oauth2/token, …/health, …/invoices,
…/v1.beta) : la fin inutile est retirée automatiquement, jamais de chemin
en double. En cas de 404, le message affiche l'URL exacte testéeet la
liste des chemins réellement appelés : c'est presque toujours une URL de base
erronée.docs/deployment.md §5 bis, jamais dans
l'interface) : manage.py update_compliance installe le pack sans
redéploiement de l'image (données seules, contrôle sha256) et
manage.py check_updates annonce une nouvelle version de l'image.
Hors-ligne : cache local, sinon pack intégré à l'image.Qui pilote la connexion ? Deux options :
Sur la fiche d'une facture (figée / envoyée) : un bloc « Facture électronique (PDP) » liste les soumissions avec le retour de la plateforme : SOUMISE / EN_ATTENTE / ACCEPTEE / MISE_A_DISPOSITION (mise à disposition chez le destinataire) / REJETEE / ECHEC, plus l'identifiant message PDP, la date de soumission et le détail (couleur : vert = accepté, violet = remis au destinataire, rouge = rejet/échec, ambre = en attente) avec :
invoice.send) ;invoice.view).Lire un refus de la plateforme — le message affiché indique la conduite à tenir :
La colonne « retour » affiche, sous le message, la réponse telle quelle de
la plateforme (plateforme : …) : c'est l'état déclaré par la plateforme, même
si notre vocabulaire ne le connaît pas encore (codes métier propres au fournisseur).
API : POST /api/invoices/{pk}/electronic/ et
POST /api/invoices/{pk}/electronic-status/.
Le relevé (métier) est le document de terrain réalisé par le technicien avant
élaboration du devis. Il est cloisonné par métier : Survey.module_key
(choisi à la création, parmi les modules activés) impose côté serveur les
types/produits acceptés — un relevé menuiserie refuse un produit plomberie,
web comme API. Les champs proposés dépendent du métier car ils viennent des
schémas d'attributs du catalogue (ProductType → AttributeSchema) :
CHOICE → boutons radio, BOOLEAN → Oui/Non,
numérique → saisie nombre, TEXT/DATE en dernier recours.hauteur→H, largeur→L,
diametre→Ø, mm déjà posés) ; les types ronds (gouttière,
fenêtre ronde) n'exposent que Ø.Measurement (clés canoniques, quantité
du devis V2.6 intacte), reste → CustomField, produit → SurveyItem.product
et SurveyItem.product_type. Obligatoires vérifiés ; l'ajout est atomique
(un refus ne laisse aucun élément).TERRAIN → VALIDE → BUREAU → EN_VERIFICATION → CLOTURE
↕ ↕ ↕
retours possibles (VALIDE → TERRAIN, BUREAU → VALIDE)
| État | Qui | Rôle |
|---|---|---|
| TERRAIN | Technicien | Saisie autorisée : éléments, mesures, champs, photos, observations. |
| VALIDE | Technicien | Relevé relu et validé par le technicien. |
| BUREAU | Commercial/Manager | Traitement au bureau (élaboration du devis). |
| EN_VERIFICATION | Bureau | Vérification finale. |
| CLOTURE | Tout le flux | Terminé — plus aucune modification. |
| ANNULE | — | Relevé abandonné. |
Règle : seul un relevé au TERRAIN est modifiable. Les retours permettent de renvoyer un relevé en arrière sans jamais perdre son historique.
TEXT). L'unité vient du schéma : jamais d'unité à taper.update_dimensions, refus des clés inconnues, champ vide =
inchangé). Aucune mesure libre sur un relevé cloisonné.
Le formulaire Mesures libres (libellé + valeur + unité, unité résolue
et créée à la demande, clé facultative — §11.3) reste réservé aux relevés
génériques.Les relevés génériques (créés sans module, data legacy ou API) gardent le comportement historique : libellé libre, aucun filtre.
La suppression est gérée en « corbeille » : un relevé supprimé reste traçable dans l'historique et restauré si besoin par l'administrateur (il garde son numéro).
Chaque mesure possède un libellé (« Hauteur baie ») et une clé
technique : un mot court en minuscules, sans accents ni espaces (ex. largeur,
hauteur, surface).
largeur, hauteur, diametre) — aucune saisie ;
la quantité du devis (V2.6) retrouve la mesure sans ambiguïté.largeur,
« Hauteur baie » → hauteur-baie). Si une telle clé existe déjà sur le même
élément, la seconde reçoit un suffixe (largeur_2) — jamais d'erreur.surface, ml, debit).Le rôle de la clé est de relier la mesure au reste de l'application :
surface pour un tarif au
m², ml pour un tarif au mètre linéaire).| Vous saisissez | Clé produite (si vide) | Effet sur le devis |
|---|---|---|
| « Surface » 1,5 m² | surface | devient la quantité d'une ligne tarifée en m² |
| « Longueur » 4 ml | longueur | devient la quantité d'une ligne au mètre linéaire |
| « Remarque » 2 | remarque | descriptive uniquement |
Astuce : pour forcer la liaison avec un tarif, utilisez précisément la clé de l'attribut de quantité définie dans Réglages → Tarifs (pose) (§13 bis).
Chaque liste (devis, clients, chantiers, relevés, produits) peut être parcourue via Recherche (§6) ou directement sur les cartes du tableau de bord.
Réglages (menu) permet de configurer l'entreprise, avec effet immédiat sur les nouveaux devis (l'envoi fige ces informations dans la version) :
| Paramètre | Effet |
|---|---|
| Logo de l'entreprise | Votre propre logo d'artisan, affiché en en-tête des PDF de devis (et uniquement là — jamais dans les emails, et distinct du logo applicatif QUOTELUI). Sans logo, le PDF affiche à la place une case avec le nom de l'entreprise. Il est figé dans le devis à l'envoi. |
| Adresse (rue, code, ville, pays) | Affichée sur les PDF et les emails. |
| Nom commercial / SIRET / TVA intracom. | Identité légale de l'éditeur. |
| Conditions de règlement | Figées sur le devis. |
| Conditions générales (CGV) | Textes des CGV figurant sur le devis. |
| Numérotation des devis | Modèle par défaut DEV-{year}-{seq} (modifiable). |
| TVA par défaut des lignes | Préremplie sur les nouvelles lignes. |
| Durée de validité | Date de validité proposée automatiquement. |
| Couleur de marque | Utilisée dans l'interface. |
| Email de contact (PDF) | Pied de page des devis/factures/livraisons (« Toute question sur ce devis : … »). Défaut contact@quotelui.fr ; figé à l'envoi. |
Configuration par entreprise : chaque société conserve ses réglages. Un réglage ne modifie jamais un devis déjà envoyé (celui-ci est figé).
À noter : si l'entreprise ne possède encore aucun taux de TVA, QUOTELUI crée automatiquement les taux standards français (20 %, 10 %, 5,5 %, 2,1 %) à l'ouverture des Réglages et fixe la TVA par défaut à 20 % — cela évite le message « Chaque ligne doit figer son taux de TVA » lors de la création d'un devis depuis un relevé (§13 ter).
Réglages → Notifications (V2.13) configure un digest d'alertes par email : destinataires (séparés par des virgules) et catégories à inclure (devis, factures en retard, stock bas, relances commerciales, relevés, licences). L'envoi est déclenché par une commande périodique (voir §13 octies).
Réglages → Tarifs (pose) (Admin) permet de constituer un référentiel de prix par type de produit : pour chaque type du catalogue (fenêtre, porte, pose…), vous enregistrez une prestation type avec son prix unitaire HT.
Quand un commercial ajoute une ligne de devis et choisit un produit du catalogue, l'application propose automatiquement :
Le tarif proposé reste modifiable : le commercial peut valider, corriger le prix ou la quantité avant l'ajout de la ligne. La proposition ne modifie jamais le devis elle-même.
Points de fonctionnement :
Un relevé de chantier peut devenir un devis en un clic :
link_item_product — produit actif de la
même entreprise, type cohérent avec l'élément, métier du relevé sur un
relevé cloisonné). L'élément affiche alors « · produit : … ». Un élément
typé sans produit (« Pas au catalogue ») reste chiffrable via la
règle du type (rule_for_product_type).surface en m²),
sinon l'attribut du référentiel, sinon 1 ;Points importants :
rule_for_product_type). Un élément typé sans
produit ni tarif fait échouer la génération avant toute création de
devis, avec la liste exacte des éléments en cause et le remède (relier un
produit ou créer un tarif). Les éléments génériques sans produit
restent ignorés (legacy V2.6).Stock dans le menu permet de suivre les quantités par produit (Manager+ pour les mouvements, tous les rôles en lecture).
Le stock est organisé en dépôts (dépôt principal, atelier, camion…) :
Fournisseurs (menu) : fiches d'achat (coordonnées, conditions de règlement, délai indicatif) et tarifs d'achat par produit (prix d'achat, référence fournisseur). La gestion est réservée aux rôles Manager+ ; les autres rôles consultent. Une fiche affiche aussi l'historique de ses commandes.
Commandes (menu) gère les bons de commande (BC-YYYY-NNNN) :
BROUILLON → ENVOYEE → CONFIRMEE → PARTIELLEMENT_RECUE → RECUE
ANNULÉE (depuis tout état non reçu)
Livraisons (menu) gère les bons de livraison (BL-YYYY-NNNN) — utiles
pour tracer ce qui est réellement remis au client, indépendamment de la
facturation.
BROUILLON → PARTIELLEMENT_LIVREE → LIVREE
ANNULÉE (depuis BROUILLON / PARTIELLEMENT_LIVREE)
Affaires (menu) pilote le pipeline commercial avant le devis.
Réglages → Notifications (Admin) active un digest d'alertes envoyé par email : destinataires et catégories à inclure (devis, factures en retard, stock bas, relances commerciales, relevés, licences).
Sous-traitants (menu) gère les artisans externes à qui vous confiez des parties de chantier.
Le système supporte 6 devises : EUR (€), CHF (franc suisse), USD ($), GBP (£), CAD (dollar canadien), XOF (franc CFA).
currency disponibles.Règle : la devise est un label d'affichage. Tous les calculs (restes à payer, reporting, totaux) sont dans la devise d'origine du document. Le change sera une phase ultérieure si besoin.
Chaque chantier dispose d'un espace documents & photos accessible depuis la fiche chantier.
/chantiers/<pk>/documents/) : liste, upload (PDF, Excel,
Word…), catégorie (Devis signé, Facture, PV, Assurance, Autre),
suppression. Chaque document est versionné (V1 → V2 → …)./chantiers/<pk>/photos/) : galerie avec aperçu (thumbnails
auto-générés), upload (JPEG/PNG/WebP), suppression.Aucune migration — tout repose sur le GFK existant (Document + MediaItem).
Planning dans le menu ouvre un calendrier hebdomadaire qui regroupe automatiquement tout ce qui a une date, sans rien à saisir en plus :
| Source | Date utilisée |
|---|---|
| Chantiers | Date de début du chantier (les personnes affectées sont les techniciens). |
| Relevés | Date de relevé prévue (TERRAIN). |
| Activités | RDV, visites, appels à faire (CRM). |
| Livraisons | Date de livraison (non annulées). |
Fonctionnement :
?start=AAAA-MM-JJ.Le planning est en lecture seule : il se remplit à partir de la date de début des chantiers (§8), de la date des relevés (§11) et des activités (§13 septies). Pour faire vivre l'agenda, renseignez ces dates au quotidien.
Aucune migration : le planning ne fait que lire des objets existants.
Administration → Membres gère les comptes de l'entreprise.
Chaque ajout/retrait/changement de rôle est journalisé dans l'audit.
Quotas par rôle : par entreprise, le nombre maximal de comptes actifs
est limité par défaut à 1 ADMIN, 1 MANAGER, 1 COMMERCIAL, 3 TECHNICIEN
(LECTEUR et EDITEUR illimités). La règle est appliquée côté serveur dans
add_member (ajouts ET changements de rôle) — un dépassement produit un
message clair, jamais une erreur 500.
editeur/<pk>/membres/, PUBLISHER_LICENSE_MANAGE) : champ Maximum
par rôle (vide = défaut, nombre = quota, case Illimité = aucun quota).
Stockage : Company.member_limits (JSON, migration companies/0006),
lecture via apps/companies/limits.py (member_limit / check_member_limit
/ set_member_limits).Administration → Modules active les spécialités de l'entreprise.
| Module | Types de produits injectés |
|---|---|
| Menuiserie | Fenêtres, portes, portes-fenêtres, baies vitrées, portails, volets, stores, accessoires, pose. |
| Plomberie | Robinets, mitigeurs, lavabos, WC, chauffe-eau, chaudières, radiateurs, pose plomberie. |
| Chauffage | Pompes à chaleur, poêles, sèche-serviettes, planchers chauffants, ventilo-convecteurs, ballons thermodynamiques, régulation, pose chauffage. |
| Électricité | Tableaux, disjoncteurs, interrupteurs, prises, luminaires, détecteurs ; prestations : préparation et passage des câbles, pose des appareillages, compteur et tableau électrique, mise en sécurité et fin de chantier. |
| Couverture | Tuiles, ardoises, bac acier, zinc, gouttières, isolation, étanchéité ; prestations : dépose, pose, reprise faîtages/noues. |
| Carrelage | Carrelage sol/mur, faïence, tomettes, parquet, plinthes, joints, préparation des supports ; prestations : dépose, pose, joints. |
| Peinture / Plaquiste | Plaques de plâtre, doublage, cloisons, plafonds, enduits, peintures, papiers peints ; prestations : pose, enduits, peinture. |
| Maçonnerie | Parpaings, bétons, dalles, fondations, murs, crépis, clôtures, terrasses ; prestations : fondations, élévation, dalles, crépis. |
Selon l'installation, les modules peuvent être verrouillés : seuls les métiers livrés d'office (Menuiserie) se passent de clé. Pour activer un autre métier (Plomberie, …), il faut la clé d'activation fournie par ton installateur :
Historique (menu, Manager+) journalise toutes les opérations importantes de l'entreprise :
Filtres et export :
Le journal est filtré par entreprise : rien ne fuite entre deux sociétés.
Emails (menu, Manager+) montre qui a reçu quoi et quand, avec le statut de chaque envoi.
Envoyé / Échec + erreur détaillée en rouge).Tant que la case « Activer cette boîte » est cochée, les envois passent
par cette boîte. Sinon, l'application utilise la configuration serveur
(variables d'environnement EMAIL_*, ou journal console en développement).
| Variable | Exemple (Gmail) | Exemple (OVH hébergement) |
|---|---|---|
EMAIL_BACKEND | django.core.mail.backends.smtp.EmailBackend | idem |
EMAIL_HOST | smtp.gmail.com | ssl0.ovh.net |
EMAIL_PORT | 587 | 587 |
EMAIL_HOST_USER | mon-artisan@gmail.com | contact@mondomaine.fr |
EMAIL_HOST_PASSWORD | mot de passe d'application | mot de passe de la boîte |
EMAIL_USE_TLS | True | True |
DEFAULT_FROM_EMAIL | QUOTELUI <mon-artisan@gmail.com> | QUOTELUI <contact@mondomaine.fr> |
Gmail impose « mot de passe d'application » (2 étapes l'activation requise). Sans SMTP configuré (mode développement/démo), les emails sont imprimés dans le journal du serveur et marqués « Envoyé » — rien ne part réellement.
Les emails envoyés avec le devis (PDF en pièce jointe) utilisent l'email du client figé dans la version envoyée, jamais le client mis à jour ensuite.
Parcours de bout en bout sur l'entreprise de démonstration « Artisan Démo SARL »
(compte admin@demo.artisan-engine.fr / demo-artisan-2026!), montrant qu'un
même devis cumule des cotations de plusieurs modules métier.
http://<IP-du-PC>:8000, même Wi-Fi, §1).Produits (menu). Les 8 modules sont activés
sur cette entreprise (Administration → Modules) ; vous y retrouvez les produits
de chaque métier : fenêtres (Menuiserie), PAC (Chauffage), disjoncteurs
(Électricité), tuiles (Couverture), parpaings (Maçonnerie), grès cérame
(Carrelage), peinture (Peinture).Devis → bouton Nouveau devis avec le chantier
visé. La création reprend l'exemple prêt à l'emploi DEV-2026-0007 :
11 lignes couvrant 7 modules, chacune avec sa TVA figée (fenêtre 5,5 %,
PAC et disjoncteurs 20 %, tuiles/parpaings/carrelage/peinture/main-d'œuvre 10 %),
totaux HT / TVA / TTC affichés (17 580 € TTC).<BROUILLON> (ou A_COMPLETER) vers
PRET, puis Envoyer : le contenu est figé dans une version (v1 → v2 …),
le PDF est généré (bouton PDF) et envoi par email possible (Envoyer).
Une fois envoyé, plus aucune ligne n'est modifiable sans créer une nouvelle
version (retour EN_REVISION).Relance : depuis un devis ENVOYE, le bouton Relancer renvoie le même
PDF figé au même destinataire (objet « Relance : … »), journalisé dans
Emails (§15 bis).
la relance peut être automatisée par la commande périodique :
| Commande | Effet |
|---|---|
| Relance automatique tout devis envoyé il y a plus de 30 jours sans réponse, sauf si relancé depuis moins de 7 jours (délais ajustables). Mode simulation disponible. |
Seules les entreprises actives sont affectées ; aucune version n'est créée (le PDF figé d'origine est renvoyé).
7. Relevé de chantier : ouvrez Relevés → RELEV-2026-0003 (statut VALIDE,
workflow §11) : l'item « PAC air-eau » porte des mesures (surface 85 m²)
et des champs spécifiques au métier Chauffage §15 (pièces, énergie,
mode d'émission) ; l'item « Tableau existant » porte des champs
Électricité (prise de terre, puissance souscrite). Même relevé, deux
métiers : les champs proviennent des schémas de chaque module actif.
8. Historique : ouvrez Historique (§15) : l'envoi du devis, le changement
d'état du relevé, l'activation des modules et la création des produits y sont
tracés.
À retenir : rien n'est codé « métier » dans le moteur. Les modules contribuent uniquement des données (types de produits, attributs, champs de relevé). On peut donc librement mélanger Menuiserie, Plomberie, Chauffage, Électricité, Couverture, Carrelage, Peinture, Maçonnerie — sur le même devis comme sur le même relevé — et désactiver un module sans jamais perdre l'historique.
| Problème | Solution |
|---|---|
| « Connexion refusée » | Vérifiez email + mot de passe (le ! final compte). |
| Impossible de modifier un devis | Le devis est envoyé (figé) : repassez en EN_REVISION pour créer une nouvelle version. |
| Un champ métier manque dans le relevé | Le module du métier est peut-être inactif : activez-le (Administration → Modules). |
| Le PDF/email ne fonctionne pas | Le devis doit d'abord être envoyé (contenu figé). Pour l'email, le client doit avoir une adresse email. |
| Un devis est « expiré » | Sa validité est dépassée ; relancez via EN_REVISION (nouvelle version) avec une nouvelle date. |
| Bouton d'administration absent | Vous n'avez pas le rôle ADMIN dans cette entreprise. |
Lorsque vous envoyez un devis par email, un lien de signature est inclus dans le message (vert, bien visible). Le client peut :
Comment ça marche :
| Étape | Action |
|---|---|
| Envoi | Le lien est ajouté automatiquement à l'email de devis (ou relance). |
| Fiche devis | Le bloc Signature électronique affiche le statut (« En attente » / « Accepté le … » / « Refusé le … ») et un bouton Copier le lien. |
| Décision | Le lien mène à une page claire : résumé du devis + 2 boutons (Accepter / Refuser). La page est lisible même sur smartphone. |
| Après | Le statut passe à ACCEPTE ou REFUSE. L'historique montre « Accepté le 12/09/2026 à 14:30 · IP 203.0.113.7 ». |
Points importants :
QUOTELUI est une plateforme métier : chaque entreprise utilise son propre compte et reste responsable de traitement des données qu'elle y enregistre (clients, chantiers, devis…).
Ce qui est réellement mis en œuvre (mesures techniques) :
Droits des personnes (RGPD) : accès, rectification, effacement, limitation, portabilité et opposition s'exercent auprès de l'entreprise qui traite vos données (votre artisan/client) ; l'éditeur QUOTELUI est sous-traitant et applique ces demandes transmises par l'entreprise.
Politique complète : application → « Confidentialité » (page
/confidentialite/, visible dès la page de connexion, sans compte) et
Mentions légales (/mentions-legales/).