account_move_statusbar_secured
A padlock next to Posted, green when the entry is hash-secured and orange when it is not. One inherited status bar, three template edits, and an audit story you can see at a glance.
| Technical name | account_move_statusbar_secured |
|---|---|
| Field types | selection |
| Views | form |
| Module | account, present wherever Invoicing or Accounting is installed |
| Used in core | 1 occurrence, the journal entry form in account |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0 |
| No-code setup | No. Studio offers the plain status bar; this variant is set in view XML |
| Alternatives | statusbar, status_with_color, badge, web_ribbon |
What the secured status bar does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
secured | field on the record | Read literally to choose the lock icon and color. Not declared as a dependency, so the form must load it. |
statusbar_visible | string (attribute) | Inherited from the status bar. Comma-separated list of stages always shown in the bar. Core uses draft,posted here. |
clickable | boolean | Inherited from the status bar. Allows moving between stages by clicking them. |
fold_field | field | Inherited from the status bar. Names the field that decides which stages are folded into the dropdown. |
The lock is driven by a field named secured, read literally. The widget declares no dependency on it, so the form has to load it. In core it is present on the journal entry form; a custom form that omits it renders the status bar with no lock at all and no warning.
Working examples
Three places the label is drawn, three substitutions
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Byte-identical to Odoo 19 on the development branch. |
| Odoo 19.0 | Verified | Verified against the shipped source. The descriptor's supported type is corrected to selection. |
| Odoo 18.0 | Verified | First version. Renders identically, but the descriptor declared a supported type of state, which is not a real field type. |
| Odoo 17.0 | Not available | Widget does not exist. |
| Odoo 16.0 | Not available | Widget does not exist. |
Upgrade note. Nothing in view XML changes between Odoo 18 and Odoo 19. The only difference is the corrected supported type in the descriptor, which affects tooling rather than rendering. The widget does not exist before Odoo 18, so a database coming from Odoo 17 gains the lock along with the securing feature itself.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| No padlock appears at all | The form does not load the secured field, which the widget reads literally and does not declare. Add the field to the form, invisible is enough. |
| Ordinary users do not see the lock | Intended. Core gates this widget on the secured-entries group and shows the plain status bar to everyone else. Add the relevant users to that group if they need to see securing state. |
| The lock is orange on a posted entry | The entry is posted but not yet secured. Securing runs separately from posting. Expected. Run or wait for the securing process; orange does not mean altered. |
| The lock disappears when the bar collapses | A custom template override dropped the substitution in the current-value display. Keep all three template substitutions when patching the widget. |
| The lock shows on the wrong stage | The comparison is against the literal posted value of the journal entry state. The stage cannot be changed from XML; use a different indicator widget for other models. |
| Developer tooling does not offer the widget | On Odoo 18 the declared supported type is not a real field type. Name the widget explicitly in view XML; it renders correctly regardless. |
Secured status bar vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
account_move_statusbar_secured | Showing at a glance whether a posted journal entry is hash-secured | The standard status bar with a color-coded padlock injected into the posted stage |
| statusbar | Any ordinary workflow status bar | No lock and no dependency on an accounting securing flag |
| status_with_color | State shown as a colored indicator | Color-driven rather than icon-driven, and not tied to a specific stage |
| badge | State shown inline in lists and forms | A pill next to the data rather than a header bar |
| web_ribbon | An unmissable corner banner | A view element with no field behind it |
Frequently asked questions
What does the padlock next to Posted mean?+
Why do only some users see the lock?+
Why is my padlock missing entirely?+
Can I put the lock on a different stage?+
Did anything change between Odoo 18 and 19?+
Does your accounting stand up to an inalterability audit?
Hash chains, secured entries and country-specific reporting rules are configuration decisions with legal weight, and they are hard to retrofit. We set up Odoo Accounting for regulated environments on versions 16 through 19, including localization packages.
Book a free consultation