!1643 添加功能

Merge pull request !1643 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2025-03-02 05:37:46 +00:00
committed by Gitee
57 changed files with 756 additions and 545 deletions
@@ -140,3 +140,4 @@ class SoongWorkflowRecord(models.Model):
"name": self.name,
"view_mode": "form",
}
@@ -41,7 +41,7 @@
<field name="name">soong.workflow.record.kanban</field>
<field name="model">soong.workflow.record</field>
<field name="arch" type="xml">
<kanban class="kk_kanban_row">
<kanban class="kk_kanban_row" default_order="write_date desc">
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_card oe_kanban_global_click">
@@ -64,6 +64,11 @@
<field name="write_date"/>
</div>
</div>
<div class="o_kanban_record_bottom">
<button class="btn btn-primary" type="object" name="open_record">
打开记录
</button>
</div>
</div>
</div>
</div>
@@ -27,6 +27,8 @@ class SoongWorkflowCommentWizard(models.TransientModel):
trans_link_id = fields.Many2one('trans.link', string='转交节点')
return_link_id = fields.Many2one('trans.link', string='退回节点')
employee_trans_domain_ids = fields.Many2many('hr.employee', 'employee_trans_domain_ids_rel', string="传阅人员", store=True)
employee_ids = fields.Many2many('hr.employee', 'employee_ids_rel',
'custom_id', 'employee_id',
string="传阅人员", store=True)
@@ -93,7 +95,9 @@ class SoongWorkflowCommentWizard(models.TransientModel):
'|', ('department_id', '=', record_id.department_id.id),
('department_ids', 'in', record_id.department_id.id),
('yuthon_company', '=', record_id.create_uid.employee_id.yuthon_company)])
self.employee_trans_domain_ids = employee_user_role_ids if not next_is_automatic else employee_user_role_id
self.employee_ids = employee_user_role_ids if not next_is_automatic else employee_user_role_id
if self.node_btn_name == '退回':
next_list = []
self_state = state_list.index(ret.name)
@@ -20,7 +20,8 @@
<field name="return_link_id" invisible="node_btn_name != '退回'" string="退回节点"/>
<!-- 转交人员 -->
<field name="trans_link_id" string="转交节点" invisible="node_btn_name == '退回'"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围"/>
<field name="employee_trans_domain_ids" invisible="1" />
<field name="employee_ids" domain="[('id', 'in', employee_trans_domain_ids)]" widget="many2many_tags" string="人员范围"/>
</group>
<div invisible="node_btn_name != '结束'">
<h2>当前流程是否结束,请确认</h2>
@@ -24,15 +24,20 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
</group>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
<field name="name_title" readonly="1"/>
@@ -53,8 +58,6 @@
<group>
<group>
<field name="users_id" invisible="1"/>
<field name="is_issues" invisible="1"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="remarks" invisible="1"/>
@@ -460,46 +460,49 @@ class HrAttendanceDetail(models.Model):
else:
# 多次打卡时间的集合
checkin_time_list = [obj.checkin_time for obj in attendance_detail_obj_in]
# 最早 时间
min_time = min(checkin_time_list)
# 查询最早时间上班时间 查询最晚下班时间
# 判断时间 在10分钟内说明是 异常
if will_datetime_start + timedelta(minutes=10) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": True,
"absenteeism_card": False,
})
elif will_datetime_start + timedelta(hours=1) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": True,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
elif min_time > will_datetime_start + timedelta(hours=1) and min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": True,
})
if not checkin_time_list:
attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": min_time > will_datetime_start,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
# 最早 时间
min_time = min(checkin_time_list)
# 查询最早时间上班时间 查询最晚下班时间
# 判断时间 在10分钟内说明是 异常
if will_datetime_start + timedelta(minutes=10) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": True,
"absenteeism_card": False,
})
elif will_datetime_start + timedelta(hours=1) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": True,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
elif min_time > will_datetime_start + timedelta(hours=1) and min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": min_time > will_datetime_start,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
# 下班
attendance_detail_obj_out = self.env['hr.attendance.detail'].sudo().search(
[("exception_type", "!=", "未打卡"),
@@ -513,28 +516,29 @@ class HrAttendanceDetail(models.Model):
if is_resource_user:
# 多次打卡时间的集合
checkin_time_list = [obj.checkin_time for obj in attendance_detail_obj_out]
# 最早 时间
max_time = max(checkin_time_list)
# 如果上班没有打卡
if not attendance_obj.check_in:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
# 如果上班时间早于下班时间说明
elif attendance_obj.check_in and attendance_obj.check_in < max_time:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
if checkin_time_list:
# 最早 时间
max_time = max(checkin_time_list)
# 如果上班没有打卡
if not attendance_obj.check_in:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
# 如果上班时间早于下班时间说明
elif attendance_obj.check_in and attendance_obj.check_in < max_time:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
else:
if len(attendance_detail_obj_out) <= 0:
attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True, "absenteeism_card": True})
@@ -542,87 +546,90 @@ class HrAttendanceDetail(models.Model):
else:
# 多次打卡时间的集合
checkin_time_list = [obj.checkin_time for obj in attendance_detail_obj_out]
# 最早 时间
max_time = max(checkin_time_list)
# 如果上班没有打卡
if not attendance_obj.check_in:
if will_datetime_start + timedelta(minutes=10) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif will_datetime_start + timedelta(hours=1) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": True,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif max_time > will_datetime_start + timedelta(hours=1) and max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": max_time > will_datetime_start,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
# 如果上班时间早于下班时间说明下班的卡没打
elif attendance_obj.check_in >= max_time:
if not checkin_time_list:
attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True, "absenteeism_card": True})
else:
if will_datetime_end - timedelta(minutes=10) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
"is_abnormal": True,
# "absenteeism_card": False,
})
elif will_datetime_end - timedelta(hours=1) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": True,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
elif max_time < will_datetime_end - timedelta(hours=1):
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
# "is_abnormal": False,
"absenteeism_card": True,
})
# 最早 时间
max_time = max(checkin_time_list)
# 如果上班没有打卡
if not attendance_obj.check_in:
if will_datetime_start + timedelta(minutes=10) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif will_datetime_start + timedelta(hours=1) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": True,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif max_time > will_datetime_start + timedelta(hours=1) and max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": max_time > will_datetime_start,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
# 如果上班时间早于下班时间说明下班的卡没打
elif attendance_obj.check_in >= max_time:
attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True, "absenteeism_card": True})
else:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": max_time < will_datetime_end,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
if will_datetime_end - timedelta(minutes=10) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
"is_abnormal": True,
# "absenteeism_card": False,
})
elif will_datetime_end - timedelta(hours=1) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": True,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
elif max_time < will_datetime_end - timedelta(hours=1):
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
# "is_abnormal": False,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": max_time < will_datetime_end,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
return True
def _do_planning_role(self, user, current_date, attendance_obj, planning_id):
@@ -699,51 +706,54 @@ class HrAttendanceDetail(models.Model):
else:
# 多次打卡时间的集合
checkin_time_list = [obj.checkin_time for obj in attendance_detail_obj_in]
# 最早 时间
min_time = min(checkin_time_list)
# attendance_obj.sudo().write({
# "sch_check_in_time": planning_id.start_datetime,
# "check_in": min_time,
# "is_late_card": min_time > planning_id.start_datetime,
# "is_no_card": False,
# "is_abnormal": False,
# })
if will_datetime_start + timedelta(minutes=10) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": True,
"absenteeism_card": False,
})
elif will_datetime_start + timedelta(hours=1) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": True,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
elif min_time > will_datetime_start + timedelta(hours=1) and min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": True,
})
if not checkin_time_list:
attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True, "absenteeism_card": True})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": min_time > will_datetime_start,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
# 最早 时间
min_time = min(checkin_time_list)
# attendance_obj.sudo().write({
# "sch_check_in_time": planning_id.start_datetime,
# "check_in": min_time,
# "is_late_card": min_time > planning_id.start_datetime,
# "is_no_card": False,
# "is_abnormal": False,
# })
if will_datetime_start + timedelta(minutes=10) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": True,
"absenteeism_card": False,
})
elif will_datetime_start + timedelta(hours=1) > min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": True,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
elif min_time > will_datetime_start + timedelta(hours=1) and min_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": False,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": min_time,
"is_late_card": min_time > will_datetime_start,
"is_no_card": False,
"is_abnormal": False,
"absenteeism_card": False,
})
# 下班
attendance_detail_obj_out = self.env['hr.attendance.detail'].sudo().search(
@@ -761,101 +771,104 @@ class HrAttendanceDetail(models.Model):
else:
# 多次打卡时间的集合
checkin_time_list = [obj.checkin_time for obj in attendance_detail_obj_out]
# 最早 时间
max_time = max(checkin_time_list)
# 如果上班没有打卡
if not attendance_obj.check_in:
# attendance_obj.sudo().write({
# "sch_check_in_time": planning_id.start_datetime,
# "check_in": max_time,
# "is_late_card": max_time > planning_id.start_datetime,
# "is_no_card": True,
# "is_abnormal": True,
# })
if will_datetime_start + timedelta(minutes=10) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif will_datetime_start + timedelta(hours=1) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": True,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif max_time > will_datetime_start + timedelta(hours=1) and max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": max_time > will_datetime_start,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
# 如果上班时间早于下班时间说明下班的卡没打
elif attendance_obj.check_in >= max_time:
if not checkin_time_list:
attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True})
else:
# attendance_obj.sudo().write({
# "sch_check_out_time": planning_id.end_datetime,
# "check_out": max_time,
# "is_early_card": max_time < planning_id.end_datetime,
# "is_no_card": False,
# "is_abnormal": False,
# })
if will_datetime_end - timedelta(minutes=10) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
"is_abnormal": True,
# "absenteeism_card": False,
})
elif will_datetime_end - timedelta(hours=1) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": True,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
elif max_time < will_datetime_end - timedelta(hours=1):
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
# "is_abnormal": False,
"absenteeism_card": True,
})
# 最早 时间
max_time = max(checkin_time_list)
# 如果上班没有打卡
if not attendance_obj.check_in:
# attendance_obj.sudo().write({
# "sch_check_in_time": planning_id.start_datetime,
# "check_in": max_time,
# "is_late_card": max_time > planning_id.start_datetime,
# "is_no_card": True,
# "is_abnormal": True,
# })
if will_datetime_start + timedelta(minutes=10) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif will_datetime_start + timedelta(hours=1) > max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": True,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
elif max_time > will_datetime_start + timedelta(hours=1) and max_time > will_datetime_start:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": False,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_in_time": will_datetime_start,
"check_in": max_time,
"is_late_card": max_time > will_datetime_start,
"is_no_card": True,
"is_abnormal": True,
"absenteeism_card": True,
})
# 如果上班时间早于下班时间说明下班的卡没打
elif attendance_obj.check_in >= max_time:
attendance_obj.sudo().write({"is_no_card": True, "is_abnormal": True})
else:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": max_time < will_datetime_end,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
# attendance_obj.sudo().write({
# "sch_check_out_time": planning_id.end_datetime,
# "check_out": max_time,
# "is_early_card": max_time < planning_id.end_datetime,
# "is_no_card": False,
# "is_abnormal": False,
# })
if will_datetime_end - timedelta(minutes=10) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
"is_abnormal": True,
# "absenteeism_card": False,
})
elif will_datetime_end - timedelta(hours=1) < max_time < will_datetime_end:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": True,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
elif max_time < will_datetime_end - timedelta(hours=1):
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": False,
"is_no_card": False,
# "is_abnormal": False,
"absenteeism_card": True,
})
else:
attendance_obj.sudo().write({
"sch_check_out_time": will_datetime_end,
"check_out": max_time,
"is_early_card": max_time < will_datetime_end,
"is_no_card": False,
# "is_abnormal": False,
# "absenteeism_card": False,
})
return True
@staticmethod
+7 -4
View File
@@ -23,14 +23,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -52,8 +57,6 @@
</group>
<group>
<field name="reason_application" />
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<notebook>
+7 -4
View File
@@ -24,14 +24,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -53,9 +58,7 @@
<field name="date_start" required="1"/>
<field name="date_end" required="1"/>
<field name="reason_application"/>
<field name="is_issues" invisible="1"/>
<field name="documents_ids" widget="preview_many2many"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="details"/>
</group>
@@ -27,14 +27,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -51,8 +56,6 @@
<field name="users_id"/>
<field name="reason_application"/>
<field name="documents_ids" widget="preview_many2many"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="start_time"/>
@@ -27,14 +27,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -56,8 +61,6 @@
<field name="date"/>
<field name="duration"/>
<field name="type_remove_holiday"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
</sheet>
@@ -24,14 +24,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -45,13 +50,9 @@
<field name="documents_ids" widget="preview_many2many"/>
</group>
</group>
<group string="个人信息" col="2">
<group string="个人信息">
<group>
<field name="users_id"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="yuthon_company"/>
<field name="department_id"/>
</group>
@@ -24,14 +24,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -49,8 +54,6 @@
<group>
<field name="users_id"/>
<field name="yuthon_company"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="replacement_data"/>
@@ -22,14 +22,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -45,8 +50,6 @@
<group>
<field name="users_id"/>
<field name="employee_id" invisible="1"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="yuthon_company"/>
@@ -27,14 +27,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -55,8 +60,6 @@
<field name="alternate_id" invisible="alternate_shifts != 'alternate'"/>
<field name="users_id" invisible="1"/>
<field name="transferees_id" invisible="alternate_shifts != 'transferees'"/>
<field name="is_issues" invisible="1"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="yuthon_company" invisible="1"/>
<field name="department_id" invisible="1"/>
</group>
@@ -27,14 +27,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -52,8 +57,6 @@
<field name="employee_ids" widget="many2many_tags"/>
<field name="start_list_ids" widget="many2many_tags" invisible="1"/>
<field name="users_id" invisible="1"/>
<field name="is_issues" invisible="1"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="yuthon_company" invisible="1"/>
</group>
</group>
@@ -26,14 +26,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -47,13 +52,9 @@
<field name="entrant_date"/>
<field name="entrant_illustrate"/>
</group>
<group string="聘任结果" col="2">
<group string="聘任结果">
<group>
<field name="judge_team_leader"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="judge_team_member"/>
</group>
</group>
@@ -28,14 +28,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -50,7 +55,6 @@
<field name="is_issues" invisible="1"/>
<field name="department_id" invisible="1"/>
<field name="yuthon_company" invisible="1"/>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
<notebook>
<page string="应聘面试信息">
@@ -26,14 +26,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -81,9 +86,6 @@
<div class="oe_clear_row" style="margin: 35px 0">
</div>
<notebook>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
<page string="紧急联系人">
<field name="emergency_contact_ids">
<tree editable="bottom">
@@ -27,14 +27,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -49,8 +54,6 @@
<group>
<field name="employee_id"/>
<field name="yuthon_company"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="onboarding_status"/>
</group>
<group>
@@ -23,14 +23,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -49,8 +54,6 @@
<field name="name" required="1"/>
<field name="reason"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<notebook>
<page string="调整信息">
@@ -28,14 +28,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -90,8 +95,6 @@
<group string="移交信息" col="4">
<group>
<field name="handover_date"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="handover_person_id"/>
@@ -23,14 +23,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -41,8 +46,6 @@
<field name="name" required="1"/>
<field name="users_id" readonly="1"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
<field name="department_id"/>
<field name="yuthon_company" invisible="1"/>
@@ -30,14 +30,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -79,8 +84,6 @@
</group>
<group>
<field name="appraisal_total"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<notebook>
@@ -26,14 +26,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -55,8 +60,6 @@
</group>
<group>
<field name="entrant_date"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<notebook>
@@ -75,9 +78,6 @@
</tree>
</field>
</page>
<page invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -25,14 +25,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -52,8 +57,6 @@
<field name="job_id"/>
<field name="department_id" invisible="1"/>
<field name="onboarding_time"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</sheet>
</form>
@@ -27,14 +27,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -46,8 +51,6 @@
<field name="users_id"/>
<field name="reason" required="1"/>
<field name="issue_text"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_id" widget="preview_many2one"/>
</group>
<group col="4" string="员工信息">
+20 -51
View File
@@ -50,11 +50,23 @@ class YuthonNotice(models.Model):
name_title = fields.Char(default=_get_default_name_title)
# @api.onchange('employee_ids', 'department_ids', 'users_role_ids')
# def onchange_employee_ids(self):
# for notice in self:
# users = notice.employee_ids.mapped('user_id') + notice.users_role_ids.mapped('user_id') + notice.department_ids.mapped('user_id')
# notice.users_ids = users
@api.onchange('employee_ids', 'department_ids', 'users_role_ids')
def onchange_employee_ids(self):
def get_department_employees(department_id):
valid_user_ids = set()
employee_ids = self.env['hr.employee'].search([('department_id', '=', department_id.id)])
valid_user_ids.update([user.user_id.id for user in employee_ids if user.user_id])
child_ids = self.env['hr.department'].search([('parent_id', '=', department_id.id)])
for child in child_ids:
valid_user_ids.update(get_department_employees(child))
return valid_user_ids
department_user_ids = set()
for department_id in self.department_ids:
department_user_ids.update(get_department_employees(department_id))
for notice in self:
users = notice.employee_ids.mapped('user_id') + notice.users_role_ids.mapped('user_id') + department_user_ids
notice.users_ids = users
def get_no_read_count(self):
return self.search_count([('is_notice_roger', '=', 'no'), ('notice_state', '=', 'yes')])
@@ -91,12 +103,12 @@ class YuthonNotice(models.Model):
def no_sequence(self):
self.sequence = 0
def notice_publish(self, valid_employee_ids):
def notice_publish(self):
if self.is_change_notice:
menu_id = self.env['ir.ui.menu'].search([('name', '=', '通知公告'), ('parent_id', '!=', False)])
str = 'https://oa.thtzjt.com/web#id={}&cids=1&menu_id={}&action={}&model=yuthon.notice&view_type=form'.format(self.id, menu_id.id, menu_id.action.id)
conf_old = self.env['yuthon.confirm.users'].search([('notice_id', '=', self.id), ('employee_id', 'in', list(valid_employee_ids))])
for employee_id in valid_employee_ids:
conf_old = self.env['yuthon.confirm.users'].search([('notice_id', '=', self.id), ('employee_id', 'in', self.users_ids.ids)])
for employee_id in self.users_ids:
if conf_old:
for co in conf_old:
co.write({'state': 'no'})
@@ -142,46 +154,3 @@ class YuthonNotice(models.Model):
'notice_state': 'stop',
'end_date': fields.Date.today(),
})
def notice_users_publish(self):
# 获取 self.employee_ids 中的用户
employee_user_ids = {user.user_id.id for user in self.employee_ids if user.user_id}
# 获取部门用户
def get_department_employees(department_id):
valid_user_ids = set()
employee_ids = self.env['hr.employee'].search([('department_id', '=', department_id.id)])
valid_user_ids.update([user.user_id.id for user in employee_ids if user.user_id])
child_ids = self.env['hr.department'].search([('parent_id', '=', department_id.id)])
for child in child_ids:
valid_user_ids.update(get_department_employees(child))
return valid_user_ids
department_user_ids = set()
for department_id in self.department_ids:
department_user_ids.update(get_department_employees(department_id))
# 获取 user_role_ids 中的用户
role_user_ids = set()
for user_role in self.users_role_ids:
user_employee_ids = self.env['hr.employee'].search(
['|', ('user_role_id', '=', user_role.id), ('user_role_ids', 'in', [user_role.id])])
role_user_ids.update([user.user_id.id for user in user_employee_ids if user.user_id])
# 取三个ids的用户交集
valid_user_ids = employee_user_ids | department_user_ids | role_user_ids
# 查询所有符合条件的 hr.employee 记录
valid_employees = self.env['hr.employee'].search([('user_id', 'in', list(valid_user_ids))])
# 提取 employee_id
valid_employee_ids = {employee.id for employee in valid_employees}
self.notice_publish(valid_employee_ids)
@api.model
def action_create_notice_form1(self):
return {
'name': '创建通知公告',
'type': 'ir.actions.act_window',
'res_model': 'yuthon.notice',
'view_mode': 'form',
'view_id': self.env.ref('yuthon_notice.view_yuthon_notice_form').id,
'target': 'current',
'context': {},
}
@@ -23,7 +23,7 @@ class YuthonOfficialIncomingParty(models.Model):
main_flats = fields.Char(string="主送")
copy_flats = fields.Char(string="抄送")
servings_number = fields.Integer(string="份数")
urgency = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')],
string="密级")
date = fields.Datetime(string="日期", default=fields.Datetime.now)
@@ -35,6 +35,11 @@ class YuthonOfficialIncomingParty(models.Model):
official_documents_ids = fields.Many2many('ir.attachment', string="附件")
is_issues = fields.Boolean(string="是否上会")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
def _get_default_name_title(self):
return self._description if self._description else self._name
name_title = fields.Char(default=_get_default_name_title)
active = fields.Boolean('Active', default=True, tracking=True)
@api.onchange('is_issues')
+6 -1
View File
@@ -25,7 +25,7 @@ class YuthonOfficial(models.Model):
employee_ids = fields.Many2many('hr.employee', string='人员范围')
users_role_ids = fields.Many2many('soong.user.role', string='角色范围')
servings_number = fields.Integer(string="份数")
urgency = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')], string="密级")
date = fields.Datetime(string="日期", default=fields.Datetime.now)
department_id = fields.Many2one('hr.department', string="申请人部门")
@@ -44,6 +44,11 @@ class YuthonOfficial(models.Model):
workflow_inspector_ids = fields.One2many('soong.workflow.inspector', 'yuthon_official_id', string="督办事项")
room_booking_ids = fields.One2many('room.booking', 'yuthon_official_id', string="会议关联")
issue_library_ids = fields.One2many('issue.library', 'yuthon_official_id', string="议题关联")
def _get_default_name_title(self):
return self._description if self._description else self._name
name_title = fields.Char(default=_get_default_name_title)
def supervising_button(self):
return {
@@ -23,7 +23,7 @@ class YuthonOfficialIncomingLabor(models.Model):
main_flats = fields.Char(string="主送")
copy_flats = fields.Char(string="抄送")
servings_number = fields.Integer(string="份数")
urgency = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')],
string="密级")
date = fields.Datetime(string="日期", default=fields.Datetime.now)
@@ -36,6 +36,10 @@ class YuthonOfficialIncomingLabor(models.Model):
is_issues = fields.Boolean(string="是否上会")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
active = fields.Boolean('Active', default=True, tracking=True)
def _get_default_name_title(self):
return self._description if self._description else self._name
name_title = fields.Char(default=_get_default_name_title)
@api.onchange('is_issues')
def _onchange_is_issues(self):
@@ -23,7 +23,7 @@ class YuthonOfficialIncomingNormal(models.Model):
incoming_file_id = fields.Char(string="收文编号")
main_flats = fields.Char(string="主送")
servings_number = fields.Integer(string="份数")
urgency = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')], string="密级")
time_date = fields.Datetime(string="日期", default=fields.Datetime.now)
users_id = fields.Many2one('res.users', string="拟办人", default=lambda self: self.env.user.id)
@@ -44,6 +44,10 @@ class YuthonOfficialIncomingNormal(models.Model):
room_booking_ids = fields.One2many('room.booking', 'incoming_normal_id', string="会议关联")
issue_library_ids = fields.One2many('issue.library', 'incoming_normal_id', string="议题关联")
related_issues_id = fields.Many2one('issue.library', string="关联议题")
def _get_default_name_title(self):
return self._description if self._description else self._name
name_title = fields.Char(default=_get_default_name_title)
@api.onchange('is_issues')
def _onchange_is_issues(self):
@@ -26,4 +26,10 @@ class YuthonOfficialLabor(models.Model):
deadline = fields.Date(string="办理期限")
red_suit = fields.Char(string="套红")
official_documents_ids = fields.Many2many('ir.attachment', string="附件")
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')],
string="紧急程度")
active = fields.Boolean('Active', default=True, tracking=True)
def _get_default_name_title(self):
return self._description if self._description else self._name
name_title = fields.Char(default=_get_default_name_title)
@@ -23,7 +23,7 @@ class YuthonOfficialParty(models.Model):
main_flats = fields.Char(string="主送")
copy_flats = fields.Char(string="抄送")
servings_number = fields.Integer(string="份数")
urgency = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度")
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')],
string="密级")
date = fields.Datetime(string="日期", default=fields.Datetime.now)
@@ -34,3 +34,7 @@ class YuthonOfficialParty(models.Model):
red_suit = fields.Char(string="套红")
official_documents_ids = fields.Many2many('documents.document', string="公文相关文件")
active = fields.Boolean('Active', default=True, tracking=True)
def _get_default_name_title(self):
return self._description if self._description else self._name
name_title = fields.Char(default=_get_default_name_title)
@@ -22,9 +22,32 @@
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<group>
<field name="code" readonly="1" string="流水号:"/>
<widget name="web_ribbon" title="普件" bg_color="text-bg-success"
invisible="urgency_level != 'normal'"/>
<widget name="web_ribbon" title="急件" bg_color="text-bg-warning"
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
</group>
<div class="col-12 text-center">
<h1>
<field name="name_title" readonly="1"/>
</h1>
</div>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<group string="审批事项">
<field name="name" required="1"/>
<field name="main_text" widget="tinymce"/>
@@ -34,10 +57,7 @@
<group>
<field name="reference_cold"/>
<field name="major_event_category"/>
<field name="urgency"/>
<field name="secret_level"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="remarks"/>
</group>
<group>
@@ -17,8 +17,25 @@
<field name="arch" type="xml">
<form create="0">
<sheet>
<group>
<field name="code" readonly="1" string="流水号:"/>
<widget name="web_ribbon" title="普件" bg_color="text-bg-success"
invisible="urgency_level != 'normal'"/>
<widget name="web_ribbon" title="急件" bg_color="text-bg-warning"
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<group string="审批事项">
<field name="name" required="1"/>
@@ -28,11 +45,8 @@
<group string="行政信息">
<group col="2">
<field name="reference_cold"/>
<field name="urgency"/>
<field name="secret_level"/>
<field name="time_date"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="remarks"/>
</group>
<group>
@@ -21,9 +21,26 @@
<field name="statu" widget="statusbar"/>
</header>
<sheet>
<group>
<field name="code" readonly="1" string="流水号:"/>
<widget name="web_ribbon" title="普件" bg_color="text-bg-success"
invisible="urgency_level != 'normal'"/>
<widget name="web_ribbon" title="急件" bg_color="text-bg-warning"
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
</group>
<div class="col-12 text-center">
<h1>
<field name="name_title" readonly="1"/>
</h1>
</div>
<group string="审批事项">
<field name="name" required="1"/>
<field name="main_text"/>
@@ -33,10 +50,7 @@
<group>
<field name="reference_cold"/>
<field name="major_event_category"/>
<field name="urgency"/>
<field name="secret_level"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="remarks"/>
</group>
<group>
@@ -18,19 +18,22 @@
<field name="model">yuthon.official.labor</field>
<field name="arch" type="xml">
<form create="0">
<header>
<field name="statu" widget="statusbar"/>
</header>
<group>
<field name="code" readonly="1" string="流水号:"/>
</group>
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" required="1"/>
</h1>
</div>
<widget name="web_ribbon" title="普件" bg_color="text-bg-success"
invisible="urgency_level != 'normal'"/>
<widget name="web_ribbon" title="急件" bg_color="text-bg-warning"
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
</group>
<group>
<group>
<field name="reference_cold"/>
@@ -21,10 +21,22 @@
<header>
<field name="statu" widget="statusbar"/>
</header>
<group>
<field name="code" readonly="1" string="流水号:"/>
</group>
<sheet>
<widget name="web_ribbon" title="普件" bg_color="text-bg-success"
invisible="urgency_level != 'normal'"/>
<widget name="web_ribbon" title="急件" bg_color="text-bg-warning"
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
</group>
<div class="oe_title">
<label for="name"/>
<h1>
@@ -35,7 +47,6 @@
<group>
<field name="reference_cold"/>
<field name="major_event_category"/>
<field name="urgency"/>
<field name="secret_level"/>
<field name="date"/>
</group>
@@ -23,8 +23,20 @@
<button name="supervising_button" string="督办" type="object" class="btn-primary" invisible="not is_supervising"/>
</header>
<sheet>
<group>
<field name="code" readonly="1" string="流水号:"/>
<widget name="web_ribbon" title="普件" bg_color="text-bg-success"
invisible="urgency_level != 'normal'"/>
<widget name="web_ribbon" title="急件" bg_color="text-bg-warning"
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
</group>
<div class="oe_title">
<label for="name"/>
@@ -37,7 +49,6 @@
<field name="official_partner_id"/>
<field name="reference_cold"/>
<field name="major_event_category"/>
<field name="urgency"/>
<field name="secret_level"/>
<field name="date"/>
<field name="deadline"/>
@@ -65,9 +76,6 @@
<page string="督办事项" invisible="not is_supervising">
<field name="workflow_inspector_ids"/>
</page>
<page string="议题关联" invisible="not is_supervising">
<field name="issue_library_ids"/>
</page>
</notebook>
</sheet>
</form>
@@ -35,7 +35,6 @@ class PropertyTransferApproval(models.Model):
transfer_remark = fields.Html(string="备注")
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
default='normal')
active = fields.Boolean('Active', default=True, tracking=True)
def _get_default_name_title(self):
return self._description if self._description else self._name
@@ -24,14 +24,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -48,8 +53,6 @@
<field name="source"/>
<field name="users_id" invisible="1"/>
<field name="department_id" invisible="1"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="property_documents_ids" widget="preview_many2many"/>
</group>
<group>
@@ -25,14 +25,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -42,8 +47,6 @@
<group string="审批事项">
<field name="name"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="contract_id" widget="preview_many2one"/>
<field name="property_documents_ids" widget="preview_many2many"/>
</group>
@@ -22,14 +22,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -39,8 +44,6 @@
<group string="审批事项">
<field name="name" required="1"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
</group>
<group string="个人信息">
@@ -23,11 +23,23 @@
<header>
<button name="put_property_record" type="object" string="提交备案申请" class="oe_highlight"/>
</header>
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<group string="审批事项">
<field name="name" required="1"/>
<field name="main_text"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
</group>
<group>
@@ -24,14 +24,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -48,8 +53,6 @@
<field name="users_id" invisible="1"/>
<field name="department_id" invisible="1"/>
<field name="source"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="property_documents_ids" widget="preview_many2many"/>
</group>
<group>
@@ -23,14 +23,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -40,8 +45,6 @@
<group string="审批事项">
<field name="name" required="1"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
</group>
<group string="个人信息">
@@ -25,14 +25,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -42,8 +47,6 @@
<group string="审批事项">
<field name="name"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="original_contract_id" widget="preview_many2one"/>
<field name="property_documents_ids" widget="preview_many2many"/>
</group>
@@ -28,14 +28,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -47,8 +52,6 @@
<field name="department_id" invisible="1"/>
<field name="name"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
</group>
<notebook>
@@ -81,9 +84,6 @@
</group>
</group>
</page>
<page string="关联议会" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -25,14 +25,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -44,8 +49,6 @@
<field name="property_id"/>
<field name="monthly_rent"/>
<field name="contract_years"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="increment_rate"/>
@@ -75,9 +78,6 @@
</tree>
</field>
</page>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -23,14 +23,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -40,8 +45,6 @@
<group string="审批事项">
<field name="name"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="1"/>
<field name="property_documents_ids" widget="many2many_tags"/>
</group>
<group string="物业信息">
@@ -26,14 +26,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -62,8 +67,6 @@
</group>
</group>
<group>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
</group>
<notebook>
@@ -25,14 +25,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -42,8 +47,6 @@
<group string="审批事项">
<field name="name"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="1"/>
<field name="property_documents_ids" widget="many2many_tags"/>
</group>
<group col="2">
@@ -26,14 +26,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -51,8 +56,6 @@
<group>
<field name="registered_id"/>
<field name="evaluation_area"/>
<field name="is_issues" invisible="1"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
<group>
<field name="now_rent_price"/>
@@ -89,9 +92,6 @@
</field>
</group>
</page>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -22,14 +22,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -41,8 +46,6 @@
<field name="reason"/>
<field name="users_id" invisible="1"/>
<field name="department_id" invisible="1"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="documents_ids" widget="preview_many2many"/>
</group>
<notebook>
@@ -66,9 +69,6 @@
</tree>
</field>
</page>
<page string="关联会议" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -28,14 +28,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -45,8 +50,6 @@
<group string="审批事项">
<field name="name"/>
<field name="reason"/>
<field name="is_issues" invisible="1"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
</group>
<group col="2" string="物业信息">
@@ -81,9 +84,6 @@
</tree>
</field>
</page>
<page string="关联议题" invisible="not is_issues">
<field name="related_issues_id"/>
</page>
</notebook>
</sheet>
</form>
@@ -23,14 +23,19 @@
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="3">
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group/>
<group>
<field name="is_issues" invisible="1"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
@@ -40,8 +45,6 @@
<group string="审批事项">
<field name="name"/>
<field name="reason"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
<field name="documents_ids" widget="preview_many2many"/>
</group>
<group string="物业信息">
@@ -18,8 +18,33 @@
<field name="arch" type="xml">
<form string="物业移交" create="0">
<sheet>
<widget name="web_ribbon" title="普件" bg_color="text-bg-success"
invisible="urgency_level != 'normal'"/>
<widget name="web_ribbon" title="急件" bg_color="text-bg-warning"
invisible="urgency_level != 'urgent'"/>
<widget name="web_ribbon" title="特级" bg_color="text-bg-danger"
invisible="urgency_level != 'emergency'"/>
<group col="4">
<group>
<field name="code" string="流水号" readonly="1"/>
</group>
<group>
<field name="urgency_level" readonly="1"/>
</group>
<group>
<field name="is_issues"/>
</group>
<group>
<field name="related_issues_id" invisible="is_issues == False"/>
</group>
</group>
<div class="col-12 text-center">
<h1>
<field name="name_title" readonly="1"/>
</h1>
</div>
<group string="审批事项">
<field name="name" required="1"/>
<field name="name"/>
<field name="reason"/>
<field name="notice_documents_ids" widget="preview_many2many"/>
</group>
@@ -32,8 +57,6 @@
<group>
<field name="code"/>
<field name="department_id"/>
<field name="is_issues"/>
<field name="related_issues_id" invisible="not is_issues"/>
</group>
</group>
<group string="物业信息">