发布相关
This commit is contained in:
@@ -128,7 +128,7 @@ class QualityPoint(models.Model):
|
||||
class QualityCheck(models.Model):
|
||||
_inherit = "quality.check"
|
||||
part_name = fields.Char('零件名称', related='product_id.part_name')
|
||||
part_number = fields.Char('零件图号', related='product_id.part_number')
|
||||
part_number = fields.Char('零件图号', related='product_id.part_number', readonly=False, store=True)
|
||||
material_name = fields.Char('材料名称', compute='_compute_material_name')
|
||||
|
||||
# # 总数量,值为调拨单_产品明细_数量
|
||||
@@ -187,10 +187,21 @@ class QualityCheck(models.Model):
|
||||
('OK', 'OK'),
|
||||
('NG', 'NG')
|
||||
], string='出厂检验报告结果', default='OK')
|
||||
measure_operator = fields.Char('测量员', readonly=True)
|
||||
quality_manager = fields.Char('质量管理人员', readonly=True)
|
||||
measure_operator = fields.Many2one('res.users', string='操机员')
|
||||
quality_manager = fields.Many2one('res.users', string='质检员')
|
||||
|
||||
# 流水号(从1开始,最大99)
|
||||
serial_number = fields.Integer('流水号', default=1, readonly=True)
|
||||
|
||||
# 发布历史
|
||||
report_history_ids = fields.One2many('quality.check.report.history', 'check_id', string='发布历史')
|
||||
|
||||
# 发布状态
|
||||
publish_status = fields.Selection([
|
||||
('draft', '草稿'),
|
||||
('published', '已发布'),
|
||||
('canceled', '已撤销')
|
||||
], string='发布状态', default='draft')
|
||||
|
||||
def add_measure_line(self):
|
||||
"""
|
||||
@@ -229,46 +240,91 @@ class QualityCheck(models.Model):
|
||||
res_ids=self.ids
|
||||
)
|
||||
|
||||
# 获取默认的文档文件夹
|
||||
workspace = self.env['documents.folder'].search([('name', '=', '出厂检验报告')], limit=1)
|
||||
|
||||
attachment = self.env['ir.attachment'].create({
|
||||
'name': self.name,
|
||||
'type': 'binary',
|
||||
'datas': pdf_content,
|
||||
'res_model': self._name,
|
||||
'res_id': self.id,
|
||||
'mimetype': 'application/pdf',
|
||||
})
|
||||
|
||||
# 获取已发布的文档文件夹
|
||||
workspace = self.env['documents.folder'].search([('parent_folder_id', '=', self.env.ref('sf_quality.documents_purchase_contracts_folder').id), ('name', '=', '已发布')], limit=1)
|
||||
|
||||
if self.serial_number > 99:
|
||||
raise UserError(_('流水号不能大于99'))
|
||||
|
||||
str_serial_number = '0' + str(self.serial_number) if self.serial_number < 10 else str(self.serial_number)
|
||||
str_part_number = self.part_number if self.part_number else ''
|
||||
# 3. 创建文档记录
|
||||
doc_vals = {
|
||||
'name': f'FQC-{self.name}',
|
||||
'raw': pdf_content,
|
||||
'mimetype': 'application/pdf',
|
||||
'name': f'FQC{str_part_number}{str_serial_number}',
|
||||
# 'raw': pdf_content,
|
||||
'attachment_id': attachment.id,
|
||||
# 'mimetype': 'application/pdf',
|
||||
'res_id': self.id,
|
||||
'folder_id': workspace.id,
|
||||
'res_model': self._name,
|
||||
}
|
||||
|
||||
# 如果已经有报告,则更新
|
||||
if self.report_number_id:
|
||||
self.report_number_id.write(doc_vals)
|
||||
else:
|
||||
# 创建新的document记录
|
||||
doc = self.env['documents.document'].create(doc_vals)
|
||||
# 关联到当前质检记录
|
||||
self.write({
|
||||
'report_number_id': doc.id,
|
||||
'measure_operator': self.env.user.name, # 记录操作人
|
||||
'quality_manager': self.env.user.name, # 记录质检人
|
||||
})
|
||||
doc = self.env['documents.document'].create(doc_vals)
|
||||
# 关联到当前质检记录
|
||||
self.write({
|
||||
'report_number_id': doc.id,
|
||||
'publish_status': 'published'
|
||||
})
|
||||
|
||||
# 记录发布历史
|
||||
self.env['quality.check.report.history'].create({
|
||||
'check_id': self.id,
|
||||
'report_number_id': doc.id,
|
||||
'action': 'publish',
|
||||
'operator': self.env.user.name,
|
||||
'operation_time': datetime.now(),
|
||||
'document_status': 'published',
|
||||
'sequence': len(self.report_history_ids) + 1
|
||||
})
|
||||
|
||||
# 更新流水号
|
||||
self.serial_number += 1
|
||||
|
||||
# 返回成功消息
|
||||
return True
|
||||
|
||||
|
||||
def do_cancel_publish(self):
|
||||
"""
|
||||
取消发布出厂检验报告
|
||||
取消发布出厂检验报告(将当前质检单关联的出厂检验报告文档位置移动到废弃文件夹), 并记录发布历史
|
||||
"""
|
||||
pass
|
||||
self.ensure_one()
|
||||
# 1. 获取已发布的文档文件夹
|
||||
workspace = self.env['documents.folder'].search([('parent_folder_id', '=', self.env.ref('sf_quality.documents_purchase_contracts_folder').id), ('name', '=', '已发布')], limit=1)
|
||||
# 2. 将当前质检单关联的出厂检验报告文档位置移动到废弃文件夹
|
||||
self.report_number_id.write({
|
||||
'folder_id': self.env.ref('sf_quality.documents_purchase_contracts_folder_canceled').id,
|
||||
})
|
||||
# 3. 更新发布状态
|
||||
self.publish_status = 'canceled'
|
||||
# 3. 记录发布历史
|
||||
self.env['quality.check.report.history'].create({
|
||||
'check_id': self.id,
|
||||
'report_number_id': self.report_number_id.id,
|
||||
'action': 'cancel_publish',
|
||||
'operator': self.env.user.name,
|
||||
'operation_time': datetime.now(),
|
||||
'document_status': 'canceled',
|
||||
'sequence': len(self.report_history_ids) + 1
|
||||
})
|
||||
return True
|
||||
|
||||
|
||||
def do_re_publish(self):
|
||||
"""
|
||||
重新发布出厂检验报告
|
||||
重新发布出厂检验报告,参考发布规则
|
||||
"""
|
||||
pass
|
||||
self.do_publish()
|
||||
|
||||
|
||||
def generate_qr_code(self):
|
||||
"""生成二维码URL"""
|
||||
@@ -725,3 +781,30 @@ class QualityCheckMeasureLine(models.Model):
|
||||
def del_measure_value(self):
|
||||
self.ensure_one()
|
||||
self.sudo().unlink()
|
||||
|
||||
|
||||
# 增加出厂检验报告发布历史
|
||||
class QualityCheckReportHistory(models.Model):
|
||||
_name = 'quality.check.report.history'
|
||||
_description = '出厂检验报告发布历史'
|
||||
|
||||
check_id = fields.Many2one('quality.check', string='质检单', required=True, ondelete='cascade')
|
||||
report_number_id = fields.Many2one('documents.document', string='报告编号', readonly=True)
|
||||
|
||||
sequence = fields.Integer('序号')
|
||||
# 操作(发布、撤销发布、重新发布)
|
||||
action = fields.Selection([
|
||||
('publish', '发布'),
|
||||
('cancel_publish', '撤销发布'),
|
||||
('re_publish', '重新发布')
|
||||
], string='操作')
|
||||
# 操作人
|
||||
operator = fields.Char('操作人')
|
||||
# 操作时间
|
||||
operation_time = fields.Datetime('操作时间')
|
||||
# 文档状态(已发布、废弃)
|
||||
document_status = fields.Selection([
|
||||
('published', '已发布'),
|
||||
('canceled', '废弃')
|
||||
], string='操作后文档状态')
|
||||
|
||||
|
||||
@@ -2,3 +2,4 @@ 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
|
||||
access_quality_check_import_complex_model_wizard,quality.check.import.complex.model.wizard,model_quality_check_import_complex_model_wizard,quality.group_quality_user,1,1,1,0
|
||||
access_quality_check_report_history,quality.check.report.history,model_quality_check_report_history,quality.group_quality_user,1,1,1,0
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<field name="name">quality.check.measure.line.tree</field>
|
||||
<field name="model">quality.check.measure.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree create="false" editable="bottom">
|
||||
<tree editable="bottom">
|
||||
<field name="sequence"/>
|
||||
<field name="measure_item"/>
|
||||
<field name="measure_value1"/>
|
||||
@@ -14,7 +14,7 @@
|
||||
<field name="measure_value5"/>
|
||||
<field name="measure_result"/>
|
||||
<field name="remark"/>
|
||||
<!-- <button name="del_measure_value" type="object" string="删除测量值" class="btn-danger"/> -->
|
||||
<button name="del_measure_value" type="object" string="删除" class="btn-danger"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -318,6 +318,7 @@
|
||||
<field name="team_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="user_id" string="Control Person" invisible="1"/>
|
||||
<field name="measure_operator" string="操机员"/>
|
||||
|
||||
</group>
|
||||
</group>
|
||||
@@ -356,7 +357,16 @@
|
||||
</group>
|
||||
</page>
|
||||
<page string="发布历史" name="release_history" attrs="{'invisible': [('is_out_check', '=', False)]}">
|
||||
<!-- <field name="release_history"/> -->
|
||||
<field name="report_history_ids">
|
||||
<tree>
|
||||
<field name="sequence"/>
|
||||
<field name="report_number_id"/>
|
||||
<field name="action"/>
|
||||
<field name="document_status"/>
|
||||
<field name="operation_time"/>
|
||||
<field name="operator"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
||||
Reference in New Issue
Block a user