diff --git a/addons/mrp/models/mrp_routing.py b/addons/mrp/models/mrp_routing.py index f697df1cb3d..85f60bbb82b 100644 --- a/addons/mrp/models/mrp_routing.py +++ b/addons/mrp/models/mrp_routing.py @@ -50,7 +50,13 @@ class MrpRoutingWorkcenter(models.Model): company_id = fields.Many2one( 'res.company', 'Company', readonly=True, related='routing_id.company_id', store=True) - worksheet = fields.Binary('worksheet') + worksheet = fields.Binary('PDF', help="Upload your PDF file.") + worksheet_type = fields.Selection([ + ('pdf', 'PDF'), ('google_slide', 'Google Slide')], + string="Work Sheet", default="pdf", + help="Defines if you want to use a PDF or a Google Slide as work sheet." + ) + worksheet_google_slide = fields.Char('Google Slide', help="Paste the url of your Google Slide. Make sure the access to the document is public.") time_mode = fields.Selection([ ('auto', 'Compute based on real time'), ('manual', 'Set duration manually')], string='Duration Computation', diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index 667ccc32fa5..58903a3aec5 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -88,6 +88,10 @@ class MrpWorkorder(models.Model): 'mrp.routing.workcenter', 'Operation') # Should be used differently as BoM can change in the meantime worksheet = fields.Binary( 'Worksheet', related='operation_id.worksheet', readonly=True) + worksheet_type = fields.Selection( + 'Worksheet Type', related='operation_id.worksheet_type', readonly=True) + worksheet_google_slide = fields.Char( + 'Worksheet URL', related='operation_id.worksheet_google_slide', readonly=True) move_raw_ids = fields.One2many( 'stock.move', 'workorder_id', 'Raw Moves', domain=[('raw_material_production_id', '!=', False), ('production_id', '=', False)]) diff --git a/addons/mrp/static/src/js/mrp.js b/addons/mrp/static/src/js/mrp.js index 8843d9ab3cd..22abd2b0d91 100644 --- a/addons/mrp/static/src/js/mrp.js +++ b/addons/mrp/static/src/js/mrp.js @@ -3,6 +3,7 @@ odoo.define('mrp.mrp_state', function (require) { var AbstractField = require('web.AbstractField'); var core = require('web.core'); +var fields = require('web.basic_fields'); var field_registry = require('web.field_registry'); var time = require('web.time'); @@ -125,8 +126,131 @@ var TimeCounter = AbstractField.extend({ }, }); +var FieldEmbedURLViewer = fields.FieldChar.extend({ + + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + /** + * @override + */ + init: function () { + this._super.apply(this, arguments); + this.page = 1; + this.srcDirty = false; + }, + + /** + * force to set 'src' for embed iframe viewer when its value has changed + * + * @override + * + */ + reset: function () { + this._super.apply(this, arguments); + this._updateIframePreview(); + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * Initializes and returns an iframe for the viewer + * + * @private + * @returns {jQueryElement} + */ + _prepareIframe: function () { + return $('