diff --git a/quality_control/__manifest__.py b/quality_control/__manifest__.py
index 59fbbb98..3b080984 100644
--- a/quality_control/__manifest__.py
+++ b/quality_control/__manifest__.py
@@ -8,7 +8,7 @@
'sequence': 120,
'summary': 'Control the quality of your products',
'website': 'https://www.odoo.com/app/quality',
- 'depends': ['quality', 'sf_manufacturing'],
+ 'depends': ['quality', 'sf_manufacturing', 'base_import'],
'description': """
Quality Control
===============
@@ -26,6 +26,7 @@ Quality Control
'views/product_views.xml',
'views/stock_move_views.xml',
'views/stock_picking_views.xml',
+ 'views/quality.check.measures.line.xml',
'wizard/quality_check_wizard_views.xml',
'security/ir.model.access.csv',
],
diff --git a/quality_control/models/quality.py b/quality_control/models/quality.py
index f64864f7..9af5c24c 100644
--- a/quality_control/models/quality.py
+++ b/quality_control/models/quality.py
@@ -10,6 +10,7 @@ from odoo import api, models, fields, _
from odoo.api import depends
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT, float_round
from odoo.osv.expression import OR
+from odoo.exceptions import UserError
class QualityPoint(models.Model):
@@ -129,12 +130,33 @@ class QualityCheck(models.Model):
# 材料
material_name = fields.Char('材料名称', compute='_compute_material_name', readonly=True)
- # # 总数量,值未调拨单_产品明细_数量
+ # # 总数量,值为调拨单_产品明细_数量
# total_qty = fields.Float('总数量', compute='_compute_total_qty', readonly=True)
# # 检验数
# check_qty = fields.Float('检验数', compute='_compute_check_qty', readonly=True)
# # 出厂检验报告编号
# report_number = fields.Char('出厂检验报告编号', compute='_compute_report_number', readonly=True)
+ # 总数量,值为调拨单_产品明细_数量
+ total_qty = fields.Float('总数量', readonly=True)
+ # 检验数
+ check_qty = fields.Float('检验数', creadonly=True)
+ # 出厂检验报告编号
+ report_number_id = fields.Many2one('document.document', string='出厂检验报告编号', readonly=True)
+ is_out_check = fields.Boolean(string='是否出库检验', compute='_compute_is_out_check', readonly=True)
+
+ measure_line_ids = fields.One2many('quality.check.measure.line', 'check_id', string='测量明细')
+
+ def add_measure_line(self):
+ '''
+ 新增测量值,如果测量值有5列了,则提示“最多只能有5列测量值”
+ '''
+ self.ensure_one()
+ if len(self.measure_line_ids) >= 5:
+ raise UserError('最多只能有5列测量值')
+ self.env['quality.check.measure.line'].create({
+ 'check_id': self.id,
+ 'sequence': len(self.measure_line_ids) + 1,
+ })
@depends('product_id')
def _compute_part_name_number(self):
@@ -149,6 +171,14 @@ class QualityCheck(models.Model):
materials_type_name = record.product_id.materials_type_id.name if record.product_id.materials_type_id else ''
record.material_name = materials_id_name + ' ' + materials_type_name
+ @depends('point_id')
+ def _compute_is_out_check(self):
+ for record in self:
+ if record.point_id.title == '出厂检验报告':
+ record.is_out_check = True
+ else:
+ record.is_out_check = False
+
failure_message = fields.Html(related='point_id.failure_message', readonly=True)
measure = fields.Float('Measure', default=0.0, digits='Quality Tests', tracking=True)
measure_success = fields.Selection([
@@ -541,3 +571,41 @@ class ProductProduct(models.Model):
def _additional_quality_point_where_clause(self):
return ""
+
+
+class QualityCheckMeasureLine(models.Model):
+ _name = 'quality.check.measure.line'
+ _description = '质检测量明细'
+ _order = 'sequence, id'
+
+ sequence = fields.Integer('序号', default=10)
+ check_id = fields.Many2one('quality.check', string='质检单', required=True, ondelete='cascade')
+
+ # 基本信息
+ product_name = fields.Char('产品名称', related='check_id.product_id.name', readonly=True)
+ drawing_no = fields.Char('图号')
+ measure_item = fields.Char('检测项目')
+
+ # 测量值
+ measure_value1 = fields.Char('测量值1')
+ measure_value2 = fields.Char('测量值2')
+ measure_value3 = fields.Char('测量值3')
+ measure_value4 = fields.Char('测量值4')
+ measure_value5 = fields.Char('测量值5')
+
+ # 展示列数
+ show_colomn_number = fields.Integer('展示列数', default=1)
+
+ # 判定结果
+ measure_result = fields.Selection([
+ ('OK', 'OK'),
+ ('NG', 'NG')
+ ], string='判定', default='OK')
+
+ remark = fields.Char('备注')
+
+ def del_measure_value(self):
+ self.ensure_one()
+ self.sudo().unlink()
+
+
\ No newline at end of file
diff --git a/quality_control/security/ir.model.access.csv b/quality_control/security/ir.model.access.csv
index d700da50..9a6ff768 100644
--- a/quality_control/security/ir.model.access.csv
+++ b/quality_control/security/ir.model.access.csv
@@ -1,2 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_quality_check_wizard,access.quality_check_wizard,model_quality_check_wizard,quality.group_quality_user,1,1,1,0
+access_quality_check_measure_line,quality.check.measure.line,model_quality_check_measure_line,base.group_user,1,1,1,0
diff --git a/quality_control/views/quality.check.measures.line.xml b/quality_control/views/quality.check.measures.line.xml
new file mode 100644
index 00000000..b0c603df
--- /dev/null
+++ b/quality_control/views/quality.check.measures.line.xml
@@ -0,0 +1,21 @@
+
+
+
+ quality.check.measure.line.tree
+ quality.check.measure.line
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/quality_control/views/quality_views.xml b/quality_control/views/quality_views.xml
index 1fd82ee3..0beb9d7a 100644
--- a/quality_control/views/quality_views.xml
+++ b/quality_control/views/quality_views.xml
@@ -255,6 +255,7 @@
+