Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions spreadsheet_oca/README.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

===============
Spreadsheet Oca
===============
Expand All @@ -17,7 +13,7 @@ Spreadsheet Oca
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github
Expand Down
5 changes: 4 additions & 1 deletion spreadsheet_oca/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"name": "Spreadsheet Oca",
"summary": """
Allow to edit spreadsheets""",
"version": "18.0.1.2.3",
"version": "18.0.2.0.0",
"license": "AGPL-3",
"author": "CreuBlanca,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/spreadsheet",
Expand All @@ -14,7 +14,10 @@
"security/security.xml",
"security/ir.model.access.csv",
"views/spreadsheet_spreadsheet.xml",
"views/spreadsheet_subscription_views.xml",
"data/mail_templates.xml",
"data/spreadsheet_spreadsheet_import_mode.xml",
"data/spreadsheet_subscription_cron.xml",
"wizards/spreadsheet_select_row_number.xml",
"wizards/spreadsheet_spreadsheet_import.xml",
],
Expand Down
66 changes: 66 additions & 0 deletions spreadsheet_oca/data/mail_templates.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2025 Ledo Enterprises LLC
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<!-- ══ Subscription digest email ════════════════════════════════════
Rendered by spreadsheet.subscription._render_digest_html().
Variables: spreadsheet, now_str, summaries, pivot_html_list, base_url

Customise via Settings > Technical > Views, search for
"spreadsheet.subscription.digest". -->
<record model="ir.ui.view" id="spreadsheet_subscription_digest_template">
<field name="name">spreadsheet.subscription.digest</field>
<field name="type">qweb</field>
<field name="arch" type="xml">
<t t-name="spreadsheet_oca.spreadsheet_subscription_digest_template">
<div
style="font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#333;max-width:700px;margin:0 auto"
>
<h2
style="background:#4a4a8a;color:#fff;padding:16px 20px;margin:0;border-radius:4px 4px 0 0"
>
<t t-out="spreadsheet.name or 'Spreadsheet Digest'" />
</h2>
<div
style="background:#f7f7f7;padding:8px 20px;border-bottom:1px solid #ddd;font-size:12px;color:#777"
>
Generated: <t t-out="now_str" />
</div>
<div style="padding:16px 20px">
<t t-if="not pivot_html_list">
<p style="color:#888">
No pivot data sources are available in this spreadsheet.
</p>
</t>
<t t-else="">
<t t-foreach="pivot_html_list" t-as="pivot_html">
<div style="margin-bottom:20px">
<t t-out="pivot_html" />
</div>
</t>
</t>
</div>
<!-- Action link -->
<div style="padding:10px 20px;text-align:center">
<t
t-set="spreadsheet_url"
t-value="'%s/web#id=%d&amp;model=spreadsheet.spreadsheet&amp;view_type=form' % (base_url, spreadsheet.id)"
/>
<a
t-att-href="spreadsheet_url"
style="display:inline-block;padding:8px 24px;background:#4a4a8a;color:#fff;text-decoration:none;border-radius:4px;font-size:13px"
>
Open Spreadsheet
</a>
</div>
<div
style="background:#f0f0f0;padding:10px 20px;font-size:11px;color:#aaa;border-radius:0 0 4px 4px;text-align:center"
>
You are receiving this because you subscribed
to digest emails for this spreadsheet.
</div>
</div>
</t>
</field>
</record>
</odoo>
14 changes: 14 additions & 0 deletions spreadsheet_oca/data/spreadsheet_subscription_cron.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2025 Ledo Enterprises LLC
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record model="ir.cron" id="spreadsheet_subscription_cron">
<field name="name">Spreadsheet Dashboard Digest</field>
<field name="model_id" ref="model_spreadsheet_subscription" />
<field name="state">code</field>
<field name="code">model._cron_send_digests()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="active">True</field>
</record>
</odoo>
98 changes: 98 additions & 0 deletions spreadsheet_oca/demo/demo_pivot_dashboard.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
{
"version": 21,
"sheets": [
{
"id": "sheet_partners",
"name": "Partners by Country",
"colNumber": 26,
"rowNumber": 100,
"rows": {},
"cols": {
"0": {"size": 220},
"1": {"size": 140},
"2": {"size": 140},
"3": {"size": 140}
},
"merges": [],
"cells": {
"A1": {"content": "=PIVOT(1)"}
},
"conditionalFormats": [],
"figures": [],
"filterTables": [],
"tables": [],
"dataValidationRules": [],
"comments": {},
"headerGroups": {"ROW": [], "COL": []},
"areGridLinesVisible": true,
"isVisible": true
},
{
"id": "sheet_regions",
"name": "Regions per Country",
"colNumber": 26,
"rowNumber": 100,
"rows": {},
"cols": {
"0": {"size": 220},
"1": {"size": 140}
},
"merges": [],
"cells": {
"A1": {"content": "=PIVOT(2)"}
},
"conditionalFormats": [],
"figures": [],
"filterTables": [],
"tables": [],
"dataValidationRules": [],
"comments": {},
"headerGroups": {"ROW": [], "COL": []},
"areGridLinesVisible": true,
"isVisible": true
}
],
"settings": {},
"customTableStyles": {},
"styles": {},
"formats": {},
"borders": {},
"revisionId": "START_REVISION",
"uniqueFigureIds": true,
"odooVersion": 12,
"globalFilters": [],
"pivots": {
"1": {
"type": "ODOO",
"id": "1",
"formulaId": "1",
"name": "Partners by Country & Type",
"model": "res.partner",
"domain": [["active", "=", true]],
"context": {},
"measures": [{"id": "__count", "fieldName": "__count"}],
"rows": [{"fieldName": "country_id", "order": "desc"}],
"columns": [{"fieldName": "is_company"}],
"sortedColumn": null,
"fieldMatching": {}
},
"2": {
"type": "ODOO",
"id": "2",
"formulaId": "2",
"name": "Regions per Country",
"model": "res.country.state",
"domain": [],
"context": {},
"measures": [{"id": "__count", "fieldName": "__count"}],
"rows": [{"fieldName": "country_id", "order": "desc"}],
"columns": [],
"sortedColumn": null,
"fieldMatching": {}
}
},
"pivotNextId": 3,
"lists": {},
"listNextId": 1,
"chartOdooMenusReferences": {}
}
92 changes: 91 additions & 1 deletion spreadsheet_oca/demo/spreadsheet_spreadsheet.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,101 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- ════════════════════════════════════════════════════════════════════
Demo Partners (geographic diversity for pivot demos)
════════════════════════════════════════════════════════════════════ -->

<record id="demo_partner_de_1" model="res.partner">
<field name="name">Müller GmbH</field>
<field name="is_company" eval="True" />
<field name="country_id" ref="base.de" />
</record>
<record id="demo_partner_de_2" model="res.partner">
<field name="name">Hans Weber</field>
<field name="country_id" ref="base.de" />
<field name="parent_id" ref="demo_partner_de_1" />
</record>
<record id="demo_partner_fr_1" model="res.partner">
<field name="name">Dupont SA</field>
<field name="is_company" eval="True" />
<field name="country_id" ref="base.fr" />
</record>
<record id="demo_partner_fr_2" model="res.partner">
<field name="name">Marie Leclerc</field>
<field name="country_id" ref="base.fr" />
<field name="parent_id" ref="demo_partner_fr_1" />
</record>
<record id="demo_partner_uk_1" model="res.partner">
<field name="name">British Solutions Ltd</field>
<field name="is_company" eval="True" />
<field name="country_id" ref="base.uk" />
</record>
<record id="demo_partner_uk_2" model="res.partner">
<field name="name">James Clarke</field>
<field name="country_id" ref="base.uk" />
<field name="parent_id" ref="demo_partner_uk_1" />
</record>
<record id="demo_partner_jp_1" model="res.partner">
<field name="name">Tanaka Industries</field>
<field name="is_company" eval="True" />
<field name="country_id" ref="base.jp" />
</record>
<record id="demo_partner_br_1" model="res.partner">
<field name="name">Silva Comércio Ltda</field>
<field name="is_company" eval="True" />
<field name="country_id" ref="base.br" />
</record>
<record id="demo_partner_br_2" model="res.partner">
<field name="name">Ana Costa</field>
<field name="country_id" ref="base.br" />
</record>
<record id="demo_partner_in_1" model="res.partner">
<field name="name">Patel Technologies Pvt Ltd</field>
<field name="is_company" eval="True" />
<field name="country_id" ref="base.in" />
</record>
<record id="demo_partner_in_2" model="res.partner">
<field name="name">Priya Sharma</field>
<field name="country_id" ref="base.in" />
<field name="parent_id" ref="demo_partner_in_1" />
</record>
<record id="demo_partner_au_1" model="res.partner">
<field name="name">Outback Systems Pty Ltd</field>
<field name="is_company" eval="True" />
<field name="country_id" ref="base.au" />
</record>

<!-- ════════════════════════════════════════════════════════════════════
Spreadsheet Records
════════════════════════════════════════════════════════════════════ -->

<record id="demo_spreadsheet" model="spreadsheet.spreadsheet">
<field name="name">Demo spreadsheet</field>
<field name="name">Sales Pipeline Summary</field>
<field name="owner_id" ref="base.user_admin" />
<field
name="spreadsheet_binary_data"
type="base64"
file="spreadsheet_oca/demo/demo_spreadsheet.json"
/>
</record>

<record id="demo_pivot_dashboard" model="spreadsheet.spreadsheet">
<field name="name">Partner Pivot Dashboard</field>
<field name="owner_id" ref="base.user_admin" />
<field
name="spreadsheet_binary_data"
type="base64"
file="spreadsheet_oca/demo/demo_pivot_dashboard.json"
/>
</record>

<!-- ════════════════════════════════════════════════════════════════════
Subscriptions
════════════════════════════════════════════════════════════════════ -->

<record id="demo_sub_weekly" model="spreadsheet.subscription">
<field name="spreadsheet_id" ref="demo_spreadsheet" />
<field name="partner_id" ref="base.partner_admin" />
<field name="frequency">weekly</field>
<field name="include_pivot_data" eval="True" />
</record>
</odoo>
2 changes: 2 additions & 0 deletions spreadsheet_oca/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from . import cell_ref # noqa: F401 — shared helpers; must be first
from . import spreadsheet_abstract
from . import spreadsheet_spreadsheet_tag
from . import spreadsheet_spreadsheet
from . import spreadsheet_oca_revision
from . import ir_websocket
from . import spreadsheet_spreadsheet_import_mode
from . import spreadsheet_subscription
Loading
Loading