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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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.
@@ -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'}"/>