This commit is contained in:
李鹏宇
2026-01-20 17:25:46 +08:00
15 changed files with 348 additions and 219 deletions
+16 -16
View File
@@ -97,22 +97,22 @@ class RoomBooking(models.Model):
self.room_users_ids = [(5, 0, 0)]
self.host = False
@api.model_create_multi
def create(self, vals_list):
bookings = super(RoomBooking, self).create(vals_list)
for room, bookings in bookings.grouped("room_id").items():
room._notify_booking_view("create", bookings)
data = vals_list[0]
if data.get('partner_ids'):
self.env['calendar.event'].create({
'name': data['name'],
'start': data['start_datetime'],
'stop': data['stop_datetime'],
'partner_ids': data['partner_ids'],
'sth_type': 'meet',
'room_booking_id': bookings.id,
})
return bookings
# @api.model_create_multi
# def create(self, vals_list):
# bookings = super(RoomBooking, self).create(vals_list)
# for room, bookings in bookings.grouped("room_id").items():
# room._notify_booking_view("create", bookings)
# data = vals_list[0]
# if data.get('partner_ids'):
# self.env['calendar.event'].create({
# 'name': data['name'],
# 'start': data['start_datetime'],
# 'stop': data['stop_datetime'],
# 'partner_ids': data['partner_ids'],
# 'sth_type': 'meet',
# 'room_booking_id': bookings.id,
# })
# return bookings
@api.onchange('room_id')
def onchange_meeting_data(self):
@@ -110,15 +110,15 @@ class SoongWorkflowMixin(models.AbstractModel):
next_log = all_sorted_logs[current_log_index + 1]
if next_log.approval_state == "0":
record.is_back = True
if record._name in ['yuthon.official.incoming.normal', 'yuthon.sub.enterprises']:
current_user_in_logs2 = any(log.done_by.id == self.env.uid for log in record.log_ids2)
organizer_user_in_logs = any(log.done_by.id == self.env.user.id for log in record.log_ids.filtered(lambda l: l.name == '承办'))
all_handling_logs_approval_0 = all(log.approval_state == '0' for log in record.log_ids.filtered(lambda l: l.name == '承办'))
all_logs2_approval_0 = all(log.approval_state == '0' for log in record.log_ids2)
if all_logs2_approval_0 and all_handling_logs_approval_0 and not current_user_in_logs2 and not organizer_user_in_logs:
record.is_back = True
else:
record.is_back = False
if record._name in ['yuthon.official.incoming.normal', 'yuthon.sub.enterprises']:
current_user_in_logs2 = any(log.done_by.id == self.env.uid for log in record.log_ids2)
organizer_user_in_logs = any(log.done_by.id == self.env.user.id for log in record.log_ids.filtered(lambda l: l.name == '承办'))
all_handling_logs_approval_0 = all(log.approval_state == '0' for log in record.log_ids.filtered(lambda l: l.name == '承办'))
all_logs2_approval_0 = all(log.approval_state == '0' for log in record.log_ids2)
if all_logs2_approval_0 and all_handling_logs_approval_0 and not current_user_in_logs2 and not organizer_user_in_logs:
record.is_back = True
else:
record.is_back = False
def _compute_is_active(self):
current_user_id = self.env.user.id
+94 -59
View File
@@ -17,21 +17,26 @@
<field name="workflow_id" string="审批类型"/>
<field name="text" optional="hide"/>
<field name="documents_ids" optional="hide"/>
<filter name="is_start" string="草稿" domain="[('approve_state', '=', 'start')]" />
<filter name="is_to_do" string="待办" domain="[('soong_state', '=', 'to_do')]"/>
<filter name="is_start" string="草稿" domain="[('approve_state', '=', 'start')]"/>
<filter name="is_to_do" string="待办" domain="[('soong_state', '=', 'to_do')]"/>
<group expand="0" string="审批分组">
<filter string="误餐费" name='group_by_meal' context="{'group_by':'meal'}"/>
<filter string="审批类型分组" name='group_by_approvals_group_id' context="{'group_by':'approvals_group_id'}"/>
<filter string="审批类型分组" name='group_by_approvals_group_id'
context="{'group_by':'approvals_group_id'}"/>
<filter string="状态" name="group_soong_state" context="{'group_by':'soong_state'}"/>
</group>
<header_search>
<quick_filter string="状态">
<filter string="草稿" name="approve_state" domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'start')]" />
<filter string="待办" name="to_do" domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'pending'), ('employee_ids.user_id', '=', uid)]" />
<filter string="已办" name="done" domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'pending'), ('employee_ids.user_id', '!=', uid)]"/>
<filter string="结束" name="end" domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'end')]"/>
</quick_filter>
</header_search>
<quick_filter string="状态">
<filter string="草稿" name="approve_state"
domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'start')]"/>
<filter string="待办" name="to_do"
domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'pending'), ('employee_ids.user_id', '=', uid)]"/>
<filter string="已办" name="done"
domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'pending'), ('employee_ids.user_id', '!=', uid)]"/>
<filter string="结束" name="end"
domain="[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('approve_state', '=', 'end')]"/>
</quick_filter>
</header_search>
<searchpanel>
<field name="workflow_id" string="审批类型" enable_counters="1"/>
</searchpanel>
@@ -57,16 +62,17 @@
<filter string="审批状态" name='group_by_approve_state' context="{'group_by':'approve_state'}"/>
<filter string="审批类型" name='group_by_workflow_id' context="{'group_by':'workflow_id'}"/>
<filter string="误餐费" name='group_by_meal' context="{'group_by':'meal'}"/>
<filter string="审批类型分组" name='group_by_approvals_group_id' context="{'group_by':'approvals_group_id'}"/>
<filter string="审批类型分组" name='group_by_approvals_group_id'
context="{'group_by':'approvals_group_id'}"/>
<filter string="状态" name="group_soong_state" context="{'group_by':'soong_state'}"/>
</group>
<header_search class="header-search-inline">
<field name="workflow_id" string="审批类型"/>
<header_search class="header-search-inline">
<!-- <field name="workflow_id" string="审批类型"/>-->
<field name="name"/>
<field name="code"/>
<field name="employee_ids" string="当前经办人"/>
<field name="create_uid" string="创建人"/>
</header_search>
</header_search>
<searchpanel>
<field name="workflow_id" string="审批类型" enable_counters="1"/>
</searchpanel>
@@ -81,13 +87,16 @@
decoration-danger="approve_state == 'end'" delete="false"
create="false" default_order="write_date2 desc, id desc" expand="1" limit="10">
<header>
<button name="admin_end" type="object" string="管理员强制结束" class="oe_highlight" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="oe_highlight" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="admin_end" type="object" string="管理员强制结束" class="oe_highlight"
groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="oe_highlight"
groups="soong_workflow.group_soong_workflow_manager"/>
</header>
<field name="code"/>
<field name="workflow_id" string="审批类型"/>
<field name="workflow_id" string="审批类型"/>
<field name="name"/>
<field name="approve_state" string="审批状态" widget="badge" decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="approve_state" string="审批状态" widget="badge"
decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="create_uid"/>
<field name="employee_ids" widget="many2many_tags" string="当前经办人" class="list_ids_width"/>
<field name="soong_state"/>
@@ -104,10 +113,13 @@
<field name="is_manager" column_invisible="1"/>
<field name="meal" column_invisible="1"/>
<field name="workflow_happen_date" string="发生日期" column_invisible="1"/>
<button name="backend" type="object" string="后台" class="btn-primary" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="btn-primary" confirm="你确定要删除吗?" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="backend" type="object" string="后台" class="btn-primary"
groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="btn-primary"
confirm="你确定要删除吗?" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="reminders_record" type="object" string="催办" class="btn-primary"
groups="soong_workflow.group_soong_workflow_manager" invisible="approve_state in ['start', 'end']"/>
groups="soong_workflow.group_soong_workflow_manager"
invisible="approve_state in ['start', 'end']"/>
<button name="revoke_record" type="object" string="撤销" class="btn-primary"
groups="soong_workflow.group_soong_workflow_manager"/>
<button name="log" type="object" string="日志" class="btn-primary"
@@ -167,21 +179,26 @@
decoration-danger="approve_state == 'end'" delete="false"
create="false" default_order="write_date2 desc, id desc" expand="1" limit="10">
<header>
<button name="admin_end" type="object" string="管理员强制结束" class="oe_highlight" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="oe_highlight" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="admin_end" type="object" string="管理员强制结束" class="oe_highlight"
groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="oe_highlight"
groups="soong_workflow.group_soong_workflow_manager"/>
</header>
<field name="code"/>
<field name="workflow_id" string="审批类型"/>
<field name="name"/>
<field name="approve_state" string="审批状态" widget="badge" decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="approve_state" string="审批状态" widget="badge"
decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="create_uid"/>
<field name="employee_ids" widget="many2many_tags" string="当前经办人" class="list_ids_width"/>
<field name="soong_state"/>
<field name="is_manager" column_invisible="1"/>
<field name="is_unlink" column_invisible="1"/>
<button name="delete_record" type="object" string="删除" class="btn-primary" confirm="你确定要删除吗?"
invisible="not is_unlink"/>
<button name="reminders_record" type="object" string="催办" class="btn-primary" invisible="soong_state != 'done' or create_uid != uid or approve_state == 'end'"/>
<button name="delete_record" type="object" string="删除" class="btn-primary"
confirm="你确定要删除吗?"
invisible="not is_unlink"/>
<button name="reminders_record" type="object" string="催办" class="btn-primary"
invisible="soong_state != 'done' or create_uid != uid or approve_state == 'end'"/>
<button name="revoke_record" type="object" string="撤销" class="btn-primary"
groups="soong_workflow.group_soong_workflow_manager"/>
</tree>
@@ -198,13 +215,15 @@
<field name="code"/>
<field name="workflow_id" string="审批类型"/>
<field name="name"/>
<field name="approve_state" string="审批状态" widget="badge" decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="approve_state" string="审批状态" widget="badge"
decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="create_uid"/>
<field name="employee_ids" widget="many2many_tags" string="当前经办人" class="list_ids_width"/>
<field name="soong_state"/>
<field name="is_manager" column_invisible="1"/>
<field name="is_log2" column_invisible="1"/>
<button name="greater_record" type="object" string="更多" class="btn-primary" invisible="not is_log2"/>
<button name="greater_record" type="object" string="更多" class="btn-primary"
invisible="not is_log2"/>
</tree>
</field>
</record>
@@ -216,13 +235,16 @@
decoration-danger="approve_state == 'end'" delete="false"
create="false" default_order="write_date2 desc, id desc" expand="1" limit="10">
<header>
<button name="admin_end" type="object" string="管理员强制结束" class="oe_highlight" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="oe_highlight" groups="soong_workflow.group_soong_workflow_manager"/>
<button name="admin_end" type="object" string="管理员强制结束" class="oe_highlight"
groups="soong_workflow.group_soong_workflow_manager"/>
<button name="delete_record" type="object" string="删除" class="oe_highlight"
groups="soong_workflow.group_soong_workflow_manager"/>
</header>
<field name="code"/>
<field name="workflow_id" string="审批类型"/>
<field name="name"/>
<field name="approve_state" string="审批状态" widget="badge" decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="approve_state" string="审批状态" widget="badge"
decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="create_uid"/>
<field name="employee_ids" widget="many2many_tags" string="当前经办人" class="list_ids_width"/>
<field name="soong_state"/>
@@ -276,7 +298,7 @@
<field name="arch" type="xml">
<tree string="工作流回收站" action="open_record" type="object"
decoration-muted="approve_state == 'end'" decoration-warning="approve_state != 'end'"
create="false" default_order="write_date2 desc" limit="10">
create="false" default_order="write_date2 desc" limit="10">
<field name="name"/>
<field name="workflow_id" string="审批类型"/>
<field name="node_id" string="当前节点"/>
@@ -293,24 +315,27 @@
</tree>
</field>
</record>
<!-- <record id="soong_workflow_record_my_action" model="ir.actions.act_window">-->
<!-- <field name="name">我的流程</field>-->
<!-- <field name="type">ir.actions.act_window</field>-->
<!-- <field name="res_model">soong.workflow.record</field>-->
<!-- <field name="view_mode">tree,kanban,search</field>-->
<!--&lt;!&ndash; <field name="context">{'check_employee': 1, 'search_default_is_start':1, 'search_default_is_to_do':1}</field>&ndash;&gt;-->
<!-- <field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1, 'check_employee': 1}</field>-->
<!-- <field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False)]</field>-->
<!-- <field name="search_view_id" ref="soong_workflow_record_search"/>-->
<!-- <field name="view_id" ref="soong_workflow_record_my_tree"/>-->
<!-- </record>-->
<!-- <record id="soong_workflow_record_my_action" model="ir.actions.act_window">-->
<!-- <field name="name">我的流程</field>-->
<!-- <field name="type">ir.actions.act_window</field>-->
<!-- <field name="res_model">soong.workflow.record</field>-->
<!-- <field name="view_mode">tree,kanban,search</field>-->
<!--&lt;!&ndash; <field name="context">{'check_employee': 1, 'search_default_is_start':1, 'search_default_is_to_do':1}</field>&ndash;&gt;-->
<!-- <field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1, 'check_employee': 1}</field>-->
<!-- <field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False)]</field>-->
<!-- <field name="search_view_id" ref="soong_workflow_record_search"/>-->
<!-- <field name="view_id" ref="soong_workflow_record_my_tree"/>-->
<!-- </record>-->
<record id="soong_workflow_record_is_logs_action" model="ir.actions.act_window">
<field name="name">抄送流程</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1, 'check_employee': 1}</field>
<field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('is_log2', '=', True)]</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1,
'check_employee': 1}
</field>
<field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('is_log2', '=', True)]
</field>
<field name="search_view_id" ref="soong_workflow_record_search1"/>
<field name="view_id" ref="soong_workflow_record_log2_tree"/>
</record>
@@ -319,7 +344,9 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1, 'check_employee': 1}</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1,
'check_employee': 1}
</field>
<field name="domain">[('is_to_do', '=', True)]</field>
<field name="search_view_id" ref="soong_workflow_record_search1"/>
<field name="view_id" ref="soong_workflow_record_my_tree"/>
@@ -329,8 +356,12 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1, 'check_employee': 1}</field>
<field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('soong_state', 'in', ['done', 'active'])]</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1,
'check_employee': 1}
</field>
<field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('soong_state', 'in',
['done', 'active'])]
</field>
<field name="search_view_id" ref="soong_workflow_record_search1"/>
<field name="view_id" ref="soong_workflow_record_my_tree"/>
</record>
@@ -349,7 +380,9 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="domain">[('reclaim_state', '=', False), '|', ('approvals_group_id.name', '=', '人力资源'), ('approvals_group_id.name', '=', '考勤'), ('approve_state', '!=', 'start')]</field>
<field name="domain">[('reclaim_state', '=', False), '|', ('approvals_group_id.name', '=', '人力资源'),
('approvals_group_id.name', '=', '考勤'), ('approve_state', '!=', 'start')]
</field>
<field name="search_view_id" ref="soong_workflow_record_search"/>
</record>
<record id="soong_workflow_other_record_action" model="ir.actions.act_window">
@@ -357,7 +390,9 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="domain">[('reclaim_state', '=', False), ('approvals_group_id.name', '!=', '人力资源'), ('approvals_group_id.name', '!=', '考勤')]</field>
<field name="domain">[('reclaim_state', '=', False), ('approvals_group_id.name', '!=', '人力资源'),
('approvals_group_id.name', '!=', '考勤')]
</field>
<field name="context">{'search_default_my_department_shifts': True,}</field>
<field name="search_view_id" ref="soong_workflow_record_search1"/>
</record>
@@ -366,7 +401,7 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,form,search</field>
<!-- <field name="context">{'search_default_group_by_group_soong_state': True, 'search_default_group_by_workflow_id': True}</field>-->
<!-- <field name="context">{'search_default_group_by_group_soong_state': True, 'search_default_group_by_workflow_id': True}</field>-->
<field name="domain">[('reclaim_state', '=', False)]</field>
<field name="search_view_id" ref="soong_workflow_record_search1"/>
<field name="view_id" ref="soong_workflow_record_tree"/>
@@ -413,11 +448,11 @@
<field name="state">code</field>
<field name="code">action = model.append_date()</field>
</record>
<!-- <record id="all_holiday_update_self_users_ids" model="ir.actions.server">-->
<!-- <field name="name">一次性</field>-->
<!-- <field name="model_id" ref="soong_workflow.model_soong_workflow_record"/>-->
<!-- <field name="binding_model_id" ref="soong_workflow.model_soong_workflow_record"/>-->
<!-- <field name="state">code</field>-->
<!-- <field name="code">action = model.update_self_users_ids()</field>-->
<!-- </record>-->
<!-- <record id="all_holiday_update_self_users_ids" model="ir.actions.server">-->
<!-- <field name="name">一次性</field>-->
<!-- <field name="model_id" ref="soong_workflow.model_soong_workflow_record"/>-->
<!-- <field name="binding_model_id" ref="soong_workflow.model_soong_workflow_record"/>-->
<!-- <field name="state">code</field>-->
<!-- <field name="code">action = model.update_self_users_ids()</field>-->
<!-- </record>-->
</odoo>
@@ -574,13 +574,13 @@ class SoongWorkflowCommentWizard(models.TransientModel):
user_log2.write({
'commit': self.comment,
'approval_state': "2",
'lase_click_date': current_datetime + timedelta(hours=8),
'lase_click_date': current_datetime,
})
if user_log1:
user_log1.write({
'comment': self.comment,
'approval_state': "2",
'lase_click_date': current_datetime + timedelta(hours=8),
'lase_click_date': current_datetime,
})
for employee in self.circulated_employee_ids:
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
@@ -13,7 +13,7 @@ class IssueApprovalDecision(models.Model):
specifics = fields.Text(string='具体事项')
by_law = fields.Selection([('yes', '是'), ('no', '否')], string='是否经过法律审核')
is_filing = fields.Selection([('yes', '备'), ('no', '否')], string='是否备案')
council_id = fields.Many2one('issue.library.type', string='党总委员会')
council_id = fields.Many2one('issue.library.type', string='党总支')
team_meet_id = fields.Many2one('issue.library.type', string='经营班子会')
board_meet_id = fields.Many2one('issue.library.type', string='董事会')
district_state_id = fields.Many2one('issue.library.type', string="区国资局",)
+3 -2
View File
@@ -29,8 +29,9 @@ class IssueBossApproval(models.Model):
for record in self:
if record.line_ids:
for line in record.line_ids:
line.issue_state = 'will'
if line.issue_id.is_state_updated == False:
line.issue_id.is_state_updated = True
line.issue_id.issue_state = 'will'
class IssueBossApprovalLine(models.Model):
_name = 'issue.boss.approval.line'
+3 -1
View File
@@ -29,7 +29,9 @@ class IssueClassApproval(models.Model):
for record in self:
if record.line_ids:
for line in record.line_ids:
line.issue_state = 'will'
if line.issue_id.is_state_updated == False:
line.issue_id.is_state_updated = True
line.issue_id.issue_state = 'will'
class IssueClassApprovalLine(models.Model):
_name = 'issue.class.approval.line'
+42 -5
View File
@@ -75,6 +75,8 @@ class IssueLibrary(models.Model):
is_push_boss = fields.Boolean(string="董事推送")
is_push_depart = fields.Boolean(string="部门推送")
is_state_updated = fields.Boolean(string='状态是否已更新', default=False)
def issue_party_approval(self):
issue_active_ids = self.env["issue.library"].browse(
self._context.get('active_ids', self._context.get('active_id'))
@@ -98,6 +100,35 @@ class IssueLibrary(models.Model):
'view_mode': 'form',
'context': {
'default_state':'申请人',
'default_name_title': '党总支议题审批',
'default_line_ids': line_list,
}
}
def issue_party1_approval(self):
issue_active_ids = self.env["issue.library"].browse(
self._context.get('active_ids', self._context.get('active_id'))
)
line_list = []
for record in issue_active_ids:
if record.issue_state != 'to_approval':
raise UserError("该议题状态不能审批")
record.issue_state = 'approval'
line_list.append((0, 0, {
'issue_id': record.id,
'name': record.name,
'will_based': record.will_based,
'department_id': record.department_id.id,
}))
return {
'type': 'ir.actions.act_window',
'name': '党议题审批',
"target": "current",
'res_model': 'issue.party.approval',
'view_mode': 'form',
'context': {
'default_state':'申请人',
'default_name_title': '党支部议题审批',
'default_line_ids': line_list,
}
}
@@ -195,7 +226,7 @@ class IssueLibrary(models.Model):
continue
if record.issue_state in ['will', 'on_meet']:
if record.push_invisible:
if record.push_invisible :
record.issue_state = 'on_meet'
else:
record.issue_state = 'will'
@@ -266,9 +297,15 @@ class IssueLibrary(models.Model):
if push_update_vals:
rec.write(push_update_vals)
rec.write({
'issue_state': 'will'
})
if not rec.is_state_updated:
rec.write({
'issue_state': 'to_approval',
})
else:
rec.write({
'issue_state': 'will'}
)
@api.onchange('is_legal_trial')
def _onchange_is_legal_trial(self):
@@ -576,7 +613,7 @@ class IssueLibraryLine(models.Model):
issue_library_id = fields.Many2one('issue.library')
issue_approval_decision_id = fields.Many2one('issue.approval.decision', string="上会依据")
council_id = fields.Many2one(related='issue_approval_decision_id.council_id', string='党总委员会')
council_id = fields.Many2one(related='issue_approval_decision_id.council_id', string='党总支')
team_meet_id = fields.Many2one(related='issue_approval_decision_id.team_meet_id', string='经营班子会')
board_meet_id = fields.Many2one(related='issue_approval_decision_id.board_meet_id', string='董事会')
district_state_id = fields.Many2one(related='issue_approval_decision_id.district_state_id', string="区国资局")
+10 -2
View File
@@ -8,7 +8,7 @@ class IssuePartyApproval(models.Model):
_description = '党议题审批'
_inherit = ['soong.workflow.mixin', 'mail.thread.main.attachment', 'mail.activity.mixin']
name = fields.Char(string='标题', required=True)
name = fields.Char(string='标题', compute='_compute_name')
code = fields.Char(string='编号', required=True, copy=False,
default=lambda self: self.env['ir.sequence'].next_by_code('issue_party_approval_code'))
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
@@ -25,11 +25,19 @@ class IssuePartyApproval(models.Model):
name_title = fields.Char(default=_get_default_name_title)
self_users_ids = fields.Many2many('res.users', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
@api.depends("name_title", "code")
def _compute_name(self):
for record in self:
record.name = record.name_title + " " + record.code
def end_approval(self):
for record in self:
if record.line_ids:
for line in record.line_ids:
line.issue_state = 'will'
if line.issue_id.is_state_updated == False:
line.issue_id.is_state_updated = True
line.issue_id.issue_state = 'will'
class IssuePartyApprovalLine(models.Model):
_name = 'issue.party.approval.line'
+38 -9
View File
@@ -36,7 +36,6 @@
</field>
</record>
<record id="view_issue_library_tree" model="ir.ui.view">
<field name="name">issue.library.tree</field>
<field name="model">issue.library</field>
@@ -45,9 +44,9 @@
decoration-info="issue_state == 'will'"
decoration-success="issue_state == 'done'"
decoration-muted="issue_state == 'cancel'">
<header>
<button name="all_issue_pull" string="提交议题审批" type="object"/>
</header>
<!-- <header>-->
<!-- <button name="all_issue_pull" string="提交议题审批" type="object"/>-->
<!-- </header>-->
<field name="name" column_invisible="1"/>
<field name="department_id"/>
<field name="name_text" class="list_width"/>
@@ -70,7 +69,7 @@
<field name="is_push_depart" column_invisible="1"/>
<field name="push_invisible" column_invisible="1"/>
<!-- <button name="single_issue_pull" string="提交" type="object" class="oe_highlight"/>-->
<button name="library_push" string="推送" type="object" class="oe_highlight" invisible="push_invisible"/>
<button name="library_push" string="推送" type="object" class="oe_highlight" invisible="not push_invisible"/>
<button name="revoke" string="撤销" type="object" class="oe_highlight" invisible="issue_state == 'draft'"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
<button name="unlink" string="删除" type="object" class="oe_highlight"/>
@@ -200,8 +199,8 @@
<field name="ordinal"/>
<field name="issue_library_id" column_invisible="1"/>
<field name="issue_approval_decision_id" class="list_ids_width"/>
<field name="council_id" readonly="1" groups="yuthon_salary.group_jtbb_user" string="党总委员会"/>
<field name="council_id" readonly="1" groups="yuthon_salary.group_wg_user, yuthon_salary.group_lc_user" string="党支委员会"/>
<field name="council_id" readonly="1" groups="yuthon_salary.group_jtbb_user" string="党总支"/>
<field name="council_id" readonly="1" groups="yuthon_salary.group_wg_user, yuthon_salary.group_lc_user" string="党支部"/>
<field name="team_meet_id" readonly="1"/>
<field name="board_meet_id" readonly="1"/>
<field name="district_state_id" readonly="1"/>
@@ -294,7 +293,37 @@
<field name="name">issue.library.tree</field>
<field name="model">issue.library</field>
<field name="arch" type="xml">
<tree string="议题库"
decoration-info="issue_state == 'will'"
decoration-success="issue_state == 'done'"
decoration-muted="issue_state == 'cancel'">
<header>
<button name="all_meeting_issue" type="object" string="批量上会" class="oe_highlight"/>
<button name="issue_party1_approval" type="object" string="批量审批" class="oe_highlight"/>
</header>
<field name="name"/>
<field name="department_id"/>
<field name="creart_datetime"/>
<field name="is_party" groups="yuthon_salary.group_jtbb_user" string="党总支"/>
<field name="is_party" groups="yuthon_salary.group_lc_user,yuthon_salary.group_wg_user" string="党支委会"/>
<field name="party_char"/>
<field name="is_district_state"/>
<field name="is_district_government"/>
<field name="is_district_party"/>
<field name="issue_state"/>
<field name="company_id" optional="hide"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state == 'on_meet'"/>
<button name="correction" string="修正" type="object" class="oe_highlight"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
<button name="unlink" string="删除" type="object" class="oe_highlight"/>
</tree>
</field>
</record>
<!--党总委议题菜单-->
<record id="view_issue_library_tree2" model="ir.ui.view">
<field name="name">issue.library.tree</field>
<field name="model">issue.library</field>
<field name="arch" type="xml">
<tree string="议题库"
decoration-info="issue_state == 'will'"
decoration-success="issue_state == 'done'"
@@ -435,7 +464,7 @@
<field name="domain">[('is_push_party', '=', True), ('is_push_depart', '=', True)]</field>
<field name="search_view_id" ref="view_issue_library_filter"/>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree3')}),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_issue.view_issue_library_tree2')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_issue.view_issue_library_form3')})]"/>
</record>
@@ -27,7 +27,7 @@
</h1>
</div>
<group>
<field name="name"/>
<field name="name" invisible="1"/>
<field name="is_back" invisible="1"/>
<field name="users_id" invisible="1"/>
<field name="company_id" invisible="1"/>
+2 -2
View File
@@ -40,7 +40,7 @@ class YuthonNotice(http.Controller):
'title': data.name,
'code': data.code,
'create_date1': fields.Date.to_string(data.create_date1),
'notice_text': data.notice_text1,
'notice_text': data.notice_text1 if data.notice_text1 else ' ',
'documents': documents,
'user_name': data.users_id.name,
'read_number': data.read_number,
@@ -55,7 +55,6 @@ class YuthonNotice(http.Controller):
@http.route('/yuthon/notice/list', methods=['POST'], type='http', auth='none', csrf=False)
def yuthon_notice_list(self, **kwargs):
notice_ids = request.env['yuthon.notice'].sudo().search([])
data_list = []
for notice in notice_ids:
result = {
@@ -63,6 +62,7 @@ class YuthonNotice(http.Controller):
'create_date1': fields.Date.to_string(notice.create_date1) if notice.create_date1 else None,
'users_id': notice.users_id.name,
'name': notice.name,
'state': 'no'
}
data_list.append(result)
return json.dumps({'data': data_list, 'code': 200, 'message': 'success'})
+4 -6
View File
@@ -73,12 +73,12 @@ class YuthonWillTask(http.Controller):
@http.route('/will/task/list', methods=['POST'], type='http', auth='public', csrf=False)
def will_task_list(self, **kwargs):
employee_id = kwargs.get('employee_id')
employee_id = request.env['hr.employee'].search([('user_id', '=', int(kwargs.get('users_id')))])
start = kwargs.get('start')
request_hour_selection = request.env['yuthon.will.task'].sudo().fields_get(allfields=['request_hour_from'])['request_hour_from']['selection']
result_list = []
# for task in request.env['yuthon.will.task'].sudo().search(['|', ('employee_ids', 'in', [employee_id]), ('employee_id.id', '=', employee_id)]):
task_ids = request.env['yuthon.will.task'].sudo().search([], offset=start, limit=7)
# task_ids = request.env['yuthon.will.task'].sudo().search([], offset=start, limit=20)
task_ids = request.env['yuthon.will.task'].sudo().search(['|', ('employee_ids', 'in', employee_id.id), ('employee_id.id', '=', employee_id.id)], offset=start, limit=20)
for task in task_ids:
weekday_str = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"][task.start_date.weekday()]
result = {
@@ -106,9 +106,7 @@ class YuthonWillTask(http.Controller):
def will_task_record(self, **kwargs):
task_id = kwargs.get('id')
task = request.env['yuthon.will.task'].sudo().search([('id', '=', task_id)])
request_hour_selection = request.env['yuthon.will.task'].sudo().fields_get(allfields=['request_hour_from'])['request_hour_from'][
'selection']
request_hour_selection = request.env['yuthon.will.task'].sudo().fields_get(allfields=['request_hour_from'])['request_hour_from']['selection']
file_list = []
pdf = ['application/pdf']
for file in task.document_ids:
+3 -3
View File
@@ -39,7 +39,7 @@ class YuthonWillTask(models.Model):
('23', '23:00'), ('23.25', '23:15'), ('23.5', '23:30'), ('23.75', '23:45')]
request_hour_from = fields.Selection(time_list, string='开始时间', default='9')
request_hour_to = fields.Selection(time_list, string='结束时间', default='18')
priority = fields.Selection([('important', '重要不紧急'),('urgent', '紧急不重要'), ('very_urgent', '重要且紧急')], string='优先级')
priority = fields.Selection([('important', '重要不紧急'), ('urgent', '紧急不重要'), ('very_urgent', '重要且紧急')], string='优先级')
code = fields.Char(string="任务编号", default=lambda self: self.env['ir.sequence'].next_by_code('task_code'))
user_id = fields.Many2one('res.users', string="创建人", default=lambda self: self.env.user)
company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.company)
@@ -183,12 +183,12 @@ class YuthonWillTask(models.Model):
url=url, btntxt="详细信息")
def button_add_comment(self):
for employee_id in self.employee_ids:
for employee_id in self.employee_ids + self.employee_ids2:
data_date = '时间:' + str(self.start_date) + '\n'
data_name = "事项名称: " + self.name + '\n'
data_user_ids = '参与人: ' + ', '.join(self.employee_ids.mapped('name')) + '\n'
data_employee_id = ('司机:' + ', '.join(self.employee_ids2.mapped('name')) + '\n') if self.employee_ids2 else ''
data_nota = ('备注:' + self.remarks) if self.remarks else ('') + '\n'
data_nota = ('备注:' + self.remarks + '\n') if self.remarks else ('') + '\n'
data = data_date + data_name + data_user_ids + data_nota + data_employee_id
url = f'https://phone.thtzjt.com/phone/Schedule/{self.id}/{employee_id.id}'
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='task', user_id=employee_id.wecom_userid,
+120 -101
View File
@@ -5,29 +5,32 @@
<field name='model'>yuthon.will.task</field>
<field name='arch' type='xml'>
<tree string='日程'
decoration-muted = "task_state == 'cancel'"
decoration-muted="task_state == 'cancel'"
decoration-danger="priority == 'very_urgent'"
decoration-info="priority == 'urgent'"
decoration-success="priority == 'important'" limit="15">
<field name='start_date' column_invisible="1"/>
<field name='task_time' />
<field name='task_time'/>
<field name='name' required="1"/>
<field name='employee_ids' widget="many2many_tags" required="1" options="{'no_create': True}"/>
<field name="address"/>
<field name='remarks'/>
<!-- <field name='document_ids' widget="many2many_tags"/>-->
<!-- <field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>-->
<!-- <field name='task_time_ids' widget="many2many_tags" required="1"/>-->
<!-- <field name='document_ids' widget="many2many_tags"/>-->
<!-- <field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>-->
<!-- <field name='task_time_ids' widget="many2many_tags" required="1"/>-->
<field name='priority'/>
<field name='task_state' readonly="1"/>
<!-- <field name='users_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name='user_role_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name="employee_id" optional="hide"/>-->
<!-- <field name='creation_time' optional="hide"/>-->
<button name="button_add_comment" string="提醒" type="object" class="oe_highlight" invisible="task_state in ['done', 'cancel']"/>
<!-- <button name="back_wecom_msg" string="测试撤销" type="object" class="oe_highlight"/>-->
<button name="button_add_comment_cancel" string="取消" type="object" class="oe_highlight" invisible="task_state == 'cancel'"/>
<button name="schedule_reminders" string="提醒任务" type="object" class="oe_highlight" groups="base.group_system"/>
<!-- <field name='users_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name='user_role_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name="employee_id" optional="hide"/>-->
<!-- <field name='creation_time' optional="hide"/>-->
<button name="button_add_comment" string="提醒" type="object" class="oe_highlight"
invisible="task_state in ['done', 'cancel']"/>
<!-- <button name="back_wecom_msg" string="测试撤销" type="object" class="oe_highlight"/>-->
<button name="button_add_comment_cancel" string="取消" type="object" class="oe_highlight"
invisible="task_state == 'cancel'"/>
<button name="schedule_reminders" string="提醒任务" type="object" class="oe_highlight"
groups="base.group_system"/>
</tree>
</field>
</record>
@@ -45,96 +48,108 @@
</field>
</record>
<record id="view_yuthon_will_task_form" model="ir.ui.view">
<field name="name">yuthon.will.task.form</field>
<field name="model">yuthon.will.task</field>
<field name="arch" type="xml">
<form string="日程">
<sheet>
<widget name="web_ribbon" title="重要不紧急" bg_color="text-bg-success" invisible="priority != 'important'"/>
<widget name="web_ribbon" title="紧急不重要" bg_color="text-bg-warning" invisible="priority != 'urgent'"/>
<widget name="web_ribbon" title="重要且紧急" bg_color="text-bg-danger" invisible="priority != 'very_urgent'"/>
<group col="3">
<group>
<field name="code" readonly="1"/>
<field name="name">yuthon.will.task.form</field>
<field name="model">yuthon.will.task</field>
<field name="arch" type="xml">
<form string="日程">
<sheet>
<widget name="web_ribbon" title="重要不紧急" bg_color="text-bg-success"
invisible="priority != 'important'"/>
<widget name="web_ribbon" title="紧急不重要" bg_color="text-bg-warning"
invisible="priority != 'urgent'"/>
<widget name="web_ribbon" title="重要且紧急" bg_color="text-bg-danger"
invisible="priority != 'very_urgent'"/>
<group col="3">
<group>
<field name="code" readonly="1"/>
</group>
<group>
<field name="is_this_company" string="本公司"/>
</group>
<group>
<field name="priority"/>
</group>
</group>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group col="2">
<group>
<label for="start_date"/>
<div class="d-inline-flex w-100">
<!-- <field name="msg_id"/>-->
<field name="start_date" string="日期" class="me-2"
style="max-width: 6rem !important;"/>
<field name="task_week" string="" class="me-2" style="max-width: 4rem !important;"/>
<field name="request_hour_from" string=" " class="ms-2"
style="max-width: 5rem !important;"/>→
<field name="request_hour_to" string=" " class="ms-2"
style="max-width: 5rem !important;"/>
</div>
</group>
<group>
<field name="task_time_ids" widget="many2many_tags"/>
</group>
</group>
<group>
<field name="is_this_company" string="本公司"/>
<field name="employee_id"/>
<field name="task_state" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"
domain="[('company_id', '=', company_id)] if is_this_company else []"/>
<field name="user_role_ids" widget="many2many_tags" invisible="1"/>
</group>
<group col="2">
<group>
<field name="address"/>
</group>
<group>
<field name="employee_ids2" widget="many2many_tags"
domain="[('company_id', '=', company_id), ('user_role_ids.name', 'in', ['司机'])] if is_this_company else [('user_role_ids.name', 'in', ['司机'])]"
options="{'no_create': True}"/>
</group>
</group>
<group>
<field name="priority"/>
<field name="remarks"/>
<field name="document_ids" widget="preview_many2many"/>
<field name="creation_time" invisible="1"/>
</group>
</group>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group col="2">
<group>
<label for="start_date"/>
<div class="d-inline-flex w-100">
<!-- <field name="msg_id"/>-->
<field name="start_date" string="日期" class="me-2" style="max-width: 6rem !important;"/>
<field name="task_week" string="" class="me-2" style="max-width: 4rem !important;"/>
<field name="request_hour_from" string=" " class="ms-2" style="max-width: 5rem !important;"/>→
<field name="request_hour_to" string=" " class="ms-2" style="max-width: 5rem !important;"/>
</div>
</group>
<group>
<field name="task_time_ids" widget="many2many_tags"/>
</group>
</group>
<group>
<field name="employee_id"/>
<field name="task_state" invisible="1"/>
<field name="company_id" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('company_id', '=', company_id)] if is_this_company else []"/>
<field name="user_role_ids" widget="many2many_tags" invisible="1"/>
</group>
<group col="2">
<group>
<field name="address"/>
</group>
<group>
<field name="employee_ids2" widget="many2many_tags" domain="[('company_id', '=', company_id), ('user_role_ids.name', 'in', ['司机'])] if is_this_company else [('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>
</group>
</group>
<group>
<field name="remarks"/>
<field name="document_ids" widget="preview_many2many"/>
<field name="creation_time" invisible="1"/>
</group>
</sheet>
</form>
</field>
</record>
</sheet>
</form>
</field>
</record>
<record id='view_yuthon_will_task_tree2' model='ir.ui.view'>
<field name='name'>yuthon.will.task.tree2</field>
<field name='model'>yuthon.will.task</field>
<field name='arch' type='xml'>
<tree string='日程'
decoration-muted = "task_state == 'cancel'"
decoration-muted="task_state == 'cancel'"
decoration-danger="priority == 'very_urgent'"
decoration-info="priority == 'urgent'"
decoration-success="priority == 'important'" create="false" edit="false" js_class="custom_task_tree_button" limit="15">
decoration-success="priority == 'important'" create="false" edit="false"
js_class="custom_task_tree_button" limit="15">
<field name='start_date' column_invisible="1"/>
<field name='task_time' />
<field name='task_time'/>
<field name='name' required="1"/>
<field name='employee_ids' widget="many2many_tags" required="1" options="{'no_create': True}"/>
<field name="address"/>
<field name='remarks'/>
<!-- <field name='document_ids' widget="many2many_tags"/>-->
<!-- <field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>-->
<!-- <field name='task_time_ids' widget="many2many_tags" required="1"/>-->
<!-- <field name='document_ids' widget="many2many_tags"/>-->
<!-- <field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>-->
<!-- <field name='task_time_ids' widget="many2many_tags" required="1"/>-->
<field name='priority'/>
<field name='task_state' readonly="1"/>
<!-- <field name='users_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name='user_role_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name="employee_id" optional="hide"/>-->
<!-- <field name='creation_time' optional="hide"/>-->
<button name="button_add_comment" string="提醒" type="object" class="oe_highlight" invisible="task_state in ['done', 'cancel']"/>
<button name="button_add_comment_cancel" string="取消" type="object" class="oe_highlight" invisible="task_state == 'cancel'"/>
<!-- <field name='users_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name='user_role_ids' widget="many2many_tags" column_invisible="1"/>-->
<!-- <field name="employee_id" optional="hide"/>-->
<!-- <field name='creation_time' optional="hide"/>-->
<button name="button_add_comment" string="提醒" type="object" class="oe_highlight"
invisible="task_state in ['done', 'cancel']"/>
<button name="button_add_comment_cancel" string="取消" type="object" class="oe_highlight"
invisible="task_state == 'cancel'"/>
</tree>
</field>
</record>
@@ -167,10 +182,10 @@
<field name="name" required="1"/>
</h1>
</div>
<group col="2">
<group>
<label for="start_date"/>
<div class="d-inline-flex w-100">
<group col="2">
<group>
<label for="start_date"/>
<div class="d-inline-flex w-100">
<field name="start_date" string="日期" class="me-2"
style="max-width: 10rem !important;"/>
<field name="task_week" string="" class="me-2" style="max-width: 4rem !important;"/>
@@ -178,12 +193,12 @@
style="max-width: 5rem !important;"/>→
<field name="request_hour_to" string=" " class="ms-2"
style="max-width: 5rem !important;"/>
</div>
</group>
<group>
<field name="task_time_ids" widget="many2many_tags"/>
</group>
</div>
</group>
<group>
<field name="task_time_ids" widget="many2many_tags"/>
</group>
</group>
<group>
<field name="employee_id" domain="[('company_id', '=', company_id)]"/>
<field name="company_id" invisible="1"/>
@@ -196,19 +211,21 @@
<field name="address"/>
</group>
<group>
<field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>
<field name='employee_ids2' widget="many2many_tags"
domain="[('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>
</group>
</group>
<group>
<field name="remarks"/>
<field name="document_ids" widget="preview_many2many"/>
<field name="creation_time" invisible="1"/>
</group>
</sheet>
<!-- <div class="oe_chatter">-->
<!-- <field name="message_follower_ids" groups="base.group_user"/>-->
<!-- <field name="activity_ids"/>-->
<!-- <field name="message_ids"/>-->
<!-- </div>-->
<!-- <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>
@@ -234,7 +251,7 @@
<field name='view_mode'>tree,calendar,form</field>
<field name='domain'>[('users_ids', 'in', [uid])]</field>
<field name="context">{'search_default_next_seven_days': 1}</field>
<field name="view_ids" eval="[(5, 0, 0),
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_will_task.view_yuthon_will_task_tree2')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('yuthon_will_task.view_yuthon_will_task_form2')})]"/>
</record>
@@ -254,7 +271,9 @@
<field name='name'>领导日程</field>
<field name='res_model'>yuthon.will.task</field>
<field name='view_mode'>tree,calendar,form</field>
<field name='domain'>[('user_role_ids.name', 'in', ['董事长', '分管领导', '总经理', '部门副经理', '副总经理', '司机'])]</field>
<field name='domain'>[('user_role_ids.name', 'in', ['董事长', '分管领导', '总经理', '部门副经理', '副总经理',
'司机'])]
</field>
<field name="context">{'search_default_next_seven_days': 1}</field>
</record>
<record id="all_yuthon_will_task" model="ir.actions.server">