Three fixes that unblock end-to-end invoice tests on staging: 1. Switched company default sale/purchase tax from '5% GST' to '13% HST' (Ontario is the home province). New products auto-get 13% HST; fiscal positions substitute OUT to other rates per customer location. 2. Added _migrate_tax_repartition_accounts hook. The post_init archive sweep correctly archived legacy l10n_ca tax-tracking accounts (118100.OLD, 231000, 232000, 233000, 118400, 118500, etc.) but active taxes still referenced them via repartition lines, causing invoice posting to fail with 'account is archived'. Hook repoints repartition to Nexa's consolidated 118100 (ITC) / 213100 (HST collected) / 213500 (QST collected) accounts. 3. Odoo 19 fiscal position behavior change: empty tax_ids now means 'remove all taxes' (was 'pass-through' in v17/18). For ON home position we now add a self-mapping placeholder (13% HST -> 13% HST) so the FP has a non-empty tax_ids and map_tax falls through to pass-through semantics on the 13% HST source. Verified with 4 invoice tests on staging: ON -> 13% HST total 113.00 US -> 0% GST total 100.00 (zero-rated export) QC -> 14.975% total 114.98 Westin -> 13% HST total 169.50 (intercompany, RP-Associated tag) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nexa Systems — Chart of Accounts Setup
Custom Odoo 19 module that configures the chart of accounts, taxes, fiscal positions, analytic plans, and partner records for Nexa Systems Inc.
Install
docker exec odoo-nexa-app odoo -c /etc/odoo/odoo.conf -d nexamain \
-i nexa_coa_setup --no-http --stop-after-init
Update
docker exec odoo-nexa-app odoo -c /etc/odoo/odoo.conf -d nexamain \
-u nexa_coa_setup --no-http --stop-after-init
Design reference
See docs/superpowers/specs/2026-05-12-nexa-coa-design.md.
Safety
Always take a pg_dump BEFORE running -i or -u. See docs/superpowers/plans/2026-05-12-nexa-coa-setup.md Phase 0.