Files
gzth/yuthon_issue/models/issue_approval.py
T
2024-10-21 17:46:52 +08:00

94 lines
4.5 KiB
Python

# -*- coding: utf-8 -*-
from odoo import api, fields, models, tools
from odoo.exceptions import UserError, ValidationError
from datetime import date, datetime, time
class IssueApproval(models.Model):
_name = "issue.approval"
_description = '议题审批'
_inherit = ['soong.workflow.mixin']
_rec_name = 'name'
name = fields.Char(string='标题', required=True)
code = fields.Char(string='编号', required=True, copy=False, default=lambda self: self.env['ir.sequence'].next_by_code('issue_approval_code'))
yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'),
('thlc', '天河粮储'), ('tctj', '天投城建'),
('thtjbb', '天河投资本部')], string="所属公司",required=True)
department_id = fields.Many2one('hr.department', string="部门")
create_time = fields.Date(string='创建日期', default=lambda self: fields.Date.today())
user_id = fields.Many2one('res.users', string="经办人", default=lambda self: self.env.user)
meeting_details = fields.Char(string="会议详情")
job_id = fields.Many2one('hr.job', string="岗位")
is_attend = fields.Boolean(string="是否上会", default=True)
issue_text = fields.Html(string="正文")
notice_documents_ids = fields.Many2many('ir.attachment', string='议题附件')
issue_approval_ids = fields.One2many('issue.approval.line', 'issue_approval_id', string="关联议题", store=True)
issue_data = fields.Char(string="议题事项js")
decision_data = fields.Char(string="决策清单js")
issue_display = fields.Char(string="议题事项", default='{"template": "yuthon_issue.html_issue_demo"}')
decision_display = fields.Char(string="决策清单", default='{"template": "yuthon_issue.html_decision_demo"}')
is_parent_unit = fields.Boolean(string="上级单位")
def pub_meeting_minutes(self):
pass
@api.depends('department_ids', 'employee_ids', 'users_role_ids')
def compute_room_users_ids(self):
department_users_list = users_role_list = []
for users in self:
if users.department_ids:
# 查看是否下级部门
for depart in users.department_ids:
department_users_data = users.env['hr.employee'].search([('department_id', '=', depart.id)])
department_users_list = [de.user_id.id for de in department_users_data]
if depart.child_ids:
for child in depart.child_ids:
department_child_users_data = users.env['hr.employee'].search(
[('department_id', '=', child.id)])
department_users_list += [de.user_id.id for de in department_child_users_data]
employee_users_list = users.employee_ids.user_id.ids
if users.users_role_ids:
for user_id in users.users_role_ids:
user_role_data = users.env['hr.employee'].search(
['|', ('user_role_id', '=', user_id.id), ('user_role_ids', '=', user_id.id)])
users_role_list = [ro.user_id.id for ro in user_role_data]
publish_user_list = department_users_list + employee_users_list + users_role_list
false_none_list = [x for x in publish_user_list if x != False]
users.room_users_ids = [(6, 0, list(set(false_none_list)))]
def bottom_meeting_minutes(self):
pass
@api.onchange('issue_approval_ids')
def onchange_name(self):
specifics_list = []
if self.issue_approval_ids:
for issue in self.issue_approval_ids:
if issue.issue_library_id.name:
specifics_list.append(issue.issue_library_id.name)
self.name = ';'.join(specifics_list) if specifics_list else ''
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='议题事项')
approval_decision_sequence = fields.Char(string='决策清单')
is_party = fields.Boolean(string="党之委会", default=False)
is_class = fields.Boolean(string="班子会", default=False)
is_boss = fields.Boolean(string="董事会", default=False)
is_note = fields.Boolean(string="上级单位", default=False)
class IssueApprovalRoomLine(models.Model):
_name = 'issue.approval.room.line'