diff --git a/yuthon_hr_attendance/views/go_approval.xml b/yuthon_hr_attendance/views/go_approval.xml
index 40673ff83..82ba1f253 100644
--- a/yuthon_hr_attendance/views/go_approval.xml
+++ b/yuthon_hr_attendance/views/go_approval.xml
@@ -92,7 +92,6 @@
-
diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py
index e0beeff8a..e6df05dd2 100644
--- a/yuthon_issue/models/issue_library.py
+++ b/yuthon_issue/models/issue_library.py
@@ -6,7 +6,7 @@ from datetime import datetime, timedelta, date
class IssueLibrary(models.Model):
_name = "issue.library"
- _description = '议题库'
+ _description = '议题总库'
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
@@ -14,7 +14,7 @@ class IssueLibrary(models.Model):
name_text = fields.Text(string='议题名称', compute='_compute_name', readonly=False)
depart_opinions = fields.Text(string='部门意见')
topic_content = fields.Text(string='事项背景')
- will_based = fields.Text(string='上会依据')
+ will_based = fields.Text(string='上会依据', compute='_compute_will_based', readonly=False)
deliberation_content = fields.Text(string='请示事项', default='建议同意')
handling_situation = fields.Text(string='办理情况', help="(存在问题)")
is_invisible_workflow = fields.Boolean(string="流程隐藏的判断")
@@ -73,6 +73,34 @@ class IssueLibrary(models.Model):
is_push_boss = fields.Boolean(string="董事推送")
is_push_depart = fields.Boolean(string="部门推送")
+ @api.depends('issue_library_line_ids',
+ 'issue_library_line_ids.issue_approval_decision_id',
+ 'issue_library_line_ids.district_state_id',
+ 'issue_library_line_ids.district_government_id',
+ 'issue_library_line_ids.district_party_id')
+ def _compute_will_based(self):
+ for record in self:
+ will_based_lines = []
+ for idx, line in enumerate(record.issue_library_line_ids, start=1):
+ decision_name = line.issue_approval_decision_id.specifics or ""
+ district_state_name = line.district_state_id.name or ""
+ district_government_name = line.district_government_id.name or ""
+ district_party_name = line.district_party_id.name or ""
+ field_parts = []
+ if decision_name:
+ field_parts.append(decision_name)
+ if district_state_name:
+ field_parts.append(f"区国资局({district_state_name})")
+ if district_government_name:
+ field_parts.append(f"区政府({district_government_name})")
+ if district_party_name:
+ field_parts.append(f"区委组织部({district_party_name})")
+ if field_parts:
+ line_content = f"{idx}.{','.join(field_parts)}"
+ will_based_lines.append(line_content)
+
+ record.will_based = "\n".join(will_based_lines)
+
def correction(self):
for rec in self:
menu_id = self.env['ir.ui.menu'].search([('name', '=', '我的议题')])
@@ -99,13 +127,13 @@ class IssueLibrary(models.Model):
def library_push(self):
for rec in self:
push_update_vals = {}
- if rec.is_party and rec.is_party_passed == 'reject' or not rec.is_party_passed:
+ if rec.is_party and (rec.is_party_passed == 'reject' or not rec.is_party_passed):
push_update_vals['is_push_party'] = True
- elif rec.is_class and rec.is_class_passed == 'reject' or not rec.is_class_passed:
+ elif rec.is_class and (rec.is_class_passed == 'reject' or not rec.is_class_passed):
push_update_vals['is_push_class'] = True
- elif rec.is_boss and rec.is_boss_passed == 'reject' or not rec.is_boss_passed:
+ elif rec.is_boss and (rec.is_boss_passed == 'reject' or not rec.is_boss_passed):
push_update_vals['is_push_boss'] = True
if push_update_vals:
@@ -209,39 +237,45 @@ class IssueLibrary(models.Model):
workflow_id.sudo().unlink()
self.issue_approval_id.unlink()
-
def all_issue_pull(self):
- issue_active_ids = self.env["issue.library"].browse(self._context.get('active_ids', self._context.get('active_id')))
+ issue_active_ids = self.env["issue.library"].browse(
+ self._context.get('active_ids', self._context.get('active_id'))
+ )
for i in issue_active_ids:
- if i.issue_state != 'draft':
+ if i.issue_state not in ['draft', 'approval']:
raise UserError("当前状态不允许提交")
- form_id = self.env.ref("yuthon_issue.issue_library_approval_form").id
- issue_decision_lines = []
- specifics_list = []
- if not issue_active_ids:
- issue_active_ids = self
- for issue_record in issue_active_ids:
- specifics_list.append(issue_record.name)
- issue_record.write({"issue_state": "approval"})
- issue_decision_lines.append((0, 0, {
- 'issue_library_id': issue_record.id,
- 'approval_decision_sequence': issue_record.approval_decision_sequence,
- 'is_party': issue_record.is_party,
- 'is_class': issue_record.is_class,
- 'is_boss': issue_record.is_boss,
- 'is_note': issue_record.is_note,
- 'employee_id': issue_record.employee_id.id
- }))
- if len(specifics_list) > 1:
- name = ','.join(specifics_list)
- else:
- name = self.name
- issue_approval_id = self.env['issue.approval'].create({
- 'issue_approval_ids': issue_decision_lines,
- 'name': name,
- })
- self.issue_approval_id = issue_approval_id
+ existing_approval = self.env['issue.approval'].search([
+ ('issue_approval_ids.issue_library_id', 'in', issue_active_ids.ids),
+ ], limit=1)
+
+ specifics_list = [rec.name for rec in issue_active_ids]
+ name = ','.join(specifics_list) if len(specifics_list) > 1 else (
+ self.name or specifics_list[0] if specifics_list else "")
+
+ if existing_approval:
+ issue_approval_id = existing_approval
+ else:
+ issue_decision_lines = []
+ for issue_record in issue_active_ids:
+ issue_record.write({"issue_state": "approval"})
+ issue_decision_lines.append((0, 0, {
+ 'issue_library_id': issue_record.id,
+ 'approval_decision_sequence': issue_record.approval_decision_sequence,
+ 'is_party': issue_record.is_party,
+ 'is_class': issue_record.is_class,
+ 'is_boss': issue_record.is_boss,
+ 'is_note': issue_record.is_note,
+ 'employee_id': issue_record.employee_id.id
+ }))
+
+ issue_approval_id = self.env['issue.approval'].create({
+ 'issue_approval_ids': issue_decision_lines,
+ 'name': name,
+ })
+ self.issue_approval_id = issue_approval_id
+
+ form_id = self.env.ref("yuthon_issue.issue_library_approval_form").id
return {
"type": "ir.actions.act_window",
"name": "提交议题审批",
@@ -255,7 +289,6 @@ class IssueLibrary(models.Model):
}
def single_issue_pull(self):
- # 检查当前记录状态是否允许提交
if self.issue_state != 'draft':
raise UserError("当前状态不允许提交")
@@ -434,6 +467,7 @@ class IssueLibraryApprovalLine(models.Model):
approval_date = fields.Datetime(string="创建日期")
res_model = fields.Char(string="模型", compute='compute_issue_soong')
res_id = fields.Char(string="id", compute='compute_issue_soong')
+ department_id = fields.Many2one('hr.department', string='部门', compute='compute_issue_soong')
@api.depends('code')
def compute_issue_soong(self):
@@ -444,10 +478,17 @@ class IssueLibraryApprovalLine(models.Model):
rec.res_model = workflow_record_id.res_model
rec.res_id = workflow_record_id.res_id
rec.workflow_name = workflow_record_id.name
+ record_id = self.env[workflow_record_id.res_model].search([('id', '=', workflow_record_id.res_id)])
+ if hasattr(record_id, 'user_id') and record_id.user_id:
+ query_user_id = record_id.user_id
+ elif hasattr(record_id, 'users_id') and record_id.users_id:
+ query_user_id = record_id.users_id
+ rec.department_id = query_user_id.employee_ids.department_id.id
else:
rec.approval_type = ''
rec.res_model = ''
rec.res_id = ''
+ rec.department_id = ''
rec.workflow_name = ''
def open_record(self):
diff --git a/yuthon_issue/models/issue_meeting_minutes.py b/yuthon_issue/models/issue_meeting_minutes.py
index 7be500a38..80d5093cd 100644
--- a/yuthon_issue/models/issue_meeting_minutes.py
+++ b/yuthon_issue/models/issue_meeting_minutes.py
@@ -8,12 +8,15 @@ class IssueMeetingMinutes(models.Model):
_description = '会议纪要'
_inherit = ['soong.workflow.mixin', 'mail.thread.main.attachment', 'mail.activity.mixin']
-
- name = fields.Char(string='名称')
+ name = fields.Char(string='名称', compute='_compute_name')
number_of_meetings = fields.Integer(string='会议次数')
meeting_id = fields.Many2one('room.booking', string='会议名称', required=True)
meeting_type_id = fields.Many2one('room.meeting.type', string="会议类型")
+ users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
+ department_id = fields.Many2one(related='users_id.employee_ids.department_id', string="部门")
+ company_id = fields.Many2one(related='users_id.employee_ids.company_id', string="公司")
meeting_date = fields.Datetime(string="会议时间")
+ user_id = fields.Many2one('res.users', string="记录人")
room_users_ids = fields.Many2many('res.users', string="出席人员")
host = fields.Many2one('hr.employee', string="主持人")
code = fields.Char(string='编号', required=True, copy=False,
@@ -31,17 +34,12 @@ class IssueMeetingMinutes(models.Model):
name_title = fields.Char(default=_get_default_name_title)
-
- computed_meeting_name = fields.Char(string='会议名称', compute='_compute_meeting_name')
- @api.depends('meeting_date', 'number_of_meetings', 'meeting_id.name')
- def _compute_meeting_name(self):
- for record in self:
- if record.meeting_date and record.meeting_id:
- year = record.meeting_date.year
- meeting_name = record.meeting_id.name
- record.computed_meeting_name = f"{meeting_name}【{year}】{record.number_of_meetings}号"
- else:
- record.computed_meeting_name = False
+ @api.depends('number_of_meetings', 'meeting_id', 'meeting_type_id', 'meeting_date')
+ def _compute_name(self):
+ if self.number_of_meetings and self.meeting_id and self.meeting_type_id and self.meeting_date:
+ self.name = self.number_of_meetings + ' ' + self.meeting_id.name + ' ' + self.meeting_type_id.name + ' ' + self.meeting_date
+ else:
+ self.name = ''
@api.constrains('meeting_id')
def _check_meeting_id(self):
@@ -49,6 +47,15 @@ class IssueMeetingMinutes(models.Model):
if record.meeting_id:
record.meeting_id.minutes_id = self.id
+ def open_record(self):
+ return {
+ "type": "ir.actions.act_window",
+ "res_model": 'room.booking',
+ "res_id": self.meeting_id.id,
+ "name": '会议详情',
+ "view_mode": "form",
+ }
+
class IssueMeetingMinutesLine(models.Model):
_name = 'issue.meeting.minutes.line'
diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml
index 20d6836a3..4871558ca 100644
--- a/yuthon_issue/views/issue_library_views.xml
+++ b/yuthon_issue/views/issue_library_views.xml
@@ -41,7 +41,7 @@
issue.library.tree
issue.library
-
@@ -77,11 +77,53 @@
+
+ issue.library.tree
+ issue.library
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
issue.library.tree
issue.library
-
- 议题库
+ 议题总库
issue.library
tree,form
@@ -354,6 +397,7 @@
+
@@ -508,6 +552,7 @@
+
@@ -652,6 +697,7 @@
+
@@ -698,6 +744,8 @@
issue.library
tree,form
[('member_of_department', '=', True), ('is_push_depart', '=', True)]
+
我的议题
diff --git a/yuthon_issue/views/issue_meeting_minutes_views.xml b/yuthon_issue/views/issue_meeting_minutes_views.xml
index 1efc9744a..aebfd4f82 100644
--- a/yuthon_issue/views/issue_meeting_minutes_views.xml
+++ b/yuthon_issue/views/issue_meeting_minutes_views.xml
@@ -42,15 +42,18 @@
-
+
+
+
+
+
+
-
-
-
+
diff --git a/yuthon_official/models/inherit_issue_library.py b/yuthon_official/models/inherit_issue_library.py
index f36d3fed0..4ae44680d 100644
--- a/yuthon_official/models/inherit_issue_library.py
+++ b/yuthon_official/models/inherit_issue_library.py
@@ -5,7 +5,7 @@ from odoo.exceptions import UserError, ValidationError
class IssueLibrary(models.Model):
_inherit = "issue.library"
- _description = '议题库'
+ _description = '议题总库'
relevancy_type = fields.Selection(selection_add=[('yuthon_official', '行政发文'),
('yuthon_official_incoming_normal', '行政收文')],
diff --git a/yuthon_official/views/yuthon_official_views.xml b/yuthon_official/views/yuthon_official_views.xml
index fad19c2bf..c1d3185f5 100644
--- a/yuthon_official/views/yuthon_official_views.xml
+++ b/yuthon_official/views/yuthon_official_views.xml
@@ -26,7 +26,7 @@
+ class="btn-primary" invisible="not work_end"/>
-
+
diff --git a/yuthon_salary/views/yuthon_meal_expenses_views.xml b/yuthon_salary/views/yuthon_meal_expenses_views.xml
index 78c5b7637..e4812f211 100644
--- a/yuthon_salary/views/yuthon_meal_expenses_views.xml
+++ b/yuthon_salary/views/yuthon_meal_expenses_views.xml
@@ -25,13 +25,13 @@
-
+
-
+
diff --git a/yuthon_salary/views/yuthon_salary_party_views.xml b/yuthon_salary/views/yuthon_salary_party_views.xml
index 4f9482dbe..fcc6918cb 100644
--- a/yuthon_salary/views/yuthon_salary_party_views.xml
+++ b/yuthon_salary/views/yuthon_salary_party_views.xml
@@ -31,7 +31,7 @@
-
+