| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Point of Sale (point_of_sale) • Discuss (mail) • Inventory (stock) |
| Lines of code | 306 |
| Technical Name |
crowe_pos_analytic_accounts |
| License | LGPL-3 |
| Website | https://www.crowe.mv |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Point of Sale (point_of_sale) • Discuss (mail) • Inventory (stock) |
| Lines of code | 306 |
| Technical Name |
crowe_pos_analytic_accounts |
| License | LGPL-3 |
| Website | https://www.crowe.mv |
POS Analytic Accounts
Per-counter analytic distribution for Point of Sale
Assign an analytic distribution to each POS counter so that every accounting entry generated from that counter — sales, taxes, cash movements, and combined card/bank payments — is automatically tagged with the correct analytic accounts. No manual journal adjustments. No missing analytics.
Key Features
Per-Counter Distribution
Each POS counter has its own independent analytic distribution. Multi-plan setups with split percentages are fully supported — configure once, applied to every entry automatically.
Complete Entry Coverage
Analytics are stamped on all move lines: sales, taxes, cash statement lines, and combined bank/card payment entries (“Combine … POS payments”) that Odoo creates separately.
Backdate Synchronisation
Added a counter mid-year? Use Synchronise this counter to backfill the analytic distribution onto all historical posted move lines for that counter in one click.
How It Works
Configure once — every entry tagged automatically
Step 1 — Set the analytic distribution
Go to Settings → Point of Sale, select the counter from the dropdown, and scroll to the Accounting section. The same Analytic Distribution field is also available on each counter under Point of Sale → Configuration → Point of Sale. Pick one or more analytic accounts across any plan with percentages that sum to 100 %.
Use Synchronise this counter to apply the distribution to existing posted lines, or Synchronise all counters for a company-wide backfill.
Pick accounts across analytic plans
The standard Odoo analytic distribution widget appears directly on the counter settings. Assign projects, departments, operations, or any custom plan — with split percentages when needed.
Each counter is independent: Furniture Shop can use one analytic account while Bakery Shop uses another — for example “Branch A” and “Branch B” — without affecting the other.
Step 2 — Synchronise past entries
Click Synchronise this counter to backfill the distribution onto all historical posted journal entries from closed sessions. A success notification confirms how many move lines were updated.
Use Synchronise all counters to run the same backfill across every configured POS counter in one operation.
Step 3 — Verify on journal items
Open any closed POS session and go to Journal Items. Show the Analytic Distribution column from the list column picker () if it is not already visible.
Before synchronisation, existing lines have an empty analytic column. After synchronisation, every line — sales, taxes, cash, and card payments — carries the configured analytic account.
Every line tagged — sales, taxes, and payments
The Bakery Shop session (Sessions / Bakery Shop/00002) shows Branch B on all move lines after synchronisation: product sales, tax received, account receivable, outstanding receipts, and cash entries.
New sessions closed after configuration receive the analytic distribution automatically — no synchronisation needed for future entries.
Multiple Counters, Multiple Outlets
Each counter routes to its own analytic account
Built for multi-outlet businesses
Run multiple counters? Assign a different analytic account to each. When sessions close, every journal entry is automatically routed to the right analytic account for that counter — without any manual intervention.
The Furniture Shop session (Sessions / Furniture Shop/00001) shows Branch A across sales, receivable, outstanding receipts, and cash lines — completely separate from Bakery Shop’s Branch B.
Reporting by Analytic Account
Filter the General Ledger by branch or outlet
Use the Analytic filter on the General Ledger (Invoicing → Reporting → General Ledger) to isolate POS revenue, receivables, and cash movements for a single branch or outlet — for example Branch A as shown above.
Synchronisation
Backfill analytics on existing entries — no manual journal edits
Synchronise this counter
Updates all posted move lines from closed sessions of the selected counter. Processes in batches of 500 lines with intermediate commits so large histories complete safely.
Synchronise all counters
Runs the same backfill across every POS counter that has an analytic distribution configured. Useful after a company-wide rollout or when first activating the module on a live database with months of existing POS history.
Feature Summary
Configuration
Analytic distribution widget on Settings and on each POS counter form.
Supports multiple analytic plans with split percentages.
Per-counter and bulk synchronisation buttons.
Accounting Coverage
Session closing move lines (sales + taxes).
Cash/bank statement move lines.
Combined card/bank payment entries (bank_payment_ids).
Individual POS order account moves.
Technical Details
Models Extended
-
pos.config — adds
analytic_distribution(JSON) and sync actions. -
pos.session — injects distribution into
_credit_amounts,_debit_amounts,_get_sale_vals, and_get_tax_vals. - account.bank.statement.line — stamps distribution on cash move line preparation.
- account.payment — stamps distribution on combined bank/card payment move lines.
Sync Internals
- Collects session moves, order moves, statement line moves, and
bank_payment_idsmoves per counter. - Filters to posted lines only; skips draft and cancelled.
- Writes in batches of 500 with intermediate
cr.commit()for large histories. - Per-counter and all-counter actions both reuse the same private method.
Compatibility & Dependencies
Version
Built for Odoo 19.0, compatible with both Community and Enterprise editions.
Dependencies
Requires point_of_sale, account, and analytic.
Support
Brought to you by Crowe Maldives LLP
Author
Crowe Maldives LLP
Website
www.crowe.mv
Licensed under LGPL-3.
Please log in to comment on this module