mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
New module <quality_control_hr> closes #662 * Changes in access rules * Trigger line instead of test and user
This commit is contained in:
@@ -7,6 +7,7 @@ from openerp import models, fields, api, exceptions, _
|
||||
|
||||
class QcInspection(models.Model):
|
||||
_name = 'qc.inspection'
|
||||
_description = 'Quality control inspection'
|
||||
_inherit = ['mail.thread', 'ir.needaction_mixin']
|
||||
|
||||
@api.one
|
||||
@@ -78,6 +79,9 @@ class QcInspection(models.Model):
|
||||
states={'draft': [('readonly', False)]},
|
||||
default=lambda self: self.env['res.company']._company_default_get(
|
||||
'qc.inspection'))
|
||||
user = fields.Many2one(
|
||||
comodel_name='res.users', string='Responsible',
|
||||
track_visibility='always', default=lambda self: self.env.user)
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
@@ -141,41 +145,43 @@ class QcInspection(models.Model):
|
||||
self.write({'state': 'canceled'})
|
||||
|
||||
@api.multi
|
||||
def set_test(self, test, force_fill=False):
|
||||
def set_test(self, trigger_line, force_fill=False):
|
||||
for inspection in self:
|
||||
header = self._prepare_inspection_header(
|
||||
inspection.object_id, test)
|
||||
inspection.object_id, trigger_line)
|
||||
del header['state'] # don't change current status
|
||||
del header['auto_generated'] # don't change auto_generated flag
|
||||
del header['user'] # don't change current user
|
||||
inspection.write(header)
|
||||
self.inspection_lines.unlink()
|
||||
inspection.inspection_lines = inspection._prepare_inspection_lines(
|
||||
test, force_fill=force_fill)
|
||||
trigger_line.test, force_fill=force_fill)
|
||||
|
||||
@api.multi
|
||||
def _make_inspection(self, object_ref, test):
|
||||
def _make_inspection(self, object_ref, trigger_line):
|
||||
"""Overridable hook method for creating inspection from test.
|
||||
:param object_ref: Object instance
|
||||
:param test: Test instance
|
||||
:param trigger_line: Trigger line instance
|
||||
:return: Inspection object
|
||||
"""
|
||||
inspection = self.create(self._prepare_inspection_header(
|
||||
object_ref, test))
|
||||
inspection.set_test(test)
|
||||
object_ref, trigger_line))
|
||||
inspection.set_test(trigger_line)
|
||||
return inspection
|
||||
|
||||
@api.multi
|
||||
def _prepare_inspection_header(self, object_ref, test):
|
||||
def _prepare_inspection_header(self, object_ref, trigger_line):
|
||||
"""Overridable hook method for preparing inspection header.
|
||||
:param object_ref: Object instance
|
||||
:param test: Test instance
|
||||
:param trigger_line: Trigger line instance
|
||||
:return: List of values for creating the inspection
|
||||
"""
|
||||
return {
|
||||
'object_id': object_ref and '%s,%s' % (object_ref._name,
|
||||
object_ref.id) or False,
|
||||
'state': 'ready',
|
||||
'test': test.id,
|
||||
'test': trigger_line.test.id,
|
||||
'user': trigger_line.user.id,
|
||||
'auto_generated': True,
|
||||
}
|
||||
|
||||
|
||||
@@ -11,14 +11,18 @@ class QcTriggerLine(models.AbstractModel):
|
||||
|
||||
trigger = fields.Many2one(comodel_name="qc.trigger", required=True)
|
||||
test = fields.Many2one(comodel_name="qc.test", required=True)
|
||||
user = fields.Many2one(
|
||||
comodel_name='res.users', string='Responsible',
|
||||
track_visibility='always', default=lambda self: self.env.user)
|
||||
|
||||
def get_test_for_product(self, trigger, product):
|
||||
"""Overridable method for getting test associated to a product.
|
||||
def get_trigger_line_for_product(self, trigger, product):
|
||||
"""Overridable method for getting trigger_line associated to a product.
|
||||
Each inherited model will complete this module to make the search by
|
||||
product, template or category.
|
||||
:param trigger: Trigger instance.
|
||||
:param product: Product instance.
|
||||
:return: Set of tests that matches to the given product and trigger.
|
||||
:return: Set of trigger_lines that matches to the given product and
|
||||
trigger.
|
||||
"""
|
||||
return set()
|
||||
|
||||
@@ -29,16 +33,17 @@ class QcTriggerProductCategoryLine(models.Model):
|
||||
|
||||
product_category = fields.Many2one(comodel_name="product.category")
|
||||
|
||||
def get_test_for_product(self, trigger, product):
|
||||
tests = super(QcTriggerProductCategoryLine,
|
||||
self).get_test_for_product(trigger, product)
|
||||
def get_trigger_line_for_product(self, trigger, product):
|
||||
trigger_lines = super(QcTriggerProductCategoryLine,
|
||||
self).get_trigger_line_for_product(trigger,
|
||||
product)
|
||||
category = product.categ_id
|
||||
while category:
|
||||
for trigger_line in category.qc_triggers:
|
||||
if trigger_line.trigger.id == trigger.id:
|
||||
tests.add(trigger_line.test)
|
||||
trigger_lines.add(trigger_line)
|
||||
category = category.parent_id
|
||||
return tests
|
||||
return trigger_lines
|
||||
|
||||
|
||||
class QcTriggerProductTemplateLine(models.Model):
|
||||
@@ -47,13 +52,14 @@ class QcTriggerProductTemplateLine(models.Model):
|
||||
|
||||
product_template = fields.Many2one(comodel_name="product.template")
|
||||
|
||||
def get_test_for_product(self, trigger, product):
|
||||
tests = super(QcTriggerProductTemplateLine,
|
||||
self).get_test_for_product(trigger, product)
|
||||
def get_trigger_line_for_product(self, trigger, product):
|
||||
trigger_lines = super(QcTriggerProductTemplateLine,
|
||||
self).get_trigger_line_for_product(trigger,
|
||||
product)
|
||||
for trigger_line in product.product_tmpl_id.qc_triggers:
|
||||
if trigger_line.trigger.id == trigger.id:
|
||||
tests.add(trigger_line.test)
|
||||
return tests
|
||||
trigger_lines.add(trigger_line)
|
||||
return trigger_lines
|
||||
|
||||
|
||||
class QcTriggerProductLine(models.Model):
|
||||
@@ -62,10 +68,11 @@ class QcTriggerProductLine(models.Model):
|
||||
|
||||
product = fields.Many2one(comodel_name="product.product")
|
||||
|
||||
def get_test_for_product(self, trigger, product):
|
||||
tests = super(QcTriggerProductLine, self).get_test_for_product(
|
||||
trigger, product)
|
||||
def get_trigger_line_for_product(self, trigger, product):
|
||||
trigger_lines = super(QcTriggerProductLine,
|
||||
self).get_trigger_line_for_product(trigger,
|
||||
product)
|
||||
for trigger_line in product.qc_triggers:
|
||||
if trigger_line.trigger.id == trigger.id:
|
||||
tests.add(trigger_line.test)
|
||||
return tests
|
||||
trigger_lines.add(trigger_line)
|
||||
return trigger_lines
|
||||
|
||||
Reference in New Issue
Block a user