Skip to main content
iVentureTeam

lna_checklist

A checklist of local network access prerequisites whose ticks live in browser storage, not in the database, and are written when you save.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated September 7, 20264 min read
Technical namelna_checklist
Viewsform (view widget, <widget> element)
Modulepoint_of_sale, the Point of Sale app
Used in coreThe Point of Sale configuration form in point_of_sale
VersionsOdoo 20.0, Odoo 19.0
No-code setupNo. It is set in view XML and depends on module-specific data
Alternativespos_cashdro_admin_buttons, pos_glory_cash_admin_buttons, boolean_toggle

What the LNA checklist does

Local network access is how a secure Odoo page is allowed to talk to hardware sitting on the shop's own network. Getting it working is a sequence of environment steps rather than Odoo settings: browser flags, certificates, addresses.

This widget is the checklist for that sequence. It sits on the Point of Sale configuration and lets whoever is doing the setup tick items off as they go.

What is unusual is where the ticks live. They are not a field on the record; they are kept in the browser's own storage, so they follow the machine rather than the database.

What this means for your team

The checklist is a support artifact more than a business feature. Its value is that a partial setup is visible: someone returning to a half-finished job can see where they stopped.

The limitation follows directly from the storage choice. Because the ticks are per browser, they are a personal working note, not a record of what was configured. For anything that needs to be auditable, a field on the configuration is the right home.

Supported options in Odoo 19

The widget declares no options and does not even declare props. What it stores and how it hooks into saving are described below. Read from the checklist source, Odoo 19.0.

OptionTypeWhat it does
pos_lna_checklistbrowser storage keyHolds the ticks as a JSON object keyed by each checkbox's element identifier.(since Odoo 19.0)
the save patchrecord method replacementApplied on mount, writes the ticks to storage before delegating, and is restored on unmount.(since Odoo 19.0)

It patches the record's save method. On mount it wraps the record's own save so that the ticks are written to storage first, then delegates to the original. On unmount the original is put back.

Working examples

Placing it

<widget name="lna_checklist"/>

No attributes. It reads and writes browser storage.

Where the ticks live

localStorage["pos_lna_checklist"]
# a JSON object of item id to boolean

Per browser, not per database.

When they are written

# on save, before the record's own save runs

Ticking alone does not persist them.

Replacing the record's save, and putting it back

Three lifecycle hooks do the work, and the middle one is the interesting part.

Before the first render, the stored value is read and parsed. The parse is wrapped so that anything unreadable produces an empty checklist rather than an error, which matters because browser storage can hold whatever a previous version wrote.

On mount, the widget replaces the record's save method with its own function. That function writes the current ticks to storage and then calls the original save with the same arguments. It is a deliberate patch of another object's method, which is unusual in Odoo and worth recognizing when reading the file.

On unmount, the original save is restored. Without that, the wrapper would persist on the record after the widget was gone, holding a reference to state that no longer exists.

The ticks themselves are a plain object keyed by the element identifier of each checkbox, which means the checklist items are defined in the template rather than anywhere in this file.

Version compatibility

VersionStatusNotes
Odoo 20.0Partial / changedNot released. Converted to the newer state convention.
Odoo 19.0VerifiedFirst version. Verified against the shipped source.
Odoo 18.0Not availableWidget does not exist.
Odoo 17.0Not availableWidget does not exist.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. The widget is new in Odoo 19 alongside the local network access work. Because the ticks live in browser storage, nothing about them migrates.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The development branch is unstable and this may still change; we re-verify this page after the release.

Converted to the newer state convention. The development branch swaps the state hook for its Owl 3 equivalent. The storage key, the save patch and the restore on unmount are unchanged.

Common problems and fixes

SymptomCause and fix
The ticks are gone on another machineThey live in browser storage, not in the database. Expected. Use fields on the record if the state must be shared.
Ticks are lost after tickingThey are only written to storage when the record is saved. Save the configuration.
The checklist resets itselfThe stored value could not be parsed, so an empty object was used. Expected fallback; the checklist rebuilds as you tick.
Ticks disappear in private browsingBrowser storage is cleared when the session ends. Expected.
Saving behaves oddly after closing the formIt should not; the original save is restored on unmount. Reload the page if a customization interfered.
The checklist items are wrong for my setupThey are defined in the template. Override the template to change them.

LNA checklist vs the alternatives

WidgetBest forKey difference
lna_checklistTracking local network access setup steps on one machineTicks live in browser storage and are written by a temporary patch of the record's save
pos_cashdro_admin_buttonsCashDro diagnosticsDevice tools rather than a checklist
pos_glory_cash_admin_buttonsGlory cash machine setupA live status rather than manual ticks
boolean_toggleA stored yes or noPersists in the database rather than the browser

A boolean field per item on the configuration record is the alternative when the checklist needs to be shared or audited. This widget deliberately trades that for zero database footprint.

Frequently asked questions

Where are the ticks stored?+
In the browser's own storage under a single key, as a JSON object. They never reach the database, so they are per machine.
Why does ticking not persist immediately?+
The ticks are written when the record is saved. The widget replaces the record's save method on mount so that its own write happens first.
Is patching the save method safe?+
It restores the original on unmount, which is what stops the wrapper outliving the widget and holding a reference to state that no longer exists.
What happens if the stored value is corrupt?+
The parse is guarded, so anything unreadable yields an empty checklist rather than an error.
Can the checklist be shared with a colleague?+
No. That would need boolean fields on the record instead, which is the right approach when the state must be auditable.

Point of Sale setups that survive the first week

Local network access, certificates and device addressing are where most Point of Sale rollouts stall. We handle the setup and the support afterwards, on versions 16 through 19.

Book a free consultation

How this page was produced

The browser storage key, the guarded parse falling back to an empty object, the save method replacement on mount, the restore on unmount and the element identifier keying were read from the checklist source on the Odoo 19.0 branch. Version coverage comes from the absence of the file on 16.0, 17.0 and 18.0, and a comparison against the public development branch. Spotted an error? Tell us and we will correct the page.