From 0bd84171e2a1a8272a1adcaa694ba5ce5073ab2e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 20 Dec 2016 01:05:09 +0100 Subject: [PATCH] Add methods for reports --- base_usability/__init__.py | 1 + base_usability/company.py | 81 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 base_usability/company.py diff --git a/base_usability/__init__.py b/base_usability/__init__.py index 32f4452..767083b 100644 --- a/base_usability/__init__.py +++ b/base_usability/__init__.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from . import partner +from . import company from . import mail from . import misc from . import report_sxw diff --git a/base_usability/company.py b/base_usability/company.py new file mode 100644 index 0000000..2cb4206 --- /dev/null +++ b/base_usability/company.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +# © 2015-2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, api, _ + + +class ResCompany(models.Model): + _inherit = 'res.company' + + @api.model + def generate_line(self, fields, options, icon=True, separator=' - '): + assert fields + assert options + content = [] + for field in fields: + value = False + if isinstance(field, tuple) and len(field) == 2: + value = field[0] + label = field[1] + uicon = False + elif isinstance(field, (str, unicode)) and field in options: + value = options[field]['value'] + label = options[field].get('label') + uicon = options[field].get('icon') + if value: + prefix = icon and uicon or label + if prefix: + content.append(u'%s %s' % (prefix, value)) + else: + content.append(value) + line = separator.join(content) + return line + + @api.multi + def _prepare_header_options(self): + self.ensure_one() + options = { + 'phone': { + 'value': self.phone, + # http://www.fileformat.info/info/unicode/char/1f4de/index.htm + 'icon': u'\U0001F4DE', + 'label': _('Tel:')}, + 'fax': { + 'value': self.fax, + # http://www.fileformat.info/info/unicode/char/1f5b7/index.htm + 'icon': u'\U0001F5B7', + 'label': _('Fax:')}, + 'email': { + 'value': self.email, + # http://www.fileformat.info/info/unicode/char/2709/index.htm + 'icon': u'\u2709', + 'label': _('E-mail:')}, + 'website': { + 'value': self.website, + 'icon': u'\U0001f310', + 'label': _('Website:')}, + 'vat': { + 'value': self.vat, + 'label': _('TVA :')}, # TODO translate + } + return options + + # for reports + @api.multi + def _display_report_header( + self, line_details=[['phone', 'fax', 'website'], ['vat']], + icon=True, line_separator=' - '): + self.ensure_one() + res = u'' + address = self.partner_id._display_address(without_company=True) + address = address.replace('\n', u' - ') + line1 = u'%s - %s' % (self.name, address) + lines = [line1] + options = self._prepare_header_options() + for details in line_details: + line = self.generate_line( + details, options, icon=icon, separator=line_separator) + lines.append(line) + res = '\n'.join(lines) + return res