Stack multiple Odoo promotions on one order with priorities, exclusivity groups, caps and a per-promotion audit trail
- Technical name
- do_multi_promotion
- Author
- Do Incredible
- Version
- v19.0.1.0.0
- Odoo series
- Odoo 19.0
Version 19.0.1.0.0 Commit 8c1c87b9 # Changelog — DO Multi Promotion Engine All notable changes to this module. Versions follow Odoo's `<odoo>.<major>.<minor>.<patch>` convention. ## 19.0.1.0.0 — 2026-09-04 First release. ### Added * Deterministic promotion ordering: `mp_priority`, a default on `sequence`, and `_order = 'mp_priority, sequence, id'`. A post-install hook stamps existing promotions and logs how many it repaired. * Stacking groups (`do.multi.promotion.group`) with exclusive / at-most-N / stack policies. * Per-promotion combination mode, conflict policy, and an opt-in switch to combine order-level discounts. * Caps: maximum promotions per order, maximum combined discount, maximum discount percentage. * Audience, day/time window, geography, first-order and previous-order conditions. * Usage limits per customer, day, website and register, plus a money budget, backed by stored indexed counters taken under a row lock. * Minimum-margin floor, evaluated as a pass/fail so no margin figure can reach a customer. * Append-only audit trail (`do.multi.promotion.result`) with a machine-readable reason code and separate customer-facing and internal messages. * Promotion lifecycle states and optional approval. * Two roles, access rules for every model, and multi-company record rules. * Demo data: a coffee-equipment catalogue, three customers, two stacking groups and seven promotions that demonstrate the rules. No credentials are shipped. ### Notes * Every default reproduces Odoo's existing behaviour. Installing this module does not change what an existing promotion does. ### Pricing Each module is sold separately, so you pay only for the channels you run. * **DO Multi Promotion Engine** - $39.00 (required by the other three) * **DO Multi Promotion for Sales** - $29.00 * **DO Multi Promotion for POS** - $25.00 * **DO Multi Promotion for Website** - $19.00 The complete suite is $112.00. No adapter costs more than the engine it requires. ### Compatibility * Odoo 19.0, Community and Enterprise. * Depends only on Community modules; nothing here requires Enterprise. ### Known limitations * Odoo's own `sale.order.coupon.points` and `loyalty.mail` carry no `company_id` and no record rule. That is core's omission; this module does not add rules to core models. * The true two-transaction concurrency gate runs as `scripts/do_mp_concurrency_check.py` through `odoo-bin shell`, not as an Odoo test — worker threads block inside Odoo's post-test phase.