74 lines
3.7 KiB
Python
74 lines
3.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models, tools
|
|
from odoo.exceptions import UserError, ValidationError
|
|
|
|
|
|
class IssueLibrary(models.Model):
|
|
_name = "issue.library"
|
|
_description = '议题库'
|
|
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
|
|
_rec_name = 'name'
|
|
|
|
name = fields.Char(string='议题事项')
|
|
code = fields.Char(string='编号', required=True, copy=False,
|
|
default=lambda self: self.env['ir.sequence'].next_by_code('issue_library_code'))
|
|
statu = fields.Selection([('draft', '草稿'), ('approval', '审批中'), ('done', '已通过'), ('stop', '已拒绝'),
|
|
('will', '待上会'), ('on_meet', '已上会'), ('cancel', '已取消')], default='draft', string="议题状态")
|
|
is_party = fields.Boolean(string="党之委会", default=False, compute='_compute_issue_library_line_ids')
|
|
is_class = fields.Boolean(string="班子会", default=False, compute='_compute_issue_library_line_ids')
|
|
is_boss = fields.Boolean(string="董事会", default=False, compute='_compute_issue_library_line_ids')
|
|
is_note = fields.Boolean(string="备案、核准", default=False, compute='_compute_issue_library_line_ids')
|
|
creart_datetime = fields.Datetime(string="创建时间", default=fields.Datetime.now)
|
|
notice_documents_ids = fields.Many2many('ir.attachment', string='议题附件')
|
|
issue_type_id = fields.Many2one('issue.type', string="议题类型")
|
|
room_booking_id = fields.Many2one('room.booking', string="关联会议")
|
|
relevancy_type = fields.Selection([('none', '无')], string="关联流程类型")
|
|
issue_library_line_ids = fields.One2many('issue.library.line', 'issue_library_id', string="决策明细")
|
|
|
|
def issue_cancel(self):
|
|
self.write({"statu": "cancel"})
|
|
|
|
def all_meeting_issue(self):
|
|
for meet in self:
|
|
if meet.statu == 'done':
|
|
raise UserError('不可重复上会')
|
|
meet.write({"statu": "done"})
|
|
issue_active_ids = self.env["issue.library"].browse(self._context.get('active_ids', self._context.get('active_id')))
|
|
issue_library_data = [(0, 0, {'name': issue.name}) for issue in issue_active_ids]
|
|
form_id = self.env.ref("room.room_booking_view_form").id
|
|
return {
|
|
"type": "ir.actions.act_window",
|
|
"name": "会议安排",
|
|
"res_model": "room.booking",
|
|
"target": 'new',
|
|
"views": [[form_id, "form"]],
|
|
"context": {
|
|
'default_issue_room_booking_ids': issue_library_data,
|
|
}
|
|
}
|
|
|
|
@api.depends('issue_library_line_ids')
|
|
def _compute_issue_library_line_ids(self):
|
|
for line in self:
|
|
line.is_party = bool(line.issue_library_line_ids.filtered('council'))
|
|
line.is_class = bool(line.issue_library_line_ids.filtered('team_meet'))
|
|
line.is_boss = bool(line.issue_library_line_ids.filtered('board_meet'))
|
|
line.is_note = bool(line.issue_library_line_ids.filtered('district_bureau'))
|
|
|
|
|
|
class IssueLibraryLine(models.Model):
|
|
_name = "issue.library.line"
|
|
_description = '议题明细'
|
|
|
|
issue_library_id = fields.Many2one('issue.library')
|
|
issue_approval_decision_id = fields.Many2one('issue.approval.decision', string="决策清单")
|
|
council = fields.Selection(related='issue_approval_decision_id.council', string='党总委员会')
|
|
team_meet = fields.Selection(related='issue_approval_decision_id.team_meet', string='经营班子会')
|
|
board_meet = fields.Selection(related='issue_approval_decision_id.board_meet', string='董事会')
|
|
district_bureau = fields.Selection(related='issue_approval_decision_id.district_bureau', string='区政府、区财政局')
|
|
|
|
|
|
|
|
|
|
|