Cobra · Module Odoo — debug itératif SaaS
CDC-18 : workflow achats Cobra (cobra_purchase)
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_replyviamail.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.modelnon hérité@stringinterdit 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 filtresinvisible="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.