OCA reporting engine fork for dev and update.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 lines
2.4 KiB

# Copyright 2009-2019 Noviat.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
from .report_xlsx_format import FORMATS, XLS_HEADERS
# TODO:
# make PR to move this class as well as the report_xlsx test class
# to the tests folder (requires dynamic update Odoo registry when
# running unit tests.
class TestPartnerXlsx(models.AbstractModel):
_name = "report.report_xlsx_helper.test_partner_xlsx"
_inherit = "report.report_xlsx.abstract"
_description = "Test Partner XLSX Report"
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,
},
"date": {
"header": {"value": "Date"},
"data": {"value": self._render("partner.date")},
"width": 13,
},
}
ws_params = {
"ws_name": "Partners",
"generate_ws_method": "_partner_report",
"title": "Partners",
"wanted_list": [k for k in partner_template],
"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
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)
for partner in partners:
row_pos = self._write_line(
ws,
row_pos,
ws_params,
col_specs_section="data",
render_space={"partner": partner},
default_format=FORMATS["format_tcell_left"],
)