🍩 Synthèse 2/9/26
🍩

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

💡

Certains notes et fichiers sont disponibles sur la base de prod du client société sainte-anne :

L'app de configuration sur la base de client : https://earl-ste-anne.odoo.com/odoo/m-x_configuration_person/1?debug=1

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)).
💡

Les employés en caisse utiliseront la caisse et TF pour piloter la pesée (= noter client/fournisseur + produit ou appeler une commande Odoo)


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

  • 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...)

        💡

        réflexion avec Emilien : dissocier la notion de livraison (native Odoo qu'on ne toucherait pas et on utliserait les reliquats avec à chauqe fois la même manip pour le livreur) et le planning ou on pourrait spliter les livraisons par ressources.

        Une commande nécessite un "acte de livraison (interne ou via transporteur" dès lors qu'il y a un produit de livraison.) Un act de livraison est un produit dans une catégorie adhoc.

        Fait une code qui lève une ereur si l'adresse de livraison n'est pas une société du groupe ou enfant de cette société et si pas de frais de livraison

        Si ce produit de livraison est dans la commande, quand la date de livraison souhaitée sur la SO (cf ci-dessous) est initiée ou quand la date de livraison du BL est touchée (la première fois) créer le slot de planning (et le lier en smart button à la SO)



    • 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.

  • 💡

    a ce stade les champs sont posés sur Sainte Anne je pense. (ou sur toutes les sociétés)


  • 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 (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é) 

💡

EM 2/9/26 : ne pas implémenter à date. Pas sur que ce soit utile/gérable/utilisé

  • 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.


FIN DE RELECTURE AU 2/9/26 Manu


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.

💡

À valider — toute la partie transport est complexe : on part sur des maquettes. Structure de la vue FRET, statuts, automatisme SO→PO, regroupements et options (montagne, heure H, hayon) figés après maquettage.







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.