回退代码
This commit is contained in:
@@ -5,7 +5,6 @@ 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):
|
||||
@@ -141,71 +140,3 @@ class QualityCheck(models.Model):
|
||||
return "零件特采发送成功"
|
||||
else:
|
||||
raise ValidationError("零件特采发送失败")
|
||||
|
||||
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for val in vals_list:
|
||||
if 'point_id' in val and 'measure_on' not in val:
|
||||
# 如果没有控制方式字段,则从检查点读取质量方式
|
||||
point_id = self.env['quality.point'].browse(val['point_id'])
|
||||
val.update({'measure_on': point_id.measure_on})
|
||||
return super(QualityCheck, self).create(vals_list)
|
||||
|
||||
|
||||
@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.picking_id and qc.workorder_id:
|
||||
qc.total_qty = qc.workorder_id.production_id.product_qty
|
||||
|
||||
@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
|
||||
|
||||
|
||||
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.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.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.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': '警告',
|
||||
'message': '不合格数量不能超过已检数量'
|
||||
}
|
||||
}
|
||||
@@ -88,42 +88,6 @@
|
||||
<button name="do_cancel_publish" string="取消发布" type="object" class="btn-primary" confirm="确定取消发布吗?" attrs="{'invisible': ['|',('is_out_check', '=', False), ('publish_status', '!=', 'published')]}"/>
|
||||
<button name="do_re_publish" string="重新发布" type="object" class="btn-primary" attrs="{'invisible': ['|', ('is_out_check', '=', False), ('publish_status', '!=', 'canceled')]}"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='total_qty']" position="attributes">
|
||||
<attribute name="attrs">{
|
||||
'invisible': ['&', '|', ('measure_on', '!=', 'product'), ('is_out_check', '=', False), '|', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False)],
|
||||
'readonly': ['|', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False)],
|
||||
'on_change': ['|', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False)]
|
||||
}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='total_qty']" position="after">
|
||||
<label for="workorder_qty_to_test"
|
||||
attrs="{'invisible': ['|', '&', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}"/>
|
||||
<div class="o_row"
|
||||
attrs="{'invisible': ['|', '&', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}">
|
||||
<field name="workorder_qty_to_test" attrs="{'readonly': 0, 'on_chnage': 1}"/>
|
||||
<field name="uom_id"/>
|
||||
</div>
|
||||
<label for="workorder_qty_tested"
|
||||
attrs="{'invisible': ['|', '&', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}"/>
|
||||
<div class="o_row"
|
||||
attrs="{'invisible': ['|', '&', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}">
|
||||
<field name="workorder_qty_tested" attrs="{'readonly': [('quality_state', '!=', 'none')], 'on_chnage': 1}"/>
|
||||
<field name="uom_id"/>
|
||||
</div>
|
||||
<label for="workorder_qty_test_failed"
|
||||
attrs="{'invisible': ['|', '&', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}"/>
|
||||
<div class="o_row"
|
||||
attrs="{'invisible': ['|', '&', ('measure_on', '!=', 'move_line'), ('workorder_id', '=', False), ('is_lot_tested_fractionally', '=', False)]}">
|
||||
<field name="workorder_qty_test_failed" attrs="{'readonly': [('quality_state', '!=', 'none')], 'on_chnage': 1}"/>
|
||||
<field name="uom_id"/>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//label[@for='qty_tested']" position="attributes">
|
||||
<attribute name="attrs">{'invisible': ['|', '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False), '&', ('measure_on', '=', 'move_line'), ('workorder_id', '!=', False)]}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//div[@class='o_row'][.//field[@name='qty_tested']]" position="attributes">
|
||||
<attribute name="attrs">{'invisible': ['|', '|', ('measure_on', '!=', 'move_line'), ('is_lot_tested_fractionally', '=', False), '&', ('measure_on', '=', 'move_line'), ('workorder_id', '!=', False)]}</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user