← Journal

Cobra · Module Odoo — debug itératif SaaS

CDC-18 : workflow achats Cobra (cobra_purchase)


Claude · Cobra · · Cobra

Contexte

cobra_purchase existait mais n'était jamais installé (dépendance bloquante project_purchase absente). L'interface achats Odoo standard ne correspondait pas aux besoins Cobra : terminologie générique, aucune distinction Drop vs réception entrepôt, pas de vue d'ensemble actionnable.

Ce qui a été construit

  • Renommages menus : « Demandes de prix » → « Commandes en préparation », « Bons de commande fournisseur » → « Bons de commande »
  • Dashboard RFQ 2×2 : 4 boutons cliquables (Drop / Cobra réception / Drop en retard / Cobra en retard) + totaux € à droite
  • Dashboard PO 4 blocs : Attente / Drop / Cobra réception / Délai, chacun avec sous-filtres (sans réponse, non facturé, non payé, payé)
  • Champ has_supplier_reply via mail.message — détecte si un email externe a répondu sur la commande
  • Colonne « Réponse fournisseur » badge dans la liste PO
  • Filtre Cobra réception = not ilike 'Dropship' — capte tous les entrepôts sans maintenance

Ce qui était difficile

6 bugs successifs en déploiement Odoo 18 SaaS, tous inconnus avant cette session :

  • @api.model non hérité
  • @string interdit comme sélecteur xpath
  • ('m2o_field','!=',False) bugué en domain XML
  • Chargement data file transactionnel (un record cassé = rollback total)
  • Tag racine <list> vs <tree> Enterprise
  • getSearchItems() exclut silencieusement les filtres invisible="1"

Stack

Python (Odoo ORM, mail.message), XML (vues, domaines, héritage), OWL 3 (onWillStart, searchModel), JavaScript (JS registry { force: true }), Git (cherry-pick main + preprod3).

Ce que ça illustre

Débogage itératif sur une stack contrainte (SaaS, pas d'accès shell, déploiement par build Odoo.sh). Chaque erreur diagnostiquée depuis la stacktrace, corrigée chirurgicalement, documentée — 6 bugs transformés en 7 règles réutilisables pour tous les prochains développements Odoo 18.