diff --git a/quality_control_stock_oca/README.rst b/quality_control_stock_oca/README.rst index 02f97945e..1b8453b77 100644 --- a/quality_control_stock_oca/README.rst +++ b/quality_control_stock_oca/README.rst @@ -14,13 +14,13 @@ Quality control - Stock :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github - :target: https://github.com/OCA/manufacture/tree/11.0/quality_control_stock + :target: https://github.com/OCA/manufacture/tree/12.0/quality_control_stock :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-11-0/manufacture-11-0-quality_control_stock + :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-quality_control_stock :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/129/11.0 + :target: https://runbot.odoo-community.org/runbot/129/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -66,6 +66,7 @@ Contributors * Pedro M. Baeza * Oihane Crucelaegui * Simone Rubino +* Ignacio José Alés Maintainers ~~~~~~~~~~~ @@ -80,6 +81,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/manufacture `_ project on GitHub. +This module is part of the `OCA/manufacture `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/quality_control_stock_oca/__manifest__.py b/quality_control_stock_oca/__manifest__.py index 3d60bb1c3..6aec78ff3 100644 --- a/quality_control_stock_oca/__manifest__.py +++ b/quality_control_stock_oca/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Quality control - Stock", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "category": "Quality control", "license": "AGPL-3", "author": "OdooMRP team, " @@ -13,7 +13,7 @@ "Serv. Tecnol. Avanzados - Pedro M. Baeza, " "Agile Business Group, " "Odoo Community Association (OCA)", - "website": "https://github.com/OCA/manufacture/tree/11.0/" + "website": "https://github.com/OCA/manufacture/tree/12.0/" "quality_control_stock", "depends": [ "quality_control", @@ -21,7 +21,6 @@ ], "data": [ "security/ir.model.access.csv", - "data/quality_control_stock_data.xml", "views/qc_inspection_view.xml", "views/stock_picking_view.xml", "views/stock_production_lot_view.xml", diff --git a/quality_control_stock_oca/data/quality_control_stock_data.xml b/quality_control_stock_oca/data/quality_control_stock_data.xml deleted file mode 100644 index 156c25b14..000000000 --- a/quality_control_stock_oca/data/quality_control_stock_data.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Stock Move - stock.move - - - - Picking List - stock.picking - - - diff --git a/quality_control_stock_oca/i18n/quality_control_stock.pot b/quality_control_stock_oca/i18n/quality_control_stock.pot index e4fb65c27..09424daa5 100644 --- a/quality_control_stock_oca/i18n/quality_control_stock.pot +++ b/quality_control_stock_oca/i18n/quality_control_stock.pot @@ -75,12 +75,12 @@ msgid "Picking" msgstr "" #. module: quality_control_stock -#: model:res.request.link,name:quality_control_stock.req_link_stock_picking +#: code:addons/quality_control_stock/models/qc_inspection.py:14 msgid "Picking List" -msgstr "" +msgstr ""c #. module: quality_control_stock -#: model:ir.model.fields,field_description:quality_control_stock.field_qc_trigger_picking_type_id +#: model:ir.model.fields,field_descrption:quality_control_stock.field_qc_trigger_picking_type_id msgid "Picking Type" msgstr "" @@ -140,7 +140,7 @@ msgid "Quality inspections from picking failed" msgstr "" #. module: quality_control_stock -#: model:res.request.link,name:quality_control_stock.req_link_stock_move +#: code:addons/quality_control_stock/models/qc_inspection.py:14 msgid "Stock Move" msgstr "" diff --git a/quality_control_stock_oca/models/qc_inspection.py b/quality_control_stock_oca/models/qc_inspection.py index ac7458132..4c8a295c2 100644 --- a/quality_control_stock_oca/models/qc_inspection.py +++ b/quality_control_stock_oca/models/qc_inspection.py @@ -3,16 +3,29 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import api, fields, models +from odoo.fields import first class QcInspection(models.Model): _inherit = 'qc.inspection' + picking_id = fields.Many2one( + comodel_name="stock.picking", compute="_compute_picking", store=True) + lot_id = fields.Many2one( + comodel_name='stock.production.lot', compute="_compute_lot", + store=True) + + @api.multi + def object_selection_values(self): + result = super().object_selection_values() + result.extend([ + ('stock.picking', "Picking List"), ('stock.move', "Stock Move")]) + return result + @api.multi @api.depends('object_id') def _compute_picking(self): for inspection in self: - inspection.picking_id = False if inspection.object_id: if inspection.object_id._name == 'stock.move': inspection.picking_id = inspection.object_id.picking_id @@ -24,18 +37,22 @@ class QcInspection(models.Model): @api.multi @api.depends('object_id') def _compute_lot(self): + moves = self.filtered( + lambda i: i.object_id and + i.object_id._name == 'stock.move').mapped('object_id') + move_lines = self.env['stock.move.line'].search([ + ('lot_id', '!=', False), + ('move_id', 'in', [move.id for move in moves])]) + for inspection in self: - inspection.lot_id = False if inspection.object_id: if inspection.object_id._name == 'stock.move.line': inspection.lot_id = \ inspection.object_id.lot_id elif inspection.object_id._name == 'stock.move': - inspection.lot_id = \ - self.env['stock.move.line'].search([ - ('lot_id', '!=', False), - ('move_id', '=', inspection.object_id.id) - ])[:1].lot_id + inspection.lot_id = first(move_lines.filtered( + lambda line: line.move_id == inspection.object_id + )).lot_id elif inspection.object_id._name == 'stock.production.lot': inspection.lot_id = inspection.object_id @@ -72,12 +89,6 @@ class QcInspection(models.Model): res['qty'] = object_ref.product_uom_qty return res - picking_id = fields.Many2one( - comodel_name="stock.picking", compute="_compute_picking", store=True) - lot_id = fields.Many2one( - comodel_name='stock.production.lot', compute="_compute_lot", - store=True) - class QcInspectionLine(models.Model): _inherit = 'qc.inspection.line' diff --git a/quality_control_stock_oca/models/stock_picking.py b/quality_control_stock_oca/models/stock_picking.py index ecdc5db8c..f6e294047 100644 --- a/quality_control_stock_oca/models/stock_picking.py +++ b/quality_control_stock_oca/models/stock_picking.py @@ -40,9 +40,9 @@ class StockPicking(models.Model): def action_done(self): res = super(StockPicking, self).action_done() inspection_model = self.env['qc.inspection'] + qc_trigger = self.env['qc.trigger'].search( + [('picking_type_id', '=', self.picking_type_id.id)]) for operation in self.move_lines: - qc_trigger = self.env['qc.trigger'].search( - [('picking_type_id', '=', self.picking_type_id.id)]) trigger_lines = set() for model in ['qc.trigger.product_category_line', 'qc.trigger.product_template_line', diff --git a/quality_control_stock_oca/models/stock_picking_type.py b/quality_control_stock_oca/models/stock_picking_type.py index 131a83a01..e78919f94 100644 --- a/quality_control_stock_oca/models/stock_picking_type.py +++ b/quality_control_stock_oca/models/stock_picking_type.py @@ -10,20 +10,20 @@ class StockPickingType(models.Model): @api.multi def _create_qc_trigger(self): - self.ensure_one() - qc_trigger = { - 'name': self.name, - 'company_id': self.warehouse_id.company_id.id, - 'picking_type_id': self.id, - 'partner_selectable': True, - } - return self.env['qc.trigger'].sudo().create(qc_trigger) + for picking_type in self: + qc_trigger = { + 'name': picking_type.name, + 'company_id': picking_type.warehouse_id.company_id.id, + 'picking_type_id': picking_type.id, + 'partner_selectable': True + } + self.env['qc.trigger'].sudo().create(qc_trigger) - @api.model - def create(self, vals): - picking_type = super(StockPickingType, self).create(vals) - picking_type._create_qc_trigger() - return picking_type + @api.model_create_multi + def create(self, val_list): + picking_types = super(StockPickingType, self).create(val_list) + picking_types._create_qc_trigger() + return picking_types @api.multi def write(self, vals): diff --git a/quality_control_stock_oca/readme/CONTRIBUTORS.rst b/quality_control_stock_oca/readme/CONTRIBUTORS.rst index 8754a7d88..6cd57a1e5 100644 --- a/quality_control_stock_oca/readme/CONTRIBUTORS.rst +++ b/quality_control_stock_oca/readme/CONTRIBUTORS.rst @@ -1,3 +1,4 @@ * Pedro M. Baeza * Oihane Crucelaegui * Simone Rubino +* Ignacio José Alés diff --git a/quality_control_stock_oca/static/description/index.html b/quality_control_stock_oca/static/description/index.html index ae90064c8..011274a8a 100644 --- a/quality_control_stock_oca/static/description/index.html +++ b/quality_control_stock_oca/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

This module defines triggers that creates inspections when stock moves are done.

It also adds some shortcuts on picking and lots to these inspections.

Table of contents

@@ -394,7 +394,7 @@ ul.auto-toc {

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -414,6 +414,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
  • Pedro M. Baeza <pedro.baeza@serviciobaeza.com>
  • Oihane Crucelaegui <oihanecrucelaegi@avanzosc.es>
  • Simone Rubino <simone.rubino@agilebg.com>
  • +
  • Ignacio José Alés <ignacio.ales@guadaltech.es>
  • @@ -423,7 +424,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/manufacture project on GitHub.

    +

    This module is part of the OCA/manufacture project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    diff --git a/quality_control_stock_oca/tests/test_quality_control_stock.py b/quality_control_stock_oca/tests/test_quality_control_stock.py index 88fdb091a..6cd1d8853 100644 --- a/quality_control_stock_oca/tests/test_quality_control_stock.py +++ b/quality_control_stock_oca/tests/test_quality_control_stock.py @@ -58,7 +58,6 @@ class TestQualityControl(TransactionCase): 'location_dest_id': self.location_dest.id }) self.picking1.action_confirm() - self.picking1.force_assign() sequence = 10 for line in self.picking1.move_lines.filtered( lambda r: r.product_id == self.product): @@ -98,7 +97,7 @@ class TestQualityControl(TransactionCase): 'test': self.test.id, } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') inspection = self.picking1.qc_inspections_ids[:1] @@ -117,7 +116,7 @@ class TestQualityControl(TransactionCase): 'test': self.test.id, } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') self.assertEqual(self.picking1.qc_inspections_ids[:1].test, self.test, @@ -130,7 +129,7 @@ class TestQualityControl(TransactionCase): 'test': self.test.id, } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') self.assertEqual(self.picking1.qc_inspections_ids[:1].test, self.test, @@ -144,7 +143,7 @@ class TestQualityControl(TransactionCase): 'partners': [(6, 0, self.partner1.ids)], } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') self.assertEqual(self.picking1.qc_inspections_ids[:1].test, self.test, @@ -158,7 +157,7 @@ class TestQualityControl(TransactionCase): 'partners': [(6, 0, self.partner1.ids)], } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') self.assertEqual(self.picking1.qc_inspections_ids[:1].test, self.test, @@ -172,7 +171,7 @@ class TestQualityControl(TransactionCase): 'partners': [(6, 0, self.partner1.ids)], } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') self.assertEqual(self.picking1.qc_inspections_ids[:1].test, self.test, @@ -186,7 +185,7 @@ class TestQualityControl(TransactionCase): 'partners': [(6, 0, self.partner2.ids)], } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 0, 'No inspection must be created') @@ -198,7 +197,7 @@ class TestQualityControl(TransactionCase): 'partners': [(6, 0, self.partner2.ids)], } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 0, 'No inspection must be created') @@ -210,7 +209,7 @@ class TestQualityControl(TransactionCase): 'partners': [(6, 0, self.partner2.ids)], } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 0, 'No inspection must be created') @@ -227,7 +226,7 @@ class TestQualityControl(TransactionCase): 'test': self.test.id, } )] - self.picking1.do_transfer() + self.picking1.action_done() self.assertEqual(self.picking1.created_inspections, 1, 'Only one inspection must be created') self.assertEqual(self.picking1.qc_inspections_ids[:1].test, self.test, diff --git a/quality_control_stock_oca/views/qc_inspection_view.xml b/quality_control_stock_oca/views/qc_inspection_view.xml index e040e315b..0e462f1c8 100644 --- a/quality_control_stock_oca/views/qc_inspection_view.xml +++ b/quality_control_stock_oca/views/qc_inspection_view.xml @@ -38,9 +38,11 @@ @@ -71,10 +73,12 @@ + name="group_by_picking_id" + context="{'group_by': 'picking_id'}"/> + name="group_by_lot_id" + context="{'group_by': 'lot_id'}"/>