66 lines
2.8 KiB
Python
66 lines
2.8 KiB
Python
from odoo import api, fields, models, _
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class RoomBooking(models.Model):
|
|
_inherit = 'room.booking'
|
|
|
|
is_issue = fields.Boolean(string="是否关联议题", default=True)
|
|
issue_meeting_line_ids = fields.One2many('issue.meeting.line', 'meeting_booking_id', string="关联议题明细行")
|
|
number_of_meetings = fields.Integer(string='会议次数')
|
|
|
|
def bottom_meeting_approval(self):
|
|
library_data = []
|
|
for library in self.issue_meeting_line_ids:
|
|
if library.state == 'done':
|
|
raise UserError('当前纪要不允许重复提交')
|
|
library.state = 'done'
|
|
library_data.append((0, 0, {
|
|
'minutes_id': library.issue_library_id.id,
|
|
'decision_results': library.decision_results,
|
|
'overview': library.decision_details,
|
|
}))
|
|
return {
|
|
'name': '会议纪要审批',
|
|
'type': 'ir.actions.act_window',
|
|
'view_mode': "form",
|
|
'res_model': 'issue.meeting.minutes',
|
|
'context': {
|
|
'default_meeting_id': self.id,
|
|
'default_meeting_type_id': self.meeting_type_id.id,
|
|
'default_meeting_date': self.start_datetime,
|
|
'default_number_of_meetings': self.number_of_meetings,
|
|
'default_meeting_minutes_ids': library_data
|
|
}}
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
res = super().create(vals_list)
|
|
for vals in vals_list:
|
|
if vals['issue_meeting_line_ids']:
|
|
for line in vals['issue_meeting_line_ids']:
|
|
self.env['issue.library.room.line'].create({
|
|
'issue_library_id': line[2]['issue_library_id'],
|
|
'room_booking_id': res.id,
|
|
'room_id': vals['room_id'],
|
|
'meeting_type_id': vals['meeting_type_id'],
|
|
'approval_date': vals['start_datetime'],
|
|
})
|
|
return res
|
|
|
|
|
|
class IssueMeetingLine(models.Model):
|
|
_name = 'issue.meeting.line'
|
|
_description = '关联议题明细行'
|
|
_order = 'sequence asc'
|
|
|
|
meeting_booking_id = fields.Many2one('room.booking', string='关联会议室')
|
|
sequence = fields.Char(string='序号', store=True)
|
|
issue_library_id = fields.Many2one('issue.library', string='议题')
|
|
issue_library_name = fields.Char(related='issue_library_id.name', string='议题')
|
|
employee_id = fields.Many2one('hr.employee', string='传达人')
|
|
attendees = fields.Char(string='列席人员')
|
|
is_sanda = fields.Boolean(string="三重一大")
|
|
decision_results = fields.Selection([('agree', '通过'), ('disagree', '未通过')], string="决策结果")
|
|
decision_details = fields.Text(string="决策详情")
|