35 lines
1.6 KiB
Python
35 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from odoo import models
|
|
|
|
|
|
class StockMoveLine(models.Model):
|
|
_inherit = "stock.move.line"
|
|
|
|
def write(self, vals):
|
|
res = super().write(vals)
|
|
if vals.get('lot_id') and self.check_ids:
|
|
self.check_ids.filtered(lambda qc: qc.test_type in ('register_consumed_materials', 'register_byproducts')).lot_id = vals['lot_id']
|
|
return res
|
|
|
|
def _get_check_values(self, quality_point):
|
|
vals = super(StockMoveLine, self)._get_check_values(quality_point)
|
|
vals.update({'production_id': self.move_id.production_id.id or self.move_id.raw_material_production_id.id})
|
|
return vals
|
|
|
|
def _get_quality_points_all_products(self, quality_points_by_product_picking_type):
|
|
if self.move_id.raw_material_production_id:
|
|
return set()
|
|
else:
|
|
return super()._get_quality_points_all_products(quality_points_by_product_picking_type)
|
|
|
|
def _create_quality_check_at_write(self, vals):
|
|
if self.move_id.production_id or self.move_id.raw_material_production_id:
|
|
return False
|
|
return super()._create_quality_check_at_write(vals)
|
|
|
|
def _filter_move_lines_applicable_for_quality_check(self):
|
|
ok_lines = self.filtered(lambda sml: sml.move_id.raw_material_production_id)
|
|
done_lines = self.filtered(lambda sml: sml.product_id == sml.move_id.production_id.product_id)
|
|
return ok_lines | super(StockMoveLine, self - ok_lines - done_lines)._filter_move_lines_applicable_for_quality_check()
|