diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py index 4fa66cd9f1b..7e9f0f863b6 100644 --- a/addons/mrp/models/mrp_production.py +++ b/addons/mrp/models/mrp_production.py @@ -53,7 +53,7 @@ class MrpProduction(models.Model): domain=[('type', 'in', ['product', 'consu'])], readonly=True, required=True, states={'confirmed': [('readonly', False)]}) - product_tmpl_id = fields.Many2one('product.template', 'Product Template', related='product_id.product_tmpl_id') + product_tmpl_id = fields.Many2one('product.template', 'Product Template', related='product_id.product_tmpl_id', readonly=True) product_qty = fields.Float( 'Quantity To Produce', default=1.0, digits=dp.get_precision('Product Unit of Measure'), diff --git a/addons/mrp/security/ir.model.access.csv b/addons/mrp/security/ir.model.access.csv index 47a7e677285..4255c1fe86c 100644 --- a/addons/mrp/security/ir.model.access.csv +++ b/addons/mrp/security/ir.model.access.csv @@ -58,5 +58,5 @@ access_mrp_unbuild,mrp.unbuild,model_mrp_unbuild,group_mrp_user,1,0,0,0 access_mrp_unbuild_manager,mrp.unbuild manager,model_mrp_unbuild,group_mrp_manager,1,1,1,1 access_mrp_message_mrp_user,mrp.message,model_mrp_message,group_mrp_user,1,0,0,0 access_mrp_message_mrp_manager,mrp.message,model_mrp_message,group_mrp_manager,1,1,1,1 -access_stock_move_lots,stock.move.lots,model_stock_move_lots,group_mrp_user,1,1,1,0 +access_stock_move_lots,stock.move.lots,model_stock_move_lots,group_mrp_user,1,1,1,1 access_stock_move_lots_manager,stock.move.lots,model_stock_move_lots,group_mrp_manager,1,1,1,1 diff --git a/addons/purchase/i18n/es_AR.po b/addons/purchase/i18n/es_AR.po index 7792679e57a..417f189fea2 100644 --- a/addons/purchase/i18n/es_AR.po +++ b/addons/purchase/i18n/es_AR.po @@ -91,7 +91,7 @@ msgstr "" #: model:mail.template,subject:purchase.email_template_edi_purchase #: model:mail.template,subject:purchase.email_template_edi_purchase_done msgid "${object.company_id.name} Order (Ref ${object.name or 'n/a' })" -msgstr "${object.company_id.name} Orden (Ref ${object.name o 'n/a' })" +msgstr "${object.company_id.name} Orden (Ref ${object.name or 'n/a' })" #. module: purchase #: model:ir.ui.view,arch_db:purchase.report_purchaseorder_document diff --git a/addons/report/models/report.py b/addons/report/models/report.py index 4600c4eaf48..b7bf82b1091 100644 --- a/addons/report/models/report.py +++ b/addons/report/models/report.py @@ -50,6 +50,7 @@ def _get_wkhtmltopdf_bin(): # Check the presence of Wkhtmltopdf and return its version at Odoo start-up #-------------------------------------------------------------------------- wkhtmltopdf_state = 'install' +wkhtmltopdf_dpi_zoom_ratio = False try: process = subprocess.Popen( [_get_wkhtmltopdf_bin(), '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE @@ -67,6 +68,8 @@ else: wkhtmltopdf_state = 'upgrade' else: wkhtmltopdf_state = 'ok' + if LooseVersion(version) >= LooseVersion('0.12.2'): + wkhtmltopdf_dpi_zoom_ratio = True if config['workers'] == 1: _logger.info('You need to start Odoo with at least two workers to print a pdf version of the reports.') @@ -544,14 +547,19 @@ class Report(models.Model): else: command_args.extend(['--margin-top', str(paperformat.margin_top)]) + dpi = None if specific_paperformat_args and specific_paperformat_args.get('data-report-dpi'): - command_args.extend(['--dpi', str(specific_paperformat_args['data-report-dpi'])]) + dpi = int(specific_paperformat_args['data-report-dpi']) elif paperformat.dpi: if os.name == 'nt' and int(paperformat.dpi) <= 95: _logger.info("Generating PDF on Windows platform require DPI >= 96. Using 96 instead.") - command_args.extend(['--dpi', '96']) + dpi = 96 else: - command_args.extend(['--dpi', str(paperformat.dpi)]) + dpi = paperformat.dpi + if dpi: + command_args.extend(['--dpi', str(dpi)]) + if wkhtmltopdf_dpi_zoom_ratio: + command_args.extend(['--zoom', str(96.0 / dpi)]) if specific_paperformat_args and specific_paperformat_args.get('data-report-header-spacing'): command_args.extend(['--header-spacing', str(specific_paperformat_args['data-report-header-spacing'])]) diff --git a/addons/web_editor/static/lib/summernote/src/js/EventHandler.js b/addons/web_editor/static/lib/summernote/src/js/EventHandler.js index 09a7b00082a..1cb9cd8e1c7 100644 --- a/addons/web_editor/static/lib/summernote/src/js/EventHandler.js +++ b/addons/web_editor/static/lib/summernote/src/js/EventHandler.js @@ -361,7 +361,7 @@ define([ (keycode > 185 && keycode < 193) || // ;=,-./` (in order) (keycode > 218 && keycode < 223))) { // [\]' (in order)) eventName = 'visible'; - } else if (!keycode) { + } else if (!keycode && event.key !== 'Dead') { self.invoke('restoreRange', $editable); } // ODOO: end_modification)