mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
@@ -66,6 +66,7 @@ Contributors
|
||||
* Pedro M. Baeza <pedro.baeza@serviciobaeza.com>
|
||||
* Oihane Crucelaegui <oihanecrucelaegi@avanzosc.es>
|
||||
* Simone Rubino <simone.rubino@agilebg.com>
|
||||
* Andrii Skrypka <andrijskrypa@ukr.net>
|
||||
|
||||
Maintainers
|
||||
~~~~~~~~~~~
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Copyright 2014 Serv. Tec. Avanzados - Pedro M. Baeza
|
||||
# Copyright 2018 Simone Rubino - Agile Business Group
|
||||
# Copyright 2019 Andrii Skrypka
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
@@ -10,20 +11,6 @@ from odoo.addons.quality_control.models.qc_trigger_line import\
|
||||
class StockPicking(models.Model):
|
||||
_inherit = 'stock.picking'
|
||||
|
||||
@api.multi
|
||||
@api.depends('qc_inspections_ids', 'qc_inspections_ids.state')
|
||||
def _compute_count_inspections(self):
|
||||
for picking in self:
|
||||
picking.created_inspections = len(picking.qc_inspections_ids)
|
||||
picking.passed_inspections = \
|
||||
len([x for x in picking.qc_inspections_ids
|
||||
if x.state == 'success'])
|
||||
picking.failed_inspections = \
|
||||
len([x for x in picking.qc_inspections_ids
|
||||
if x.state == 'failed'])
|
||||
picking.done_inspections = \
|
||||
(picking.passed_inspections + picking.failed_inspections)
|
||||
|
||||
qc_inspections_ids = fields.One2many(
|
||||
comodel_name='qc.inspection', inverse_name='picking_id', copy=False,
|
||||
string='Inspections', help="Inspections related to this picking.")
|
||||
@@ -36,6 +23,24 @@ class StockPicking(models.Model):
|
||||
failed_inspections = fields.Integer(
|
||||
compute="_compute_count_inspections", string="Inspections failed")
|
||||
|
||||
@api.depends('qc_inspections_ids', 'qc_inspections_ids.state')
|
||||
def _compute_count_inspections(self):
|
||||
data = self.env['qc.inspection'].read_group([
|
||||
('id', 'in', self.mapped('qc_inspections_ids').ids),
|
||||
], ['picking_id', 'state'], ['picking_id', 'state'], lazy=False)
|
||||
picking_data = {}
|
||||
for d in data:
|
||||
picking_data.setdefault(d['picking_id'][0], {})\
|
||||
.setdefault(d['state'], 0)
|
||||
picking_data[d['picking_id'][0]][d['state']] += d['__count']
|
||||
for picking in self:
|
||||
count_data = picking_data.get(picking.id, {})
|
||||
picking.created_inspections = sum(count_data.values())
|
||||
picking.passed_inspections = count_data.get('success', 0)
|
||||
picking.failed_inspections = count_data.get('failed', 0)
|
||||
picking.done_inspections = \
|
||||
(picking.passed_inspections + picking.failed_inspections)
|
||||
|
||||
@api.multi
|
||||
def action_done(self):
|
||||
res = super(StockPicking, self).action_done()
|
||||
|
||||
@@ -8,19 +8,6 @@ from odoo import api, fields, models
|
||||
class StockProductionLot(models.Model):
|
||||
_inherit = 'stock.production.lot'
|
||||
|
||||
@api.multi
|
||||
@api.depends('qc_inspections_ids', 'qc_inspections_ids.state')
|
||||
def _compute_count_inspections(self):
|
||||
for lot in self:
|
||||
lot.created_inspections = len(lot.qc_inspections_ids)
|
||||
lot.passed_inspections = \
|
||||
len([x for x in lot.qc_inspections_ids
|
||||
if x.state == 'success'])
|
||||
lot.failed_inspections = \
|
||||
len([x for x in lot.qc_inspections_ids if x.state == 'failed'])
|
||||
lot.done_inspections = \
|
||||
(lot.passed_inspections + lot.failed_inspections)
|
||||
|
||||
qc_inspections_ids = fields.One2many(
|
||||
comodel_name='qc.inspection', inverse_name='lot_id', copy=False,
|
||||
string='Inspections', help="Inspections related to this lot.")
|
||||
@@ -32,3 +19,20 @@ class StockProductionLot(models.Model):
|
||||
compute="_compute_count_inspections", string="Inspections OK")
|
||||
failed_inspections = fields.Integer(
|
||||
compute="_compute_count_inspections", string="Inspections failed")
|
||||
|
||||
@api.depends('qc_inspections_ids', 'qc_inspections_ids.state')
|
||||
def _compute_count_inspections(self):
|
||||
data = self.env['qc.inspection'].read_group([
|
||||
('id', 'in', self.mapped('qc_inspections_ids').ids),
|
||||
], ['lot_id', 'state'], ['lot_id', 'state'], lazy=False)
|
||||
lot_data = {}
|
||||
for d in data:
|
||||
lot_data.setdefault(d['lot_id'][0], {}).setdefault(d['state'], 0)
|
||||
lot_data[d['lot_id'][0]][d['state']] += d['__count']
|
||||
for lot in self:
|
||||
count_data = lot_data.get(lot.id, {})
|
||||
lot.created_inspections = sum(count_data.values())
|
||||
lot.passed_inspections = count_data.get('success', 0)
|
||||
lot.failed_inspections = count_data.get('failed', 0)
|
||||
lot.done_inspections = \
|
||||
(lot.passed_inspections + lot.failed_inspections)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
* Pedro M. Baeza <pedro.baeza@serviciobaeza.com>
|
||||
* Oihane Crucelaegui <oihanecrucelaegi@avanzosc.es>
|
||||
* Simone Rubino <simone.rubino@agilebg.com>
|
||||
* Andrii Skrypka <andrijskrypa@ukr.net>
|
||||
|
||||
Reference in New Issue
Block a user