Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Accounting
  3. Approval Workflow v 19.0
  4. Sales Conditions FAQ

Approval Workflow

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 16
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Invoicing (account)
Community Apps Dependencies Show
Accounting Suite Base
Lines of code 4405
Technical Name eh_account_approval
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Invoicing (account)
Community Apps Dependencies Show
Accounting Suite Base
Lines of code 4405
Technical Name eh_account_approval
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
ERP Heritage ERP Heritage · Odoo Accounting Suite
Controls

Approval Workflow

Multi-step ordered approver groups with atomic step pointer (compare-and-set), re-approval on material amount change, append-only approval log.

Odoo 19 Community v19.0.1.0.3 LGPL-3 Accounting/Accounting Original work
ERP Heritage reporting dashboard
Multi-step ordered groups
Atomic step pointer
Re-approval on material change
Append-only log
BUILT FOR
Controllers and CFOs enforcing SOX-style spend authority
SAVES YOU
Hours of email back-and-forth on every approval cycle
REPLACES
Approval-by-email, ad hoc Slack threads, paper sign-offs

Day in the life

A bill posts at 49,500. The approval threshold is 50,000.

The just-under-threshold detector raises a structuring flag immediately; the controller pauses the post. Investigation shows the bill was split from a 99,000 invoice the day before. The amount-change re-approval gate kicks the document back to step zero, the audit log records the rollback with the trigger amount, and the chain restarts. Manager + Director + CFO each sign off in turn through the atomic step pointer (compare-and-set so two concurrent approvers cannot skip a step). The bill posts only after the full chain completes.

Overview

What this module does, in one read.

A multi-step approval workflow for accounting documents (vendor bills, payments, journal entries). Steps are ordered; the step pointer advances atomically via compare-and-set so concurrent approvals cannot skip a step.

A material amount change after the first approval rolls the document back to step zero so the chain has to start over; the audit log records the trigger and the rollback.

eh_account_baseaccountmail
ERP Heritage
Module
eh_account_approval
VERSION
19.0.1.0.3
LICENCE
LGPL-3
CATEGORY
Accounting/Accounting
SUITE
24 modules

Capabilities

Eight things this module gives you, with no padding.

CAPABILITY 01

Multi-step ordered groups

Each step has one or more groups; the step requires at least one approver from at least one of the groups.

CAPABILITY 02

Atomic step pointer

compare_and_set against the current step prevents concurrent approvals from skipping a step or double-advancing.

CAPABILITY 03

Re-approval on material change

A change to amount, partner, or other configurable fields after first approval rolls the document back to step zero.

CAPABILITY 04

Append-only approval log

Every action writes to the log. The log refuses unlink and refuses write on every field except comment.

CAPABILITY 05

Group-based ACL

Approvers are groups, not user lists.

CAPABILITY 06

Plays with credit limit

When eh_account_credit_limit is installed an approved invoice can override the credit-limit gate.

CAPABILITY 07

Multi-company aware

Policies, requests, and steps all sit under company scope.

CAPABILITY 08

Tested invariants

Regression tests cover the concurrent-approval race, the material-change rollback, and the delegate path.

Compared

How this module stacks up.

FEATURE
MANUAL
PAID ADD-ON
THIS MODULE
Approval routing
Email / Slack threads
Workflow tool subscription
Multi-step ordered groups + atomic step pointer
Re-approval on amount change
Manual restart
Sometimes
Material amount change rolls back to step 0 with audit
SoD enforcement
Honour system
Yes
Preparer != reviewer != approver enforced
Audit log
Email archive
Vendor portal only
Append-only log; write/unlink overridden at model
Concurrency
Race conditions
Sometimes
Atomic SQL UPDATE on the step pointer
0
Race conditions
Atomic step pointer via compare-and-set; two concurrent approvers cannot skip a step.
3
SoD roles
Preparer, reviewer, approver: enforced separation.
∞
Audit retention
Append-only log; write and unlink refused at model level.

Workflow

Configure once. Operate. Audit. Report.

Four steps, the same across every ERP Heritage module so a finance team learns the suite once.

1

Configure

Settings > Accounting > ERP Heritage. Multi-company, multi-currency, journals, accounts. One-time setup, persisted on the company record.

2

Operate

The user works inside the standard Odoo accounting flow. The module surfaces only the controls relevant to its scope.

3

Audit

Every action that changes accounting state writes an audit row. The audit log is append-only at the framework level.

4

Report

Reports flow through the same reproducible audit pipeline, with cache invalidation by per-company move version.

Why Heritage

Where this module leads, where it matches, what we are honest about.

Where it leads
  • Multi-step ordered groups (Enterprise ships single-step)
  • Atomic step pointer prevents concurrent skip
  • Re-approval rollback with audit reason
Where it matches
  • Group-based ACL for approvers
  • Append-only log model
  • Multi-company scoping
Honest about
  • Approval rules are deployment-specific (no shipped catalogue)
  • No external approval-chain integration (Slack, email-button)
  • Activity scheduling rides standard mail.activity

The full ERP Heritage Accounting Suite (26 modules)

Accounting Suite Base Engine: audit log, cache, SQL builder, privilege groups
Dynamic Account Reports P&L, BS, TB, GL, Aged R/P, Cash Flow, Partner Ledger
Dynamic Reports Pro Builder, scheduling, forecasting, saved views
Bank Reconciliation Pro Reconciliation widget plus user-defined rules engine
Collections Workbench Workbench plus follow-up letter engine, broken-promise cron
Fixed Assets and Leases Assets, IFRS 16 leases, multi-book, AU tax depreciation
Post Dated Cheques Cheque registers, bounce / replace flow
FX Period End Revaluation IAS 21 revaluation, IFRS 9 hedge accounting (CFH/FVH/NIH)
Recurring Invoices Pro Cadence-driven recurring invoices
Period Close Workflow Period close checklist and sign-off
Year-End Closing Year-end closing wizard, reversal and lock
Multi Version Budget Pro Multi-version budgets, encumbrance, PO overrun block
Vendor Bill Automation Bill intake, three-way match, LLM extractor stubs
Bank Statement Import CSV / OFX / CAMT.053 / MT940 + Plaid / Basiq stubs
Batch Payment Batch AR / AP runs, per-partner aggregation
Inter-Company Rules Auto-mirror invoices and bills between companies
SEPA Credit Transfer PAIN.001.001.03 + .09 SEPA Credit Transfer generator
SEPA Direct Debit PAIN.008 plus mandate lifecycle
Peppol eInvoicing UBL 2.1 BIS 3.0 + ANZ/MY/DE/FR country profiles
AU BAS Reporting Australian Business Activity Statement, ABN validator
Approval Workflow Multi-step approval, atomic step pointer
Customer Credit Limit Hard credit limit gate, manager override audit
Customer Portal Extra Statement download, AR balance card on portal home
Financial Dashboard Cash, AR, AP, P&L plus optional KPI tiles
Group Consolidation Multi-entity roll-up, IC elimination, IAS 21 CTA, NCI
AI Agent Layer JE anomaly, variance commentary, collections next-action

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, never read-modify-write loops.

Per-record savepoints in cron loops.A single bad record never freezes the batch; failing rows are recorded, the rest of the batch keeps moving.

Schema-first XML output.PAIN.001 and PAIN.008 generators target the published namespace; tests parse output back and assert structure.

ValidationError versus UserError.Constraint failures raise ValidationError; action failures raise UserError with a remedy.

Privilege groups, not direct upstream references.ACL CSVs reference suite-specific groups; the post-migration script promotes upstream-only users.

Append-only audit logs.Approval log, override log, reconciliation audit, mandate amendment log all override write and unlink at the model level.

Originality from public spec.Every standard implementation is built from the published technical specification, not from another vendor codebase.

ERP Heritage
The standard we hold: every shipped capability is original code from a public technical specification, with regression tests, with a documented engineering rule for the invariant the code preserves, and with no vendor names in code or user-facing docs. From the suite contributing process

Frequently asked questions

Honest answers to the questions a buyer asks.

Does this run on Odoo 19 Community?

Yes. Every module is built and tested against Odoo 19 Community. No Enterprise dependency anywhere in the stack.

What is the licence?

LGPL-3, the same licence as Odoo Community. You can read the source, modify it, and ship it inside your own Odoo deployment without restriction.

Will this conflict with another accounting addon I already use?

Probably not. The modules add new models in their own namespace (eh.*) and inherit standard models without overriding behaviour silently. If your existing addon also extends the same standard model, ordinary Odoo inheritance rules apply.

Are the engineering principles documented?

Yes. The contributing process and ten engineering rules are kept in the repository so a reviewer can verify the code holds itself to them.

Is there a test suite?

Yes. Every module ships its own integration tests; the engine module ships a full unit test suite for the SQL builder, cache, and report orchestrator.

How do I get support?

Reach the team via info@erpheritage.com.au. Training, deployment, and custom extension work is handled by ERP Heritage directly.

ERP Heritage

Built by ERP Heritage

ERP Heritage builds enterprise-grade accounting software for the Odoo community. Our suite covers the operational accounting cycle end to end: invoice intake, posting, reconciliation, reporting, period close, payment runs, customer portal, multi-step approvals, and year-end. Every module ships with explicit licensing posture, documented engineering principles, comprehensive tests, and a clear differentiation story.

Global Odoo CommunityOdoo PartnerLGPL-3 to the community24 cohesive modulesOriginal work

Ready to deploy?

Install this module, run the test suite, and inspect the structured audit log. For training, deployment, or a custom extension, reach our team.

Install from the Odoo Apps Store info@erpheritage.com.au
Get in touch

Talk to ERP Heritage about Odoo implementation, customisation, training, or support.

End-to-end engagement across the Odoo platform: implementation, customisation, reimplementation, functional and technical training, ongoing support, integration planning, and scoped extensions. One team, one response within a business day.

Email
info@erpheritage.com.au
Phone
+61 469 095 910
Web
www.erpheritage.com.au
Implementation
Functional discovery, fit-gap, scoping, sample tenant, go-live plan.
Customisation
Custom modules, reports, integrations, localisations, reimplementation.
Training & support
Functional and technical training, hand-over docs, ongoing support.
ERP Heritage · erpheritage.com.au
Engineered for the global Odoo Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with