Skip to content

[19.0][ADD] spreadsheet_dashboard_subscription_oca: subscription dashboards#1472

Closed
alvaro-domatix wants to merge 3 commits into
OCA:19.0from
alvaro-domatix:19.0-add-spreadsheet_dashboard_subscription_oca
Closed

[19.0][ADD] spreadsheet_dashboard_subscription_oca: subscription dashboards#1472
alvaro-domatix wants to merge 3 commits into
OCA:19.0from
alvaro-domatix:19.0-add-spreadsheet_dashboard_subscription_oca

Conversation

@alvaro-domatix

Copy link
Copy Markdown

Adds ready-to-use spreadsheet dashboards for subscriptions, built on the community spreadsheet_dashboard engine with no Enterprise dependency. Four dashboards are shipped under a dedicated Subscriptions group in the Dashboards app (auto_install wires them up when both spreadsheet_dashboard and subscription_oca are present):

  • Subscriptions — monthly/annual recurring revenue, active subscriptions and average MRR, with breakdowns by template, product category, sales team, salesperson, start month and stage;
  • Salesperson — recurring revenue and number of subscriptions by salesperson and team;
  • MRR Evolution — net/new/churned MRR and the cumulated MRR over time (MRR change events are derived from the current state: a positive event at start date and a negative one at close; mid-life expansion/contraction is not tracked);
  • Retention — cohort sizes and recurring revenue per start month, plus a survival curve from start/close dates.

All dashboards expose global filters (salesperson, sales team, customer, template).

Depends on #1451 (compute MRR and ARR): the MRR/retention SQL models read the recurring_monthly field introduced there. The branch also contains the #1471 (reporting) commit it was built on top of; once those parents merge this PR auto-retargets and only the new dashboard module remains.

Add two stored computed monetary fields on `sale.subscription`:

* `recurring_monthly` — sum of the subscription lines normalised to a
  monthly amount (Monthly Recurring Revenue).
* `recurring_yearly` — twelve times the monthly figure (Annual
  Recurring Revenue).

Each line also exposes its own `recurring_monthly`, derived from
`price_subtotal` and the template recurrence. A line that bills every
N `days`, `weeks`, `months` or `years` is converted to months using
30.4375 average days per month for sub-monthly cadences and a direct
multiplier otherwise, then divided by the `recurring_interval`.

This makes subscriptions of different cadences directly comparable and
sum-able, so reports can answer the basic "how much do I bill per
month?" question without external spreadsheets.

The fields are visible as a new MRR/ARR stat button on the
subscription form, as optional columns with sum aggregation on the
list view, and as a "With recurring revenue" filter on the search
view.

Migration: pure ORM recompute on `-u subscription_oca`. Expect roughly
two seconds per ten thousand subscription lines.
@OCA-git-bot OCA-git-bot added series:19.0 mod:subscription_oca Module subscription_oca mod:spreadsheet_dashboard_subscription_oca Module spreadsheet_dashboard_subscription_oca labels Jun 23, 2026

@popadron popadron left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From my perspective, this addon would fit better in OCA/spreadsheet

Add a Reporting menu to analyse subscriptions with pivot and graph
views, in the spirit of the Enterprise subscription reports but based
only on community views:

- New sale.subscription.report SQL view with one row per subscription
  line, exposing the customer, template, product, category, stage,
  close reason, salesperson, team, dates and the monthly/annual
  recurring revenue in company currency.
- Three actions under Subscriptions > Reporting: Subscriptions
  Analysis, MRR Breakdown (running subscriptions by template and
  product) and Churn Analysis (closed subscriptions and lost revenue by
  close reason).
- Read access for salesmen and a multi-company record rule on the
  report model.
@alvaro-domatix

Copy link
Copy Markdown
Author

Following @popadron's placement review, this addon has been moved to its natural home in OCA/spreadsheet, where the rest of the spreadsheet_dashboard_* bridge modules live.

➡️ Continued in OCA/spreadsheet#118 (OCA/spreadsheet#118).

Closing this one in favour of that PR. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mod:spreadsheet_dashboard_subscription_oca Module spreadsheet_dashboard_subscription_oca mod:subscription_oca Module subscription_oca series:19.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants