diff --git a/yuthon_issue/__manifest__.py b/yuthon_issue/__manifest__.py index 3f2af4574..ffb02e14c 100644 --- a/yuthon_issue/__manifest__.py +++ b/yuthon_issue/__manifest__.py @@ -21,6 +21,7 @@ 'views/issue_approval_boss_views.xml', 'views/inherit_room_booking_views.xml', 'views/issue_approval_decision_views.xml', + 'views/issue_approval_decision_type_views.xml', 'views/menus.xml', ], 'installable': True, diff --git a/yuthon_issue/models/__init__.py b/yuthon_issue/models/__init__.py index a4d7598e5..c7e188d7e 100644 --- a/yuthon_issue/models/__init__.py +++ b/yuthon_issue/models/__init__.py @@ -7,3 +7,4 @@ from . import issue_approval_class from . import issue_approval_boss from . import inherit_room_booking from . import issue_approval_decision +from . import issue_approval_decision_type diff --git a/yuthon_issue/models/issue_approval_decision.py b/yuthon_issue/models/issue_approval_decision.py index 5bb39bdda..507d06050 100644 --- a/yuthon_issue/models/issue_approval_decision.py +++ b/yuthon_issue/models/issue_approval_decision.py @@ -7,37 +7,42 @@ class IssueApprovalDecision(models.Model): _description = '决策清单' _order = 'sequence asc' - name = fields.Char(string='事项') - sequence = fields.Char(string='序号', store=True) - decision_id = fields.Many2one('issue.approval.decision', string='上级事项') - child_ids = fields.One2many('issue.approval.decision', 'decision_id', string='下级事项') + decision_type_id = fields.Many2one('issue.approval.decision.type', string='事项类别') + sequence = fields.Char(related='decision_type_id.sequence', string='序号', store=True) + # decision_id = fields.Many2one('issue.approval.decision', string='上级事项') + # child_ids = fields.One2many('issue.approval.decision', 'decision_id', string='下级事项') specifics = fields.Char(string='具体事项') council = fields.Selection([('approval', '审'), ('decide', '决')], string='党总委员会') team_meet = fields.Selection([('approval', '审'), ('decide', '决')], string='经营班子会') board_meet = fields.Selection([('approval', '审'), ('decide', '决'), ('commission', '授权投决会')], string='董事会') - district_bureau = fields.Char(string='区政府、区财政局') + district_bureau = fields.Selection([('record', '备案'), ('approved', '核准'), ('record_approved', '备案、核准')], string='区政府、区财政局') + yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), + ('thlc', '天河粮储'), ('tctj', '天投城建')], string="所属公司") + department_id = fields.Many2one('hr.department', string="部门") + start_date = fields.Date(string="生效日期") + end_date = fields.Date(string="失效日期") remarks = fields.Char(string='备注') - @api.onchange('sequence', 'decision_id') - def _onchange_department_code(self): - for code in self: - if code.sequence and code.decision_id: - code.sequence = code.decision_id.sequence + ('.' + code.sequence if code.sequence else '') - else: - code.sequence = code.sequence - code._update_child_sequences() - - def _update_child_sequences(self): - def recursive_update(parent, parent_sequence): - # 遍历每个子记录 - for child in parent.child_ids: - # 使用父级的 sequence 更新子级的 sequence - new_sequence = parent_sequence + ('.' + child.sequence.split('.')[-1] if child.sequence else '') - self.env['issue.approval.decision'].search([('id', '=', child.id.origin)]).write({'sequence': new_sequence}) - # 递归处理孙级 - recursive_update(child, new_sequence) - # 从当前记录开始递归更新所有子孙级别 - recursive_update(self, self.sequence) + # @api.onchange('sequence', 'decision_id') + # def _onchange_department_code(self): + # for code in self: + # if code.sequence and code.decision_id: + # code.sequence = code.decision_id.sequence + ('.' + code.sequence if code.sequence else '') + # else: + # code.sequence = code.sequence + # code._update_child_sequences() + # + # def _update_child_sequences(self): + # def recursive_update(parent, parent_sequence): + # # 遍历每个子记录 + # for child in parent.child_ids: + # # 使用父级的 sequence 更新子级的 sequence + # new_sequence = parent_sequence + ('.' + child.sequence.split('.')[-1] if child.sequence else '') + # self.env['issue.approval.decision'].search([('id', '=', child.id.origin)]).write({'sequence': new_sequence}) + # # 递归处理孙级 + # recursive_update(child, new_sequence) + # # 从当前记录开始递归更新所有子孙级别 + # recursive_update(self, self.sequence) diff --git a/yuthon_issue/models/issue_approval_decision_type.py b/yuthon_issue/models/issue_approval_decision_type.py new file mode 100644 index 000000000..d03207656 --- /dev/null +++ b/yuthon_issue/models/issue_approval_decision_type.py @@ -0,0 +1,35 @@ +from odoo import api, fields, models, tools +from odoo.exceptions import ValidationError + + +class IssueApprovalDecisionType(models.Model): + _name = "issue.approval.decision.type" + _description = '决策清单事项类别配置' + _order = 'sequence asc' + _rec_name = 'name' + + name = fields.Char(string="名称") + sequence = fields.Char(string='序号', store=True) + decision_type_id = fields.Many2one('issue.approval.decision.type', string='上级事项') + child_ids = fields.One2many('issue.approval.decision.type', 'decision_type_id', string='下级事项') + + @api.onchange('sequence', 'decision_type_id') + def _onchange_department_code(self): + for code in self: + if code.sequence and code.decision_type_id: + code.sequence = code.decision_type_id.sequence + ('.' + code.sequence if code.sequence else '') + else: + code.sequence = code.sequence + code._update_child_sequences() + + def _update_child_sequences(self): + def recursive_update(parent, parent_sequence): + # 遍历每个子记录 + for child in parent.child_ids: + # 使用父级的 sequence 更新子级的 sequence + new_sequence = parent_sequence + ('.' + child.sequence.split('.')[-1] if child.sequence else '') + self.env['issue.approval.decision.type'].search([('id', '=', child.id.origin)]).write({'sequence': new_sequence}) + # 递归处理孙级 + recursive_update(child, new_sequence) + # 从当前记录开始递归更新所有子孙级别 + recursive_update(self, self.sequence) \ No newline at end of file diff --git a/yuthon_issue/security/ir.model.access.csv b/yuthon_issue/security/ir.model.access.csv index 50ae9e467..425094d18 100644 --- a/yuthon_issue/security/ir.model.access.csv +++ b/yuthon_issue/security/ir.model.access.csv @@ -4,4 +4,5 @@ access_issue_approval_boss,issue_approval_boss,model_issue_approval_boss,base.gr access_issue_approval_class,issue_approval_class,model_issue_approval_class,base.group_user,1,1,1,1 access_issue_approval_party,issue_approval_party,model_issue_approval_party,base.group_user,1,1,1,1 access_issue_approval_decision,issue_approval_decision,model_issue_approval_decision,base.group_user,1,1,1,1 +access_issue_approval_decision_type,issue_approval_decision_type,model_issue_approval_decision_type,base.group_user,1,1,1,1 diff --git a/yuthon_issue/views/inherit_room_booking_views.xml b/yuthon_issue/views/inherit_room_booking_views.xml index 7df798e55..9e36672fb 100644 --- a/yuthon_issue/views/inherit_room_booking_views.xml +++ b/yuthon_issue/views/inherit_room_booking_views.xml @@ -13,7 +13,6 @@ - diff --git a/yuthon_issue/views/issue_approval_decision_type_views.xml b/yuthon_issue/views/issue_approval_decision_type_views.xml new file mode 100644 index 000000000..b8cab1be6 --- /dev/null +++ b/yuthon_issue/views/issue_approval_decision_type_views.xml @@ -0,0 +1,45 @@ + + + + issue.approval.decision.type.tree + issue.approval.decision.type + + + + + + + + + + + issue.approval.decision.type.form + issue.approval.decision.type + +
+ +
+
+ + + + + + + + +
+
+
+
+ + + 决策清单层级配置 + issue.approval.decision.type + tree,form + +
diff --git a/yuthon_issue/views/issue_approval_decision_views.xml b/yuthon_issue/views/issue_approval_decision_views.xml index 01dfd2c00..202ef7fd7 100644 --- a/yuthon_issue/views/issue_approval_decision_views.xml +++ b/yuthon_issue/views/issue_approval_decision_views.xml @@ -6,14 +6,18 @@ - - + + + + + + @@ -25,15 +29,15 @@
-
- - + + @@ -43,9 +47,13 @@ + + + - + + diff --git a/yuthon_issue/views/menus.xml b/yuthon_issue/views/menus.xml index dcecd00be..1fb2b4006 100644 --- a/yuthon_issue/views/menus.xml +++ b/yuthon_issue/views/menus.xml @@ -1,93 +1,88 @@ - + - - + + - + - + - + - - - + + + - - + + - - - - - + + + + + + + \ No newline at end of file diff --git a/yuthon_work_brand/views/work_menus.xml b/yuthon_work_brand/views/work_menus.xml index 4473aa918..e4047b463 100644 --- a/yuthon_work_brand/views/work_menus.xml +++ b/yuthon_work_brand/views/work_menus.xml @@ -203,6 +203,15 @@ name="决策清单" action="yuthon_issue.issue_approval_decision_action" sequence="7"/> + +