Commit Graph
172 Commits
Author SHA1 Message Date
Christophe Simonis cb00be643a [MERGE] forward port branch saas-14 up to a4d5e64a4c 2017-03-06 15:46:24 +01:00
Denis Ledoux a4d5e64a4c [FIX] report: Edit Header button in General Settings
opw-710501
Closes #15661
2017-03-06 15:39:27 +01:00
Laurent Mignon (ACSONE) b3b3715586 [IMP] report: add postprocess hook in attachment generation
To allow to override a postprocess of a generated report
By default the method create the attachement if required

Closes #15091 
Closes #15241 
Closes #15268
2017-02-24 17:59:39 +01:00
Kinjal Mehta 9363b63a5c [IMP] sale, report: small fixes in sale onboarding 2017-02-13 14:25:42 +01:00
Christophe Simonis cbdd0b20dc [MERGE] forward port branch 10.0 up to ffd4442b06 2017-02-10 13:17:02 +01:00
Denis Ledoux 9c96631dde [FIX] report: associated views with report name without dots
When setting a report with a `report_name` without dots,
the associated views button raised an exception.

This has been introduced during the migration to the new API
at revision 47c67b640b

Before, a try/except made sure the exception to not raise
the exception in case the report name could not be split
in two parts.

In this revision, instead of doing the try/except,
we check if the result of the split has a minimum
length of 2.

opw-706343
2017-02-03 11:19:01 +01:00
Christophe Simonis 6c4389df41 [MERGE] forward port branch 10.0 up to 6804085b8c 2017-01-23 14:33:53 +01:00
Martin Geubelle c0e02f089b [FIX] report: edit report without website
Before this commit, website needed to be installed to edit
a HTML report because the context `inherit_branding` was not
correctly passed.

Credits to @sle-odoo
2017-01-16 15:02:33 +01:00
Fabien Pinckaers 3d04e44880 [ADD] report,base: custom report layouts
External layout for reports can be customized. 4 Layout are currently
proposed, selectable from General Settings.
An onboarding popup is shown to select the layout to used if none has
been shown nor a company logo chosen.

Joint works by Fabien Pinckaers, Antony Lesuisse and Christophe Simonis.
Design by Csaba Fazekas.
2017-01-04 18:51:17 +01:00
Akash Bhavsar 79fd51b2a5 [IMP] base_setup: Improve the General Settings form view 2017-01-03 17:07:02 +01:00
Raphael Collet d0ca2d115e [REF] ir_config_parameter: remove group_ids and simplify
Add `sudo()` to call `get_param` where necessary, and make the web client use a
controller instead of directly accessing parameters.
2017-01-03 16:52:49 +01:00
Raphael Collet 7543afb070 [IMP] base, *: tighten ir.config_parameter access rights
Add `base.group_system` on existing parameters:
 - `auth_signup.allow_uninvited`,
 - `auth_signup.reset_password`,
 - `auth_signup.template_user_id`,
 - `google_redirect_uri`,
 - `mail.bounce.alias`,
 - `mail.catchall.alias`,
 - `mail.catchall.domain`.
2017-01-03 16:52:49 +01:00
qdp-odoo 4f29b77e3d [MERGE] foward port of 10.0 up to revision 84a650e33a 2016-12-30 17:21:25 +01:00
Pratima Gupta dccfdb0ddb [IMP] account: onboarding invoice report layout
Impacted modules : base, base_setup,
account, report, and base_vat

The purpose is here to ease the creation
of the first invoice. To do so, we need to
ease the configuration of VAT, company data,
and report layouting.

This commits brings
- better labelling for TIN, VAT and Tax Id
for partner and companies (form view, ...)
- change settings for footer of report : allow
to use custom or standart footer, and display them
in settings view.
- always display TIN in standart report footer
- remove (demo) data of main company to not set
company logo on reports

Also, a message is display on the report when the
data company are not configured yet.

The invoice report is now regenerated each time
the user want to print it.
2016-12-23 09:29:09 +01:00
Christophe Simonis d112a1a94e [FIX] report: remove extra argument left by previous forward-port 2016-12-16 17:15:18 +01:00
Christophe Simonis e91a8d428f [MERGE] forward port branch saas-11 up to 2a6e077f4a 2016-12-16 16:10:03 +01:00
Christophe Simonis 2a6e077f4a [MERGE] forward port branch 9.0 up to 1246a470df 2016-12-16 15:55:13 +01:00
Laurent Mignon (ACSONE) 8d43fc46f2 [FIX] report: add missing context
This PR allow to use the context to specify contextual informations used in the
create method of ir.attachement.

Closes #13790
2016-12-14 16:43:25 +01:00
Cyril Gaudin 3ac2904b46 [FIX] report: missing context v7 signature
The v8 call uses `context=self._context`
Private method so should be ok to modify the signature.

Closes #13263
2016-12-14 15:21:35 +01:00
Christophe Simonis 18456b9d42 [MERGE] forward port branch saas-11 up to 321b7dc 2016-12-09 15:44:01 +01:00
Christophe Simonis 70193f23dc [MERGE] forward port branch 9.0 up to 154a125 2016-12-08 13:55:40 +01:00
Martin Trigaux 3642f11942 [FIX] report: catch missing wkhtml error
If wkhtmltopdf is missing, a call to a report will be catched to warn the user.
In case of a report generated indirectly (e.g. via an attachment on an email
template), the rendering would crash.

As warning the user is better than returning a traceback, raise a UserError.

Closes #14535
2016-12-07 11:58:32 +01:00
Simon Lejeune 7ccf4e60c8 [FIX] report: correctly handle broken wkhtmltopdf
It's possible that the command `wkhtmltopdf --version` returns an empty
string (in the use case, it output later in stdout "wkhtmltopdf: error
while loading shared libraries: libfontconfig.so.1: cannot open shared
object file: No such file or directory").

We chose to display the report in html in this case and also to show
a warning to the user inviting him to fix his installation.
2016-12-07 11:30:04 +01:00
Christophe Simonis 856476d441 [MERGE] forward port branch saas-12 up to b1b700a 2016-09-22 15:23:45 +02:00
Fabien Meghazi 5dec69c35d [REV] fix ir.qweb#render() return type
This commit reverts the API change introduced in b3302398bc
that changes `ir.qweb#render()` to return a unicode string instead of a utf8
encoded bytestring.

Returning a unicode string is undoubtedly cleaner and a step in the direction
of python 3 but still is an API change that can break third party modules.

Let's wait the migration to python 3 before breaking other people's toys.
2016-09-19 15:22:46 +02:00
Yannick Tivisse 4ff49df02b [FIX] report: Fix due to report migration 2016-09-02 13:44:15 +02:00
Yannick Tivisse 665781d5a8 [IMP] various: Move all configuration fields from res_company form to the related modules
=======
Purpose
=======

The company form should be heavily simplified. It's complex to have some settings on the company form, and others on the Settings menu of the related app. It would be much easier to have all settings in Settings menu (res.config) and nothing on the company, even if some of the Settings are multi company. (Stored on the company but set from the Settings menu).
2016-09-02 13:44:15 +02:00
Christophe Simonis 235ed4b2c1 [MERGE] forward port branch saas-12 up to 9ad5f26 2016-08-20 18:08:19 +02:00
Raphael Collet bf668b64c1 [IMP] all: clean usage of safe_eval
Specifically: do not import `safe_eval` as `eval`, keep it explicit instead.
2016-08-11 15:36:56 +02:00
Yannick Tivisse a3f83916d0 [FIX] report: Pass correctly the docids to render_html method
In the 'get_html' method, the report is using a custom model to render its html,
we should use its own 'render_html' method to generate the report. During the
module migration, we replaced
'report_model.render_html(cr, uid, ids, data=data, context=context)'
by
'report_model.render_html(data=data)'

The new API signature of 'get_html' is

    @api.model
    def get_html(self, docids, report_name, data=None):

That way, 'render_html' doesn't receive docids anymore when called. We should do instead

    if report_model is not None:
        return report_model.browse(docids).render_html(data=data)

As render_html is an api.multi method, this is all wrong too, because we'll send a
browse record with the custom report model to the render_html method, to use the
ids with 'self.ids' that are absolutely not corresponding to the report model but to
to the record model we want to print (an invoice for example).

In old API style we were sending a list of ids, but it's not correct to keep the same
behavior by sending a browse record with only the ids relevant. We have also to
change render_html method decorator to @api.model with a new signature

    @api.model
    def render_html(self, docids, data=None):

And replace the call to render_html by

    if report_model is not None:
        return report_model.render_html(docids, data=data)

In the case the report is printed from a wizard, this is sufficient because the ids
are taken from the active_ids in context, or in data.

In the case the report is printed from a simple action, we should replace the occurence
of 'self.ids' (which doesn't mean anything) to 'docids'

This fix doesn't solve the printing issues for the custom accounting reports, because
the method get_pdf has been reimplemented in the module account_reports.
2016-08-10 11:13:33 +02:00
Simon Lejeune d6683c4c80 [FIX] report: get_action: name the action
This is useful now that we show the report in the action manager thanks
to the report client action. Also remove the duplication of the context
key.
2016-08-05 17:04:32 +02:00
fwi-odoo d4e813b873 [REF] web, *: change deprecated import openerp.addons.web.http to odoo.http
We also remove the mock in web as there is no need for it anymore.
2016-08-03 13:42:05 +02:00
Yannick Tivisse 962d0ee354 [FIX] report: display correclty the first printed report
The key 'commit_assetsbundle' wasn't in the context to the method 'get_pdf'
This issue comes from the module migration.
2016-07-29 12:20:41 +02:00
Yannick Tivisse 42b891700e [FIX] report: allow 'get_action' to receive id, ids or browse records as 'docids'
1/ If no docids are passed in get_action (empty list) do not put in context

2/ The method should accept ids or browse records as docids for retrocompatibility.
- The api.v7 method took ids as docids
- The api.v8 method took a browse records 'records' to call the api.v7 method with
  'records.ids' as docids
In python, we cannot write 2 functions with the same name that takes differents types
for the same argument. The function 'guess' in api.py will lead to a crash if we expect
a browse record and we send a list
The only way to allow the method to receive different types for the same argument is
to decorate it with '@api.noguess' to prevent any effect from guess method.
That way, we check directly if 'docids' is an id, ids or a browserecord and we always set
a list instead.
2016-07-29 12:20:41 +02:00
rka-odoo 47c67b640b [MIG] report: Migration to new API 2016-07-19 11:56:29 +02:00
rka-odoo 01ad2f3a90 [SPLIT] report: Split files by model 2016-07-19 11:56:22 +02:00
Christophe Simonis 5858dda75f [MERGE] forward port branch saas-11 up to a62b8cf 2016-07-15 16:34:41 +02:00
Christophe Simonis 1fca5e01cb [MERGE] forward port branch saas-10 up to 156dee2 2016-07-14 18:17:30 +02:00
Denis Ledoux 3455daf948 [FIX] report, qweb: disppearence of header/footer in debug
This is similar to revision
3c61ee5c68

opw-682740
2016-07-08 16:22:20 +02:00
Christophe Matthieu 3407fb70e4 [IMP] qweb: add t-options on t-esc and t-raw who use 'ir.qweb.field' models
Remove 'field' from 'value_to_html' method attributes
't-esc' escape the result of the widget.
(Added 'remove_span' as option for monetary widget)

E.g.: <t t-esc="32" t-options='t-options='{"widget": "monetary", "display_currency": website.currency_id, "remove_span": True}'>
result: $ 365.00
2016-07-05 18:43:09 +02:00
Simon Lejeune 752cd0a482 [REF] report: replace the popup with an iframe in a client action
This change concerns reports of `qweb-html` type. Previously, they were
openned in a popup and it was not very practical. We chose to open these
reports in an iframe (as opposed to what's done in `account_report`) in
order to be the most close to the pdf version in terms of apperance.

The client action allows an integration with the control panel. Apart from
the breadcrumbs integration, we also add buttons to handle the web_editor
(save, discard, etc). We also add a button to print the pdf version.

As there is some security concern to communicate with an iframe, we use
the postMessage[1] technology and we fix the `targetOrigin` to the
`web.base.url` parameter, that means that if the window to which we send
the message does not match the `web.base.url` origin, the event is not
even dispatched.

In order to to that, the report module uses the ir_http `session_info`
override mechanism to add the `web.base.url` in the DOM of the webclient,
 and the report module adds to the DOM of report the `web.base.url`
content. This way, both scripts (in the webclient and in the iframe)
have the information of the trusted origin.

The client action does not have a complicated logic: it opens the
report's url in an iframe to show the report or open the web_editor
(the editor is activated by using the `enable_editor` query string.
If you click on the control panel button (save/discard) it'll send
message to the web_editor in the iframe to ask for save and discard.
It also waits for messages to know if the edition is done / cancelled
and toggle buttons of the control panel accordingly.

To allow that, we override the web_editor mechanism if it's opened in
an iframe and we chain to the `save` and `cancel` method deferred that
send message to the client action's window. We also make the web_editor
waits for message to start and stop the edition (controlled by the
control panel buttons).

The override of the action manager has been refactored / improved in
order to open the clien action and not the popup anymore. This way
we are able to, in the client action, return the current action with
the type `qweb-pdf` and the report is downloaded.

[1] https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
2016-07-05 17:44:56 +02:00
Christophe Simonis 9fe4cf5f72 [MERGE] forward port of branch saas-11 up to dda0d3d
# Conflicts:
#	addons/product_uos/i18n/lo.po
#	addons/sales_team/models/__init__.py
#	addons/website_payment/views/website_payment_templates.xml
#	addons/website_portal_sale/views/templates.xml
#	openerp/addons/base/ir/ir_qweb.py
2016-06-15 13:10:45 +02:00
Christophe Simonis dda0d3d62d [MERGE] forward port of branch saas-10 up to baf494c
# Conflicts:
#	addons/hr_timesheet/project_timesheet.py
#	addons/sale_layout/i18n/es_PE.po
#	addons/sale_layout/i18n/hu.po
#	addons/sale_layout/i18n/lo.po
#	addons/sale_layout/i18n/pl.po
#	addons/sale_service/i18n/es_MX.po
#	addons/sale_service/i18n/es_PE.po
#	addons/sale_service/i18n/lo.po
#	addons/stock/stock.py
#	addons/stock/stock_view.xml
#	addons/warning/i18n/es_PE.po
#	addons/warning/i18n/lo.po
#	addons/warning/i18n/ru.po
#	addons/web/i18n/cs.po
#	addons/web/i18n/ja.po
#	addons/web/i18n/lo.po
#	addons/web/i18n/th.po
2016-06-15 12:59:39 +02:00
Christophe Simonis baf494c67b [MERGE] forward port of branch saas-9 up to 1d81bb0
# Conflicts:
#	addons/account_extra_reports/i18n/ca.po
#	addons/account_extra_reports/i18n/fi.po
#	addons/account_extra_reports/i18n/pl.po
#	addons/account_extra_reports/i18n/te.po
#	addons/account_extra_reports/i18n/zh_CN.po
#	addons/account_full_reconcile/i18n/hu.po
#	addons/account_full_reconcile/i18n/pl.po
#	addons/crm/crm_lead_menu.xml
#	addons/crm_claim/i18n/es_PE.po
#	addons/crm_claim/i18n/hu.po
#	addons/crm_claim/i18n/ja.po
#	addons/crm_claim/i18n/pl.po
#	addons/delivery/views/delivery_view.xml
#	addons/product/product_view.xml
#	addons/project_timesheet/i18n/es_PE.po
#	addons/stock/stock_view.xml
2016-06-15 12:40:59 +02:00
Christophe Simonis f9072c789d [MERGE] forward port of branch 9.0 up to bfbe2d6
# Conflicts:
#	addons/marketing/i18n/es_PE.po
#	addons/marketing/i18n/hu.po
2016-06-14 19:27:16 +02:00
Christophe Matthieu d159aec83d [IMP] qweb: remove decode('utf-8') in report because qweb return unicode 2016-06-14 09:46:26 +02:00
Christophe Matthieu 7ede9bcb2d [IMP] base ir.qweb: compile template (and use ast) to improve rendering speed
* The compiled templates are cached per user, lang, inherit context values
* ir.ui.fields: attributes method return an dict, and record_to_html return only the content value of the field
* all rendered text use build_text and all attributes use build_attribute
* t-esc-options is removed and replace by format_value method
* AssetsBundle receive the list files and remains
2016-06-14 09:46:25 +02:00
xmo-odoo b466a9eea0 [FIX] report: Backport of 6d73087d to 9.0
Closes #12131
[FIX] report: don't hide errors in custom reports

If a custom report's render_html raises a KeyError for some
reason, Report.get_html would swallow the exception and fallback
on generic HTML rendering, usually blowing up with unfathomable
errors of missing rendering context data.

Check if a custom report object exists instead of waiting for a
KeyError.
2016-06-10 16:31:23 +02:00
Simon Lejeune 02484f899a [FIX] report: thread-safe barcode generation
A lock occurs when the user wants to print a report having multiple barcode while the server is
started in threaded-mode. The reason is that reportlab has to build a cache of the T1 fonts
before rendering a barcode (done in a C extension) and this part is not thread safe. We attempt
here to init the T1 fonts cache at the start-up of Odoo so that rendering of barcode in multiple
thread does not lock the server.

Another workaround was to set an explicit lock around the reportlab's function call, but it's
more dangerous as it may introduce undetectable lock between python and postgresql.

Thanks to @odony and @KangOl.

Fixes #12236
2016-06-10 11:26:01 +02:00
Denis Ledoux 291561a197 [FIX] report, account: invoice reset to draft attachments
When cancelling and resetting to draft an invoice,
delete only the invoice report attachment from the
attachment, not all of them.

The reason why the report is removed from the
attachments on the invoice resetted to draft
is explained in
db0def38cc

opw-680295
2016-06-09 17:37:55 +02:00