调整质检单字段

This commit is contained in:
胡尧
2025-05-09 10:34:23 +08:00
parent bacddd2ad8
commit 18ae46207a
3 changed files with 67 additions and 43 deletions

View File

@@ -5,6 +5,7 @@ from odoo import fields, models, api
from odoo.exceptions import ValidationError
from datetime import datetime
from odoo.addons.sf_base.commons.common import Common
from odoo.tools import float_round
class QualityCheck(models.Model):
@@ -145,39 +146,55 @@ class QualityCheck(models.Model):
return super(QualityCheck, self).create(vals_list)
@api.depends('move_line_id.qty_done', 'workorder_id.qty_produced')
def _compute_qty_line(self):
super(QualityCheck, self)._compute_qty_line()
@api.depends('total_qty','testing_percentage_within_lot', 'is_lot_tested_fractionally')
def _compute_workorder_qty_to_test(self):
for qc in self:
if qc.is_lot_tested_fractionally:
rounding = qc.product_id.uom_id.rounding if qc.product_id.uom_id else 0.01
qc.workorder_qty_to_test = float_round(float(qc.total_qty) * qc.testing_percentage_within_lot / 100,
precision_rounding=rounding, rounding_method="UP")
else:
qc.workorder_qty_to_test = qc.total_qty
@api.depends('picking_id', 'workorder_id')
def _compute_total_qty(self):
super(QualityCheck, self)._compute_total_qty()
for qc in self:
if not qc.move_line_id and qc.workorder_id:
qc.qty_line = qc.workorder_id.production_id.product_qty
if not qc.picking_id and qc.workorder_id:
qc.total_qty = qc.workorder_id.production_id.product_qty
qty_line = fields.Float('数量', store=True)
qty_test_failed = fields.Float('不合格数')
qty_to_test = fields.Float('应检', store=True)
qty_tested = fields.Float('已检')
@api.depends('workorder_qty_to_test')
def _compute_workorder_qty_tested(self):
for qc in self:
qc.workorder_qty_tested = qc.workorder_qty_to_test
@api.onchange('qty_line', 'qty_test_failed', 'qty_to_test', 'qty_tested')
workorder_qty_to_test = fields.Float('应检', compute='_compute_workorder_qty_to_test', store=True)
workorder_qty_tested = fields.Float('已检', compute='_compute_workorder_qty_tested', store=True)
workorder_qty_test_failed = fields.Float('不合格数')
@api.onchange('total_qty', 'workorder_qty_test_failed', 'workorder_qty_to_test', 'workorder_qty_tested')
def _onchage_qty(self):
for record in self:
if record.qty_line and record.qty_to_test and record.qty_to_test > record.qty_line:
record.qty_to_test = record.qty_line
if record.total_qty and record.workorder_qty_to_test and record.workorder_qty_to_test > float(record.total_qty):
record.workorder_qty_to_test = float(record.total_qty)
return {
'warning': {
'title': '警告',
'message': '待检数量不能超过总数量'
}
}
if record.qty_to_test and record.qty_tested and record.qty_tested > record.qty_to_test:
record.qty_tested = record.qty_to_test
if record.workorder_qty_to_test and record.workorder_qty_tested and record.workorder_qty_tested > record.workorder_qty_to_test:
record.workorder_qty_tested = record.workorder_qty_to_test
return {
'warning': {
'title': '警告',
'message': '已检数量不能超过待检数量'
}
}
if record.qty_tested and record.qty_test_failed and record.qty_test_failed > record.qty_tested:
record.qty_test_failed = record.qty_tested
if record.workorder_qty_tested and record.workorder_qty_test_failed and record.workorder_qty_test_failed > record.workorder_qty_tested:
record.workorder_qty_test_failed = record.workorder_qty_tested
return {
'warning': {
'title': '警告',