发布相关

This commit is contained in:
mgw
2025-03-13 16:12:48 +08:00
parent 04b255d5c6
commit f780d47562
6 changed files with 140 additions and 32 deletions

View File

@@ -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='操作后文档状态')

View File

@@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_quality_check_wizard access.quality_check_wizard model_quality_check_wizard quality.group_quality_user 1 1 1 0
3 access_quality_check_measure_line quality.check.measure.line model_quality_check_measure_line base.group_user 1 1 1 0
4 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
5 access_quality_check_report_history quality.check.report.history model_quality_check_report_history quality.group_quality_user 1 1 1 0

View File

@@ -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>

View File

@@ -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>