From 78aba1c781ba55adcc6f7b30c8ea64d246c49eb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Thu, 17 Oct 2024 14:45:37 +0800 Subject: [PATCH] pengyuthon --- yuthon_issue/__manifest__.py | 14 ++- yuthon_issue/data/issue_library_code_data.xml | 8 ++ yuthon_issue/models/__init__.py | 9 +- yuthon_issue/models/issue_approval.py | 23 +++++ .../models/issue_approval_decision.py | 4 +- yuthon_issue/models/issue_library.py | 58 ++++++++++--- yuthon_issue/security/ir.model.access.csv | 5 +- yuthon_issue/static/xml/meeting.xml | 34 ++++++++ yuthon_issue/views/issue_approval_views.xml | 74 ++++++++++++++++ yuthon_issue/views/issue_library_views.xml | 86 +++++++++++-------- yuthon_issue/views/menus.xml | 68 +++++++++------ 11 files changed, 298 insertions(+), 85 deletions(-) create mode 100644 yuthon_issue/models/issue_approval.py create mode 100644 yuthon_issue/static/xml/meeting.xml create mode 100644 yuthon_issue/views/issue_approval_views.xml diff --git a/yuthon_issue/__manifest__.py b/yuthon_issue/__manifest__.py index 8d2a642fd..d4071cd93 100644 --- a/yuthon_issue/__manifest__.py +++ b/yuthon_issue/__manifest__.py @@ -16,13 +16,19 @@ 'data/issue_library_code_data.xml', 'views/issue_library_views.xml', 'views/issue_type_views.xml', - 'views/issue_approval_party_views.xml', - 'views/issue_approval_class_views.xml', - 'views/issue_approval_boss_views.xml', + 'views/issue_approval_views.xml', + # 'views/issue_approval_party_views.xml', + # 'views/issue_approval_class_views.xml', + # 'views/issue_approval_boss_views.xml', 'views/issue_approval_decision_views.xml', 'views/issue_approval_decision_type_views.xml', 'views/menus.xml', ], + 'assets': { + 'web.assets_backend': [ + 'yuthon_issue/static/xml/meeting.xml' + ], + }, 'installable': True, 'application': True, -} +} \ No newline at end of file diff --git a/yuthon_issue/data/issue_library_code_data.xml b/yuthon_issue/data/issue_library_code_data.xml index beb877827..340210d73 100644 --- a/yuthon_issue/data/issue_library_code_data.xml +++ b/yuthon_issue/data/issue_library_code_data.xml @@ -7,4 +7,12 @@ 3 + + + 议题审批编号 + issue_approval_code + YS%(y)s%(month)s%(day)s + 3 + + \ No newline at end of file diff --git a/yuthon_issue/models/__init__.py b/yuthon_issue/models/__init__.py index eb9f22f01..da8f5dbe2 100644 --- a/yuthon_issue/models/__init__.py +++ b/yuthon_issue/models/__init__.py @@ -1,10 +1,13 @@ # -*- coding: utf-8 -*- from . import issue_library -from . import issue_approval_party from . import issue_type -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 + +from . import issue_approval + +# from . import issue_approval_party +# from . import issue_approval_class +# from . import issue_approval_boss diff --git a/yuthon_issue/models/issue_approval.py b/yuthon_issue/models/issue_approval.py new file mode 100644 index 000000000..8ca788ee7 --- /dev/null +++ b/yuthon_issue/models/issue_approval.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, tools +from odoo.exceptions import ValidationError + + +class IssueApproval(models.Model): + _name = "issue.approval" + _description = '议题审批' + _inherit = ['soong.workflow.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_approval_code')) + yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), + ('thlc', '天河粮储'), ('tctj', '天投城建'), + ('thtjbb', '天河投资本部')], string="所属公司") + + department_id = fields.Many2one(related='user_id.employee_id.department_id', string="部门") + create_time = fields.Date(string='创建日期', default=lambda self: fields.Date.today()) + user_id = fields.Many2one('res.users', string="经办人") + + issue_library_ids = fields.One2many('issue.library', 'issue_approval_id', string="关联议题") + approval_decision_ids = fields.One2many('issue.approval.decision', 'issue_approval_id', string="决策清单") diff --git a/yuthon_issue/models/issue_approval_decision.py b/yuthon_issue/models/issue_approval_decision.py index ef238968c..a3d095f93 100644 --- a/yuthon_issue/models/issue_approval_decision.py +++ b/yuthon_issue/models/issue_approval_decision.py @@ -14,7 +14,7 @@ class IssueApprovalDecision(models.Model): council = fields.Selection([('approval', '审'), ('decide', '决')], string='党总委员会') team_meet = fields.Selection([('approval', '审'), ('decide', '决')], string='经营班子会') board_meet = fields.Selection([('approval', '审'), ('decide', '决'), ('commission', '授权投决会')], string='董事会') - district_bureau = fields.Selection([('record', '备案'), ('approved', '核准'), ('record_approved', '备案、核准')], 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="部门") @@ -22,6 +22,8 @@ class IssueApprovalDecision(models.Model): end_date = fields.Date(string="失效日期") remarks = fields.Char(string='备注') + issue_approval_id = fields.Many2one('issue.approval', string="关联议题审批") + @api.onchange('decision_type_id') def onchange_sequence(self): for seq in self: diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py index 1d2522914..e7926686c 100644 --- a/yuthon_issue/models/issue_library.py +++ b/yuthon_issue/models/issue_library.py @@ -10,25 +10,63 @@ class IssueLibrary(models.Model): _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="议题状态") + 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', '审批中'), ('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') + 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_approval_id = fields.Many2one('issue.approval', string="关联议题审批") issue_library_line_ids = fields.One2many('issue.library.line', 'issue_library_id', string="决策明细") issue_library_approval_line_ids = fields.One2many('issue.library.approval.line', 'issue_approval_id', string='流程记录') + # 审批中 + # ☑ + # 已上会 + + # tree_ids + # json_content = fields.Text(string="json content", default={"name": "crax", "template": "yuthon_issue.meeting"}) # 配置 + # json_display = fields.Char(string="json display", default={"name": "crax", "template": "yuthon_issue.meeting"}) # 效果 + # + # @api.onchange('json_content') + # def _onchange_json_content(self): + # if self.json_content: + # self.json_display = self.json_content + # else: + # self.json_display = False + + def issue_pull(self): + form_id = self.env.ref("yuthon_issue.issue_library_approval_form").id + return { + "type": "ir.actions.act_window", + "name": "提交", + "res_model": "issue.approval", + "target": 'new', + "views": [[form_id, "form"]], + } + def issue_cancel(self): self.write({"statu": "cancel"}) + def all_issue_pull(self): + 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("yuthon_issue.issue_library_approval_form").id + self.write({"statu": "approval"}) + return { + "type": "ir.actions.act_window", + "name": "提交", + "res_model": "issue.approval", + "target": 'new', + "views": [[form_id, "form"]], + } + + def all_meeting_issue(self): for meet in self: if meet.statu == 'done': @@ -43,9 +81,6 @@ class IssueLibrary(models.Model): "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') @@ -68,6 +103,7 @@ class IssueLibraryLine(models.Model): board_meet = fields.Selection(related='issue_approval_decision_id.board_meet', string='董事会') district_bureau = fields.Selection(related='issue_approval_decision_id.district_bureau', string='区政府、区财政局') + class IssueLibraryApprovalLine(models.Model): _name = "issue.library.approval.line" _description = '关联流程明细' @@ -75,8 +111,8 @@ class IssueLibraryApprovalLine(models.Model): issue_approval_id = fields.Many2one('issue.library') workflow_record_id = fields.Many2one('soong.workflow.record', string="标题") code = fields.Char(string="流程编号") - approval_type = fields.Many2one(related="workflow_record_id.workflow_id",string="类型") - approval_date = fields.Datetime(related="workflow_record_id.write_date",string="创建日期") + approval_type = fields.Many2one(related="workflow_record_id.workflow_id", string="类型") + approval_date = fields.Datetime(related="workflow_record_id.write_date", string="创建日期") def open_record(self): return { diff --git a/yuthon_issue/security/ir.model.access.csv b/yuthon_issue/security/ir.model.access.csv index 101628303..6a76b9acc 100644 --- a/yuthon_issue/security/ir.model.access.csv +++ b/yuthon_issue/security/ir.model.access.csv @@ -1,9 +1,8 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_issue_library,issue_library,model_issue_library,base.group_user,1,1,1,1 access_issue_library_line,issue_library_line,model_issue_library_line,base.group_user,1,1,1,1 -access_issue_approval_boss,issue_approval_boss,model_issue_approval_boss,base.group_user,1,1,1,1 -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 access_issue_library_approval_line,issue_library_approval_line,model_issue_library_approval_line,base.group_user,1,1,1,1 +access_issue_approval,issue_approval,model_issue_approval,base.group_user,1,1,1,1 + diff --git a/yuthon_issue/static/xml/meeting.xml b/yuthon_issue/static/xml/meeting.xml new file mode 100644 index 000000000..b11c5a14f --- /dev/null +++ b/yuthon_issue/static/xml/meeting.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
\ No newline at end of file diff --git a/yuthon_issue/views/issue_approval_views.xml b/yuthon_issue/views/issue_approval_views.xml new file mode 100644 index 000000000..8dca8f44a --- /dev/null +++ b/yuthon_issue/views/issue_approval_views.xml @@ -0,0 +1,74 @@ + + + + issue.approval.tree + issue.approval + + + + + + + + + + + + + + + + + + + + + + + issue.approval.form + issue.approval + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + 议题审批 + issue.approval + tree,form + +
\ No newline at end of file diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index 380c9953d..75a38cf5d 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -4,14 +4,21 @@ issue.library.tree issue.library - + + + + + + + + +