Synthèse d'intégration Odoo — Magasin Résilience / EARL Sainte Anne / BBSA 2/9/26
conversation CLAUDE : https://claude.ai/share/b967094d-00c2-4dec-8c9c-821e5b71ace3
EXCALIDRAW Dispo au 3/9/26 : https://excalidraw.com/#json=ja_QPXmmaT068-y_ABHPW,R35sVacrp3ltuTojPK6DzA
EM : Emmanuel
TF = TruckFow
FSM = Field Service Management = Service sur Site sur Odoo
Voici la synthèse à jour, avec les trois corrections intégrées (FSM gazon conservé, vente gazon côté Magasin / EARL fournisseur, coexistence transport interne + affrété). Copiable telle quelle dans Connaissances.
Cadre et structure cible
Sociétés
Base Odoo.sh unique, multi-sociétés, users peu à l'aise → ergonomie anti-erreur partout (sélection non ambiguë, radios obligatoires, saisie libre minimisée, automatisations qui rattrapent les oublis).
- MAGASIN « Résilience » = entité opérationnelle : achète, vend, pèse, porte Truckflow + le pont bascule, facture les clients finaux, tient la caisse (POS). Porte toute la vente gazon (y compris aux revendeurs/paysagistes) et le FRET. Cible « jardinerie ».
- EARL Sainte Anne = fournisseur du Magasin, strictement : produit le gazon (et le vend au Magasin/Résilience) et garde les grandes cultures (blé/maïs/soja/colza/orge). La production gazon (FSM) est côté EARL.
- GDH (Gazons de la Hardt) = nom commercial
- BBSA = Bois Buche Sud Alsace : à voir si l'entité continue
Contrainte structurante : « les structures changent à la marge » → modéliser pour absorber le basculement sans reconstruction :
- société vendeuse identifiée proprement
- produits/tiers non dupliqués (note EM : attention, ils adorent trouver des noms de produit à al vente très spécifiques)).
SPECIFICITES DE FACTURATION
- SAINTE ANNE : AUTOFACTURATION a activer
- Grandes cultures (EARL) : achat intrants + vente coopérative Colmar en autofacturation (poids = pont bascule de la coop, pas de pesée TF chez nous).
- ACTIVER : Collectivités → Chorus Pro (géré à part).
- Facturation inter-company câblée : la vente EARL→Magasin génère l'achat côté Magasin.
- SI client Suisse :
- dédouanement
- incoterm
- code douanier
- origine UE
- signature facture
- droit de douane
- passeport phyto
- poids sur facture
- = Comptes : KM Top Gardening, Real Sport SA, Peter Nussbaumer, Eric Schweizer, Omya/OHS, W&E Garten, Advan.
Planning
Plusieurs plannings distincts :
- Côté EARL :
- production gazon (en FSM) côté EARL, déclenchée par la commande via l'intercompany

- production gazon (en FSM) côté EARL, déclenchée par la commande via l'intercompany
- Côté Magasin :
- commandes (gantt sur SO déjà en place pour partie notamment sur staging)
- + livraison (et retrait) (à réfléchir car les découpages en +sieurs livraisons peuvent varier, ne sont pas toujours connus à l'avance...)
- + livraison (et retrait) (à réfléchir car les découpages en +sieurs livraisons peuvent varier, ne sont pas toujours connus à l'avance...)
- une commande va générer par exemple une livraison de bois. Mais en réalité, il y aura peut être 3 trajets et il faudrait que :
- soit on prédécoupe automatiquement (selon des capacités/nombre des camions, indépendemment de leur dispo) et le client peut corriger manuellement
- soit le client peut indiquer "splitter la livraison en 3 avec 1 fois le camion 6,5tonne, et 2 fois le(s) camion(s) de 3,5to)
Vue SO
Les champs barrés ne sont pas à reprendre en SH.
Pour moi on fait ça :
et le champ date de livraison souhaitée doit venir mettre à jour les champs scheduled_date et date_deadline du/des BL liés à la SO.
Référentiel tiers
- Multi-strate (tout côté Magasin) : facturé (revendeur, ex. NATURALIS, Rhenalliance, ou EN DIRECT) → paysagiste → client final (chantier). En Odoo : facturé = partner natif, adresse de livraison = chantier natif, plus des champs dédiés sur la SO.
Structure sur la SO gazon (validé) :
- Client = champ natif (partner_id) — le facturé.
- Paysagiste = champ supplémentaire (M2O res.partner, type paysagiste).
- Adresse de livraison = champ natif — le chantier.
- Client final = champ supplémentaire.
- Personne qui vient chercher le gazon (si retrait) = sur la SO repris en champ lié modifiable sur le fsm
à date du 2/9/26 sur la base client
- A ajouter sur les contacts / partner odoo :
- Types de contact (sélection/catégorie sur res.partner, sur le modèle du transporteur) : paysagiste, client final, transporteur. pour mettre des domaines sur les champs ci-dessus
- Attributs portés par le client livré :
- type de camion (gabarit)
- hayon oui/non (repris à la livraison / FRET).
- Plaque immatriculation des clients et fournisseurs et transporteurs = champ sur le contact Odoo qui sera synchro avec TF.
- Autres remarques n'influençant pas la structure Odoo a priori
- Qualification = Pro / Particulier standard Odoo.
- Distingo Pro/Collectivité/Particulier visible dans TF : en suspens.
Homonymes: immatriculation (retrait) + adresse/tél (livraison) → particuliers individualisés dans TF (fin du bucket « CLIENT + matière »).oui mais ça ne nous intéresse pas vraiement pour odoo- Noms pro proches (« vert idéal » vs « idéal vert ») → discriminant fort (ville, SIREN) dans les listes.
- Tutelle/curatelle (BBSA) → facture au tuteur (adresse facturation ≠ contact).
- Anti-doublon au push Odoo→TF : créer si absent ; watchdog transactionnel SQL TF en suspens (tech).
Référentiel produits
- Booléen « pesé au pont bascule » (radio obligatoire à la création) — ≠ « vendu au poids ». qui existe déjà a priori
- a poser sur la catégorie et à redescendre sur le produit
Gammes PESÉES pont bascule (→ TF) : substrat (terre végétale, mélange terre-compost), amendement (compost déchets verts), paillage organique (plaquettes bois, aire de jeux NF EN 1176), cailloux TP (concassé 0/20, 4/6, 10/14, sable), paillage minéral/déco (ardoise 15/30 30/60, granite 40/60, gris veiné blanc, ice field, beige du jura, pouzzolane), valorisation déchets en ENTRÉE (déchets verts, souches, terre), bois bûche repris BBSA (B40/B33/B25).
Gammes NON pesées TF :
- Gazon naturel au m² (rouleau 38 cm × 1,90 m = 0,72 m² ; palette 60 m² max). Variantes : dalle épaisse, savewater golf.
- Engrais et semences : petite balance homologuée, exclus de TF, déconditionnés vendus au seau, facturés au poids réel saisi en caisse.
- Terreaux & Co (sac), Fruits & Légumes (panier), Plantes, Autres (épandeur, gants, géotextile, bordures, sel, bacs, tondeuse…), Allumage BBSA (bobines 30/60, bois d'allumage 30 L, sapins, bâches, billots).
- Pluviomètre, rouleau tasseur (compléments emportés avec le gazon).
Points produit :
- Unité bois/vrac = tonne, prix €/tonne, précision au kg. Stères = expression client uniquement (= on s'en sert pas dans Odoo) (densités B40 320 / B33 300 / B25 280 kg ; terre criblée 1 m³=1,2 t ; mélange 1 m³=1 t). Poids variable humidité (bois).
- Big bag : « vendu au poids » = pesé pont bascule (TF) ; « à l'unité » = poids figé, hors TF. Les deux coexistent.
- Facteur de conversion m² → nb de palettes sur l'app de configuration (rouleau ≈ 50 m²/pal, dalle épaisse ≈ 20 m²/pal). Sert au FSM et au transport.
- (pas pour le moment) Production interne = OF (compost, terre criblée, mélange, mise en big bag/seau). Porteur EARL ou Magasin : en suspens.
- Catégorisation produit structurante : pilote la substitution même catégorie à la pesée.
- Diversification 2027 (synthétique, biostimulants, biocontrôle, arrosage, robotique, minéral déco, univers du feu) → catégories dès maintenant.
- Interdire suppression produit (UserError → archiver) ; actif/inactif propagé à TF.
Parcelles (= les parcelles où le gazon pousse et est déplaqué)
- Modèle Studio dédié « Parcelle » (nom + coordonnées GPS + société), pas un type de contact (retenu, à confirmer).
- Parcelles connues : Indiana (Réguisheim), Montana & Dakota (Meyenheim), Rue de Munchhouse (Réguisheim).
- Référencée comme origine de chargement sur la commande / le FSM / le transport.
Interface Truckflow ⇄ Odoo
Odoo → TF (le Magasin pilote) :
- Produits : export API horaire, seuls les flag pesable ; mapping nom→libellé, ID→code produit + ID_ODOO, actif→est actif.
- Tiers : export horaire, exclure les personnes physiques rattachées à une société ; mapping nom→libellé, ID→code tiers + ID Odoo, adresse→Adresse 1, + plaque.
- Commandes : export FTP toutes les 5 min. SO confirmées avec produit pesable, modifiées <1 j ; actif=False si livraison > J+48h OU entièrement facturée OU statut ≠ commande ; sinon actif=True. PO idem (réception > J+7 ou reçue).
- Multi-produits pesables → découpe en une ligne badge par produit.
- Mapping badge : n° SO/PO (2 champs), client→code tiers, produit→code produit, société→code société (Magasin), type (Livraison/Réception), référence = n° SO/PO dupliqué pour ressortir à la pesée. Descriptif TF searchable = client final (proposé, en suspens).
- Odoo pilote annulation/report/modif ; TF n'écrit que les pesées.
TF → Odoo : pesées au fil de l'eau, dédoublonnées sur l'ID de pesée TF.
Pesées : traitement dans Odoo déjà fait en partie
Anomalie → alerte à un user défini en config.
Expédition (P2 > P1) : commande sélectionnée → MAJ ligne produit pesé ; substitution même catégorie (produit + quantité = poids net) ; pas de commande = drive/retrait → créer commande avec produit pesé + plaque ; poids → qté livrée du transfert.
Réception (P1 > P2) : retour client (flag TF) → activité ; livraison fournisseur → PO si existe sinon création (réception sans PO = normal) ; apport matière (déchets verts/terre/souches) → commande CLIENT qté = pesée ; type de flux saisi TF pour la majorité, vient d'Odoo si commande. Case obligatoire conservée.
Sécurisation : double flux (fil de l'eau + contrôle nocturne 72 h, dédup par ID) ; réalité TF (pesée clôturée supprimable, champs libres/produit/chauffeur modifiables mais pas poids/immat/date ; bug doublons ; trous chrono ; pesées manuelles sans DSD) ; modif/suppression a posteriori re-traitée seulement si commande non facturée, sinon alerte ; pesée manquante → créée + flag « importée a posteriori » + aucun traitement auto + mail.
Livraison, voyages et facturation transport — camion Magasin (bois / vrac)
Modèle V1 validé (transport interne, camion Magasin, coexiste avec le FRET affrété) :
- Pas de pré-découpage. Commande = une seule livraison de la qté totale.
- À chaque voyage : pesée → valide la qté livrée → Odoo crée le reliquat (backorder). Autant de BL que de voyages, émergents.
- Un voyage/BL peut porter plusieurs pesées (une par produit) ; une pesée ≠ un voyage.
- Facturation sur le livré (poids réel).
Frais de transport = 2 produits service facturés sur la qté livrée :
- Frais forfait : prix = montant par commune ; qté livrée = nombre de voyages, incrémentée auto à chaque BL ; override foulée→1, geste co→0, voisins→0,5, retrait drive→0.
- Frais au réel : €/tonne, qté = tonnes pesées.
- Montant V1 = table commune→montant (bois : min A/R × 1,45 €TTC + 11,55 €TTC ; vrac 67/68 : grille) + saisie manuelle sur l'exotique. V2 = moteur complet + planning camion (tournées, gestion flotte — cible schéma 2027).
- Capacités (info opérateur) : camionnette 3,5 t → 4 st ; 6,5 t → 8 st B40 / 9 B33 / 10 B25. Pas de tournée en V1 ; livraison sur RDV, créneau 2 h, appel client au départ.
- BL : signature électronique ; retrait en plusieurs fois le même jour = 1 BL / 1 quantité, plusieurs signatures ; chauffeur repart avec BL + attestation bois sec + ticket pesée + ticket/facture.
Gazon — flux commande, production et livraison (côté Magasin, production EARL)
Commande gazon (Magasin) = produit gazon (m², dégressif, palette 60 m² max) + éventuels engrais / pluviomètre / rouleau tasseur (le client emporte le tout) + 1 produit transport. Champs SO dédiés : paysagiste, client final, adresse chantier.
Complément lié : si la qté gazon change et que la commande contient gazon + engrais, la qté d'engrais suit automatiquement.
Production — 1 FSM par commande, généré à la confirmation (validé ; le schéma « module Production + Planning » est corrigé sur ce point). Le FSM (côté EARL, à confirmer) porte : parcelle de chargement, produits à livrer/déplaquer, client, largeur de scalpage, conversion m²→palettes (facteur produit), la personne qui vient chercher (retrait), et 1 BL signé.
Flux tendu / scalpage : « déplaquer » = « scalper » = récolter en plaques juste à temps. FSM « scalpe x m » = instruction de récolte. Totalisateur journalier m² = prod ET sortie. Largeur : une seule documentée (38 cm), autres largeurs à confirmer avant de figer la conversion m²→mètres.
Planning ½ journée (vue de regroupement au-dessus des FSM) : découpé par demi-journée de travail pour produire la tranche correspondante. Le matin produit pour les retraits 10–15h ; l'après-midi pour les retraits 15h → 10h le lendemain. Date de déplaquage < date de livraison de quelques heures ouvrées (veille PM → lendemain AM ; AM → PM). Le tractoriste visualise sa tranche (produits, m², largeur scalpage, clients) et signe 1 BL.
Retrait vs transporteur : indiquer sur la commande/FSM si c'est le client qui vient chercher ou un transporteur (nom). Cas retrait = pas de transport facturé.
Divers : « la pépi » = rab magasin pour compléments dernière minute (2 m²) ; retour rouleaux → ticket d'entrée + avoir/défalque.
Transport affrété / FRET — gazon et vrac sous-traité (côté Magasin, à maquetter)
Modèle distinct du forfait/au-réel : le transport est revendu avec un achat en face (transporteur tiers). Les deux modèles coexistent (interne camion Magasin + affrété FRET).
- Le produit transport sur la SO porte un booléen « est un transport ». À la confirmation → génère un achat (PO) au transporteur.
- Menu / vue FRET = achats filtrés sur « est un transport », mis en forme avec statuts : ok / décalé / annulée / litige, + BL imprimé, sms1 / sms2+vidéo / sms3, water saver.
- Marge = prix de vente transport − (coût transporteur + indexation gasoil %) (colonne écart de l'Excel).
- Colonnes portées (Excel) : transporteur + contact, coût HT transporteur, indexation gasoil %, prix facturé client, écart/marge, département de livraison, haute montagne ×1,5 été / ×2 hiver, facturation heure H (créneau garanti, non facturé si non respecté), véhicule (semi-remorque / porteur / camion grue / porte-char / retrait), hayon oui/non (+ remise si sans hayon), regroupement (n commandes / 1 camion), n° commande(s), jour + heure de chargement, jour + heure de livraison, parcelle de chargement + GPS, adresse de livraison (chantier), contact à prévenir.
- Cas RETRAIT / VFRET = transport 0.
- Regroupement : 1 camion pour plusieurs commandes → répartition (ex. regroupement NATURALIS).
Trois réalités transport coexistent : (1) bois/vrac camion Magasin → forfait + au réel ; (2) gazon / vrac affrété → vente + achat + FRET + marge ; (3) retrait → 0.
Ventes, caisse et facturation
Briques CAISSE (POS, « module Poids de vente ») et FACTURE. Matrice (particulier = pro) : comptant → ticket ; facturé de suite → facture ; non facturé/non réglé → facture fin de mois regroupée.
- Ticket vs facture = choix à l'encaissement, pas un flag tiers.
- 1 ou plusieurs commandes réalisées + ajout possible de produits à l'encaissement.
- Facturation par bon de commande (Thierry Muller…) → BC = référence obligatoire.
- Chorus Pro collectivités.
- Chèque énergie (pas de rendu monnaie) : dû = valeur → ticket mode CE ; dû > → complément multi-mode ; dû < → on charge plus, ou avoir nominatif décrémenté, lettrage auto même partiel, vue de solde simple.
- Prépaiement / acompte : commande + facture d'acompte + pesées sur la même commande. Quality Time = suivi en € (acompte à solder), pas en quota m².
- Multi-mode + échéancier (chèques différés).
- Retours/avoirs : ticket d'entrée → avoir si déjà facturé, défalque du tonnage sinon.
Tarification
- Dégressif gazon ; complément facturé au tarif de la tranche atteinte (200 m² à 4,57 puis +25 m² à 4,57, pas 6,41).
- Remises pro : −5 % gazon, −30 % engrais, −30 % terre/mélange, −10 % cailloux déco.
- Frais cond-log +0,22 €HT/m² (selon compte). TVA transport 10 % défaut, 20 % exception. TVA engrais fausse sur le site → corriger.
| Compte | Gazon €HT/m² | Cond-log | TVA transp. | Note |
| Natura'lis | 2,90 | +0,22 | 20 % | |
| Echovert, Végétal Concept, Design Park, Racine, Viridis, Neoverda, Rhenalliance | 3,20 | 0 | 10 % | |
| Botanic | 3,20 | 0 | 10 % | grille transport dédiée |
| Tranova | 3,20 | 0 | 10 % | |
| Coseec | dégressif GP −5 % | +0,22 | 10 % | |
| LS Paysage (Soane) | 4,35 +0,22 | 5,03 €TTC/m² | ||
| Selprats (golf) | 4,18 | +300 €HT/livr. golf Strasbourg | ||
| Quality Time | 4,40 (≤2500), 4,30 (≥2501) | prépaiement en € | ||
| Thierry Muller | dégressif GP −5 % | +0,22 | 10 % | BC ; grilles tonne |
| Créal Concept | dégressif GP −5 % | +0,22 | livr. 190 / +déch. 250 €HT | |
| Miloc TP | 3,60 +0,22 | |||
| Plaque épaisse | 12 €HT/m² |
Tarifs tonne : Uni Vert (terre 14, mélange 24) ; Paysage d'Ambiance (compost 40, terre 15,27, mélange 21) ; NGE (compost 30) ; Thierry Muller (mélange criblé 20, terre criblée 16,66, terre jardin 8,5, plaquette 40 €HT/m³–123 €HT/t) ; Bourreau (valo 20 puis 10) ; Cimetières américains (terre 20, mise big bag 10, big bag 11 ; camion max 22–24 palettes).
Vrac, substrats et valorisation
- Vente tonne (pont bascule) ou big bag (unité/pesé) ; retrait drive ou livraison.
- Achat tonne + transport sous-traité (Roellinger/Valogreen, Tritter, ONF/Lomont, Tegral/Strohmaier/Bétonrhin/Gravirhin, Sassi/SEPA/Cubik/Amat/Durlinsdorf) ; aire de jeux → normalisation APAVE.
- Valorisation déchets : apport client → presta recyclage facturée à la tonne entrante (sans PO) ; débouché = compost/terre criblée/mélange (OF) ou envoi brut Agro-Logic (Veolia).
- Production compost/terre/mélange/big bag = OF (porteur EARL ou Magasin : en suspens).
Achats et réception
- Pas structurés achat → réception sans PO = normale.
- Planning appro bois : Bûche Jurassienne (Transmat) / Piskorski. Camion FMA = 1 longueur/camion (B40 70/65, B33 75/75, B25 75/85 st). Poids variable humidité.
- Allumage : bobines (Burghart DE, 1 palette/trim., reconditionnée 30/60) ; petit bois (Ougier, 5 palettes/sem.).
- Réception : contrôle qualité+quantité, liaison PO, mise en stock, adéquation facture fournisseur.
Notifications et SMS
- Gazon J+1/J+2/J+3 + variante canicule (bascule manuelle).
- SMS équipe prod quand le client a fini de payer ; identifier ceux qui vont directement à la parcelle.
- SMS/FSM production gazon ; sms1 / sms2+vidéo / sms3 du flux FRET.
- Confirmation commande mail ; appel au départ chauffeur ; mail hebdo Fruits & Légumes.
Prêt et location de matériel
- Bons de sortie/retour ; suivre qui/quoi/quand/retour (épandeur, benne, crible). Identifier palettes et seaux d'engrais.
Stock
- Entrées/sorties en tonne (vrac), unité (big bag/sac), m² (gazon). Poids TF alimente les mouvements. Attention vrac à humidité variable.
Comptabilité, reprise et conformité
- Reprise Evoliz ; FEC/PCG ; RFE / facturation électronique (PA) ; autofacturation grandes cultures ; Chorus Pro ; multi-taux TVA ; bascule POS (caisse LEO 2 non conforme). Pré-comptabilité en amont.
Modules cible 2027
RH (demande d'absence, pointeuse) ; SAV / maintenance ; système Qualité + gestion réclamation ; newsletter / e-mailing / CRM ; discussion / chat ; OAD (tableau de bord, reporting, contrôle de gestion).
Cas particuliers transverses
- Nombre de personnes dans le véhicule (diffère P1/P2) → alerte TF (feature à demander).
- Salarié A pèse P1 / salarié B pèse P2 + encaisse → traçabilité opérateur.
- Mauvaise pesée / oubli → correction à réconcilier.
- Réclamations ; envois postaux engrais ; opération terreau Réguisheim (bons mairie → facturer commune) ; code promo.
Points à valider / en suspens
Transport (prioritaire — on maquette) : structure vue FRET + statuts, automatisme SO→PO « est un transport », marge/indexation gasoil, regroupements, options (montagne, heure H, hayon, véhicule). Figé après maquettes.
Gazon / structure :
- GDH = nom commercial d'EARL Sainte Anne (à confirmer / entité distincte ?).
- FSM côté EARL (production) piloté par la commande Magasin via intercompany : découpage commercial Magasin / production EARL à confirmer.
- Champs SO dédiés (paysagiste, client final) : intitulés/comportement à préciser.
- Personne qui vient chercher : sur le FSM (retenu) → à confirmer.
- Parcelle : modèle Studio dédié → à confirmer.
- Largeur(s) de scalpage : confirmer qu'il n'y a que du 38 cm.
Truckflow : hiérarchie multi-strate (commande = pont, tiers TF = facturé, client final searchable) non validé ; distingo PRO/COLLECTIVITÉ/PARTICULIER visible ; descriptif searchable ; alerte nb personnes ; watchdog anti-doublon SQL.
Autres : reprise du bois BBSA ; porteur production compost/terre/mélange (EARL/Magasin) ; fusion auto de 2 lignes même produit sur un BL ; règle générale « facturer le facturé / direct selon produit » (type UJMD).
C'est prêt à coller. Quand tu veux, on attaque le maquettage FRET.