Cobra · Dev
Odoo pricing-system overhaul (cobra_price): a single source of truth
Context
Cobra's pricing model was stacked and fragile: a web pricelist auto-computed per product, several structural lists layered on top (web / public / launch / strikethrough), and a margin computed with a hard-coded 20% VAT. The result: the displayed price could diverge from the actual online price, margin dropped to 0 the moment a product went out of stock, reference prices froze. Too many clicks, too many sources of truth.
What was built
- A single
cobra_pricefield (per variant) becomes THE source of truth for the sale price: a_price_computeoverride redirects quotes, sales and pricelists to that field. - Effective cost recomputed correctly (weighted average cost if in stock, otherwise last supplier price), and margin on the pre-tax price with the real product tax — end of the hard-coded
/1.2. - A price floor (regulated minimum) that can never go below the sale price, and a strikethrough price (
compareAtPrice) recomputed live to stay compliant with promotion regulations (Omnibus). - Immediate Shopify sync as soon as a price changes in Odoo.
- Cleanup of the old automations and pricelists that had become obsolete.
6 modules touched in cascade (cobra_base, cobra_product, cobra_purchase, shopify_connect, cobra_shopify, wiser_price_intelligence), with automatic data migration across ~7,300 products.
What was hard
- A bug discovered after going to production: the promo strikethrough price no longer displayed correctly — 492 promo products re-pushed to Shopify the same day to fix the display.
- Two internal automations created via Odoo's no-code editor (so invisible in the modules' code) still referenced the old system and crashed every product write after the corresponding field was removed — spotted and neutralized during the deploy.
- A recompute cron (last-30-days prices / launch prices) too heavy to run on ~9,800 products without blocking the other scheduled tasks — deliberately disabled, pending a rewrite as a batched query.
- A full technical email (module by module, migration, watch-outs) written for the external integrator (Irokoo) so they could validate the most sensitive points.
Stack
Python (Odoo ORM, _price_compute override), Odoo data migrations, Shopify (sync API), Git (feat/cobra-prix-v2 branch).
What this illustrates
A cross-cutting overhaul — not an isolated patch — driven end to end in a single flow: diagnosing the existing model, designing the new architecture, migrating in production, then real post-deploy follow-up (a display bug caught and fixed the same day, a formal technical note sent to the integrator to close the loop). Claude's role doesn't stop at the commit: it includes verifying in production and flagging what still needs watching.