Repository
OCA/manufacture · module folder · Try on Runboat
Module version
1.5.1
Category
Quality control
Folder size
3.02 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/manufacture
Last tracking update
2026-08-07 07:31:54
Authors
Odoo Community Association (OCA), OdooMRP team
Maintainers
Odoo Community Association (OCA), OdooMRP team
Committers
Holger Brunn, Lois Rilo, Carlos Roca, Weblate, cubells, OCA Transbot, OCA-git-bot, oca-travis, Dimitrios T. Tanis, Jaime Arroyo, Ignacio Ales, Marcel Savegnago
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
quality_control_issue, quality_control_mrp, quality_control_stock, quality_control_team
Description

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
product_category_qc_form_view product.category.qc product.category form Inherits product.product_category_form_view
product_template_qc_form_view product.template.common.qc product.template form Inherits product.product_template_form_view
qc_inspection_form_view qc.inspection.form qc.inspection form New
qc_inspection_line_search_view qc.inspection.line.search qc.inspection.line search New
qc_inspection_line_tree_view qc.inspection.line.tree qc.inspection.line tree New
qc_inspection_search_view qc.inspection.search qc.inspection search New
qc_inspection_tree_view qc.inspection.tree qc.inspection tree New
qc_test_category_tree_view qc.test.category.tree qc.test.category tree New
qc_test_form_view qc.test.form qc.test form New
qc_test_question_form_view qc.test.question.form qc.test.question form New
qc_test_tree_view qc.test.tree qc.test tree New
qc_trigger_form_view qc.trigger.form qc.trigger form New
qc_trigger_tree2_view qc.trigger.tree qc.trigger tree New
qc_trigger_tree_view qc.trigger.tree qc.trigger tree New
view_qc_test_set_test_form qc.inspection.set.test.form qc.inspection.set.test form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (15)

New fields (1)
  • qc_triggers One2many → qc.trigger.product_category_line
    comodel_name='qc.trigger.product_category_line' inverse_name='product_category' string='Quality control triggers'
Public methods (0)

No public methods.

New fields (1)
  • qc_triggers One2many → qc.trigger.product_line
    comodel_name='qc.trigger.product_line' inverse_name='product' string='Quality control triggers'
Public methods (0)

No public methods.

New fields (1)
  • qc_triggers One2many → qc.trigger.product_template_line
    comodel_name='qc.trigger.product_template_line' inverse_name='product_template' string='Quality control triggers'
Public methods (0)

No public methods.

New fields (14)
  • auto_generated Boolean
    copy=False help='If an inspection is auto-generated, it can be canceled but not removed.' readonly=True string='Auto-generated'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True states={'draft': [('readonly', False)]} string='Company'
  • date Datetime
    copy=False default=fields.Datetime.now readonly=True required=True states={'draft': [('readonly', False)]} string='Date'
  • external_notes Text
    states={'success': [('readonly', True)], 'failed': [('readonly', True)]} string='External notes'
  • inspection_lines One2many → qc.inspection.line
    comodel_name='qc.inspection.line' inverse_name='inspection_id' readonly=True states={'ready': [('readonly', False)]} string='Inspection lines'
  • internal_notes Text
    string='Internal notes'
  • name Char
    copy=False default='/' readonly=True required=True states={'draft': [('readonly', False)]} string='Inspection number'
  • object_id Reference
    ondelete='set null' readonly=True selection=<expr> states={'draft': [('readonly', False)]} string='Reference'
  • product_id Many2one → product.product
    comodel_name='product.product' compute='_compute_product_id' help='Product associated with the inspection' oldname='product' store=True
  • qty Float
    default=1.0 string='Quantity'
  • state Selection
    default='draft' readonly=True string='State' track_visibility='onchange' args: [('draft', 'Draft'), ('ready', 'Ready'), ('waiting', 'Waiting supervisor approval'), ('success', 'Quality success'), ('failed', 'Quality failed'), ('canceled', 'Canceled')]
  • success Boolean
    compute='_compute_success' help='This field will be marked if all tests have succeeded.' store=True string='Success'
  • test Many2one → qc.test
    comodel_name='qc.test' readonly=True string='Test'
  • user Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible' track_visibility='always'
Public methods (9)
  • action_approve(self)
    @api.multi
  • action_cancel(self)
    @api.multi
  • action_confirm(self)
    @api.multi
  • action_draft(self)
    @api.multi
  • action_todo(self)
    @api.multi
  • create(self, val_list)
    @api.model_create_multi
  • object_selection_values(self)
    @api.multi
    Overridable method for adding more object models to an inspection. :return: A list with the selection's possible values.
  • set_test(self, trigger_line, force_fill=False)
    @api.multi
  • unlink(self)
    @api.multi

New fields (16)
  • inspection_id Many2one → qc.inspection
    comodel_name='qc.inspection' ondelete='cascade' string='Inspection'
  • max_value Float
    digits=dp.get_precision('Quality Control') help='Maximum valid value for a quantitative question.' readonly=True string='Max'
  • min_value Float
    digits=dp.get_precision('Quality Control') help='Minimum valid value for a quantitative question.' readonly=True string='Min'
  • name Char
    readonly=True string='Question'
  • notes Text
    string='Notes'
  • possible_ql_values Many2many → qc.test.question.value
    comodel_name='qc.test.question.value' string='Answers'
  • product_id Many2one → product.product
    comodel_name='product.product' oldname='product' related='inspection_id.product_id' store=True
  • qualitative_value Many2one → qc.test.question.value
    comodel_name='qc.test.question.value' domain="[('id', 'in', possible_ql_values)]" help='Value of the result for a qualitative question.' string='Qualitative value'
  • quantitative_value Float
    digits=dp.get_precision('Quality Control') help='Value of the result for a quantitative question.' args: 'Quantitative value'
  • question_type Selection
    readonly=True string='Question type' args: [('qualitative', 'Qualitative'), ('quantitative', 'Quantitative')]
  • success Boolean
    compute='_compute_quality_test_check' store=True string='Success?'
  • test_line Many2one → qc.test.question
    comodel_name='qc.test.question' readonly=True string='Test question'
  • test_uom_category Many2one → uom.category
    comodel_name='uom.category' related='test_uom_id.category_id' store=True
  • test_uom_id Many2one → uom.uom
    comodel_name='uom.uom' help='UoM for minimum and maximum values for a quantitative question.' readonly=True string='Test UoM'
  • uom_id Many2one → uom.uom
    comodel_name='uom.uom' domain="[('category_id', '=', test_uom_category)]" help='UoM of the inspection value for a quantitative question.' string='UoM'
  • valid_values Char
    compute='_compute_valid_values' store=True string='Valid values'
Public methods (0)

No public methods.

New fields (1)
  • test Many2one → qc.test
    comodel_name='qc.test' string='Test'
Public methods (1)
  • action_create_test(self)
    @api.multi

New fields (8)
  • active Boolean
    default=True args: 'Active'
  • category Many2one → qc.test.category
    comodel_name='qc.test.category' string='Category'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> string='Company'
  • fill_correct_values Boolean
    string='Pre-fill with correct values'
  • name Char
    required=True string='Name' translate=True
  • object_id Reference
    selection=object_selection_values string='Reference object'
  • test_lines One2many → qc.test.question
    comodel_name='qc.test.question' copy=True inverse_name='test' string='Questions'
  • type Selection
    default='generic' required=True string='Type' args: [('generic', 'Generic'), ('related', 'Related')]
Public methods (2)
  • object_selection_values(self)
    @api.multi
  • onchange_type(self)
    @api.onchange('type')

New fields (5)
  • active Boolean
    default=True help='This field allows you to hide the category without removing it.' string='Active'
  • child_ids One2many → qc.test.category
    comodel_name='qc.test.category' inverse_name='parent_id' string='Child categories'
  • complete_name Char
    compute='_compute_get_complete_name' string='Full name'
  • name Char
    required=True translate=True args: 'Name'
  • parent_id Many2one → qc.test.category
    comodel_name='qc.test.category' string='Parent category'
Public methods (0)

No public methods.

New fields (9)
  • max_value Float
    digits=dp.get_precision('Quality Control') string='Max'
  • min_value Float
    digits=dp.get_precision('Quality Control') string='Min'
  • name Char
    required=True string='Name' translate=True
  • notes Text
    string='Notes'
  • ql_values One2many → qc.test.question.value
    comodel_name='qc.test.question.value' copy=True inverse_name='test_line' string='Qualitative values'
  • sequence Integer
    default='10' required=True string='Sequence'
  • test Many2one → qc.test
    comodel_name='qc.test' string='Test'
  • type Selection
    required=True string='Type' args: [('qualitative', 'Qualitative'), ('quantitative', 'Quantitative')]
  • uom_id Many2one → uom.uom
    comodel_name='uom.uom' string='Uom'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True string='Name' translate=True
  • ok Boolean
    help='When this field is marked, the answer is considered correct.' string='Correct answer?'
  • test_line Many2one → qc.test.question
    comodel_name='qc.test.question' string='Test question'
Public methods (0)

No public methods.

New fields (4)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> string='Company'
  • name Char
    required=True string='Name' translate=True
  • partner_selectable Boolean
    default=False help='This technical field is to allow to filter by partner in triggers' readonly=True string='Selectable by partner'
Public methods (0)

No public methods.

New fields (4)
  • partners Many2many → res.partner
    comodel_name='res.partner' domain="[('parent_id', '=', False)]" help='If filled, the test will only be created when the action is done for one of the specified partners. If empty, the test will always be created.' string='Partners'
  • test Many2one → qc.test
    comodel_name='qc.test' required=True
  • trigger Many2one → qc.trigger
    comodel_name='qc.trigger' required=True
  • user Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible' track_visibility='always'
Public methods (1)
  • get_trigger_line_for_product(self, trigger, product, partner=False)
    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 trigger_lines that matches to the given product and trigger.

New fields (1)
  • product_category Many2one → product.category
    comodel_name='product.category'
Public methods (1)
  • get_trigger_line_for_product(self, trigger, product, partner=False)

New fields (1)
  • product Many2one → product.product
    comodel_name='product.product'
Public methods (1)
  • get_trigger_line_for_product(self, trigger, product, partner=False)

New fields (1)
  • product_template Many2one → product.template
    comodel_name='product.template'
Public methods (1)
  • get_trigger_line_for_product(self, trigger, product, partner=False)

Loading…

Loading…

Loading…

Loading…