diff --git a/room/models/room_booking.py b/room/models/room_booking.py index 8fea2e88b..aff397290 100644 --- a/room/models/room_booking.py +++ b/room/models/room_booking.py @@ -35,9 +35,9 @@ class RoomBooking(models.Model): meeting_type = fields.Selection([('up', '线上'), ('down', '线下'), ('exterior', '外部')], default='down', string="会议形式", required=True) meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型") - room_users_ids = fields.Many2many(related='meeting_type_id.users_ids', string="出席人员") + room_users_ids = fields.Many2many('res.users', string="出席人员") other_company_id = fields.Many2one('res.partner', string="外部公司") - host = fields.Many2one(related='meeting_type_id.host_user_id', string="主持人") + host = fields.Many2one('res.users', string="主持人") stationed_group = fields.Boolean(string="驻组参会") other_company_user_ids = fields.One2many(related="other_company_id.child_ids", string="其他人员") @@ -55,6 +55,15 @@ class RoomBooking(models.Model): # 关联流程 relevancy_type = fields.Selection([('none', '无')], string="关联流程类型") + @api.onchange('meeting_type_id') + def _onchange_meeting_type_id(self): + if self.meeting_type_id: + self.room_users_ids = self.meeting_type_id.users_ids + self.host = self.meeting_type_id.host_user_id + else: + self.room_users_ids = [(5, 0, 0)] + self.host = False + @api.model_create_multi def create(self, vals_list): bookings = super(RoomBooking, self).create(vals_list) diff --git a/room/views/room_booking_views.xml b/room/views/room_booking_views.xml index ad8100920..44a5480ab 100644 --- a/room/views/room_booking_views.xml +++ b/room/views/room_booking_views.xml @@ -44,6 +44,15 @@ +
  • + 出席人员: + + + , + + + +
  • @@ -150,7 +159,6 @@ - @@ -159,7 +167,7 @@ - + @@ -167,8 +175,15 @@ - - + + + + + + + + + diff --git a/soong_workflow/views/soong_user_role_views.xml b/soong_workflow/views/soong_user_role_views.xml index 69f9e139f..a9d6c239c 100644 --- a/soong_workflow/views/soong_user_role_views.xml +++ b/soong_workflow/views/soong_user_role_views.xml @@ -4,7 +4,7 @@ soong.user.role.tree soong.user.role - + diff --git a/yuthon_hr_employee/models/yuthon_hr_department.py b/yuthon_hr_employee/models/yuthon_hr_department.py index d9fcced62..a82f94917 100644 --- a/yuthon_hr_employee/models/yuthon_hr_department.py +++ b/yuthon_hr_employee/models/yuthon_hr_department.py @@ -2,6 +2,7 @@ from odoo import api, fields, models from pypinyin import pinyin,lazy_pinyin from odoo.osv import expression +from odoo.exceptions import ValidationError class YuthonHrDepartment(models.Model): _inherit = "hr.department" @@ -67,4 +68,25 @@ class YuthonHrDepartment(models.Model): domain = expression.AND([search_domain, domain]) return self._search(domain, limit=limit, order=order) + @api.constrains('department_code') + def _check_department_code_uniqueness(self): + for record in self: + if record.department_code: + existing_records = self.search([ + ('department_code', '=', record.department_code), + ('id', '!=', record.id) + ]) + if existing_records: + raise ValidationError("部门序号必须唯一!") + + @api.onchange('department_code') + def _onchange_department_code(self): + for record in self: + if record.department_code: + employee_ids = self.env['hr.employee'].search([('department_id', '=', record.id.origin), ('company_id', '=', record.company_id.id)]) + for employee in employee_ids: + if employee.number and len(employee.number) >= 2: + old_suffix = employee.number[-2:] + employee.number = record.department_code + old_suffix + diff --git a/yuthon_hr_employee/views/inherit_hr_job_views.xml b/yuthon_hr_employee/views/inherit_hr_job_views.xml index e10f52f85..4b7ee6b62 100644 --- a/yuthon_hr_employee/views/inherit_hr_job_views.xml +++ b/yuthon_hr_employee/views/inherit_hr_job_views.xml @@ -19,6 +19,10 @@ hr.job + + 20 + True + 岗位 diff --git a/yuthon_hr_employee/views/yuthon_hr_department_views.xml b/yuthon_hr_employee/views/yuthon_hr_department_views.xml index dbe5704de..9787df868 100644 --- a/yuthon_hr_employee/views/yuthon_hr_department_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_department_views.xml @@ -10,6 +10,10 @@ hr.department + + 20 + True + 1 diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml index 86971b2b9..cf3b94144 100644 --- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml @@ -11,6 +11,7 @@ 上级领导 + "{'no_create': True}" 1 @@ -83,7 +84,7 @@ - @@ -94,6 +95,9 @@ 1 + + "{'no_create': True}" + @@ -329,6 +333,8 @@ /employee/banner/route + 20 + True 1 diff --git a/yuthon_will_task/models/__init__.py b/yuthon_will_task/models/__init__.py index 0d48c02cf..e748bc535 100644 --- a/yuthon_will_task/models/__init__.py +++ b/yuthon_will_task/models/__init__.py @@ -1,2 +1,3 @@ from . import yuthon_will_task from . import yuthon_task_time +from . import inherit_room_booking diff --git a/yuthon_will_task/models/inherit_room_booking.py b/yuthon_will_task/models/inherit_room_booking.py new file mode 100644 index 000000000..af4478896 --- /dev/null +++ b/yuthon_will_task/models/inherit_room_booking.py @@ -0,0 +1,25 @@ +from odoo import api, fields, models + + +class InheritRoomBooking(models.Model): + _inherit = 'room.booking' + + @api.model + def create(self, vals): + task_time_ids = self.env['yuthon.task.time'].search([('name', '=', '30分钟')]) + new_record = super(InheritRoomBooking, self).create(vals) + employee_list = [] + if new_record.room_users_ids: + for user_id in new_record.room_users_ids: + if user_id.employee_ids: + employee_list.append(user_id.employee_ids.id) + if task_time_ids: + self.env['yuthon.will.task'].sudo().create({ + 'task_content': new_record.name, + 'users_ids': [(6, 0, new_record.room_users_ids.ids)], + 'employee_ids': [(6, 0, employee_list)], + 'task_time_ids': [(6, 0, task_time_ids.ids)], + 'start_time': new_record.start_datetime, + 'end_time': new_record.stop_datetime + }) + return new_record