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 diff --git a/yuthon_issue/__manifest__.py b/yuthon_issue/__manifest__.py index e68c58055..4e93edd4b 100644 --- a/yuthon_issue/__manifest__.py +++ b/yuthon_issue/__manifest__.py @@ -15,6 +15,11 @@ '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_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 be89dbd29..90f8a2c2d 100644 --- a/yuthon_issue/models/__init__.py +++ b/yuthon_issue/models/__init__.py @@ -1,4 +1,9 @@ # -*- coding: utf-8 -*- -# from . import notice_category + from . import issue_library +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_boss.py b/yuthon_issue/models/issue_approval_boss.py new file mode 100644 index 000000000..2e9640f23 --- /dev/null +++ b/yuthon_issue/models/issue_approval_boss.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models, tools +from odoo.exceptions import ValidationError + + +class IssueApprovalBoss(models.Model): + _name = "issue.approval.boss" + _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_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/models/issue_library.py b/yuthon_issue/models/issue_library.py index 62c0443d6..6e2ce5b0f 100644 --- a/yuthon_issue/models/issue_library.py +++ b/yuthon_issue/models/issue_library.py @@ -10,8 +10,8 @@ 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='子议题') + 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="议题状态") @@ -22,8 +22,8 @@ class IssueLibrary(models.Model): 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='结束履约日期') + create_performance = fields.Datetime(string='履约开始日期') + end_performance = fields.Datetime(string='履约结束日期') urgency = fields.Selection([('ordinary', '普通'), ('normal', '一般'), ('urgent', '紧急')], string="紧急度") diff --git a/yuthon_issue/models/issue_lv.py b/yuthon_issue/models/issue_lv.py new file mode 100644 index 000000000..7b5bf158d --- /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('层级', 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 fbf529800..3256e55c9 100644 --- a/yuthon_issue/security/ir.model.access.csv +++ b/yuthon_issue/security/ir.model.access.csv @@ -1,3 +1,9 @@ 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_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 +>>>>>>> d636cbee0d3b80a35bfaeb0a9ae6d1c40db356b7 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..8d37acbbe --- /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..bb78ca39d --- /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_party_views.xml b/yuthon_issue/views/issue_approval_party_views.xml new file mode 100644 index 000000000..c8d7af591 --- /dev/null +++ b/yuthon_issue/views/issue_approval_party_views.xml @@ -0,0 +1,75 @@ + + + + issue.approval.party.tree + issue.approval.party + + + + + + + + + + + issue.approval.party.form + issue.approval.party + +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ + + + + + 党总支议题审批 + issue.approval.party + 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 6416782b4..63ae1fda2 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -10,7 +10,6 @@ decoration-muted="statu == 'cancel'"> - @@ -41,8 +40,6 @@ - - @@ -104,7 +101,7 @@ - + @@ -137,4 +134,10 @@ name="议题库" action="issue_library_action" sequence="5"/> + \ No newline at end of file diff --git a/yuthon_issue/views/issue_lv_views.xml b/yuthon_issue/views/issue_lv_views.xml new file mode 100644 index 000000000..cd7327426 --- /dev/null +++ b/yuthon_issue/views/issue_lv_views.xml @@ -0,0 +1,27 @@ + + + + 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/__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 94% rename from yuthon_notice/views/yuthon_ntice_views.xml rename to yuthon_notice/views/yuthon_notice_views.xml index e46dcb3c5..fd602f1d3 100644 --- a/yuthon_notice/views/yuthon_ntice_views.xml +++ b/yuthon_notice/views/yuthon_notice_views.xml @@ -7,9 +7,9 @@ - - - + + + @@ -110,9 +110,9 @@ - - - + + + 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 d68c84910..b5a5a261b 100644 --- a/yuthon_res_partner/models/yuthon_res_partner.py +++ b/yuthon_res_partner/models/yuthon_res_partner.py @@ -9,7 +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="身份证") tenant_scope = fields.Char(string="经营范围") @@ -21,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 f250fef9e..da4edee9c 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. -

-
+
- + \ 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 6c06b5b7d..c62024201 100644 --- a/yuthon_res_partner/views/yuthon_res_partner_views.xml +++ b/yuthon_res_partner/views/yuthon_res_partner_views.xml @@ -5,43 +5,47 @@ res.partner + + + + + + + + + - + + + + + + + + + + + yuthon.res.partner.views.tree + res.partner + + + + + + + + + + - - - - - - yuthon.res.partner.views.tree - res.partner - - - - - - - - - - - - - - - - - - - - +
\ No newline at end of file