add spreadsheet_dashboard_pos_cooperative & pos_dashboard_cooperative

This commit is contained in:
Luis 2026-06-05 19:55:00 +02:00
parent 86101218e9
commit 5247938b86
34 changed files with 7974 additions and 0 deletions

View file

@ -0,0 +1,7 @@
No specific configuration is required after installation. The module
auto-installs ``pos_margin``, ``web_dashboard_tile`` and
``web_pivot_computed_measure`` if they are not already present.
To control who sees the new dashboards, adjust the standard POS
security groups (``point_of_sale.group_pos_manager``) — the new analyses
inherit the access rules already in place for ``report.pos.order``.

View file

@ -0,0 +1 @@
* Criptomart <https://criptomart.net>

View file

@ -0,0 +1,24 @@
Real-time Business Intelligence dashboards for cooperative supermarkets
built on top of Point of Sale data. Extends the standard
``report.pos.order`` view to expose new dimensions that the standard POS
analysis lacks:
* **Cooperative member dimension** — ``is_member_at_date`` flags each
ticket line according to the customer's share status *at the order
date*, so historic comparisons (members vs. non-members) reflect the
reality of the moment.
* **Category hierarchy** — ``categ_root_id`` (family) and
``categ_parent_id`` (subfamily) derived from
``product.category.parent_path``, ready to drive drilldowns.
* **Time dimensions** — ``date_day``, ``hour_of_day``, ``day_of_week``
for daily/weekly/hourly distributions.
Pre-configured menu entries under *Point of Sale → Reporting →
Cooperative Dashboards* cover overview, members vs. non-members,
categories, top products, day-of-week and hour-of-day analyses. Four
dashboard tiles surface the most important KPIs on the
``web_dashboard_tile`` board.
The companion module ``spreadsheet_dashboard_pos_cooperative`` publishes
spreadsheet dashboards in Odoo's *Dashboards* menu that consume the
same data.

View file

@ -0,0 +1,12 @@
* Materialize the SQL view into a regular table populated by a nightly
cron, in case real-time aggregation becomes too slow on very large
POS datasets.
* Refine the ``is_member_at_date`` calculation by consuming
``subscription.register`` to subtract sell-back and transfer
operations from the share balance. The current implementation simply
checks for the existence of a ``share.line`` dated on or before the
order date, which over-reports memberships when shares are returned.
* Add multi-company test coverage once a clean multi-company test
fixture is available.
* Add Galician, Catalan, French, Dutch and Croatian translations
(currently shipped with Spanish only).

View file

@ -0,0 +1,39 @@
Open *Point of Sale → Reporting → Cooperative Dashboards* and pick one
of the predefined analyses:
* **Overview** — sales, margin and order count grouped by month.
* **Members vs Non-members** — same axes split by cooperative
membership at the order date.
* **Top Members** — sales aggregated per cooperative member, sort by
total to obtain the top buyers.
* **By Category** — sales by product family (root category); drill down
to subfamily and product from the *Group By* menu.
* **Top Products** — sales per product.
* **By Day of Week / By Hour of Day** — temporal distributions.
In every view, additional dimensions are available from the *Filters*
and *Group By* menus: ``Members``, ``Non members``, ``Member``,
``Product Family``, ``Product Subfamily``, ``Day of Week``,
``Hour of Day``.
Time dimensions
===============
* ``day_of_week`` is the ISO day number (``EXTRACT(ISODOW FROM
date_order)``): **1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 =
Thursday, 5 = Friday, 6 = Saturday, 7 = Sunday**.
* ``hour_of_day`` is the integer hour in the order's timezone
(``EXTRACT(HOUR FROM date_order)``), 0..23.
These are deliberately exposed as integers rather than translated
labels so they aggregate cleanly in pivots, charts and spreadsheet
formulas. Map the numbers to weekday names in the consumer (for
example, in the o-spreadsheet dashboards) if a localized label is
needed.
Pivot views support the ratios defined by ``web_pivot_computed_measure``
(e.g. average ticket = total sales / order count). Click *Insert
Computed Measure* in the pivot's *Measures* menu.
For curated dashboards rendered in Odoo's *Dashboards* menu, install
the companion module ``spreadsheet_dashboard_pos_cooperative``.