| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 4118 |
| Technical Name |
eh_account_setup |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 4118 |
| Technical Name |
eh_account_setup |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Accounting Setup Guide
A guided onboarding checklist that turns the suite's strict configuration errors into a sequence of clicks. Per company state, module aware visibility, deep linked configuration screens, and a clear audit trail per task.
Day in the life
A new accountant joins on day one and asks: where do I start?
They open Accounting, then Configuration, then Setup Guide. The kanban groups every required configuration step by category: Foundations, Currencies, Receivables, Payables, Approvals, Reporting, Period Close. Tasks tied to modules they did not install are hidden by the module aware filter. They click the first todo card. The Open button deep links to the right configuration screen, pre filtered for the active company. They configure, click Mark done, the line records who finished it and when, and the kanban moves the card to the Done column. Two stat buttons on the line form show progress for this company and how the same task is going across other companies in the tenant. By the end of the morning the checklist is mostly green and the suite is ready to operate.
Overview
What this module does, in one read.
eh_account_setup ships a guided checklist for first install configuration of the ERP Heritage accounting suite.
It splits task definitions from per company state, so module upgrades can refine wording without touching user progress. It auto seeds lines for every existing company on install, and for every new company on creation. Optional tasks hide themselves until the source module is installed, so the list stays relevant.
Capabilities
Twelve things this module gives you, with no padding.
Per company checklist with state machine
Each task gets one line per company with a todo, done, or skipped state. A multi company tenant sees independent progress per company, never mingled.
Deep links to configuration screens
Each task carries an action external id resolved at click time. Open jumps straight into the right screen for the active company. A missing id surfaces a clear error naming the unresolved id, never a silent fallback.
Module aware visibility
Tasks tagged with required modules only render when every listed module is installed. The kanban stays focused on what the customer actually bought, not the full catalogue.
Audit trail per task per company
Every state transition records the user and the timestamp. A free notes field lets the preparer leave a handover note for the reviewer. The trail is queryable and exportable.
Definitions split from state
Task definitions live in shared XML data; per company progress lives on a separate model. A future module upgrade that rewords a description does not blow away which companies have already finished it.
Skip and reset workflow
A task irrelevant for one company can be marked skipped, with the same audit fields as done. Reset returns the line to todo and clears the audit fields cleanly so the workflow is reversible.
Auto seed on company create
Adding a second or third company after install instantly populates its checklist via a res.company create override. No reinstall, no manual seeding step, no missing rows.
Idempotent install
The post init hook seeds only the missing lines. Re-running it on an already seeded company is a no-op. A reinstall after adding a new sibling module picks up the new tasks without disturbing the rest.
Stat snapshots on every form
The task definition form ships five stat buttons: Companies, Done, To do, Skipped, Completion percentage. The line form ships two: progress in this company, progress on this task. Each stat button is a deep link into a filtered view.
Embedded sibling and peer kanbans
The line form embeds a kanban of how the same task is going for other companies, and a kanban of other tasks in the same category for this company. The operator sees what comes next without leaving the record.
Comprehensive search filters
State, category, relevance, my company, my completions, completed today, last 7, 30, 90 days, this month, this year, stale to do over 30 or 90 days, to do without notes. Group by category, state, company, completed by, task, required modules, and completion day, week, month, or year.
Multi company isolation by record rule
A global ir.rule restricts visibility to lines whose company is in the user's allowed companies list. The Setup Guide menu opens with the active company filter pre applied, so the operator sees their company only.
Compared
How this module stacks up.
Workflow
Install. Open. Click through. Track.
Four steps, same shape as the rest of the suite so a finance team learns the pattern once.
Install
The post init hook seeds one line per (task, company) for every existing company.
Open
Accounting, Configuration, Setup Guide. Kanban opens grouped by category, filter on todo, scoped to the active company.
Click through
Open jumps to the configuration screen. Mark done writes the audit row. Skip and Reset are always available.
Track
Stat buttons, embedded snapshots, and 17 search filters keep a multi company rollout visible at a glance.
Why Heritage
Where this module leads, where it matches, what we are honest about.
- Definitions and state on separate models
- Module aware visibility via computed search
- Deep link integrity check at click time
- Standard kanban, list, form, and search views
- Multi company isolation via global ir.rule
- Suite namespaced privilege groups
- Tasks target the EH suite specifically; install sibling modules to populate the list
- Does not run the underlying configuration; it deep links to it
- No external scheduling or reminders; use task notes instead
Categories covered
Seven categories, twenty four tasks.
Engineering
Ten engineering rules we hold ourselves to.
No silent fallbacks.Missing config, missing accounts, malformed input each surface explicit messages naming the bad field.
Tests cover the bug, not just the feature.Every defect found in review has a regression test attached to the fix, kept in the repository.
Plain Python where possible.Algorithms that do not need the ORM live under tools/ with unit tests that run without Odoo.
Atomic counters via SQL.Concurrent counters use UPDATE col = col + 1 patterns, never the ORM read modify write cycle.
Per record savepoints.Cron loops wrap each iteration in a savepoint so one bad record never stops the batch.
Strict equality on cache keys.Sorted canonical representations as cache keys, never m2m IN clauses.
Schema first XML output.Generators target the published namespace literal; tests parse output back and assert structure.
ValidationError or UserError, never both.ValidationError in api.constrains, UserError in actions. The framework distinguishes them.
Privilege groups, not direct upstream references.ACL CSVs reference suite namespaced groups. Migration scripts promote existing users.
Capability focused descriptions.No vendor names in code or docs. Every claim describes what the module does, not what it replaces.
Frequently asked questions
Honest answers to the questions a buyer asks.
Does this run on Odoo 19 Community?
Yes. The module targets Odoo 19 Community and uses only standard ORM and view APIs. No enterprise dependencies.
Does it touch any existing accounting data?
No. The module only creates its own task and task line records. It deep links to existing screens; the underlying configuration is performed by the target modules and Odoo core.
What happens when I install another suite module after this one?
Reinstall or upgrade eh_account_setup; the post init hook is idempotent and adds only the missing lines. Existing progress is preserved.
Can I add my own custom setup tasks?
Yes. Add task records via XML data in your own module, depending on eh_account_setup. The task model is open for extension; required_modules and action_xmlid keep the deep link integrity check working for your tasks too.
Are the task labels translatable?
Yes. The name and description fields on the task definition carry translate=True; standard Odoo PO file extraction picks them up.
What does the audit trail look like?
Each line records completed_at, completed_by_id, and a free notes field. Every state transition writes both fields; reset clears them so the trail does not leak across reverted attempts.
How is multi company isolation enforced?
A global ir.rule restricts visibility on every read, write, and delete to lines whose company is in the user's allowed companies list. The Setup Guide menu pre filters on the active company, so the operator sees their company first.
What if a deep link xmlid does not exist?
The Open button raises a clear UserError naming the unresolved xmlid and the task involved. No silent fallback, no random screen. Install or upgrade the module that owns the action and retry.
Please log in to comment on this module