Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
4fca549
[ADD] spreadsheet_oca
etobella Dec 28, 2022
1ad5ad2
[FIX] spreadsheet_oca: Improve security
etobella Feb 12, 2023
0d3e800
[IMP] spreadsheet_oca: Allow to import to existent spreadsheets
etobella Jan 20, 2023
94f963e
[IMP] spreadsheet_oca: Allow to export graphs to spreadsheets
etobella Jan 21, 2023
4676d01
[IMP] spreadsheet_oca: add to current sheet
etobella Mar 12, 2023
dfe7cb2
[FIX] spreadsheet_oca: Ctrl+Z was not working properly
etobella Apr 5, 2023
938d86b
[IMP] spreadhseet_oca: Allow edition of sheet name
etobella Apr 5, 2023
d582e1d
[IMP] spreadsheet_oca: Allow to edit filters
etobella Apr 7, 2023
7271b72
[FIX] spreadsheet_oca: Filters where failing
etobella Jun 6, 2023
68c2db2
[IMP] spreadsheet_oca: Alloe to edit Pivot data
etobella Jun 7, 2023
3a4a423
[IMP] spreadsheet_oca: Allow to import lists
etobella Jun 10, 2023
8b00e6c
[IMP] spreadsheet_oca: Allow to edit lists
etobella Jun 10, 2023
792bd65
[IMP] spreadsheet_oca: Allow to reinsert a pivot table
etobella Jun 11, 2023
94a0365
[FIX] spreadsheet_oca: Fix filters
etobella Jul 9, 2023
3a8b17a
[IMP] spreadsheet_oca: Allow to edit Odoo graphs properly
etobella Jul 9, 2023
a4710b0
[IMP] spreadsheet_oca: Add roadmap for specific questions
etobella Aug 19, 2023
a6829e1
[IMP] spreadsheet_oca: Allow to set the menu in all kind of charts. I…
etobella Aug 19, 2023
ef317c2
Added translation using Weblate (Dutch)
Jan-Onestein Oct 4, 2023
f21a3b7
Added translation using Weblate (Italian)
mymage Nov 30, 2023
a1dd402
[FIX] spreadsheet_oca: Cannot open spreadsheet when using undo / redo
royle-vietnam Feb 22, 2024
770a980
[IMP] spreadsheet_oca : Improve documentation
legalsylvain Mar 8, 2024
dbe219a
Added translation using Weblate (French (France) (fr_FR))
legalsylvain Mar 9, 2024
6b58be2
Translated using Weblate (Italian)
rbellanova Apr 23, 2024
d259420
[FIX] spreadsheet_oca: error when adding relation filter
daiduongnguyen-odoo May 2, 2024
85e4ad4
[FIX] spreadsheet_oca: Error when deleting a worksheet
chrisandrewmann May 31, 2024
3e55819
[FIX] spreadsheet_oca: Pivot does not imported correctly
CarlosRoca13 Jun 14, 2024
28f0bcb
[IMP] spreadsheet_oca: Auto resize cols to adjust them to cotent
CarlosRoca13 Jun 19, 2024
afc000a
Translated using Weblate (Italian)
mymage Jun 24, 2024
05d039c
[FIX] spreadsheet_oca: Keep pivot order
CarlosRoca13 Jul 8, 2024
473dc50
[IMP] spreadsheet*_oca: Add field to define name of table and restruc…
CarlosRoca13 Jul 17, 2024
62bdad0
[IMP] spreadsheet_oca: Allow generate dynamic tables
CarlosRoca13 Jul 18, 2024
d310c57
[IMP] spreadsheet_oca: Allow download spreadsheet as XLSX
CarlosRoca13 Jul 18, 2024
c870678
[FIX] spreadsheet_oca: Make last changes compatibles with tree and graph
CarlosRoca13 Jul 19, 2024
719ac8d
Translated using Weblate (Italian)
mymage Jul 29, 2024
5b9ca07
Added translation using Weblate (Portuguese)
peterromao Aug 21, 2024
a57c1a3
[FIX] spreadsheet_oca: correct spelling errors and remove outdated
royle-vietnam Aug 29, 2024
7e700a4
[IMP] spreadsheet_*_oca: Add possibility to make columns dynamic
CarlosRoca13 Sep 3, 2024
4ef785d
Translated using Weblate (Italian)
mymage Sep 4, 2024
efbb47c
[FIX] spreadsheet_oca: Show the "Add" button in invoice list
CarlosRoca13 Sep 16, 2024
d46863d
Added translation using Weblate (French)
gregory-moka Sep 17, 2024
4fe559c
[FIX] spreadsheet_oca: Avoid to show dynamic cols when no cols selected
CarlosRoca13 Sep 19, 2024
c86b622
Translated using Weblate (Italian)
mymage Sep 23, 2024
5555289
[FIX] spreadsheet_oca: Clean searchParams of problematic context keys
CarlosRoca13 Sep 26, 2024
ee482ca
Translated using Weblate (Italian)
mymage Oct 7, 2024
2294797
[IMP] spreadsheet_oca: Show data only on debug mode. Otherwise it is …
etobella Oct 25, 2024
320c92d
[IMP] spreadsheet_oca: Allow to import XLSX Files
etobella Oct 26, 2024
bf8f588
Translated using Weblate (Italian)
mymage Nov 4, 2024
2fce9d1
[IMP] spreadsheet_oca: pre-commit auto fixes
luisDIXMIT Jan 8, 2025
a4388d8
[MIG] spreadsheet_oca: Migration to 17.0
luisDIXMIT Jan 8, 2025
6cd4344
[MIG] spreadsheet_oca: Continue migration
etobella Jan 9, 2025
7cbbddc
[IMP] spreadsheet_oca: Add support for changing locale and currencies.
chrisandrewmann Feb 18, 2025
e5231ee
[FIX] spreadsheet_oca: Fix when using dynamic number of rows & columns
etobella Feb 23, 2025
5614532
[FIX] Crashes downloading XLSX. Crashes adding chart to sheet.
chrisandrewmann Apr 3, 2025
ba2ae9f
[IMP+MIG] Merge PR (https://github.com/OCA/spreadsheet/pull/57) from …
chrisandrewmann Apr 3, 2025
3ed8c98
[FIX] Dynamic rows and columns generation crashed, rewrite
chrisandrewmann Apr 3, 2025
620a8f9
[IMP+FIX] Add icons to file menu. Change date range filters to Month-…
chrisandrewmann Apr 3, 2025
13f006d
[FIX] Remove coding pragma and add contributor
chrisandrewmann Apr 3, 2025
b42b5fc
[IMP] spreadsheet_oca: pre-commit auto fixes
chrisandrewmann Apr 3, 2025
7d4fb7e
[IMP] Move spreadsheet data fields into spreadsheet_abstract and add …
chrisandrewmann Apr 4, 2025
5e1902e
Added translation using Weblate (Chinese (Simplified) (zh_CN))
xtanuiha Apr 17, 2025
df38207
Translated using Weblate (Italian)
mymage Jun 21, 2025
d6d802e
[FIX] spreadsheet_oca: getGroupByDisplayLabel error
chrisandrewmann Sep 8, 2025
4cc0a0c
[FIX] spreadsheet_oca: Make use of _zip_xslx_files that spreadsheet m…
CarlosRoca13 Sep 17, 2025
b0d77de
[FIX] spreadsheet_oca: Filters don't take care about field type
CarlosRoca13 Sep 18, 2025
8051331
[IMP] spreadsheet_oca: pre-commit auto fixes
chrisandrewmann Sep 24, 2025
95ae6b6
[MIG] spreadsheet_oca: Migration to 18.0
chrisandrewmann Sep 24, 2025
3936b57
[FIX] spreadsheet_oca: Crash when editing and leaving spreadsheet qui…
chrisandrewmann Oct 10, 2025
45fe032
[IMP] spreadsheet*_oca: Remove unnecessary options on spreadsheet ins…
CarlosRoca13 Oct 13, 2025
3882d92
[IMP] spreadsheet_oca: Add "Odoo 18"-like icon
tarteo Oct 15, 2025
d4cb0ce
[IMP] spreadsheet_oca: Change hotkey to add spreadsheet
CarlosRoca13 Oct 16, 2025
c535c67
Translated using Weblate (Italian)
mymage Oct 20, 2025
4150bfa
[IMP] spreadsheet_oca:
flotho Nov 21, 2025
c8944d3
[IMP]ACL: make tag readonly for basic users
flotho Dec 16, 2025
3cd04b9
Translated using Weblate (Italian)
mymage Dec 17, 2025
ab17279
[18.0][FIX] spreadsheet_oca: Fixed the fields[col.name] is undefined …
hitesh-erpharbor Jan 9, 2026
63c54ab
[FIX] spreadsheet_oca: fix patch to apply setup correctly
christian-ramos-tecnativa Feb 20, 2026
f039d2d
[IMP] spreadsheet_oca: Improve pivot side panel to allow modify Pivot…
CarlosRoca13 Feb 24, 2026
b7d10fe
[FIX] spreadsheet_oca: Remove duplicated charts that are throwing err…
CarlosRoca13 Feb 24, 2026
f8d7105
Revert "[FIX] spreadsheet_oca: Remove duplicated charts that are thro…
CarlosRoca13 Feb 25, 2026
3e14e16
[FIX] spreadsheet_oca: Use the correct graphs depending on the type o…
CarlosRoca13 Feb 25, 2026
7587d1c
Translated using Weblate (Italian)
mymage Feb 25, 2026
1913ca4
[FIX] spreadsheet_oca: Take care about variables on domain
CarlosRoca13 Mar 2, 2026
fffb89a
[FIX] spreadsheet_oca: Error linking chart to Odoo menu
CarlosRoca13 Feb 25, 2026
438cee3
Translated using Weblate (Italian)
mymage Mar 3, 2026
59910a0
[FIX] spreadsheet_oca: Error thrown when pivot is sorted
CarlosRoca13 Mar 24, 2026
54ce0af
[IMP] spreadsheet_oca: Add new features to relation filters
CarlosRoca13 Mar 26, 2026
c97ad6b
Translated using Weblate (Italian)
mymage Apr 8, 2026
8a747c6
Translated using Weblate (Spanish)
alexmorel-tecnativa Apr 10, 2026
cd361e6
Translated using Weblate (Spanish)
Ed-Spain Apr 13, 2026
961b8f7
Translated using Weblate (Spanish)
alexmorel-tecnativa Apr 16, 2026
98f9586
Translated using Weblate (French)
ypapouin Jun 10, 2026
01391a8
[IMP] spreadsheet_oca: pre-commit auto fixes
chrisandrewmann Jul 23, 2026
00d4389
[MIG] spreadsheet_oca: Migration to 19.0
chrisandrewmann Jul 23, 2026
9018f55
[FIX] spreadsheet_oca: inherit parent components in SpreadsheetContro…
nericervin Apr 12, 2026
627c2f8
[IMP] spreadsheet_oca: pre-commit auto fixes
dnplkndll Sep 29, 2026
f8487fc
[MIG] spreadsheet_oca: Migration to 20.0
dnplkndll Sep 29, 2026
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
151 changes: 151 additions & 0 deletions spreadsheet_oca/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

===============
Spreadsheet Oca
===============

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:45e8bf302508ed56dbdadf41d40596c05e166f02b22f5d9f50a41576f4093012
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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
: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
:target: https://github.com/OCA/spreadsheet/tree/20.0/spreadsheet_oca
:alt: OCA/spreadsheet
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/spreadsheet-20-0/spreadsheet-20-0-spreadsheet_oca
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=20.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module adds a functionality for adding and editing Spreadsheets
using Odoo CE.

It is an alternative to the proprietary module ``spreadsheet_edition``
of Odoo Enterprise Edition.

**Table of contents**

.. contents::
:local:

Usage
=====

**Create a new spreadsheet**
----------------------------

- Go to 'Spreadsheet' menu
- Click on 'Create'
- Put a name, then click on the "Edit" button

|image1|

- At this point you switch to spreadsheet editing mode. The editor is
named ``o-spreadsheet`` and looks like another common spreadsheet web
editors. (OnlyOffice, Ethercalc, Google Sheets (non-free)).

|image2|

- You can use common functions ``SUM()``, ``AVERAGE()``, etc. in the
cells. For a complete list of functions and their syntax, Refer to the
documentation https://github.com/odoo/o-spreadsheet/ or go to
https://odoo.github.io/o-spreadsheet/ and click on "Insert >
Function".

|image3|

- Note: Business Odoo module can add "business functions". This is
currently the case for the accounting module, which adds the following
features:

- ``ODOO.CREDIT(account_codes, date_range)``: Get the total credit
for the specified account(s) and period.
- ``ODOO.DEBIT(account_codes, date_range)``: Get the total debit
for the specified account(s) and period.
- ``ODOO.BALANCE(account_codes, date_range)``: Get the total
balance for the specified account(s) and period.
- ``ODOO.FISCALYEAR.START(day)``: Returns the starting date of the
fiscal year encompassing the provided date.
- ``ODOO.FISCALYEAR.END(day)``: Returns the ending date of the
fiscal year encompassing the provided date.
- ``ODOO.ACCOUNT.GROUP(type)``: Returns the account ids of a given
group where type should be a value of the ``account_type`` field
of ``account.account`` model. (``income``, ``asset_receivable``,
etc.)

.. |image1| image:: https://raw.githubusercontent.com/OCA/spreadsheet/20.0/spreadsheet_oca/static/description/spreadsheet_create.png
.. |image2| image:: https://raw.githubusercontent.com/OCA/spreadsheet/20.0/spreadsheet_oca/static/description/spreadsheet_edit.png
.. |image3| image:: https://raw.githubusercontent.com/OCA/spreadsheet/20.0/spreadsheet_oca/static/description/o-spreadsheet.png

Development
===========

If you want to develop custom business functions, you can add others,
based on the file
https://github.com/odoo/odoo/blob/16.0/addons/spreadsheet_account/static/src/accounting_functions.js

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/spreadsheet/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/spreadsheet/issues/new?body=module:%20spreadsheet_oca%0Aversion:%2020.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* CreuBlanca

Contributors
------------

- Enric Tobella
- `Tecnativa <https://www.tecnativa.com>`__:

- Carlos Roca

- `Open User Systems <https://www.openusersystems.com>`__:

- Chris Mann

- `Mind And Go <https://mind-and-go.com>`__

- Florent THOMAS

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/spreadsheet <https://github.com/OCA/spreadsheet/tree/20.0/spreadsheet_oca>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions spreadsheet_oca/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import controllers
from . import models
from . import wizards
50 changes: 50 additions & 0 deletions spreadsheet_oca/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Copyright 2022 CreuBlanca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Spreadsheet Oca",
"summary": "Allow to edit spreadsheets",
"version": "20.0.1.0.0",
"license": "AGPL-3",
"author": "CreuBlanca,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/spreadsheet",
"depends": ["spreadsheet", "base_sparse_field", "bus"],
"data": [
"security/security.xml",
"security/ir.access.csv",
"views/spreadsheet_spreadsheet.xml",
"data/spreadsheet_spreadsheet_import_mode.xml",
"wizards/spreadsheet_select_row_number.xml",
"wizards/spreadsheet_spreadsheet_import.xml",
],
"demo": ["demo/spreadsheet_spreadsheet.xml"],
"assets": {
"web.assets_backend": [
"spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js",
"spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml",
"spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss",
"spreadsheet_oca/static/src/spreadsheet/spreadsheet_action.esm.js",
"spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js",
"spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js",
"spreadsheet_oca/static/src/spreadsheet/list_controller.xml",
],
"web.assets_backend_lazy": [
"spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js",
"spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js",
"spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml",
"spreadsheet_oca/static/src/spreadsheet/graph_controller.xml",
],
"spreadsheet.o_spreadsheet": [
"spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml",
"spreadsheet_oca/static/src/spreadsheet/bundle/image_file_store.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js",
"spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js",
],
},
}
1 change: 1 addition & 0 deletions spreadsheet_oca/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import main
24 changes: 24 additions & 0 deletions spreadsheet_oca/controllers/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2024 Tecnativa - Carlos Roca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
import json

from odoo.http import Controller, request, route
from odoo.http.stream import content_disposition


class SpreadsheetDownloadXLSX(Controller):
@route("/spreadsheet/xlsx", type="http", auth="user", methods=["POST"])
def download_spreadsheet_xlsx(self, zip_name, files, **kw):
if hasattr(files, "read"):
files = files.read().decode("utf-8")
files = json.loads(files)
file_content = request.env["spreadsheet.mixin"]._zip_xslx_files(files)
return request.make_response(
file_content,
[
("Content-Length", len(file_content)),
("Content-Type", "application/vnd.ms-excel"),
("X-Content-Type-Options", "nosniff"),
("Content-Disposition", content_disposition(zip_name)),
],
)
21 changes: 21 additions & 0 deletions spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record
id="spreadsheet_import_mode_new"
model="spreadsheet.spreadsheet.import.mode"
>
<field name="code">new</field>
<field name="name">Create spreadsheet</field>
<field name="sequence" eval="10" />
<field name="group_ids" eval="[(4, ref('spreadsheet_oca.group_user'))]" />
</record>
<record
id="spreadsheet_import_mode_add"
model="spreadsheet.spreadsheet.import.mode"
>
<field name="code">add</field>
<field name="name">Add to spreadsheet</field>
<field name="sequence" eval="15" />
<field name="group_ids" eval="[(4, ref('spreadsheet_oca.group_user'))]" />
</record>
</odoo>
54 changes: 54 additions & 0 deletions spreadsheet_oca/demo/demo_spreadsheet.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"version": 12.5,
"sheets": [
{
"id": "Sheet1",
"name": "Demo Sheet 1",
"colNumber": 26,
"rowNumber": 100,
"rows": {},
"cols": {},
"merges": [],
"cells": {
"A1": {"style": 1, "content": "First Value", "border": 1},
"A2": {"format": 1, "content": "30.55", "border": 1},
"B1": {"style": 1, "content": "Second Value", "border": 1},
"B2": {"format": 1, "content": "50", "border": 1},
"C1": {"style": 1, "content": "Total", "border": 1},
"C2": {"format": 1, "content": "=sum(A2:B2)", "border": 1},
"A3": {"border": 2},
"B3": {"border": 2},
"C3": {"border": 2},
"D1": {"border": 3},
"D2": {"border": 3}
},
"conditionalFormats": [],
"figures": [],
"filterTables": [],
"areGridLinesVisible": true,
"isVisible": true
}
],
"entities": {},
"styles": {"1": {"bold": true, "align": "center"}},
"formats": {"1": "[$$]#,##0.00"},
"borders": {
"1": {
"top": ["thin", "#000"],
"bottom": ["thin", "#000"],
"left": ["thin", "#000"],
"right": ["thin", "#000"]
},
"2": {"top": ["thin", "#000"]},
"3": {"left": ["thin", "#000"]}
},
"revisionId": "START_REVISION",
"uniqueFigureIds": true,
"odooVersion": 5,
"globalFilters": [],
"pivots": {},
"pivotNextId": 1,
"lists": {},
"listNextId": 1,
"chartOdooMenusReferences": {}
}
11 changes: 11 additions & 0 deletions spreadsheet_oca/demo/spreadsheet_spreadsheet.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="demo_spreadsheet" model="spreadsheet.spreadsheet">
<field name="name">Demo spreadsheet</field>
<field
name="spreadsheet_binary_data"
type="bytes"
file="spreadsheet_oca/demo/demo_spreadsheet.json"
/>
</record>
</odoo>
Loading
Loading