!6176 添加功能

Merge pull request !6176 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2025-11-04 07:07:51 +00:00
committed by Gitee
6 changed files with 25 additions and 48 deletions
+7 -13
View File
@@ -75,20 +75,11 @@ class HrAttendance(models.Model):
resource_user_ids = emp.resource_calendar_id.resource_user_ids.ids
is_resource_user = True if emp.id in resource_user_ids else False
if not is_resource_user and not test1:
slot_start = datetime.combine(fields.Date.today(), datetime.min.time())
slot_end = datetime.combine(fields.Date.today() + timedelta(days=1), datetime.min.time())
# 查找员工对应的班次
planning_slots = self.env['planning.slot'].search([
('employee_id', '=', emp.id),
('start_datetime', '>=', slot_start),
('start_datetime', '<', slot_end),
], limit=1)
att_ids.create({
new_att = att_ids.create({
'employee_id': emp.id,
'shift_id': planning_slots.id,
'shift_name': planning_slots.display_name,
'current_data': fields.Date.today(),
})
new_att.compute_attend()
def state_fix(self):
for att in self.env["hr.attendance"].browse(self._context.get('active_ids', self._context.get('active_id'))):
@@ -122,8 +113,11 @@ class HrAttendance(models.Model):
def compute_attendance_ids(self):
for att in self.env["hr.attendance"].browse(self._context.get('active_ids', self._context.get('active_id'))):
current_data = fields.Datetime.to_datetime(att.current_data) + timedelta(hours=8)
self.env["hr.attendance.detail"].compute_attendance_detail(att.employee_id, current_data.date(), is_manual=True)
att.compute_attend()
def compute_attend(self):
current_data = fields.Datetime.to_datetime(self.current_data) + timedelta(hours=8)
self.env["hr.attendance.detail"].compute_attendance_detail(self.employee_id, current_data.date(), is_manual=True)
@api.depends('current_data')
def _compute_month_status(self):
@@ -17,7 +17,7 @@ class YuthonShiftApproval(models.Model):
alternate_id = fields.Many2one('resource.resource', string="顶班对象", domain="[('id', 'in', resource_ids)]")
alternate_shifts = fields.Selection([('transferees', '换班'), ('alternate', '顶班')], string="申请类型" , default='transferees')
shift_date = fields.Date(string="日期")
shift_id = fields.Many2one('planning.slot', string="我的班次")
shift_id = fields.Many2one('planning.slot', string="我的班次", compute='_compute_shift_id')
shift_two_date = fields.Date(string="日期")
shift_two_id = fields.Many2one('planning.slot', string="我的班次")
return_date = fields.Date(string="日期")
@@ -64,32 +64,29 @@
<field name="transferees_id" invisible="alternate_shifts != 'transferees'"/>
<field name="department_id" invisible="1"/>
</group>
<group col="4" string="班次1">
<group col="4" invisible="alternate_shifts == 'alternate'" string="班次1">
<group>
<field name="shift_date"/>
</group>
<group>
<field name="shift_id"
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
'order': 'start_datetime desc',
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"/>
</group>
<group/>
<group/>
</group>
<group col="4">
<group>
<field name="shift_date" invisible="alternate_shifts == 'alternate'" />
<field name="return_date"/>
</group>
<group>
<field name="shift_id" domain="[
('resource_id', '=', resource_id),
('start_datetime', '&gt;', shift_date + ' 00:00:00'),
('end_datetime', '&lt;', shift_date + ' 23:59:59')
]"
invisible="alternate_shifts != 'alternate' and not shift_date"
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
'order': 'start_datetime desc',
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"/>
<field name="return_id" context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
'order': 'start_datetime desc',
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"
invisible="not return_date"
domain="[
('resource_id', '=', resource_id),
('start_datetime', '&gt;', return_date + ' 00:00:00'),
('end_datetime', '&lt;', return_date + ' 23:59:59')
]"
/>
</group>
<group/>
@@ -101,12 +98,7 @@
<field name="return_two_date"/>
</group>
<group>
<field name="shift_two_id" invisible="not shift_two_date"
domain="[
('resource_id', '=', resource_id),
('start_datetime', '&gt;', shift_two_date + ' 00:00:00'),
('end_datetime', '&lt;', shift_two_date + ' 23:59:59')
]"
<field name="shift_two_id"
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
'order': 'start_datetime desc',
@@ -115,14 +107,7 @@
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
'order': 'start_datetime desc',
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"
invisible="not return_two_date"
domain="[
('resource_id', '=', resource_id),
('start_datetime', '&gt;', return_two_date + ' 00:00:00'),
('end_datetime', '&lt;', return_two_date + ' 23:59:59')
]"
/>
</group>
<group/>
<group/>
@@ -17,7 +17,6 @@ class ProcessingOrderApproval(models.Model):
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
company_id = fields.Many2one(related='users_id.employee_id.company_id', string="公司")
remake = fields.Text(string="备注")
documents_ids = fields.Many2many('ir.attachment', string="维修图片")
active = fields.Boolean('Active', default=True, tracking=True)
work_end = fields.Boolean(string="结束")
@@ -48,7 +48,6 @@
<field name="self_users_ids" invisible="1"/>
<field name="repair_id" invisible="1"/>
<field name="device_id" invisible="1"/>
<field name="remake"/>
<field name="documents_ids" widget="preview_many2many"/>
</group>
<group string="处理详情" col="2" invisible="not repair_id">
+1 -1
View File
@@ -42,7 +42,7 @@ class YuthonTaskApproval(models.Model):
def _onchange_employee_task(self):
if self.employee_ids and self.task_id:
employee_names = ', '.join(self.employee_ids.mapped('name'))
self.name = f"{employee_names} - {self.task_id.name}"
self.name = f"{self.task_id.name} - {employee_names}"
@api.depends('task_start_time', 'task_end_time')
def _compute_duration(self):