Resolved merge conflicts
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
<field name="res_model" column_invisible="True"/>
|
||||
<field name="res_id" column_invisible="True"/>
|
||||
<field name="approval_user_id"/>
|
||||
<field name="approval_user"/>
|
||||
<!-- <field name="approval_user"/>-->
|
||||
<field name="approval_notice_state" widget="badge" decoration-danger="approval_notice_state == '2'" decoration-info="approval_notice_state == '0'" decoration-success="approval_notice_state == '1'"/>
|
||||
<field name="approval_user_datetime"/>
|
||||
<field name="approval_user_notice"/>
|
||||
<field name="approval_user_sign" widget="image" options='{"size": [80, 40]}'/>
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
<group>
|
||||
<field name="action_type" required="1"/>
|
||||
</group>
|
||||
<group name="link" invisible="action_type != 'link'">
|
||||
<group name="link" invisible="action_type not in ['link', 'link_action', 'link_action_approve', 'link_action_refuse']">
|
||||
<field name="link_id"
|
||||
domain="[('node_from','=',node_id)]"
|
||||
options="{'no_open': True, 'no_create': True}"
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import api, fields, models, tools, _
|
||||
from datetime import datetime, date, time, timedelta
|
||||
from odoo.tools.safe_eval import safe_eval
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class SoongApprovalNoticeWizard(models.TransientModel):
|
||||
_name = 'soong.approval.notice.wizard'
|
||||
@@ -8,7 +13,11 @@ class SoongApprovalNoticeWizard(models.TransientModel):
|
||||
|
||||
# approval_res_id = fields.Char(string="审批明细行")
|
||||
# approval_res_model = fields.Char(string="审批明细行")
|
||||
|
||||
approval_notice_state = fields.Selection([
|
||||
('0', '不分类'),
|
||||
('1', '审批通过'),
|
||||
('2', '审批拒绝'),
|
||||
], string='意见类型', default='0')
|
||||
approval_user_notice = fields.Char(string='审批意见')
|
||||
approval_user_sign = fields.Binary(string="审批签署", copy=False)
|
||||
|
||||
@@ -23,4 +32,9 @@ class SoongApprovalNoticeWizard(models.TransientModel):
|
||||
'approval_user_id': self.env.user.id,
|
||||
'approval_user_datetime': fields.datetime.now(),
|
||||
'approval_user_sign': self.approval_user_sign,
|
||||
'approval_notice_state': self.approval_notice_state,
|
||||
})
|
||||
wkf_btn_obj = self.env["soong.workflow.node.button"]
|
||||
btn_rec = wkf_btn_obj.search([("btn_key", "=", self.env.context.get("btn_key", False))])
|
||||
if btn_rec:
|
||||
btn_rec.link_id.trigger_link()
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
<field name="model">soong.approval.notice.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<!-- <field name="approval_res_id" invisible="1"/>-->
|
||||
<!-- <field name="approval_res_model" invisible="1"/>-->
|
||||
<field name="approval_notice_state" invisible="1"/>
|
||||
<group>
|
||||
<field name="approval_user_notice"/>
|
||||
</group>
|
||||
@@ -23,12 +22,30 @@
|
||||
<field name="name">审批意见弹窗</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">soong.approval.notice.wizard</field>
|
||||
<!-- <field name="context">{-->
|
||||
<!-- 'default_approval_res_id': active_id,-->
|
||||
<!-- 'default_approval_res_model': active_model,-->
|
||||
<!-- }-->
|
||||
<!-- </field>-->
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">
|
||||
{"default_approval_notice_state": '0'}
|
||||
</field>
|
||||
</record>
|
||||
<record id="soong_approval_approve_notice_wizard_action" model="ir.actions.act_window">
|
||||
<field name="name">审批通过弹窗</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">soong.approval.notice.wizard</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">
|
||||
{"default_approval_notice_state": '1'}
|
||||
</field>
|
||||
</record>
|
||||
<record id="soong_approval_refuse_notice_wizard_action" model="ir.actions.act_window">
|
||||
<field name="name">审批拒绝弹窗</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">soong.approval.notice.wizard</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">
|
||||
{"default_approval_notice_state": '2'}
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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="议题")
|
||||
@@ -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="议题")
|
||||
@@ -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="议题")
|
||||
@@ -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="紧急度")
|
||||
|
||||
@@ -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='子集')
|
||||
@@ -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='说明')
|
||||
@@ -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
|
||||
|
||||
|
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_issue_approval_boss_tree" model="ir.ui.view">
|
||||
<field name="name">issue.approval.boss.tree</field>
|
||||
<field name="model">issue.approval.boss</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="议题审批">
|
||||
<field name="name"/>
|
||||
<field name="create_time"/>
|
||||
<field name="company_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_issue_approval_boss_form" model="ir.ui.view">
|
||||
<field name="name">issue.approval.boss.form</field>
|
||||
<field name="model">issue.approval.boss</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="议题审批">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="note"/>
|
||||
<field name="user_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="create_time"/>
|
||||
<field name="documents_ids">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_id"/>
|
||||
<field name="issue_library_ids">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="issue_text" widget="tinymce"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_approval_boss_action" model="ir.actions.act_window">
|
||||
<field name="name">党总支议题审批</field>
|
||||
<field name="res_model">issue.approval.boss</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<!-- <field name="search_view_id" ref="view_issue_approval_filter"/>-->
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="issue_approval_boss_menu"
|
||||
parent="issue_approval_menu"
|
||||
name="董事会议题审批"
|
||||
action="issue_approval_boss_action"
|
||||
sequence="30"/>
|
||||
</odoo>
|
||||
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_issue_approval_class_tree" model="ir.ui.view">
|
||||
<field name="name">issue.approval.class.tree</field>
|
||||
<field name="model">issue.approval.class</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="议题审批">
|
||||
<field name="name"/>
|
||||
<field name="create_time"/>
|
||||
<field name="company_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_issue_approval_class_form" model="ir.ui.view">
|
||||
<field name="name">issue.approval.class.form</field>
|
||||
<field name="model">issue.approval.class</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="议题审批">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="note"/>
|
||||
<field name="user_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="create_time"/>
|
||||
<field name="documents_ids">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_id"/>
|
||||
<field name="issue_library_ids">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="issue_text" widget="tinymce"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_approval_class_action" model="ir.actions.act_window">
|
||||
<field name="name">党总支议题审批</field>
|
||||
<field name="res_model">issue.approval.class</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<!-- <field name="search_view_id" ref="view_issue_approval_filter"/>-->
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="issue_approval_class_menu"
|
||||
parent="issue_approval_menu"
|
||||
name="领导班子议题审批"
|
||||
action="issue_approval_class_action"
|
||||
sequence="20"/>
|
||||
</odoo>
|
||||
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_issue_approval_party_tree" model="ir.ui.view">
|
||||
<field name="name">issue.approval.party.tree</field>
|
||||
<field name="model">issue.approval.party</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="议题审批">
|
||||
<field name="name"/>
|
||||
<field name="create_time"/>
|
||||
<field name="company_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_issue_approval_party_form" model="ir.ui.view">
|
||||
<field name="name">issue.approval.party.form</field>
|
||||
<field name="model">issue.approval.party</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="议题审批">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<label for="name"/>
|
||||
<h1>
|
||||
<field name="name" required="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="note"/>
|
||||
<field name="user_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="create_time"/>
|
||||
<field name="documents_ids">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_id"/>
|
||||
<field name="issue_library_ids">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="issue_text" widget="tinymce"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="o_attachment_preview"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_approval_party_action" model="ir.actions.act_window">
|
||||
<field name="name">党总支议题审批</field>
|
||||
<field name="res_model">issue.approval.party</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<!-- <field name="search_view_id" ref="view_issue_approval_filter"/>-->
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="issue_approval_party_menu"
|
||||
parent="issue_approval_menu"
|
||||
name="党总支议题审批"
|
||||
action="issue_approval_party_action"
|
||||
sequence="10"/>
|
||||
</odoo>
|
||||
@@ -10,7 +10,6 @@
|
||||
decoration-muted="statu == 'cancel'">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="issue_id"/>
|
||||
<field name="is_party"/>
|
||||
<field name="is_class"/>
|
||||
<field name="is_boss"/>
|
||||
@@ -41,8 +40,6 @@
|
||||
<group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="issue_id"/>
|
||||
<field name="issue_ids" invisible="1"/>
|
||||
<field name="first_party"/>
|
||||
<field name="first_b"/>
|
||||
<field name="employee_person"/>
|
||||
@@ -104,7 +101,7 @@
|
||||
<filter name="group_manager" string="会议状态" domain="[]" context="{'group_by': 'statu'}"/>
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="issue_id" string="议题" enable_counters="1"/>
|
||||
<field name="issue_type_id" string="议题类别" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
@@ -137,4 +134,10 @@
|
||||
name="议题库"
|
||||
action="issue_library_action"
|
||||
sequence="5"/>
|
||||
<menuitem
|
||||
id="issue_approval_menu"
|
||||
parent="tianhe_issue_library_menu_root"
|
||||
name="议题审批"
|
||||
action="issue_library_action"
|
||||
sequence="10"/>
|
||||
</odoo>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_issue_lv_tree" model="ir.ui.view">
|
||||
<field name="name">issue.lv.tree</field>
|
||||
<field name="model">issue.lv</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="child_ids" column_invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_lv_action" model="ir.actions.act_window">
|
||||
<field name="name">议题库</field>
|
||||
<field name="res_model">issue.lv</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<!-- <menuitem-->
|
||||
<!-- id="tianhe_issue_lv_menu"-->
|
||||
<!-- parent="tianhe_issue_library_menu_root"-->
|
||||
<!-- name="议题层级管理"-->
|
||||
<!-- action="issue_lv_action"-->
|
||||
<!-- sequence="7"/>-->
|
||||
</odoo>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_issue_type_tree" model="ir.ui.view">
|
||||
<field name="name">issue.type.tree</field>
|
||||
<field name="model">issue.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="note"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="issue_type_action" model="ir.actions.act_window">
|
||||
<field name="name">议题库</field>
|
||||
<field name="res_model">issue.type</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="tianhe_issue_type_menu"
|
||||
parent="tianhe_issue_library_menu_root"
|
||||
name="议题类别管理"
|
||||
action="issue_type_action"
|
||||
sequence="5"/>
|
||||
</odoo>
|
||||
@@ -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',
|
||||
],
|
||||
|
||||
+6
-6
@@ -7,9 +7,9 @@
|
||||
<tree string="公告管理">
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
<field name="department_ids" optional="hidden"/>
|
||||
<field name="employee_ids" optional="hidden"/>
|
||||
<field name="users_role_ids" optional="hidden"/>
|
||||
<field name="department_ids" optional="hidden" widget="many2many_tags"/>
|
||||
<field name="employee_ids" optional="hidden" widget="many2many_tags"/>
|
||||
<field name="users_role_ids" optional="hidden" widget="many2many_tags"/>
|
||||
<field name="notice_type_id"/>
|
||||
<field name="create_date"/>
|
||||
<field name="start_date"/>
|
||||
@@ -110,9 +110,9 @@
|
||||
<tree string="公告管理">
|
||||
<field name="name"/>
|
||||
<field name="user_id"/>
|
||||
<field name="department_ids" optional="hidden"/>
|
||||
<field name="employee_ids" optional="hidden"/>
|
||||
<field name="users_role_ids" optional="hidden"/>
|
||||
<field name="department_ids" optional="hidden" widget="many2many_tags"/>
|
||||
<field name="employee_ids" optional="hidden" widget="many2many_tags"/>
|
||||
<field name="users_role_ids" optional="hidden" widget="many2many_tags"/>
|
||||
<field name="notice_type_id"/>
|
||||
<field name="create_date"/>
|
||||
<field name="start_date"/>
|
||||
@@ -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,
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
"name","note"
|
||||
"商务服务业","",
|
||||
"贸易","",
|
||||
"餐饮","",
|
||||
"科技","",
|
||||
"咨询","",
|
||||
"酒店","",
|
||||
"批发业","",
|
||||
"专业技术服务业","",
|
||||
"研究和试验发展","",
|
||||
"培训","",
|
||||
"信息技术","",
|
||||
"个人","",
|
||||
"制造业","",
|
||||
"建筑业","",
|
||||
"医疗卫生","",
|
||||
"零售业","",
|
||||
"住宿业","",
|
||||
"居民服务业","",
|
||||
"货币金融服务","",
|
||||
"建筑安装业","",
|
||||
"文化艺术业","",
|
||||
"卫生","",
|
||||
"社会工作","",
|
||||
"电气机械和器材制造业","",
|
||||
"音乐、美术、舞蹈培训","",
|
||||
"科技推广和应用服务业","",
|
||||
"橡胶和塑料制品业","",
|
||||
"通用设备制造业","",
|
||||
"建筑装饰、装修和其他建筑业","",
|
||||
"计算机、通信和其他电子设备制造业","",
|
||||
"房地产业","",
|
||||
"教育","",
|
||||
"纺织品、针织品及原料批发","",
|
||||
"建筑装饰和装修业","",
|
||||
"信息技术咨询服务","",
|
||||
"房地产中介服务","",
|
||||
"汽车修理与维护","",
|
||||
"化学原料和化学制品制造业","",
|
||||
"基他服务业","",
|
||||
"工程和技术研究和试验发展","",
|
||||
"电阳电容电感元件制造","",
|
||||
"其他未列明信息技术服务业","",
|
||||
"公共设施管理业","",
|
||||
"咨询与调查","",
|
||||
"其他专用设备制造","",
|
||||
"信息传输、软件和信息技术服务业","",
|
||||
"软件开发","",
|
||||
"其他科技推广服务业","",
|
||||
"其他未列明专业技术服务业","",
|
||||
"法律服务","",
|
||||
"其他制造业","",
|
||||
|
@@ -1,3 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import yuthon_res_partner
|
||||
from . import tenant_industry
|
||||
|
||||
@@ -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="说明")
|
||||
@@ -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='行业')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -7,14 +7,6 @@
|
||||
<field name="search_view_id" ref="base.view_res_partner_filter"/>
|
||||
<field name="context">{'default_is_company': True}</field>
|
||||
<field name="domain">[('partner_type', '=', 'company')]</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a Contact in your address book
|
||||
</p>
|
||||
<p>
|
||||
Odoo helps you track all activities related to your contacts.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_employee" model="ir.actions.act_window">
|
||||
<field name="name">员工</field>
|
||||
@@ -23,14 +15,6 @@
|
||||
<field name="search_view_id" ref="base.view_res_partner_filter"/>
|
||||
<field name="domain">[('partner_type', '=', 'employee')]</field>
|
||||
<field name="context">{'default_is_company': True}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a Contact in your address book
|
||||
</p>
|
||||
<p>
|
||||
Odoo helps you track all activities related to your contacts.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_tenant" model="ir.actions.act_window">
|
||||
<field name="name">承租方</field>
|
||||
@@ -39,14 +23,8 @@
|
||||
<field name="search_view_id" ref="base.view_res_partner_filter"/>
|
||||
<field name="domain">[('partner_type', '=', 'tenant')]</field>
|
||||
<field name="context">{'default_is_company': True}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a Contact in your address book
|
||||
</p>
|
||||
<p>
|
||||
Odoo helps you track all activities related to your contacts.
|
||||
</p>
|
||||
</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_res_partner.yuthon_res_partner_views_tree2')})]"/>
|
||||
</record>
|
||||
|
||||
<menuitem id="res_partner_menu_company"
|
||||
@@ -60,10 +38,14 @@
|
||||
action="action_employee"
|
||||
parent="contacts.res_partner_menu_contacts"
|
||||
sequence="3"/>
|
||||
|
||||
<menuitem id="res_partner_menu_tenant"
|
||||
name="承租方"
|
||||
action="action_tenant"
|
||||
parent="contacts.res_partner_menu_contacts"
|
||||
sequence="7"/>
|
||||
<menuitem id="res_partner_menu_tenant_industry"
|
||||
name="承租方行业"
|
||||
action="res_partner_window_tenant_industry"
|
||||
parent="contacts.res_partner_menu_config"
|
||||
sequence="4"/>
|
||||
</odoo>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="res_partner_tenant_industry_tree" model="ir.ui.view">
|
||||
<field name="name">tenant.industry.tree</field>
|
||||
<field name="model">tenant.industry</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="note"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_window_tenant_industry" model="ir.actions.act_window">
|
||||
<field name="name">承租方行业</field>
|
||||
<field name="res_model">tenant.industry</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -5,43 +5,47 @@
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='category_id']" position="after">
|
||||
<field name="juridical_person" invisible="partner_type != 'tenant'"/>
|
||||
<field name="billing_type" invisible="partner_type != 'tenant'"/>
|
||||
<field name="tenant_start_time" invisible="partner_type != 'tenant'"/>
|
||||
<field name="tenant_end_time" invisible="partner_type != 'tenant'"/>
|
||||
<field name="partner_type2" invisible="partner_type != 'tenant'"/>
|
||||
<field name="is_new" invisible="partner_type != 'tenant'"/>
|
||||
<field name="tenant_industry" invisible="partner_type != 'tenant'"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='vat']" position="after">
|
||||
<field name="partner_type"/>
|
||||
<field name="tenant_type"/>
|
||||
<field name="tenant_name" invisible="partner_type != 'tenant'"/>
|
||||
<field name="tenant_user_card" invisible="partner_type != 'tenant'"/>
|
||||
<field name="tenant_scope" invisible="partner_type != 'tenant'"/>
|
||||
<field name="billing_name" invisible="partner_type != 'tenant'"/>
|
||||
<field name="cell_phone" invisible="partner_type != 'tenant'"/>
|
||||
<field name="tax_number" invisible="partner_type != 'tenant'"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_res_partner_views_tree2" model="ir.ui.view">
|
||||
<field name="name">yuthon.res.partner.views.tree</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="承租方" sample="1" multi_edit="1">
|
||||
<field name="tenant_name"/>
|
||||
<field name="partner_type2"/>
|
||||
<field name="juridical_person"/>
|
||||
<field name="partner_name"/>
|
||||
<field name="tenant_user_card"/>
|
||||
<field name="mobile" widget="phone"/>
|
||||
<field name="cell_phone"/>
|
||||
<field name="email"/>
|
||||
<field name="tenant_scope"/>
|
||||
<field name="partner_address"/>
|
||||
<field name="billing_name"/>
|
||||
<field name="tax_number"/>
|
||||
<field name="billing_type"/>
|
||||
<field name="tenant_start_time"/>
|
||||
<field name="tenant_end_time"/>
|
||||
<field name="is_new"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="yuthon_res_partner_views_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.res.partner.views.tree</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//tree" position="replace">
|
||||
<tree string="承租方" sample="1" multi_edit="1">
|
||||
<field name="display_name"/>
|
||||
<field name="vat"/>
|
||||
<field name="billing_type"/>
|
||||
<field name="partner_name"/>
|
||||
<field name="tenant_user_card"/>
|
||||
<field name="mobile" widget="phone"/>
|
||||
<field name="phone" widget="phone"/>
|
||||
<field name="email"/>
|
||||
<field name="tenant_scope"/>
|
||||
<field name="partner_address"/>
|
||||
<field name="juridical_person"/>
|
||||
<field name="partner_type2"/>
|
||||
<field name="tenant_start_time"/>
|
||||
<field name="tenant_end_time"/>
|
||||
</tree>
|
||||
</xpath>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user