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' : ''}}
-
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-