diff --git a/plm_pdf_workorder/__manifest__.py b/plm_pdf_workorder/__manifest__.py index 4ad405ee..6405283e 100644 --- a/plm_pdf_workorder/__manifest__.py +++ b/plm_pdf_workorder/__manifest__.py @@ -33,19 +33,12 @@ "license": "LGPL-3", "depends": [ "plm", - "plm_mrp_workorder", ], "data": [ "views/ir_attachment.xml", "views/mrp_routing_workcenter.xml", "views/mrp_workorder.xml", ], - "assets": { - "web.assets_backend": [ - "plm_pdf_workorder/static/src/mrpWorksheet.js", - "plm_pdf_workorder/static/src/mrpDisplayRecord.xml", - ] - }, 'pre_init_hook': '_pre_init_plm_mrp_workorder', "installable": True, "application": False, diff --git a/plm_pdf_workorder/static/src/mrpDisplayRecord.xml b/plm_pdf_workorder/static/src/mrpDisplayRecord.xml deleted file mode 100644 index 20a7500f..00000000 --- a/plm_pdf_workorder/static/src/mrpDisplayRecord.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - Plm WorkSheet - - - diff --git a/plm_pdf_workorder/static/src/mrpWorksheet.js b/plm_pdf_workorder/static/src/mrpWorksheet.js deleted file mode 100644 index 3932df7e..00000000 --- a/plm_pdf_workorder/static/src/mrpWorksheet.js +++ /dev/null @@ -1,39 +0,0 @@ -/** @odoo-module **/ - -import { MrpWorksheet } from "@plm_mrp_workorder/mrp_display/mrp_record_line/mrp_worksheet"; -import { MrpWorksheetDialog } from "@plm_mrp_workorder/mrp_display/dialog/mrp_worksheet_dialog"; -import { MrpDisplayRecord } from '@plm_mrp_workorder/mrp_display/mrp_display_record' -import { markup } from "@odoo/owl"; -export class PlmMrpWorksheet extends MrpWorksheet{ - setup(){ - super.setup(); - } - async clicked() { - let worksheetData = false; - const sheet = await this.props.record.model.orm.read( - "mrp.workorder", - [this.props.record.resId], - ["plm_pdf"] - ); - if(sheet && sheet.length !=0){ - - worksheetData = { - resModel: "mrp.workorder", - resId: this.props.record.resId, - resField: "plm_pdf", - value: sheet[0].plm_pdf, - page: 1, - }; - this.dialog.add(MrpWorksheetDialog, { - worksheetText: markup(''), - worksheetData, - }); - } - } - -} -PlmMrpWorksheet.template = 'plm_pdf_workorder.MrpWorksheet' -MrpDisplayRecord.components = { - ...MrpDisplayRecord.components, - PlmMrpWorksheet, -}; diff --git a/plm_quality/__init__.py b/plm_quality/__init__.py deleted file mode 100644 index 21ff7c22..00000000 --- a/plm_quality/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -*- encoding: utf-8 -*- - -from . import models diff --git a/plm_quality/__manifest__.py b/plm_quality/__manifest__.py deleted file mode 100644 index d6b42e0b..00000000 --- a/plm_quality/__manifest__.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- encoding: utf-8 -*- - -{ - 'name': 'PLM Quality Base', - 'version': '18.0.1.0.0', - 'category': 'Manufacturing/Quality', - 'sequence': 50, - 'summary': 'Basic Feature for Quality', - 'depends': ['stock'], - 'description': """ - Quality Base - =============== - * Define quality points that will generate quality checks on pickings, - manufacturing orders or work orders (quality_mrp) - * Quality alerts can be created independently or related to quality checks - * Possibility to add a measure to the quality check with a min/max tolerance - * Define your stages for the quality alerts - """, - 'data': [ - 'security/quality.xml', - 'security/ir.model.access.csv', - 'data/mail_alias_data.xml', - 'data/quality_data.xml', - 'views/quality_views.xml', - ], - "license": "AGPL-3", - 'assets': { - 'web.assets_backend': [ - 'plm_quality/static/src/**/*', - ], - } -} diff --git a/plm_quality/data/mail_alias_data.xml b/plm_quality/data/mail_alias_data.xml deleted file mode 100644 index 3a3e0437..00000000 --- a/plm_quality/data/mail_alias_data.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/plm_quality/data/quality_data.xml b/plm_quality/data/quality_data.xml deleted file mode 100644 index cc7dc08d..00000000 --- a/plm_quality/data/quality_data.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - Quality Tests - 2 - - - - Main Quality Team - - - - New - - - Confirmed - - - Action Proposed - - - Solved - True - True - - - Quality Point - quality.point - QCP - 5 - 1 - 1 - - - - Quality Check - quality.check - QC - 5 - 1 - 1 - - - - Quality Alert - quality.alert - QA - 5 - 1 - 1 - - - - - - - Workcenter Failure - - - Parts Quality - - - Work Operation - - - Others - - - Instructions - instructions - - - Take a Picture - picture - - - diff --git a/plm_quality/models/__init__.py b/plm_quality/models/__init__.py deleted file mode 100644 index 6d2703f8..00000000 --- a/plm_quality/models/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -*- encoding: utf-8 -*- - -from . import quality diff --git a/plm_quality/models/quality.py b/plm_quality/models/quality.py deleted file mode 100644 index 010da9e0..00000000 --- a/plm_quality/models/quality.py +++ /dev/null @@ -1,361 +0,0 @@ -# -*- coding: utf-8 -*- - -import ast - -from datetime import datetime - -from odoo import api, fields, models, _ -from odoo.exceptions import UserError -from odoo.osv.expression import OR - - -class TestType(models.Model): - _name = "quality.point.test_type" - _description = "Quality Control Test Type" - - # Used instead of selection field in order to hide a choice depending on the view. - name = fields.Char('Name', required=True, translate=True) - technical_name = fields.Char('Technical name', required=True) - active = fields.Boolean('active', default=True) - - -class QualityPoint(models.Model): - _name = "quality.point" - _description = "Quality Control Point" - _inherit = ['mail.thread'] - _order = "sequence, id" - _check_company_auto = True - - def _get_default_team_id(self): - company_id = self.company_id.id or self.env.context.get('default_company_id', self.env.company.id) - return self.team_id._get_quality_team(self.env['quality.alert.team']._check_company_domain(company_id)) - - def _get_default_test_type_id(self): - domain = self._get_type_default_domain() - return self.env['quality.point.test_type'].search(domain, limit=1).id - - name = fields.Char( - 'Reference', copy=False, default=lambda self: _('New'), - required=True) - sequence = fields.Integer('Sequence') - title = fields.Char('Title') - team_id = fields.Many2one( - 'quality.alert.team', 'Team', check_company=True, - default=_get_default_team_id, required=True) - product_ids = fields.Many2many( - 'product.product', string='Products', - check_company=True, - domain="[('type', '=', 'consu')]", - help="Quality Point will apply to every selected Products.") - product_category_ids = fields.Many2many( - 'product.category', string='Product Categories', - help="Quality Point will apply to every Products in the selected Product Categories.") - - picking_type_ids = fields.Many2many( - 'stock.picking.type', string='Operation Types', required=True, check_company=True) - company_id = fields.Many2one( - 'res.company', string='Company', required=True, index=True, - default=lambda self: self.env.company) - user_id = fields.Many2one('res.users', 'Responsible', - domain=lambda self: [('groups_id', 'in', self.env.ref("plm_quality.group_quality_user").id), ('share', '=', False)], - check_company=True) - active = fields.Boolean(default=True) - check_count = fields.Integer(compute="_compute_check_count") - check_ids = fields.One2many('quality.check', 'point_id') - test_type_id = fields.Many2one('quality.point.test_type', 'Test Type', help="Defines the type of the quality control point.", - required=True, default=_get_default_test_type_id, tracking=True) - test_type = fields.Char(related='test_type_id.technical_name', readonly=True) - note = fields.Html('Note') - reason = fields.Html('Cause') - - def _compute_check_count(self): - check_data = self.env['quality.check']._read_group([('point_id', 'in', self.ids)], ['point_id'], ['__count']) - result = {point.id: count for point, count in check_data} - for point in self: - point.check_count = result.get(point.id, 0) - - @api.model_create_multi - def create(self, vals_list): - for vals in vals_list: - if 'name' not in vals or vals['name'] == _('New'): - vals['name'] = self.env['ir.sequence'].next_by_code('quality.point') or _('New') - return super().create(vals_list) - - def check_execute_now(self): - # TDE FIXME: make true multi - self.ensure_one() - return True - - def _get_type_default_domain(self): - return [] - - -class QualityAlertTeam(models.Model): - _name = "quality.alert.team" - _description = "Quality Alert Team" - _inherit = ['mail.alias.mixin', 'mail.thread'] - _order = "sequence, id" - - name = fields.Char('Name', required=True) - company_id = fields.Many2one( - 'res.company', string='Company', index=True) - sequence = fields.Integer('Sequence') - check_count = fields.Integer('# Quality Checks', compute='_compute_check_count') - alert_count = fields.Integer('# Quality Alerts', compute='_compute_alert_count') - color = fields.Integer('Color', default=1) - - def _compute_check_count(self): - check_data = self.env['quality.check']._read_group([('team_id', 'in', self.ids), ('quality_state', '=', 'none')], ['team_id'], ['__count']) - check_result = {team.id: count for team, count in check_data} - for team in self: - team.check_count = check_result.get(team.id, 0) - - def _compute_alert_count(self): - alert_data = self.env['quality.alert']._read_group([('team_id', 'in', self.ids), ('stage_id.done', '=', False)], ['team_id'], ['__count']) - alert_result = {team.id: count for team, count in alert_data} - for team in self: - team.alert_count = alert_result.get(team.id, 0) - - @api.model - def _get_quality_team(self, domain): - team_id = self.env['quality.alert.team'].search(domain, limit=1).id - if team_id: - return team_id - else: - raise UserError(_("No quality team found for this company.\n" - "Please go to configuration and create one first.")) - - def _alias_get_creation_values(self): - values = super(QualityAlertTeam, self)._alias_get_creation_values() - values['alias_model_id'] = self.env['ir.model']._get('quality.alert').id - if self.id: - values['alias_defaults'] = defaults = ast.literal_eval(self.alias_defaults or "{}") - defaults['team_id'] = self.id - defaults['company_id'] = self.company_id.id - return values - - -class QualityReason(models.Model): - _name = "quality.reason" - _description = "Root Cause for Quality Failure" - - name = fields.Char('Name', required=True, translate=True) - - -class QualityTag(models.Model): - _name = "quality.tag" - _description = "Quality Tag" - - name = fields.Char('Tag Name', required=True) - color = fields.Integer('Color Index', help='Used in the kanban view') # TDE: should be default value - - -class QualityAlertStage(models.Model): - _name = "quality.alert.stage" - _description = "Quality Alert Stage" - _order = "sequence, id" - _fold_name = 'folded' - - name = fields.Char('Name', required=True, translate=True) - sequence = fields.Integer('Sequence') - folded = fields.Boolean('Folded') - done = fields.Boolean('Alert Processed') - team_ids = fields.Many2many('quality.alert.team', string='Teams') - - -class QualityCheck(models.Model): - _name = "quality.check" - _description = "Quality Check" - _order = "point_id, id" - _inherit = ['mail.thread', 'mail.activity.mixin'] - _check_company_auto = True - - name = fields.Char('Reference', copy=False) - point_id = fields.Many2one( - 'quality.point', 'Control Point', check_company=True) - title = fields.Char('Title', compute='_compute_title', store=True, precompute=True, readonly=False) - quality_state = fields.Selection([ - ('none', 'To do'), - ('pass', 'Passed'), - ('fail', 'Failed')], string='Status', tracking=True, - default='none', copy=False) - control_date = fields.Datetime('Control Date', tracking=True, copy=False) - product_id = fields.Many2one( - 'product.product', 'Product', check_company=True, - domain="[('type', '=', 'consu')]") - picking_id = fields.Many2one('stock.picking', 'Picking', check_company=True) - partner_id = fields.Many2one( - related='picking_id.partner_id', string='Partner') - lot_id = fields.Many2one( - 'stock.lot', 'Lot/Serial', - check_company=True, - domain="[('product_id', '=', product_id)]") - user_id = fields.Many2one('res.users', 'Responsible', tracking=True) - team_id = fields.Many2one( - 'quality.alert.team', 'Team', required=True, check_company=True) - company_id = fields.Many2one( - 'res.company', 'Company', required=True, index=True, - default=lambda self: self.env.company) - alert_ids = fields.One2many('quality.alert', 'check_id', string='Alerts') - alert_count = fields.Integer('# Quality Alerts', compute="_compute_alert_count") - note = fields.Html('Note') - test_type_id = fields.Many2one( - 'quality.point.test_type', 'Test Type', - required=True) - test_type = fields.Char(related='test_type_id.technical_name') - picture = fields.Binary('Picture', attachment=True) - additional_note = fields.Text( - 'Additional Note', help="Additional remarks concerning this check.") - - def _compute_alert_count(self): - alert_data = self.env['quality.alert']._read_group([('check_id', 'in', self.ids)], ['check_id'], ['__count']) - alert_result = {check.id: count for check, count in alert_data} - for check in self: - check.alert_count = alert_result.get(check.id, 0) - - def _compute_title(self): - for check in self: - check.title = check.point_id.title - - @api.onchange('point_id') - def _onchange_point_id(self): - if self.point_id: - self.team_id = self.point_id.team_id.id - self.test_type_id = self.point_id.test_type_id.id - - def _is_pass_fail_applicable(self): - """ Return true if do_fail and do_pass can be applied.""" - return False - - @api.model_create_multi - def create(self, vals_list): - for vals in vals_list: - if 'name' not in vals or vals['name'] == _('New'): - vals['name'] = self.env['ir.sequence'].next_by_code('quality.check') or _('New') - if 'point_id' in vals and not vals.get('test_type_id'): - vals['test_type_id'] = self.env['quality.point'].browse(vals['point_id']).test_type_id.id - if 'point_id' in vals and not vals.get('note'): - vals['note'] = self.env['quality.point'].browse(vals['point_id']).note - return super().create(vals_list) - - def write(self, vals): - res = super().write(vals) - if 'quality_state' in vals and not vals.get('user_id') or not vals.get('control_date'): - if vals.get('quality_state') == 'pass': - self.do_pass() - elif vals.get('quality_state') == 'fail': - self.do_fail() - return res - - def do_fail(self): - self.write({ - 'quality_state': 'fail', - 'user_id': self.env.user.id, - 'control_date': datetime.now()}) - - def do_pass(self): - self.write({'quality_state': 'pass', - 'user_id': self.env.user.id, - 'control_date': datetime.now()}) - - -class QualityAlert(models.Model): - _name = "quality.alert" - _description = "Quality Alert" - _inherit = ['mail.thread.cc', 'mail.activity.mixin'] - _check_company_auto = True - - def _get_default_stage_id(self): - """ Gives default stage_id """ - team_id = self.env.context.get('default_team_id') - if not team_id and self.env.context.get('active_model') == 'quality.alert.team' and\ - self.env.context.get('active_id'): - team_id = self.env['quality.alert.team'].browse(self.env.context.get('active_id')).exists().id - domain = [('team_ids', '=', False)] - if team_id: - domain = OR([domain, [('team_ids', 'in', team_id)]]) - return self.env['quality.alert.stage'].search(domain, limit=1).id - - def _get_default_team_id(self): - company_id = self.company_id.id or self.env.context.get('default_company_id', self.env.company.id) - domain = ['|', ('company_id', '=', company_id), ('company_id', '=', False)] - return self.team_id._get_quality_team(domain) - - name = fields.Char('Name', default=lambda self: _('New'), copy=False) - description = fields.Html('Description') - stage_id = fields.Many2one( - 'quality.alert.stage', 'Stage', ondelete='restrict', - group_expand='_read_group_stage_ids', - default=lambda self: self._get_default_stage_id(), - domain="['|', ('team_ids', '=', False), ('team_ids', 'in', team_id)]", tracking=True) - company_id = fields.Many2one( - 'res.company', 'Company', required=True, index=True, - default=lambda self: self.env.company) - reason_id = fields.Many2one('quality.reason', 'Root Cause') - tag_ids = fields.Many2many('quality.tag', string="Tags") - date_assign = fields.Datetime('Date Assigned') - date_close = fields.Datetime('Date Closed') - picking_id = fields.Many2one('stock.picking', 'Picking', check_company=True) - action_corrective = fields.Html('Corrective Action') - action_preventive = fields.Html('Preventive Action') - user_id = fields.Many2one('res.users', 'Responsible', tracking=True, default=lambda self: self.env.user) - team_id = fields.Many2one( - 'quality.alert.team', 'Team', required=True, check_company=True, - default=lambda x: x._get_default_team_id()) - partner_id = fields.Many2one('res.partner', 'Vendor', check_company=True) - check_id = fields.Many2one('quality.check', 'Check', check_company=True) - product_tmpl_id = fields.Many2one( - 'product.template', 'Product', check_company=True, - domain="[('type', '=', 'consu')]") - product_id = fields.Many2one( - 'product.product', 'Product Variant', - domain="[('product_tmpl_id', '=', product_tmpl_id)]") - lot_id = fields.Many2one( - 'stock.lot', 'Lot', check_company=True, - domain="['|', ('product_id', '=', product_id), ('product_id.product_tmpl_id', '=', product_tmpl_id)]") - priority = fields.Selection([ - ('0', 'Normal'), - ('1', 'Low'), - ('2', 'High'), - ('3', 'Very High')], string='Priority', - index=True) - - @api.model_create_multi - def create(self, vals_list): - for vals in vals_list: - if 'name' not in vals or vals['name'] == _('New'): - vals['name'] = self.env['ir.sequence'].next_by_code('quality.alert') or _('New') - return super().create(vals_list) - - def write(self, vals): - res = super(QualityAlert, self).write(vals) - if 'stage_id' in vals and self.stage_id.done: - self.write({'date_close': fields.Datetime.now()}) - return res - - @api.onchange('product_tmpl_id') - def onchange_product_tmpl_id(self): - self.product_id = self.product_tmpl_id.product_variant_ids.ids and self.product_tmpl_id.product_variant_ids.ids[0] - - @api.onchange('team_id') - def onchange_team_id(self): - if self.team_id: - self.company_id = self.team_id.company_id or self.env.company - - @api.model - def _read_group_stage_ids(self, stages, domain): - """ Only shows the stage related to the current team. - """ - team_id = self.env.context.get('default_team_id') - domain = [('id', 'in', stages.ids)] - if not team_id and self.env.context.get('active_model') == 'quality.alert.team' and\ - self.env.context.get('active_id'): - team_id = self.env['quality.alert.team'].browse(self.env.context.get('active_id')).exists().id - if team_id: - domain = OR([domain, ['|', ('team_ids', '=', False), ('team_ids', 'in', team_id)]]) - elif not stages: - # if enter here, means we won't get any team_id and stage_id to search - # so search stage without team_ids instead - domain = [('team_ids', '=', False)] - stage_ids = stages.sudo()._search(domain, order=stages._order) - return stages.browse(stage_ids) diff --git a/plm_quality/security/ir.model.access.csv b/plm_quality/security/ir.model.access.csv deleted file mode 100644 index adf3c829..00000000 --- a/plm_quality/security/ir.model.access.csv +++ /dev/null @@ -1,21 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_quality_alert_team_user,plm_quality.alert.team,plm_quality.model_quality_alert_team,plm_quality.group_quality_user,1,0,0,0 -access_quality_check_user,plm_quality.check,plm_quality.model_quality_check,plm_quality.group_quality_user,1,1,1,0 -access_quality_alert_user,plm_quality.alert,plm_quality.model_quality_alert,plm_quality.group_quality_user,1,1,1,0 -access_quality_reason_user,plm_quality.reason,plm_quality.model_quality_reason,plm_quality.group_quality_user,1,0,0,0 -access_quality_tag_user,quality.tag,plm_quality.model_quality_tag,plm_quality.group_quality_user,1,0,0,0 -access_quality_alert_stage_user,plm_quality.alert.stage,plm_quality.model_quality_alert_stage,plm_quality.group_quality_user,1,0,0,0 -access_quality_point_user,quality.point,plm_quality.model_quality_point,plm_quality.group_quality_user,1,0,0,0 -access_quality_point_test_type_user,plm_quality.point.test_type,plm_quality.model_quality_point_test_type,plm_quality.group_quality_user,1,0,0,0 -access_quality_check_stock_user,plm_quality.check,plm_quality.model_quality_check,stock.group_stock_user,1,1,1,0 -access_stock_lot_user,stock.lot,stock.model_stock_lot,plm_quality.group_quality_user,1,0,0,0 -access_stock_pack_user,stock.move.line,stock.model_stock_move_line,plm_quality.group_quality_user,1,0,0,0 -access_stock_picking,stock.move.line,stock.model_stock_picking,plm_quality.group_quality_user,1,0,0,0 -access_quality_alert_team_manager,plm_quality.alert.team,plm_quality.model_quality_alert_team,plm_quality.group_quality_manager,1,1,1,1 -access_quality_check_manager,quality.check,plm_quality.model_quality_check,plm_quality.group_quality_manager,1,1,1,1 -access_quality_alert_manager,quality.alert,plm_quality.model_quality_alert,plm_quality.group_quality_manager,1,1,1,1 -access_quality_reason_manager,quality.reason,plm_quality.model_quality_reason,plm_quality.group_quality_manager,1,1,1,1 -access_quality_tag_manager,quality.tag,plm_quality.model_quality_tag,plm_quality.group_quality_manager,1,1,1,1 -access_quality_alert_stage_manager,quality.alert.stage,plm_quality.model_quality_alert_stage,plm_quality.group_quality_manager,1,1,1,1 -access_quality_point_manager,quality.point.manager,plm_quality.model_quality_point,plm_quality.group_quality_manager,1,1,1,1 -access_quality_check_stock_manager,quality.check.manager,plm_quality.model_quality_check,plm_quality.group_quality_manager,1,1,1,1 diff --git a/plm_quality/security/quality.xml b/plm_quality/security/quality.xml deleted file mode 100644 index cfd83003..00000000 --- a/plm_quality/security/quality.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Quality - Helps you manage your quality alerts and quality checks. - 5 - - - - User - - - The quality user uses the quality process - - - - Administrator - - - - The quality manager manages the quality process - - - - - - - - - - Quality alert company rule - - [('company_id', 'in', company_ids)] - - - - Quality check company rule - - ['|', ('company_id', 'in', company_ids), ('point_id.company_id', 'in', company_ids)] - - - - Control point company rule - - [('company_id', 'in', company_ids)] - - - - Quality Team multi-company - - [('company_id', 'in', company_ids + [False])] - - - - diff --git a/plm_quality/static/src/scss/tablet_view.scss b/plm_quality/static/src/scss/tablet_view.scss deleted file mode 100644 index 115ec1ce..00000000 --- a/plm_quality/static/src/scss/tablet_view.scss +++ /dev/null @@ -1,5 +0,0 @@ -// Add a picture -.workorder_picture, .quality_picture { - margin: 5px 0; - -} diff --git a/plm_quality/static/src/tablet_image_field/tablet_image_field.js b/plm_quality/static/src/tablet_image_field/tablet_image_field.js deleted file mode 100644 index 94f1434e..00000000 --- a/plm_quality/static/src/tablet_image_field/tablet_image_field.js +++ /dev/null @@ -1,38 +0,0 @@ -/** @odoo-module **/ - -import { Dialog } from "@web/core/dialog/dialog"; -import { registry } from "@web/core/registry"; -import { useService } from "@web/core/utils/hooks"; -import { ImageField, imageField } from '@web/views/fields/image/image_field'; -import { Component } from "@odoo/owl"; - -class ImagePreviewDialog extends Component { - static components = { Dialog }; - static template = "plm_quality.ImagePreviewDialog"; - static props = { - src: String, - close: Function, - }; -} - -export class TabletImageField extends ImageField { - static template = "plm_quality.TabletImageField"; - - setup() { - super.setup(); - this.dialog = useService("dialog"); - } - - openModal() { - this.dialog.add(ImagePreviewDialog, { - src: this.getUrl(this.props.name), - }); - } -} - -export const tabletImageField = { - ...imageField, - component: TabletImageField, -}; - -registry.category("fields").add("tablet_image", tabletImageField); diff --git a/plm_quality/static/src/tablet_image_field/tablet_image_field.scss b/plm_quality/static/src/tablet_image_field/tablet_image_field.scss deleted file mode 100644 index bace46f7..00000000 --- a/plm_quality/static/src/tablet_image_field/tablet_image_field.scss +++ /dev/null @@ -1,20 +0,0 @@ -.workorder_picture, .quality_picture { - margin: 5px 0; - - .o_field_image { - img { - height: 80px; - cursor: zoom-in; - } - - button { - @include o-hover-opacity(0.6, 0.9); - width: 30px; - height: 30px; - background-color: #00A09D !important; - cursor: pointer; - color: white; - } - } - -} diff --git a/plm_quality/static/src/tablet_image_field/tablet_image_field.xml b/plm_quality/static/src/tablet_image_field/tablet_image_field.xml deleted file mode 100644 index e5eeeb99..00000000 --- a/plm_quality/static/src/tablet_image_field/tablet_image_field.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - -
- -
-
- - openModal - - - position-absolute d-flex justify-content-between w-100 {{isMobile ? 'o_mobile_controls' : ''}} - -
- - - -
-
- Viewer -
-
- - - -
-
-
diff --git a/plm_quality/views/quality_views.xml b/plm_quality/views/quality_views.xml deleted file mode 100644 index 7f62172f..00000000 --- a/plm_quality/views/quality_views.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - quality.check.activity - quality.check - - - -
- - -
-
-
-
-
- - - - quality.point.view.form - quality.point - -
- -
- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - quality.alert.view.list - quality.alert - - - - - - - - - - - - - - - - - - - quality.alert.view.search - quality.alert - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - quality.point.view.list - quality.point - - - - - - - - - - - - - - - - - -