From e2f59a6dd19ee966283d8baa03e2bb397b111b63 Mon Sep 17 00:00:00 2001 From: Quentin Wolfs Date: Wed, 28 Jul 2021 07:49:49 +0000 Subject: [PATCH] [IMP] stock: traceability report origin Add reference of the traceability report's origin (production.lot, manufacturing order, picking, ...) to the end of the report. Change the layout a bit so the data isn't squashed by the border. Task-2467686 closes odoo/odoo#74120 Signed-off-by: William Henrotin --- addons/stock/controllers/main.py | 6 +++--- .../stock/data/stock_traceability_report_data.xml | 2 +- addons/stock/report/stock_traceability.py | 7 +++++-- .../src/js/stock_traceability_report_backend.js | 3 ++- addons/stock/views/report_stock_traceability.xml | 13 +++++++++++-- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/addons/stock/controllers/main.py b/addons/stock/controllers/main.py index 9d322d0b4bc..4856967ab44 100644 --- a/addons/stock/controllers/main.py +++ b/addons/stock/controllers/main.py @@ -10,8 +10,8 @@ import json class StockReportController(http.Controller): - @http.route('/stock///', type='http', auth='user') - def report(self, output_format, report_name, report_id=False, **kw): + @http.route('/stock//', type='http', auth='user') + def report(self, output_format, report_name=False, **kw): uid = request.session.uid domain = [('create_uid', '=', uid)] stock_traceability = request.env['stock.traceability.report'].with_user(uid).search(domain, limit=1) @@ -19,7 +19,7 @@ class StockReportController(http.Controller): try: if output_format == 'pdf': response = request.make_response( - stock_traceability.with_context(active_id=report_id).get_pdf(line_data), + stock_traceability.with_context(active_id=kw['active_id'], active_model=kw['active_model']).get_pdf(line_data), headers=[ ('Content-Type', 'application/pdf'), ('Content-Disposition', 'attachment; filename=' + 'stock_traceability' + '.pdf;') diff --git a/addons/stock/data/stock_traceability_report_data.xml b/addons/stock/data/stock_traceability_report_data.xml index a9cff53dfe9..7f1f21cfd9f 100644 --- a/addons/stock/data/stock_traceability_report_data.xml +++ b/addons/stock/data/stock_traceability_report_data.xml @@ -4,7 +4,7 @@ Traceability Report stock_report_generic - + diff --git a/addons/stock/report/stock_traceability.py b/addons/stock/report/stock_traceability.py index 28fbedb6829..a26220b8d7f 100644 --- a/addons/stock/report/stock_traceability.py +++ b/addons/stock/report/stock_traceability.py @@ -200,7 +200,8 @@ class MrpStockReport(models.TransientModel): lines.append(self._final_vals_to_lines(final_vals, line['level'])[0]) return lines - def get_pdf(self, line_data=[]): + def get_pdf(self, line_data=None): + line_data = [] if line_data is None else line_data lines = self.with_context(print_mode=True).get_pdf_lines(line_data) base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') rcontext = { @@ -211,6 +212,8 @@ class MrpStockReport(models.TransientModel): context = dict(self.env.context) if not config['test_enable']: context['commit_assetsbundle'] = True + if context.get('active_id') and context.get('active_model'): + rcontext['reference'] = self.env[context.get('active_model')].browse(int(context.get('active_id'))).display_name body = self.env['ir.ui.view'].with_context(context)._render_template( "stock.report_stock_inventory_print", @@ -224,7 +227,7 @@ class MrpStockReport(models.TransientModel): [body], header=header, landscape=True, - specific_paperformat_args={'data-report-margin-top': 10, 'data-report-header-spacing': 10} + specific_paperformat_args={'data-report-margin-top': 17, 'data-report-header-spacing': 12} ) def _get_html(self): diff --git a/addons/stock/static/src/js/stock_traceability_report_backend.js b/addons/stock/static/src/js/stock_traceability_report_backend.js index 6a504cd2b12..3fb0031562e 100644 --- a/addons/stock/static/src/js/stock_traceability_report_backend.js +++ b/addons/stock/static/src/js/stock_traceability_report_backend.js @@ -89,7 +89,8 @@ var stock_report_generic = AbstractAction.extend({ }); }); framework.blockUI(); - var url_data = self.controller_url.replace('active_id', self.given_context.active_id); + var url_data = self.controller_url.replace(':active_id', self.given_context.active_id); + url_data = url_data.replace(':active_model', self.given_context.model); session.get_file({ url: url_data.replace('output_format', 'pdf'), data: {data: JSON.stringify(dict)}, diff --git a/addons/stock/views/report_stock_traceability.xml b/addons/stock/views/report_stock_traceability.xml index 04557120a76..41c1bcde74d 100644 --- a/addons/stock/views/report_stock_traceability.xml +++ b/addons/stock/views/report_stock_traceability.xml @@ -89,9 +89,17 @@