Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
06514c2
[ADD] spreadsheet_oca
etobella Dec 28, 2022
078d122
[FIX] spreadsheet_oca: Improve security
etobella Feb 12, 2023
294eaaa
[IMP] spreadsheet_oca: Allow to import to existent spreadsheets
etobella Jan 20, 2023
aafef1d
[IMP] spreadsheet_oca: Allow to export graphs to spreadsheets
etobella Jan 21, 2023
77497fc
[IMP] spreadsheet_oca: add to current sheet
etobella Mar 12, 2023
2845dd0
[FIX] spreadsheet_oca: Ctrl+Z was not working properly
etobella Apr 5, 2023
e4d220b
[IMP] spreadhseet_oca: Allow edition of sheet name
etobella Apr 5, 2023
5402b27
[IMP] spreadsheet_oca: Allow to edit filters
etobella Apr 7, 2023
b6eef9a
[FIX] spreadsheet_oca: Filters where failing
etobella Jun 6, 2023
f166b05
[IMP] spreadsheet_oca: Alloe to edit Pivot data
etobella Jun 7, 2023
0eb6911
[IMP] spreadsheet_oca: Allow to import lists
etobella Jun 10, 2023
5099421
[IMP] spreadsheet_oca: Allow to edit lists
etobella Jun 10, 2023
a2d5a0f
[IMP] spreadsheet_oca: Allow to reinsert a pivot table
etobella Jun 11, 2023
738cd58
[FIX] spreadsheet_oca: Fix filters
etobella Jul 9, 2023
88c4b6f
[IMP] spreadsheet_oca: Allow to edit Odoo graphs properly
etobella Jul 9, 2023
6ee217e
[IMP] spreadsheet_oca: Add roadmap for specific questions
etobella Aug 19, 2023
e03a0bf
[IMP] spreadsheet_oca: Allow to set the menu in all kind of charts. I…
etobella Aug 19, 2023
c3060b4
Added translation using Weblate (Dutch)
Jan-Onestein Oct 4, 2023
b5f617f
Added translation using Weblate (Italian)
mymage Nov 30, 2023
aae967b
[FIX] spreadsheet_oca: Cannot open spreadsheet when using undo / redo
royle-vietnam Feb 22, 2024
edf4a37
[IMP] spreadsheet_oca : Improve documentation
legalsylvain Mar 8, 2024
892bed0
Added translation using Weblate (French (France) (fr_FR))
legalsylvain Mar 9, 2024
cf9d05c
Translated using Weblate (Italian)
rbellanova Apr 23, 2024
440ca35
[FIX] spreadsheet_oca: error when adding relation filter
daiduongnguyen-odoo May 2, 2024
0434d60
[FIX] spreadsheet_oca: Error when deleting a worksheet
chrisandrewmann May 31, 2024
29ed3d5
[FIX] spreadsheet_oca: Pivot does not imported correctly
CarlosRoca13 Jun 14, 2024
b24bd41
[IMP] spreadsheet_oca: Auto resize cols to adjust them to cotent
CarlosRoca13 Jun 19, 2024
6ecc008
Translated using Weblate (Italian)
mymage Jun 24, 2024
713f43d
[FIX] spreadsheet_oca: Keep pivot order
CarlosRoca13 Jul 8, 2024
933ca7a
[IMP] spreadsheet*_oca: Add field to define name of table and restruc…
CarlosRoca13 Jul 17, 2024
99a1dc0
[IMP] spreadsheet_oca: Allow generate dynamic tables
CarlosRoca13 Jul 18, 2024
44181eb
[IMP] spreadsheet_oca: Allow download spreadsheet as XLSX
CarlosRoca13 Jul 18, 2024
6e961f4
[FIX] spreadsheet_oca: Make last changes compatibles with tree and graph
CarlosRoca13 Jul 19, 2024
1b6b8f1
Translated using Weblate (Italian)
mymage Jul 29, 2024
2ec6404
Added translation using Weblate (Portuguese)
peterromao Aug 21, 2024
522e65e
[FIX] spreadsheet_oca: correct spelling errors and remove outdated
royle-vietnam Aug 29, 2024
2dc6ff9
[IMP] spreadsheet_*_oca: Add possibility to make columns dynamic
CarlosRoca13 Sep 3, 2024
83c68d4
Translated using Weblate (Italian)
mymage Sep 4, 2024
acd365b
[FIX] spreadsheet_oca: Show the "Add" button in invoice list
CarlosRoca13 Sep 16, 2024
76271fd
Added translation using Weblate (French)
gregory-moka Sep 17, 2024
996133a
[FIX] spreadsheet_oca: Avoid to show dynamic cols when no cols selected
CarlosRoca13 Sep 19, 2024
33c3873
Translated using Weblate (Italian)
mymage Sep 23, 2024
b1782f3
[FIX] spreadsheet_oca: Clean searchParams of problematic context keys
CarlosRoca13 Sep 26, 2024
777f45a
Translated using Weblate (Italian)
mymage Oct 7, 2024
8789d99
[IMP] spreadsheet_oca: Show data only on debug mode. Otherwise it is …
etobella Oct 25, 2024
a0d6746
[IMP] spreadsheet_oca: Allow to import XLSX Files
etobella Oct 26, 2024
ac69159
Translated using Weblate (Italian)
mymage Nov 4, 2024
43ed1c3
[IMP] spreadsheet_oca: pre-commit auto fixes
luisDIXMIT Jan 8, 2025
91bd7ec
[MIG] spreadsheet_oca: Migration to 17.0
luisDIXMIT Jan 8, 2025
46dfd3a
[MIG] spreadsheet_oca: Continue migration
etobella Jan 9, 2025
9710ea5
[IMP] spreadsheet_oca: Add support for changing locale and currencies.
chrisandrewmann Feb 18, 2025
9ca2a18
[FIX] spreadsheet_oca: Fix when using dynamic number of rows & columns
etobella Feb 23, 2025
fd285fb
[FIX] Crashes downloading XLSX. Crashes adding chart to sheet.
chrisandrewmann Apr 3, 2025
8517baa
[IMP+MIG] Merge PR (https://github.com/OCA/spreadsheet/pull/57) from …
chrisandrewmann Apr 3, 2025
b22487e
[FIX] Dynamic rows and columns generation crashed, rewrite
chrisandrewmann Apr 3, 2025
f68d3e2
[IMP+FIX] Add icons to file menu. Change date range filters to Month-…
chrisandrewmann Apr 3, 2025
eff460d
[FIX] Remove coding pragma and add contributor
chrisandrewmann Apr 3, 2025
19e7ee0
[IMP] spreadsheet_oca: pre-commit auto fixes
chrisandrewmann Apr 3, 2025
8fa726e
[IMP] Move spreadsheet data fields into spreadsheet_abstract and add …
chrisandrewmann Apr 4, 2025
1b85e74
Added translation using Weblate (Chinese (Simplified) (zh_CN))
xtanuiha Apr 17, 2025
52aba6f
Translated using Weblate (Italian)
mymage Jun 21, 2025
b680eb6
[FIX] spreadsheet_oca: getGroupByDisplayLabel error
chrisandrewmann Sep 8, 2025
cd6a90b
[FIX] spreadsheet_oca: Make use of _zip_xslx_files that spreadsheet m…
CarlosRoca13 Sep 17, 2025
bd5df02
[FIX] spreadsheet_oca: Filters don't take care about field type
CarlosRoca13 Sep 18, 2025
2f08617
[IMP] spreadsheet_oca: pre-commit auto fixes
chrisandrewmann Sep 24, 2025
d74f6c3
[MIG] spreadsheet_oca: Migration to 18.0
chrisandrewmann Sep 24, 2025
0ce21fa
[FIX] spreadsheet_oca: Crash when editing and leaving spreadsheet qui…
chrisandrewmann Oct 10, 2025
bbacd5f
[IMP] spreadsheet*_oca: Remove unnecessary options on spreadsheet ins…
CarlosRoca13 Oct 13, 2025
eea88fe
[IMP] spreadsheet_oca: Add "Odoo 18"-like icon
tarteo Oct 15, 2025
05576aa
[IMP] spreadsheet_oca: Change hotkey to add spreadsheet
CarlosRoca13 Oct 16, 2025
55b95d1
Translated using Weblate (Italian)
mymage Oct 20, 2025
fd6a0f8
[IMP] spreadsheet_oca:
flotho Nov 21, 2025
cd0401c
[IMP]ACL: make tag readonly for basic users
flotho Dec 16, 2025
43c1f39
Translated using Weblate (Italian)
mymage Dec 17, 2025
03e9529
[18.0][FIX] spreadsheet_oca: Fixed the fields[col.name] is undefined …
hitesh-erpharbor Jan 9, 2026
368f1b1
[FIX] spreadsheet_oca: fix patch to apply setup correctly
christian-ramos-tecnativa Feb 20, 2026
8b02b97
[IMP] spreadsheet_oca: Improve pivot side panel to allow modify Pivot…
CarlosRoca13 Feb 24, 2026
d7b53ab
[FIX] spreadsheet_oca: Remove duplicated charts that are throwing err…
CarlosRoca13 Feb 24, 2026
156c927
Revert "[FIX] spreadsheet_oca: Remove duplicated charts that are thro…
CarlosRoca13 Feb 25, 2026
f72a4b1
[FIX] spreadsheet_oca: Use the correct graphs depending on the type o…
CarlosRoca13 Feb 25, 2026
51fff5b
Translated using Weblate (Italian)
mymage Feb 25, 2026
d15467a
[FIX] spreadsheet_oca: Take care about variables on domain
CarlosRoca13 Mar 2, 2026
0150b95
[FIX] spreadsheet_oca: Error linking chart to Odoo menu
CarlosRoca13 Feb 25, 2026
78bc1e0
Translated using Weblate (Italian)
mymage Mar 3, 2026
5389022
[FIX] spreadsheet_oca: Error thrown when pivot is sorted
CarlosRoca13 Mar 24, 2026
bbe1027
[IMP] spreadsheet_oca: Add new features to relation filters
CarlosRoca13 Mar 26, 2026
db8a99b
Translated using Weblate (Italian)
mymage Apr 8, 2026
f1cc4fe
Translated using Weblate (Spanish)
alexmorel-tecnativa Apr 10, 2026
5242628
Translated using Weblate (Spanish)
Ed-Spain Apr 13, 2026
52bc5f5
Translated using Weblate (Spanish)
alexmorel-tecnativa Apr 16, 2026
88fdc34
Translated using Weblate (French)
ypapouin Jun 10, 2026
7b682c7
[IMP] spreadsheet_oca: pre-commit auto fixes
chrisandrewmann Jul 23, 2026
f08deb4
[MIG] spreadsheet_oca: Migration to 19.0
chrisandrewmann Jul 23, 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:1310916cafc940d7dcb638553bb2072e73f47cc887916d5c384b1cec841b4223
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/19.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-19-0/spreadsheet-19-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=19.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/19.0/spreadsheet_oca/static/description/spreadsheet_create.png
.. |image2| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/static/description/spreadsheet_edit.png
.. |image3| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.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:%2019.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/19.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
51 changes: 51 additions & 0 deletions spreadsheet_oca/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Copyright 2022 CreuBlanca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Spreadsheet Oca",
"summary": """
Allow to edit spreadsheets""",
"version": "19.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.model.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
23 changes: 23 additions & 0 deletions spreadsheet_oca/controllers/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2024 Tecnativa - Carlos Roca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
import json

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


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="base64"
file="spreadsheet_oca/demo/demo_spreadsheet.json"
/>
</record>
</odoo>
Loading
Loading