Correct three claims that a live 19.0+e build disproved

Built a full demo against a real BuildEase instance and three documented
facts turned out to be wrong, each costing a debugging round.

buildease installs nothing. Its manifest depends on base alone, so the
"depends on nothing and installs the set" line left an empty database with
no error to catch it. Route and install every module explicitly.

The purge chain had invoices after statements. An invoiced sale.progress
refuses action_cancel outright -- cancelling its invoice is what reverts it
to approved, the first state it can be cancelled from. The documented order
deadlocks on the one statement you invoiced.

custom_product_sale, custom_product_bom and bom_on_sale_order_line are
absent from mev but present on the Callista demo servers, so "not in the
repo" is not the same as "not installable" when pricing.

Also records the revision-formula object graph, which no reference covered:
the coefficients live on formula.input, not on revision.formula, and that
model hangs off either the take-off (contract S, I) or the statement (that
period's s, i). That split is what makes "de index van die maand, niet van
vandaag" work. Its rows come from an @api.onchange that write() never fires
over XML-RPC, and a stale initial_index_value computes a plausible but
wildly wrong revision with no guard behind it -- a factor of 65 instead of
1.005 in this build.

Plus: percentage is a cumulative fraction not 0-100, index_value truncates
to 3 decimals, and button methods return an action dict Odoo cannot marshal
over XML-RPC after the transition has already committed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
glenn
2026-07-31 14:43:15 +02:00
co-authored by Claude Opus 5
parent 8454aa132e
commit 5aee1c61b5
3 changed files with 108 additions and 5 deletions
+11 -1
View File
@@ -1,7 +1,12 @@
# BuildEase (callista-tools/mev) — module map & pain routing
Odoo **19.0** vertical for construction / contracting. Repo: `git@github.com:callista-tools/mev.git`.
34 modules, all LGPL-3. Umbrella module `buildease` depends on nothing and installs the set.
34 modules, all LGPL-3.
**`buildease` is a marker, not an installer.** Its manifest depends on `base` and nothing
else, so installing it pulls in none of the other 33. Verified on a live 19.0+e instance:
`buildease` on its own leaves the database empty and every routed feature missing, with no
error to catch it. Always install the routed set explicitly.
## The four core concepts
@@ -66,6 +71,11 @@ installing on their own — route them from the pain table above, not from the d
- **Three dependencies are not in this repo**: `custom_product_sale`, `custom_product_bom`,
`bom_on_sale_order_line`. Anything under `buildease_custom_product*` fails to install
without them. Confirm their source before promising a BOM-pricing hero feature.
**Not in the repo does not mean not on the instance.** On the Callista demo servers all
three are present and installable — they ship with the `demo19-custom` addons path, not
with mev. Check the target instance (`ir.module.module` by name) before pricing
`buildease_custom_product*` as build work; on a server that already has them it is a
install line, and on a client's own Odoo.sh it is not.
- **Odoo 19 only.** Manifests are all `19.0.x`; do not attempt against 17/18.
- `l10n_be` and `accountant` are pulled in by demo data — the demo DB is Belgian-localised.
Wrong-country client → set `demo_config.json` company/fiscal position explicitly, or skip