70 lines
3.9 KiB
Python
70 lines
3.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class IssueApproval(models.Model):
|
|
_name = "issue.approval"
|
|
_description = '议题审批'
|
|
_inherit = ['soong.workflow.mixin', 'mail.thread.main.attachment', 'mail.activity.mixin']
|
|
_rec_name = 'name'
|
|
|
|
name = fields.Text(string='标题', required=True)
|
|
code = fields.Char(string='编号', required=True, copy=False,
|
|
default=lambda self: self.env['ir.sequence'].next_by_code('issue_approval_code'))
|
|
create_time = fields.Date(string='创建日期', default=lambda self: fields.Date.today())
|
|
employee_id = fields.Many2one('hr.employee', string="经办人", default=lambda self: self.env.user.employee_id)
|
|
department_id = fields.Many2one(related='employee_id.department_id', string="部门")
|
|
company_id = fields.Many2one(related='employee_id.company_id', string="公司")
|
|
user_id = fields.Many2one('res.users', string="经办人", default=lambda self: self.env.user)
|
|
meeting_details = fields.Char(string="会议详情")
|
|
job_id = fields.Many2one(related='employee_id.job_id', string="岗位")
|
|
is_attend = fields.Boolean(string="是否上会", default=True)
|
|
work_end = fields.Boolean(string="结束")
|
|
issues_result = fields.Html(string="会议结果")
|
|
issue_text = fields.Html(string="正文")
|
|
documents_ids = fields.Many2many('ir.attachment', string='议题附件')
|
|
issue_approval_ids = fields.One2many('issue.approval.line', 'issue_approval_id', string="关联议题", store=True)
|
|
issue_display = fields.Text(string="议题事项")
|
|
decision_display = fields.Text(string="决策清单")
|
|
is_parent_unit = fields.Boolean(string="上级单位")
|
|
active = fields.Boolean('Active', default=True, tracking=True)
|
|
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
|
|
default='normal')
|
|
|
|
def _get_default_name_title(self):
|
|
return self._description if self._description else self._name
|
|
|
|
name_title = fields.Char(default=_get_default_name_title)
|
|
|
|
@api.constrains("issue_approval_ids")
|
|
def _check_issue_approval_ids(self):
|
|
for rec in self:
|
|
if rec.issue_approval_ids:
|
|
# 处理 issue_library_id.name(假设为字符串,无需转换)
|
|
issue_names = [issue_library.issue_library_id.name for issue_library in rec.issue_approval_ids]
|
|
# 处理 approval_decision_sequence,确保转换为字符串
|
|
decision_sequences = []
|
|
for issue_library in rec.issue_approval_ids:
|
|
# 假设 approval_decision_sequence 是布尔类型,转换为 '是'/‘否’ 或直接转字符串
|
|
if isinstance(issue_library.approval_decision_sequence, bool):
|
|
decision_sequences.append('是' if issue_library.approval_decision_sequence else '否')
|
|
else:
|
|
# 其他类型(如整数、浮点数)直接转字符串
|
|
decision_sequences.append(str(issue_library.approval_decision_sequence))
|
|
# 拼接字符串
|
|
rec.issue_display = '\n'.join(issue_names)
|
|
rec.decision_display = '\n'.join(decision_sequences)
|
|
|
|
class IssueApprovalLine(models.Model):
|
|
_name = 'issue.approval.line'
|
|
_description = '关联议题明细'
|
|
|
|
issue_approval_id = fields.Many2one('issue.approval', string='议题审批')
|
|
issue_library_id = fields.Many2one('issue.library', string='议题事项')
|
|
employee_id = fields.Many2one('hr.employee', string='创建人')
|
|
approval_decision_sequence = fields.Char(string='决策清单')
|
|
is_party = fields.Boolean(string="党支委会")
|
|
is_class = fields.Boolean(string="班子会")
|
|
is_boss = fields.Boolean(string="董事会")
|
|
is_note = fields.Boolean(string="上级单位")
|