Browse Source

Merge pull request #1 from luc-demeyer/14.0-mig-report_xlsx_helper_demo

[14.0][MIG] report_xlsx_helper_demo
14.0
Saran @ Ecosoft 4 years ago
committed by GitHub
parent
commit
82a42bff8d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 58
      report_xlsx_helper_demo/README.rst
  2. 2
      report_xlsx_helper_demo/__init__.py
  3. 18
      report_xlsx_helper_demo/__manifest__.py
  4. 45
      report_xlsx_helper_demo/i18n/report_xlsx_helper_demo.pot
  5. 1
      report_xlsx_helper_demo/models/__init__.py
  6. 24
      report_xlsx_helper_demo/models/res_partner.py
  7. 1
      report_xlsx_helper_demo/readme/CONTRIBUTORS.rst
  8. 2
      report_xlsx_helper_demo/readme/DESCRIPTION.rst
  9. 1
      report_xlsx_helper_demo/readme/INSTALL.rst
  10. 1
      report_xlsx_helper_demo/readme/USAGE.rst
  11. 1
      report_xlsx_helper_demo/report/__init__.py
  12. 108
      report_xlsx_helper_demo/report/partner_export_xlsx.py
  13. BIN
      report_xlsx_helper_demo/static/description/icon.png
  14. 24
      report_xlsx_helper_demo/views/res_partner.xml
  15. 1
      setup/report_xlsx_helper_demo/odoo/addons/report_xlsx_helper_demo
  16. 6
      setup/report_xlsx_helper_demo/setup.py

58
report_xlsx_helper_demo/README.rst

@ -0,0 +1,58 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: https://www.gnu.org/licenses/agpl
:alt: License: AGPL-3
==================================
Excel report engine helpers - demo
==================================
This module demonstrates the capabilities or the report_xlsx_helper module via
a basic example.
Usage
=====
Open a partner record and click on the 'Export XLS' button.
Installation
============
There is no specific installation procedure for this module.
Configuration and Usage
=======================
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/143/11.0
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/reporting-engine/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Contributors
------------
* Luc De Meyer <luc.demeyer@noviat.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
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.
To contribute to this module, please visit http://odoo-community.org.

2
report_xlsx_helper_demo/__init__.py

@ -0,0 +1,2 @@
from . import models
from . import report

18
report_xlsx_helper_demo/__manifest__.py

@ -0,0 +1,18 @@
# Copyright 2009-2020 Noviat.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Report xlsx helpers - demo",
"author": "Noviat, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/reporting-engine",
"category": "Reporting",
"version": "14.0.1.0.0",
"license": "AGPL-3",
"depends": [
"report_xlsx_helper",
],
"data": [
"views/res_partner.xml",
],
"installable": True,
}

45
report_xlsx_helper_demo/i18n/report_xlsx_helper_demo.pot

@ -0,0 +1,45 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * report_xlsx_helper_demo
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: report_xlsx_helper_demo
#: model_terms:ir.ui.view,arch_db:report_xlsx_helper_demo.view_partner_form
msgid "<span class=\"o_stat_text\">Export XLS</span>"
msgstr ""
#. module: report_xlsx_helper_demo
#: model:ir.model,name:report_xlsx_helper_demo.model_res_partner
msgid "Contact"
msgstr ""
#. module: report_xlsx_helper_demo
#: model:ir.model.fields,field_description:report_xlsx_helper_demo.field_report_report_xlsx_helper_demo_partner_export_xlsx__display_name
msgid "Display Name"
msgstr ""
#. module: report_xlsx_helper_demo
#: model:ir.model.fields,field_description:report_xlsx_helper_demo.field_report_report_xlsx_helper_demo_partner_export_xlsx__id
msgid "ID"
msgstr ""
#. module: report_xlsx_helper_demo
#: model:ir.model.fields,field_description:report_xlsx_helper_demo.field_report_report_xlsx_helper_demo_partner_export_xlsx____last_update
msgid "Last Modified on"
msgstr ""
#. module: report_xlsx_helper_demo
#: model:ir.model,name:report_xlsx_helper_demo.model_report_report_xlsx_helper_demo_partner_export_xlsx
msgid "report.report_xlsx_helper_demo.partner_export_xlsx"
msgstr ""

1
report_xlsx_helper_demo/models/__init__.py

@ -0,0 +1 @@
from . import res_partner

24
report_xlsx_helper_demo/models/res_partner.py

@ -0,0 +1,24 @@
# Copyright 2009-2020 Noviat
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class ResPartner(models.Model):
_inherit = "res.partner"
def export_xls(self):
module = __name__.split("addons.")[1].split(".")[0]
report_name = "{}.partner_export_xlsx".format(module)
report = {
"type": "ir.actions.report",
"report_type": "xlsx",
"report_name": report_name,
# model name will be used if no report_file passed via context
"context": dict(self.env.context, report_file="partner"),
# report_xlsx doesn't pass the context if the data dict is empty
# cf. report_xlsx\static\src\js\report\qwebactionmanager.js
# TODO: create PR on report_xlsx to fix this
"data": {"dynamic_report": True},
}
return report

1
report_xlsx_helper_demo/readme/CONTRIBUTORS.rst

@ -0,0 +1 @@
* Luc De Meyer <luc.demeyer@noviat.com>

2
report_xlsx_helper_demo/readme/DESCRIPTION.rst

@ -0,0 +1,2 @@
This module demonstrates the capabilities or the report_xlsx_helper module via
a basic example.

1
report_xlsx_helper_demo/readme/INSTALL.rst

@ -0,0 +1 @@
There is no specific installation procedure for this module.

1
report_xlsx_helper_demo/readme/USAGE.rst

@ -0,0 +1 @@
Open a partner record and click on the 'Export XLS' button.

1
report_xlsx_helper_demo/report/__init__.py

@ -0,0 +1 @@
from . import partner_export_xlsx

108
report_xlsx_helper_demo/report/partner_export_xlsx.py

@ -0,0 +1,108 @@
# Copyright 2009-2020 Noviat.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
from odoo.addons.report_xlsx_helper.report.report_xlsx_format import (
FORMATS,
XLS_HEADERS,
)
class PartnerExportXlsx(models.AbstractModel):
_name = "report.report_xlsx_helper_demo.partner_export_xlsx"
_description = "Report xlsx helpers"
_inherit = "report.report_xlsx.abstract"
def _get_ws_params(self, wb, data, partners):
partner_template = {
"name": {
"header": {
"value": "Name",
},
"data": {
"value": self._render("partner.name"),
},
"width": 20,
},
"number_of_contacts": {
"header": {
"value": "# Contacts",
},
"data": {
"value": self._render("len(partner.child_ids)"),
},
"width": 10,
},
"is_company": {
"header": {
"value": "Company",
},
"data": {
"value": self._render("partner.is_company"),
},
"width": 10,
},
"is_company_formula": {
"header": {
"value": "Company Y/N ?",
},
"data": {
"type": "formula",
"value": self._render("company_formula"),
},
"width": 14,
},
}
wanted_list = ["name", "number_of_contacts", "is_company", "is_company_formula"]
ws_params = {
"ws_name": "Partners",
"generate_ws_method": "_partner_report",
"title": "Partners",
"wanted_list": wanted_list,
"col_specs": partner_template,
}
return [ws_params]
def _partner_report(self, workbook, ws, ws_params, data, partners):
ws.set_portrait()
ws.fit_to_pages(1, 0)
ws.set_header(XLS_HEADERS["xls_headers"]["standard"])
ws.set_footer(XLS_HEADERS["xls_footers"]["standard"])
self._set_column_width(ws, ws_params)
row_pos = 0
if len(partners) == 1:
ws_params["title"] = partners.name
row_pos = self._write_ws_title(ws, row_pos, ws_params)
row_pos = self._write_line(
ws,
row_pos,
ws_params,
col_specs_section="header",
default_format=FORMATS["format_theader_yellow_left"],
)
ws.freeze_panes(row_pos, 0)
wl = ws_params["wanted_list"]
for partner in partners:
is_company_pos = "is_company" in wl and wl.index("is_company")
is_company_cell = self._rowcol_to_cell(row_pos, is_company_pos)
company_formula = 'IF({},"Y", "N")'.format(is_company_cell)
row_pos = self._write_line(
ws,
row_pos,
ws_params,
col_specs_section="data",
render_space={
"partner": partner,
"company_formula": company_formula,
},
default_format=FORMATS["format_tcell_left"],
)

BIN
report_xlsx_helper_demo/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

24
report_xlsx_helper_demo/views/res_partner.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">res.partner.test_xlsx</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<div name="button_box" position="inside">
<button
type="object"
class="oe_stat_button"
icon="fa-file-excel-o"
name="export_xls"
>
<div class="o_form_field o_stat_info">
<span class="o_stat_text">Export XLS</span>
</div>
</button>
</div>
</field>
</record>
</odoo>

1
setup/report_xlsx_helper_demo/odoo/addons/report_xlsx_helper_demo

@ -0,0 +1 @@
../../../../report_xlsx_helper_demo

6
setup/report_xlsx_helper_demo/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
Loading…
Cancel
Save