From 00348a7311e81d0f550cf8a89e395009ab7c3637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 3 Aug 2024 21:08:43 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=94=B6=E5=8F=91=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/models/__init__.py | 2 +- yuthon_issue/models/issue_lv.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 yuthon_issue/models/issue_lv.py diff --git a/yuthon_issue/models/__init__.py b/yuthon_issue/models/__init__.py index 78b6ddb70..13c0590eb 100644 --- a/yuthon_issue/models/__init__.py +++ b/yuthon_issue/models/__init__.py @@ -1,4 +1,4 @@ # -*- coding: utf-8 -*- -from . import notice_category from . import issue_library +from . import issue_lv diff --git a/yuthon_issue/models/issue_lv.py b/yuthon_issue/models/issue_lv.py new file mode 100644 index 000000000..ffb3a8c3c --- /dev/null +++ b/yuthon_issue/models/issue_lv.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, tools + + +class IssueLv(models.Model): + _name = "issue.lv" + _description = "议题层级管理" + + name = fields.Char('Department Name', required=True, translate=True) + parent_id = fields.Many2one('issue.lv', string='下级', index=True, check_company=True) + child_ids = fields.One2many('issue.lv', 'parent_id', string='子集') From 1da4a689ff0e1d1b17ba6c77f0d5771170c597bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sun, 4 Aug 2024 22:04:18 +0800 Subject: [PATCH 2/8] =?UTF-8?q?ljm=20=E5=AE=A1=E6=89=B9=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/i18n/soong_workflow.pot | 15 ++ soong_workflow/i18n/zh_CN.po | 15 ++ soong_workflow/models/soong_approval_users.py | 5 + soong_workflow/models/soong_workflow_node.py | 138 ++++++++++++++++++ .../views/soong_approval_users_views.xml | 3 +- .../views/soong_workflow_node_views.xml | 2 +- .../wizard/approval_notice_wizard.py | 16 +- .../wizard/approval_notice_wizard_views.xml | 31 +++- 8 files changed, 215 insertions(+), 10 deletions(-) diff --git a/soong_workflow/i18n/soong_workflow.pot b/soong_workflow/i18n/soong_workflow.pot index e9bb5f215..91099842d 100644 --- a/soong_workflow/i18n/soong_workflow.pot +++ b/soong_workflow/i18n/soong_workflow.pot @@ -711,6 +711,21 @@ msgstr "" msgid "Trigger Link" msgstr "" +#. module: soong_workflow +#: model:ir.model.fields.selection,name:soong_workflow.selection__soong_workflow_node_button__action_type__link_action +msgid "Trigger Link Action" +msgstr "" + +#. module: soong_workflow +#: model:ir.model.fields.selection,name:soong_workflow.selection__soong_workflow_node_button__action_type__link_action_approve +msgid "Trigger Link Action Approve" +msgstr "" + +#. module: soong_workflow +#: model:ir.model.fields.selection,name:soong_workflow.selection__soong_workflow_node_button__action_type__link_action_refuse +msgid "Trigger Link Action Refuse" +msgstr "" + #. module: soong_workflow #: model:ir.model.fields,field_description:soong_workflow.field_soong_workflow_node__use_custom_colors msgid "Use Custom Colors" diff --git a/soong_workflow/i18n/zh_CN.po b/soong_workflow/i18n/zh_CN.po index 34a2739ad..04e896cc1 100644 --- a/soong_workflow/i18n/zh_CN.po +++ b/soong_workflow/i18n/zh_CN.po @@ -723,6 +723,21 @@ msgstr "链接" msgid "Trigger Link" msgstr "触发链接" +#. module: soong_workflow +#: model:ir.model.fields.selection,name:soong_workflow.selection__soong_workflow_node_button__action_type__link_action +msgid "Trigger Link Action" +msgstr "触发链接并弹窗审批" + +#. module: soong_workflow +#: model:ir.model.fields.selection,name:soong_workflow.selection__soong_workflow_node_button__action_type__link_action_approve +msgid "Trigger Link Action Approve" +msgstr "触发链接并弹窗批准审批" + +#. module: soong_workflow +#: model:ir.model.fields.selection,name:soong_workflow.selection__soong_workflow_node_button__action_type__link_action_refuse +msgid "Trigger Link Action Refuse" +msgstr "触发链接并弹窗拒绝审批" + #. module: soong_workflow #: model:ir.model.fields,field_description:soong_workflow.field_soong_workflow_node__use_custom_colors msgid "Use Custom Colors" diff --git a/soong_workflow/models/soong_approval_users.py b/soong_workflow/models/soong_approval_users.py index d91d0b388..78be9c9a6 100644 --- a/soong_workflow/models/soong_approval_users.py +++ b/soong_workflow/models/soong_approval_users.py @@ -28,6 +28,11 @@ class SoongApprovalUsers(models.Model): approval_user_notice = fields.Char(string='审批意见') approval_user_sign = fields.Binary(string='审批签署') approval_user_state = fields.Selection([('will', '待审批')], string='状态') + approval_notice_state = fields.Selection([ + ('0', '审批已阅'), + ('1', '审批通过'), + ('2', '审批拒绝'), + ], string='意见类型', default='0') @api.model_create_multi def create(self, vals_list): diff --git a/soong_workflow/models/soong_workflow_node.py b/soong_workflow/models/soong_workflow_node.py index 11508beb2..ba564d340 100644 --- a/soong_workflow/models/soong_workflow_node.py +++ b/soong_workflow/models/soong_workflow_node.py @@ -238,6 +238,9 @@ class SoongWorkflowNodeButton(models.Model): action_type = fields.Selection( [ ("link", "Trigger Link"), + ("link_action", "Trigger Link Action"), + ("link_action_approve", "Trigger Link Action Approve"), + ("link_action_refuse", "Trigger Link Action Refuse"), ("code", "Python Code"), ("action", "Server Action"), ("win_act", "Window Action"), @@ -451,6 +454,141 @@ class SoongWorkflowNodeButton(models.Model): # Trigger link function return rec.link_id.trigger_link() + def _run_link_action(self): + for rec in self: + # Check Condition Before Executing Action + result = False + cx = self.env.context.copy() or {} + locals_dict = { + "env": self.env, + "model": self.env[cx.get("active_model", False)], + "obj": self.env[cx.get("active_model", False)].browse( + cx.get("active_id", 0) + ), + "user": self.env.user, + "datetime": datetime, + "time": time, + "date": date, + "timedelta": timedelta, + "workflow": self.env["soong.workflow"], + "warning": self.warning, + "syslog": self.syslog, + } + try: + safe_eval( + rec.link_id.condition_code, + locals_dict=locals_dict, + mode="exec", + nocopy=True, + ) + result = "result" in locals_dict and locals_dict["result"] or False + except ValidationError as ex: + raise ex + except SyntaxError as ex: + raise UserError( + _( + "Wrong python code defined.\n\nError: %s\nLine: %s, Column: %s\n\n%s" + % (ex.args[0], ex.args[1][1], ex.args[1][2], ex.args[1][3]) + ) + ) + if result: + win_act_obj = self.env["ir.actions.act_window"] + # Run Window Action + action = win_act_obj.with_context(cx).browse(self.env.ref('soong_workflow.soong_approval_notice_wizard_action').id).read()[0] + action["context"] = cx + action["context"].update({"default_approval_notice_state": '0'}) + # Trigger link function + return action + def _run_link_action_approve(self): + for rec in self: + # Check Condition Before Executing Action + result = False + cx = self.env.context.copy() or {} + locals_dict = { + "env": self.env, + "model": self.env[cx.get("active_model", False)], + "obj": self.env[cx.get("active_model", False)].browse( + cx.get("active_id", 0) + ), + "user": self.env.user, + "datetime": datetime, + "time": time, + "date": date, + "timedelta": timedelta, + "workflow": self.env["soong.workflow"], + "warning": self.warning, + "syslog": self.syslog, + } + try: + safe_eval( + rec.link_id.condition_code, + locals_dict=locals_dict, + mode="exec", + nocopy=True, + ) + result = "result" in locals_dict and locals_dict["result"] or False + except ValidationError as ex: + raise ex + except SyntaxError as ex: + raise UserError( + _( + "Wrong python code defined.\n\nError: %s\nLine: %s, Column: %s\n\n%s" + % (ex.args[0], ex.args[1][1], ex.args[1][2], ex.args[1][3]) + ) + ) + if result: + win_act_obj = self.env["ir.actions.act_window"] + # Run Window Action + action = win_act_obj.with_context(cx).browse(self.env.ref('soong_workflow.soong_approval_approve_notice_wizard_action').id).read()[0] + action["context"] = cx + action["context"].update({"default_approval_notice_state": '1'}) + # Trigger link function + return action + def _run_link_action_refuse(self): + for rec in self: + # Check Condition Before Executing Action + result = False + cx = self.env.context.copy() or {} + locals_dict = { + "env": self.env, + "model": self.env[cx.get("active_model", False)], + "obj": self.env[cx.get("active_model", False)].browse( + cx.get("active_id", 0) + ), + "user": self.env.user, + "datetime": datetime, + "time": time, + "date": date, + "timedelta": timedelta, + "workflow": self.env["soong.workflow"], + "warning": self.warning, + "syslog": self.syslog, + } + try: + safe_eval( + rec.link_id.condition_code, + locals_dict=locals_dict, + mode="exec", + nocopy=True, + ) + result = "result" in locals_dict and locals_dict["result"] or False + except ValidationError as ex: + raise ex + except SyntaxError as ex: + raise UserError( + _( + "Wrong python code defined.\n\nError: %s\nLine: %s, Column: %s\n\n%s" + % (ex.args[0], ex.args[1][1], ex.args[1][2], ex.args[1][3]) + ) + ) + if result: + win_act_obj = self.env["ir.actions.act_window"] + # Run Window Action + action = win_act_obj.with_context(cx).browse(self.env.ref('soong_workflow.soong_approval_refuse_notice_wizard_action').id).read()[0] + action["context"] = cx + action["context"].update({"default_approval_notice_state": '2'}) + # Trigger link function + return action def warning(self, msg): if not isinstance(msg, str): msg = str(msg) diff --git a/soong_workflow/views/soong_approval_users_views.xml b/soong_workflow/views/soong_approval_users_views.xml index fb76a2936..ba7a86a04 100644 --- a/soong_workflow/views/soong_approval_users_views.xml +++ b/soong_workflow/views/soong_approval_users_views.xml @@ -10,7 +10,8 @@ - + + diff --git a/soong_workflow/views/soong_workflow_node_views.xml b/soong_workflow/views/soong_workflow_node_views.xml index a9d2edf6a..f26ff9922 100644 --- a/soong_workflow/views/soong_workflow_node_views.xml +++ b/soong_workflow/views/soong_workflow_node_views.xml @@ -168,7 +168,7 @@ - + soong.approval.notice.wizard
- - + @@ -23,12 +22,30 @@ 审批意见弹窗 ir.actions.act_window soong.approval.notice.wizard - - - - - form new + + {"default_approval_notice_state": '0'} + + + + 审批通过弹窗 + ir.actions.act_window + soong.approval.notice.wizard + form + new + + {"default_approval_notice_state": '1'} + + + + 审批拒绝弹窗 + ir.actions.act_window + soong.approval.notice.wizard + form + new + + {"default_approval_notice_state": '2'} + \ No newline at end of file From 954553f7e15c976d6635b3bb4abfefec65e57b9c Mon Sep 17 00:00:00 2001 From: ONIONZHAOXI <2275333053@qq.com> Date: Mon, 5 Aug 2024 17:03:41 +0800 Subject: [PATCH 3/8] =?UTF-8?q?8=E6=9C=885=E6=97=A5=EF=BC=8C=E5=AF=B9yutho?= =?UTF-8?q?n=5Fissue=E6=A8=A1=E5=9D=97=E6=B7=BB=E4=B8=80=E4=B8=AA=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E8=AE=AE=E9=A2=98=E5=AE=A1=E6=89=B9=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BF=AE=E6=94=B9=E9=80=9A=E7=9F=A5=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=9A=84=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF=E5=8D=95=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/__manifest__.py | 3 +- yuthon_issue/models/__init__.py | 3 + yuthon_issue/models/issue_approval.py | 26 ++++++++ yuthon_issue/security/ir.model.access.csv | 2 + yuthon_issue/views/issue_approval_views.xml | 59 +++++++++++++++++++ yuthon_notice/__manifest__.py | 4 +- ...views.xml => yuthon_notice_type_views.xml} | 0 ...tice_views.xml => yuthon_notice_views.xml} | 0 8 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 yuthon_issue/models/issue_approval.py create mode 100644 yuthon_issue/views/issue_approval_views.xml rename yuthon_notice/views/{yuthon_ntice_type_views.xml => yuthon_notice_type_views.xml} (100%) rename yuthon_notice/views/{yuthon_ntice_views.xml => yuthon_notice_views.xml} (100%) diff --git a/yuthon_issue/__manifest__.py b/yuthon_issue/__manifest__.py index e68c58055..e27c64d17 100644 --- a/yuthon_issue/__manifest__.py +++ b/yuthon_issue/__manifest__.py @@ -10,11 +10,12 @@ 'category': 'Human Resources/Attendances', 'version': '0.1', 'license': 'LGPL-3', - 'depends': ['mail', 'documents'], + 'depends': ['approvals', 'documents','yuthon_approval', 'mail'], 'data': [ 'security/ir.model.access.csv', 'data/issue_library_code_data.xml', 'views/issue_library_views.xml', + 'views/issue_approval_views.xml', ], 'installable': True, 'application': True, diff --git a/yuthon_issue/models/__init__.py b/yuthon_issue/models/__init__.py index 13c0590eb..ce3b2f3af 100644 --- a/yuthon_issue/models/__init__.py +++ b/yuthon_issue/models/__init__.py @@ -1,4 +1,7 @@ # -*- coding: utf-8 -*- + from . import issue_library +from . import issue_approval + from . import issue_lv diff --git a/yuthon_issue/models/issue_approval.py b/yuthon_issue/models/issue_approval.py new file mode 100644 index 000000000..1f218eded --- /dev/null +++ b/yuthon_issue/models/issue_approval.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, tools +from odoo.exceptions import ValidationError + + +class IssueApproval(models.Model): + _name = "issue.approval" + _description = '议题审批' + _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin'] + _rec_name = 'name' + + name = fields.Char(string='议题名称') + issue_creation_time = fields.Datetime(string='议题创建时间', default=lambda self: fields.Datetime.now()) + issue_approval_type = fields.Selection([('ready_meeting', '党总支'), ('party_branch_committee', '党支委'), + ('management_team', '经营班子'), ('board_directors', '董事会')], + string="议题审批类型") + company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) + issue_documents_ids = fields.Many2many('documents.document', string="附件") + issue_text = fields.Html(string="正文") + issue_request_ids = fields.One2many('issue.line', 'issue_name_id', string="议题列表") + +class IssueLine(models.Model): + _name = 'issue.line' + _description = '议题列表' + + issue_name_id = fields.Many2one('issue.library', string="关联议题") diff --git a/yuthon_issue/security/ir.model.access.csv b/yuthon_issue/security/ir.model.access.csv index 53f414ef6..24c8520ff 100644 --- a/yuthon_issue/security/ir.model.access.csv +++ b/yuthon_issue/security/ir.model.access.csv @@ -1,2 +1,4 @@ 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_approval,issue_approval,model_issue_approval,base.group_user,1,1,1,1 +access_issue_line,issue_line,model_issue_line,base.group_user,1,1,1,1 diff --git a/yuthon_issue/views/issue_approval_views.xml b/yuthon_issue/views/issue_approval_views.xml new file mode 100644 index 000000000..13a07d997 --- /dev/null +++ b/yuthon_issue/views/issue_approval_views.xml @@ -0,0 +1,59 @@ + + + + issue.approval.tree + issue.approval + + + + + + + + + + + + issue.approval.form + issue.approval + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 议题审批 + issue.approval + tree,form + + + + + \ No newline at end of file diff --git a/yuthon_notice/__manifest__.py b/yuthon_notice/__manifest__.py index 25cd1a91c..ada3bbbee 100644 --- a/yuthon_notice/__manifest__.py +++ b/yuthon_notice/__manifest__.py @@ -14,8 +14,8 @@ 'data': [ 'security/ir.model.access.csv', 'data/notice_code_data.xml', - 'views/yuthon_ntice_views.xml', - 'views/yuthon_ntice_type_views.xml', + 'views/yuthon_notice_views.xml', + 'views/yuthon_notice_type_views.xml', 'views/yuthon_confirm_users_views.xml', 'report/notice_report.xml', ], diff --git a/yuthon_notice/views/yuthon_ntice_type_views.xml b/yuthon_notice/views/yuthon_notice_type_views.xml similarity index 100% rename from yuthon_notice/views/yuthon_ntice_type_views.xml rename to yuthon_notice/views/yuthon_notice_type_views.xml diff --git a/yuthon_notice/views/yuthon_ntice_views.xml b/yuthon_notice/views/yuthon_notice_views.xml similarity index 100% rename from yuthon_notice/views/yuthon_ntice_views.xml rename to yuthon_notice/views/yuthon_notice_views.xml From 0de9329ee806cda53f801024eef545d4ca2ebd46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 5 Aug 2024 17:50:53 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E8=AE=AE=E9=A2=98=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/__manifest__.py | 4 +- yuthon_issue/models/__init__.py | 3 +- yuthon_issue/models/issue_approval.py | 20 +++---- yuthon_issue/models/issue_library.py | 47 ++++++++++++++- yuthon_issue/models/issue_lv.py | 4 +- yuthon_issue/models/issue_type.py | 10 ++++ yuthon_issue/security/ir.model.access.csv | 4 +- yuthon_issue/views/issue_approval_views.xml | 65 +++++++++++++-------- yuthon_issue/views/issue_library_views.xml | 43 ++++++++++++-- yuthon_issue/views/issue_lv_views.xml | 27 +++++++++ yuthon_issue/views/issue_type_views.xml | 26 +++++++++ yuthon_notice/views/yuthon_notice_views.xml | 12 ++-- 12 files changed, 210 insertions(+), 55 deletions(-) create mode 100644 yuthon_issue/models/issue_type.py create mode 100644 yuthon_issue/views/issue_lv_views.xml create mode 100644 yuthon_issue/views/issue_type_views.xml diff --git a/yuthon_issue/__manifest__.py b/yuthon_issue/__manifest__.py index e27c64d17..a20c6b7f0 100644 --- a/yuthon_issue/__manifest__.py +++ b/yuthon_issue/__manifest__.py @@ -10,11 +10,13 @@ 'category': 'Human Resources/Attendances', 'version': '0.1', 'license': 'LGPL-3', - 'depends': ['approvals', 'documents','yuthon_approval', 'mail'], + 'depends': ['mail', 'documents'], 'data': [ 'security/ir.model.access.csv', 'data/issue_library_code_data.xml', 'views/issue_library_views.xml', + 'views/issue_lv_views.xml', + 'views/issue_type_views.xml', 'views/issue_approval_views.xml', ], 'installable': True, diff --git a/yuthon_issue/models/__init__.py b/yuthon_issue/models/__init__.py index ce3b2f3af..d5724343b 100644 --- a/yuthon_issue/models/__init__.py +++ b/yuthon_issue/models/__init__.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- - from . import issue_library from . import issue_approval - from . import issue_lv +from . import issue_type diff --git a/yuthon_issue/models/issue_approval.py b/yuthon_issue/models/issue_approval.py index 1f218eded..988aa7b65 100644 --- a/yuthon_issue/models/issue_approval.py +++ b/yuthon_issue/models/issue_approval.py @@ -9,18 +9,12 @@ class IssueApproval(models.Model): _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin'] _rec_name = 'name' - name = fields.Char(string='议题名称') - issue_creation_time = fields.Datetime(string='议题创建时间', default=lambda self: fields.Datetime.now()) - issue_approval_type = fields.Selection([('ready_meeting', '党总支'), ('party_branch_committee', '党支委'), - ('management_team', '经营班子'), ('board_directors', '董事会')], - string="议题审批类型") + name = fields.Char(string='名称') + note = fields.Char(string="说明") + user_id = fields.Many2one('res.users', string="经办人") + department_id = fields.Many2one(related='user_id.employee_id.department_id', string="部门") + creat_time = fields.Datetime(string='创建时间', default=lambda self: fields.Datetime.now()) company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) - issue_documents_ids = fields.Many2many('documents.document', string="附件") + documents_ids = fields.Many2many('documents.document', string="附件") issue_text = fields.Html(string="正文") - issue_request_ids = fields.One2many('issue.line', 'issue_name_id', string="议题列表") - -class IssueLine(models.Model): - _name = 'issue.line' - _description = '议题列表' - - issue_name_id = fields.Many2one('issue.library', string="关联议题") + issue_library_ids = fields.Many2many('issue.library', string="议题") diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py index a5a0423a3..6e2ce5b0f 100644 --- a/yuthon_issue/models/issue_library.py +++ b/yuthon_issue/models/issue_library.py @@ -10,18 +10,59 @@ class IssueLibrary(models.Model): _rec_name = 'name' name = fields.Char(string='议题事项') - issue_id = fields.Many2one('issue.library', string="上级议题", ondelete='cascade') - issue_ids = fields.One2many('issue.library', 'issue_id', string='子议题') - code = fields.Char(string='编号', required=True, copy=False, default=lambda self: self.env['ir.sequence'].next_by_code('issue_library_code')) + issue_type_id = fields.Many2one('issue.type', string="议题类别") + # issue_ids = fields.One2many('issue.library', 'issue_id', 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([('will', '待上会'), ('done', '已上会'), ('cancel', '已取消')], default='will', string="议题状态") is_party = fields.Boolean(string="党之委会") is_class = fields.Boolean(string="班子会") is_boss = fields.Boolean(string="董事会") is_note = fields.Boolean(string="备案、核准") creart_datetime = fields.Datetime(string="创建时间", default=fields.Datetime.now) + first_party = fields.Many2one('res.partner', string='甲方') + first_b = fields.Many2one('res.partner', string='乙方') + create_performance = fields.Datetime(string='履约开始日期') + end_performance = fields.Datetime(string='履约结束日期') + urgency = fields.Selection([('ordinary', '普通'), + ('normal', '一般'), + ('urgent', '紧急')], string="紧急度") + employee_person = fields.Many2one('hr.employee', string="联系人") + account = fields.Char(string="账户") + bank = fields.Char(string="开户行") + contract_amount = fields.Float(string="合同金额") + procurement_method = fields.Selection([('Internal_bidding', '内部竞标简易程序'), + ('web_procurement', '网络采购'), + ('direct_procurement', '直接委托采购'), + ('singleness_procurement', '单一来源采购'), + ('clique_procurement', '集团摇珠采购')], string='采购方式') + other_conventions = fields.Text(string='其他约定') + payment_methods_ids = fields.One2many('payment.methods', 'issue_library_id', string='关联付款方式') + notice_documents_ids = fields.Many2many('documents.document', string="议题管理文件") def issue_cancel(self): self.write({"statu": "cancel"}) def on_meeting(self): self.write({"statu": "done"}) + + def all_meting_issue(self): + pass + + +class PaymentMethods(models.Model): + _name = "payment.methods" + _description = '付款方式' + + money = fields.Float(string="金额") + by_stages = fields.Char(string="分期") + date = fields.Date(string="日期") + has_acceptance_material = fields.Selection([('yes', '是'), + ('no', '否')], string="是否需要验收材料") + main = fields.Text(string="备注") + payment_methods = fields.Selection([('cash', '现金'), + ('to_the_public', '对公'), + ('wechat', '微信'), + ('alipay', '支付宝'), + ], string="支付方式") + issue_library_id = fields.Many2one('issue.library', string='关联议题管理') diff --git a/yuthon_issue/models/issue_lv.py b/yuthon_issue/models/issue_lv.py index ffb3a8c3c..7b5bf158d 100644 --- a/yuthon_issue/models/issue_lv.py +++ b/yuthon_issue/models/issue_lv.py @@ -6,6 +6,6 @@ class IssueLv(models.Model): _name = "issue.lv" _description = "议题层级管理" - name = fields.Char('Department Name', required=True, translate=True) - parent_id = fields.Many2one('issue.lv', string='下级', index=True, check_company=True) + name = fields.Char('层级', required=True) + parent_id = fields.Many2one('issue.lv', string='上级') child_ids = fields.One2many('issue.lv', 'parent_id', string='子集') diff --git a/yuthon_issue/models/issue_type.py b/yuthon_issue/models/issue_type.py new file mode 100644 index 000000000..2871ed1d3 --- /dev/null +++ b/yuthon_issue/models/issue_type.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, tools + + +class IssueType(models.Model): + _name = "issue.type" + _description = "议题类别" + + name = fields.Char(string='类别') + note = fields.Char(string='说明') diff --git a/yuthon_issue/security/ir.model.access.csv b/yuthon_issue/security/ir.model.access.csv index 24c8520ff..9a30e7f06 100644 --- a/yuthon_issue/security/ir.model.access.csv +++ b/yuthon_issue/security/ir.model.access.csv @@ -1,4 +1,6 @@ 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_lv,issue_lv,model_issue_lv,base.group_user,1,1,1,1 +access_payment_methods,payment_methods,model_payment_methods,base.group_user,1,1,1,1 +access_issue_type,issue_type,model_issue_type,base.group_user,1,1,1,1 access_issue_approval,issue_approval,model_issue_approval,base.group_user,1,1,1,1 -access_issue_line,issue_line,model_issue_line,base.group_user,1,1,1,1 diff --git a/yuthon_issue/views/issue_approval_views.xml b/yuthon_issue/views/issue_approval_views.xml index 13a07d997..ed0adae81 100644 --- a/yuthon_issue/views/issue_approval_views.xml +++ b/yuthon_issue/views/issue_approval_views.xml @@ -1,13 +1,15 @@ - + issue.approval.tree issue.approval - - + + + + @@ -18,39 +20,56 @@ issue.approval
- + +
+
- - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - + -
+ +
+
+ + + +
- + 议题审批 issue.approval tree,form - + - - @@ -41,17 +40,45 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -74,7 +101,7 @@ - + @@ -87,6 +114,14 @@ + + 批量上会 + + + code + records.all_meting_issue() + + + + + issue.lv.tree + issue.lv + + + + + + + + + + + 议题库 + issue.lv + tree + + + + + + + + + \ No newline at end of file diff --git a/yuthon_issue/views/issue_type_views.xml b/yuthon_issue/views/issue_type_views.xml new file mode 100644 index 000000000..830a75533 --- /dev/null +++ b/yuthon_issue/views/issue_type_views.xml @@ -0,0 +1,26 @@ + + + + issue.type.tree + issue.type + + + + + + + + + + 议题库 + issue.type + tree + + + + \ No newline at end of file diff --git a/yuthon_notice/views/yuthon_notice_views.xml b/yuthon_notice/views/yuthon_notice_views.xml index e46dcb3c5..fd602f1d3 100644 --- a/yuthon_notice/views/yuthon_notice_views.xml +++ b/yuthon_notice/views/yuthon_notice_views.xml @@ -7,9 +7,9 @@ - - - + + + @@ -110,9 +110,9 @@ - - - + + + From 9ac3bc5391eac6d9b2977902c56ffa5537d1af2d Mon Sep 17 00:00:00 2001 From: ONIONZHAOXI <2275333053@qq.com> Date: Mon, 5 Aug 2024 18:26:24 +0800 Subject: [PATCH 5/8] =?UTF-8?q?8=E6=9C=885=E6=97=A5=EF=BC=8C=E5=AF=B9yutho?= =?UTF-8?q?n=5Fissue=E6=A8=A1=E5=9D=97=E6=B7=BB=E4=B8=89=E4=B8=AA=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/__manifest__.py | 4 +- yuthon_issue/models/__init__.py | 4 +- ...sue_approval.py => issue_approval_boss.py} | 8 +- yuthon_issue/models/issue_approval_class.py | 20 +++++ yuthon_issue/models/issue_approval_party.py | 20 +++++ yuthon_issue/security/ir.model.access.csv | 4 +- .../views/issue_approval_boss_views.xml | 75 +++++++++++++++++++ .../views/issue_approval_class_views.xml | 75 +++++++++++++++++++ ...ews.xml => issue_approval_party_views.xml} | 31 ++++---- 9 files changed, 217 insertions(+), 24 deletions(-) rename yuthon_issue/models/{issue_approval.py => issue_approval_boss.py} (77%) create mode 100644 yuthon_issue/models/issue_approval_class.py create mode 100644 yuthon_issue/models/issue_approval_party.py create mode 100644 yuthon_issue/views/issue_approval_boss_views.xml create mode 100644 yuthon_issue/views/issue_approval_class_views.xml rename yuthon_issue/views/{issue_approval_views.xml => issue_approval_party_views.xml} (72%) diff --git a/yuthon_issue/__manifest__.py b/yuthon_issue/__manifest__.py index a20c6b7f0..4e93edd4b 100644 --- a/yuthon_issue/__manifest__.py +++ b/yuthon_issue/__manifest__.py @@ -17,7 +17,9 @@ 'views/issue_library_views.xml', 'views/issue_lv_views.xml', 'views/issue_type_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', ], 'installable': True, 'application': True, diff --git a/yuthon_issue/models/__init__.py b/yuthon_issue/models/__init__.py index d5724343b..c9e14c6bc 100644 --- a/yuthon_issue/models/__init__.py +++ b/yuthon_issue/models/__init__.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from . import issue_library -from . import issue_approval +from . import issue_approval_party from . import issue_lv from . import issue_type +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_boss.py similarity index 77% rename from yuthon_issue/models/issue_approval.py rename to yuthon_issue/models/issue_approval_boss.py index 988aa7b65..2e9640f23 100644 --- a/yuthon_issue/models/issue_approval.py +++ b/yuthon_issue/models/issue_approval_boss.py @@ -3,9 +3,9 @@ from odoo import api, fields, models, tools from odoo.exceptions import ValidationError -class IssueApproval(models.Model): - _name = "issue.approval" - _description = '议题审批' +class IssueApprovalBoss(models.Model): + _name = "issue.approval.boss" + _description = '董事会议题审批' _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin'] _rec_name = 'name' @@ -13,7 +13,7 @@ class IssueApproval(models.Model): note = fields.Char(string="说明") user_id = fields.Many2one('res.users', string="经办人") department_id = fields.Many2one(related='user_id.employee_id.department_id', string="部门") - creat_time = fields.Datetime(string='创建时间', default=lambda self: fields.Datetime.now()) + create_time = fields.Datetime(string='创建时间', default=lambda self: fields.Datetime.now()) company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) documents_ids = fields.Many2many('documents.document', string="附件") issue_text = fields.Html(string="正文") diff --git a/yuthon_issue/models/issue_approval_class.py b/yuthon_issue/models/issue_approval_class.py new file mode 100644 index 000000000..9816224b0 --- /dev/null +++ b/yuthon_issue/models/issue_approval_class.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, tools +from odoo.exceptions import ValidationError + + +class IssueApprovalClass(models.Model): + _name = "issue.approval.class" + _description = '领导班子议题审批' + _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin'] + _rec_name = 'name' + + name = fields.Char(string='名称') + note = fields.Char(string="说明") + user_id = fields.Many2one('res.users', string="经办人") + department_id = fields.Many2one(related='user_id.employee_id.department_id', string="部门") + create_time = fields.Datetime(string='创建时间', default=lambda self: fields.Datetime.now()) + company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) + documents_ids = fields.Many2many('documents.document', string="附件") + issue_text = fields.Html(string="正文") + issue_library_ids = fields.Many2many('issue.library', string="议题") diff --git a/yuthon_issue/models/issue_approval_party.py b/yuthon_issue/models/issue_approval_party.py new file mode 100644 index 000000000..871c8b25e --- /dev/null +++ b/yuthon_issue/models/issue_approval_party.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, tools +from odoo.exceptions import ValidationError + + +class IssueApprovalParty(models.Model): + _name = "issue.approval.party" + _description = '党总支议题审批' + _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin'] + _rec_name = 'name' + + name = fields.Char(string='名称') + note = fields.Char(string="说明") + user_id = fields.Many2one('res.users', string="经办人") + department_id = fields.Many2one(related='user_id.employee_id.department_id', string="部门") + create_time = fields.Datetime(string='创建时间', default=lambda self: fields.Datetime.now()) + company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) + documents_ids = fields.Many2many('documents.document', string="附件") + issue_text = fields.Html(string="正文") + issue_library_ids = fields.Many2many('issue.library', string="议题") diff --git a/yuthon_issue/security/ir.model.access.csv b/yuthon_issue/security/ir.model.access.csv index 9a30e7f06..cd3ec6752 100644 --- a/yuthon_issue/security/ir.model.access.csv +++ b/yuthon_issue/security/ir.model.access.csv @@ -3,4 +3,6 @@ access_issue_library,issue_library,model_issue_library,base.group_user,1,1,1,1 access_issue_lv,issue_lv,model_issue_lv,base.group_user,1,1,1,1 access_payment_methods,payment_methods,model_payment_methods,base.group_user,1,1,1,1 access_issue_type,issue_type,model_issue_type,base.group_user,1,1,1,1 -access_issue_approval,issue_approval,model_issue_approval,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_class,issue_approval_class,model_issue_approval_class,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 diff --git a/yuthon_issue/views/issue_approval_boss_views.xml b/yuthon_issue/views/issue_approval_boss_views.xml new file mode 100644 index 000000000..fdfcf1932 --- /dev/null +++ b/yuthon_issue/views/issue_approval_boss_views.xml @@ -0,0 +1,75 @@ + + + + issue.approval.boss.tree + issue.approval.boss + + + + + + + + + + + issue.approval.boss.form + issue.approval.boss + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + + + + 党总支议题审批 + issue.approval.boss + tree,form + + + + + \ No newline at end of file diff --git a/yuthon_issue/views/issue_approval_class_views.xml b/yuthon_issue/views/issue_approval_class_views.xml new file mode 100644 index 000000000..4b05f5d6f --- /dev/null +++ b/yuthon_issue/views/issue_approval_class_views.xml @@ -0,0 +1,75 @@ + + + + issue.approval.class.tree + issue.approval.class + + + + + + + + + + + issue.approval.class.form + issue.approval.class + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + + + + 党总支议题审批 + issue.approval.class + tree,form + + + + + \ No newline at end of file diff --git a/yuthon_issue/views/issue_approval_views.xml b/yuthon_issue/views/issue_approval_party_views.xml similarity index 72% rename from yuthon_issue/views/issue_approval_views.xml rename to yuthon_issue/views/issue_approval_party_views.xml index ed0adae81..7cde7e60e 100644 --- a/yuthon_issue/views/issue_approval_views.xml +++ b/yuthon_issue/views/issue_approval_party_views.xml @@ -1,23 +1,20 @@ - - issue.approval.tree - issue.approval + + issue.approval.party.tree + issue.approval.party - - - - + - - issue.approval.form - issue.approval + + issue.approval.party.form + issue.approval.party
@@ -32,7 +29,7 @@ - + @@ -62,17 +59,17 @@ - - 议题审批 - issue.approval + + 党总支议题审批 + issue.approval.party tree,form \ No newline at end of file From bd1f03dbd10d19d19fa433990906ec251ad3a940 Mon Sep 17 00:00:00 2001 From: ONIONZHAOXI <2275333053@qq.com> Date: Mon, 5 Aug 2024 18:30:36 +0800 Subject: [PATCH 6/8] =?UTF-8?q?8=E6=9C=885=E6=97=A5=EF=BC=8C=E5=AF=B9yutho?= =?UTF-8?q?n=5Fissue=E6=A8=A1=E5=9D=97=E6=B7=BB=E4=B8=89=E4=B8=AA=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/views/issue_approval_boss_views.xml | 2 +- yuthon_issue/views/issue_approval_class_views.xml | 2 +- yuthon_issue/views/issue_approval_party_views.xml | 2 +- yuthon_issue/views/issue_library_views.xml | 6 ++++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/yuthon_issue/views/issue_approval_boss_views.xml b/yuthon_issue/views/issue_approval_boss_views.xml index fdfcf1932..8d37acbbe 100644 --- a/yuthon_issue/views/issue_approval_boss_views.xml +++ b/yuthon_issue/views/issue_approval_boss_views.xml @@ -68,7 +68,7 @@ diff --git a/yuthon_issue/views/issue_approval_class_views.xml b/yuthon_issue/views/issue_approval_class_views.xml index 4b05f5d6f..bb78ca39d 100644 --- a/yuthon_issue/views/issue_approval_class_views.xml +++ b/yuthon_issue/views/issue_approval_class_views.xml @@ -68,7 +68,7 @@ diff --git a/yuthon_issue/views/issue_approval_party_views.xml b/yuthon_issue/views/issue_approval_party_views.xml index 7cde7e60e..c8d7af591 100644 --- a/yuthon_issue/views/issue_approval_party_views.xml +++ b/yuthon_issue/views/issue_approval_party_views.xml @@ -68,7 +68,7 @@ diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index dcce34d64..0d0b321d2 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -134,4 +134,10 @@ name="议题库" action="issue_library_action" sequence="5"/> + \ No newline at end of file From d929776323106b04ec58ee1f03562d7b4e2b7c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 5 Aug 2024 18:56:44 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E8=AE=AE=E9=A2=98=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_issue/views/issue_library_views.xml | 2 +- .../models/yuthon_res_partner.py | 1 + .../views/contacts_inherit_menu_views.xml | 26 +------------ .../views/yuthon_res_partner_views.xml | 38 +++++++++---------- 4 files changed, 22 insertions(+), 45 deletions(-) diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index dcce34d64..5cf79402e 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -101,7 +101,7 @@ - + diff --git a/yuthon_res_partner/models/yuthon_res_partner.py b/yuthon_res_partner/models/yuthon_res_partner.py index d68c84910..a97855cb9 100644 --- a/yuthon_res_partner/models/yuthon_res_partner.py +++ b/yuthon_res_partner/models/yuthon_res_partner.py @@ -9,6 +9,7 @@ class ResPartner(models.Model): _description = '联系人客户字段增加' partner_type = fields.Selection([('tenant', '承租方'), ('employee', '员工'), ('company', '公司')], default='employee', string="客户类型") + tenant_type = fields.Selection([], string="租户类型") juridical_person = fields.Char(string="法人") tenant_user_card = fields.Char(string="身份证") diff --git a/yuthon_res_partner/views/contacts_inherit_menu_views.xml b/yuthon_res_partner/views/contacts_inherit_menu_views.xml index f250fef9e..7baa720a6 100644 --- a/yuthon_res_partner/views/contacts_inherit_menu_views.xml +++ b/yuthon_res_partner/views/contacts_inherit_menu_views.xml @@ -7,14 +7,6 @@ {'default_is_company': True} [('partner_type', '=', 'company')] - -

- Create a Contact in your address book -

-

- Odoo helps you track all activities related to your contacts. -

-
员工 @@ -23,14 +15,6 @@ [('partner_type', '=', 'employee')] {'default_is_company': True} - -

- Create a Contact in your address book -

-

- Odoo helps you track all activities related to your contacts. -

-
承租方 @@ -39,14 +23,8 @@ [('partner_type', '=', 'tenant')] {'default_is_company': True} - -

- Create a Contact in your address book -

-

- Odoo helps you track all activities related to your contacts. -

-
+
- + + yuthon.res.partner.views.tree res.partner - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file From d636cbee0d3b80a35bfaeb0a9ae6d1c40db356b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 5 Aug 2024 22:02:21 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E8=AE=AE=E9=A2=98=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_res_partner/__manifest__.py | 2 + yuthon_res_partner/data/tenant.industry.csv | 52 +++++++++++++++++++ yuthon_res_partner/models/__init__.py | 1 + yuthon_res_partner/models/tenant_industry.py | 12 +++++ .../models/yuthon_res_partner.py | 8 ++- .../security/ir.model.access.csv | 1 + .../views/contacts_inherit_menu_views.xml | 6 ++- yuthon_res_partner/views/tenant_industry.xml | 19 +++++++ .../views/yuthon_res_partner_views.xml | 38 ++++++++------ 9 files changed, 120 insertions(+), 19 deletions(-) create mode 100644 yuthon_res_partner/data/tenant.industry.csv create mode 100644 yuthon_res_partner/models/tenant_industry.py create mode 100644 yuthon_res_partner/views/tenant_industry.xml diff --git a/yuthon_res_partner/__manifest__.py b/yuthon_res_partner/__manifest__.py index 9800f7161..fb6b1db3e 100644 --- a/yuthon_res_partner/__manifest__.py +++ b/yuthon_res_partner/__manifest__.py @@ -12,8 +12,10 @@ 'license': 'LGPL-3', 'depends': ['base', 'account', 'contacts'], 'data': [ + 'data/tenant.industry.csv', 'security/ir.model.access.csv', 'views/yuthon_res_partner_views.xml', + 'views/tenant_industry.xml', 'views/contacts_inherit_menu_views.xml', ], 'installable': True, diff --git a/yuthon_res_partner/data/tenant.industry.csv b/yuthon_res_partner/data/tenant.industry.csv new file mode 100644 index 000000000..762b39c94 --- /dev/null +++ b/yuthon_res_partner/data/tenant.industry.csv @@ -0,0 +1,52 @@ +"name","note" +"商务服务业","", +"贸易","", +"餐饮","", +"科技","", +"咨询","", +"酒店","", +"批发业","", +"专业技术服务业","", +"研究和试验发展","", +"培训","", +"信息技术","", +"个人","", +"制造业","", +"建筑业","", +"医疗卫生","", +"零售业","", +"住宿业","", +"居民服务业","", +"货币金融服务","", +"建筑安装业","", +"文化艺术业","", +"卫生","", +"社会工作","", +"电气机械和器材制造业","", +"音乐、美术、舞蹈培训","", +"科技推广和应用服务业","", +"橡胶和塑料制品业","", +"通用设备制造业","", +"建筑装饰、装修和其他建筑业","", +"计算机、通信和其他电子设备制造业","", +"房地产业","", +"教育","", +"纺织品、针织品及原料批发","", +"建筑装饰和装修业","", +"信息技术咨询服务","", +"房地产中介服务","", +"汽车修理与维护","", +"化学原料和化学制品制造业","", +"基他服务业","", +"工程和技术研究和试验发展","", +"电阳电容电感元件制造","", +"其他未列明信息技术服务业","", +"公共设施管理业","", +"咨询与调查","", +"其他专用设备制造","", +"信息传输、软件和信息技术服务业","", +"软件开发","", +"其他科技推广服务业","", +"其他未列明专业技术服务业","", +"法律服务","", +"其他制造业","", diff --git a/yuthon_res_partner/models/__init__.py b/yuthon_res_partner/models/__init__.py index c005a0071..692739ff4 100644 --- a/yuthon_res_partner/models/__init__.py +++ b/yuthon_res_partner/models/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- from . import yuthon_res_partner +from . import tenant_industry diff --git a/yuthon_res_partner/models/tenant_industry.py b/yuthon_res_partner/models/tenant_industry.py new file mode 100644 index 000000000..b14680918 --- /dev/null +++ b/yuthon_res_partner/models/tenant_industry.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import models, fields, api, exceptions, _ + + +class TenantIndustry(models.Model): + _name = 'tenant.industry' + _description = '承租方行业' + + name = fields.Char(string="行业") + note = fields.Char(string="说明") diff --git a/yuthon_res_partner/models/yuthon_res_partner.py b/yuthon_res_partner/models/yuthon_res_partner.py index a97855cb9..b5a5a261b 100644 --- a/yuthon_res_partner/models/yuthon_res_partner.py +++ b/yuthon_res_partner/models/yuthon_res_partner.py @@ -10,7 +10,6 @@ class ResPartner(models.Model): partner_type = fields.Selection([('tenant', '承租方'), ('employee', '员工'), ('company', '公司')], default='employee', string="客户类型") - tenant_type = fields.Selection([], string="租户类型") juridical_person = fields.Char(string="法人") tenant_user_card = fields.Char(string="身份证") tenant_scope = fields.Char(string="经营范围") @@ -22,9 +21,14 @@ class ResPartner(models.Model): billing_type = fields.Char(string="开票类型") partner_name = fields.Char(string="联系人") - partner_address = fields.Char(string="承送达地址") + partner_address = fields.Char(string="送达地址") partner_type2 = fields.Char(string="承租方类型") + tenant_name = fields.Char(string="承租方名称") + cell_phone = fields.Char(string='座机') + tax_number = fields.Char(string='税号') + tenant_industry = fields.Many2one('tenant.industry', string='行业') + diff --git a/yuthon_res_partner/security/ir.model.access.csv b/yuthon_res_partner/security/ir.model.access.csv index d7595f820..5fd673f7e 100644 --- a/yuthon_res_partner/security/ir.model.access.csv +++ b/yuthon_res_partner/security/ir.model.access.csv @@ -1,4 +1,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_tenant_industry,tenant_industry,model_tenant_industry,base.group_user,1,1,1,1 diff --git a/yuthon_res_partner/views/contacts_inherit_menu_views.xml b/yuthon_res_partner/views/contacts_inherit_menu_views.xml index 7baa720a6..da4edee9c 100644 --- a/yuthon_res_partner/views/contacts_inherit_menu_views.xml +++ b/yuthon_res_partner/views/contacts_inherit_menu_views.xml @@ -38,10 +38,14 @@ action="action_employee" parent="contacts.res_partner_menu_contacts" sequence="3"/> - + \ No newline at end of file diff --git a/yuthon_res_partner/views/tenant_industry.xml b/yuthon_res_partner/views/tenant_industry.xml new file mode 100644 index 000000000..ccb3a703b --- /dev/null +++ b/yuthon_res_partner/views/tenant_industry.xml @@ -0,0 +1,19 @@ + + + + tenant.industry.tree + tenant.industry + + + + + + + + + + 承租方行业 + tenant.industry + tree + + \ No newline at end of file diff --git a/yuthon_res_partner/views/yuthon_res_partner_views.xml b/yuthon_res_partner/views/yuthon_res_partner_views.xml index 920a5de5c..c62024201 100644 --- a/yuthon_res_partner/views/yuthon_res_partner_views.xml +++ b/yuthon_res_partner/views/yuthon_res_partner_views.xml @@ -5,38 +5,44 @@ res.partner + + + + + + + + + - - - - - - - - - + + + + + + - yuthon.res.partner.views.tree res.partner - - - + + + - + - - + + +