Merge pull request !1857 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2025-03-17 09:09:30 +00:00
committed by Gitee
10 changed files with 83 additions and 22 deletions
+28 -17
View File
@@ -219,6 +219,8 @@ class HolidaysRequestBatch(models.Model):
leave_by_day = fields.Boolean(string='请假单位(天)', default=True)
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
default='normal')
start_date = fields.Date(string="开始时间")
end_date = fields.Date(string="结束时间")
custom_document_ids = fields.Many2many(
string='文件',
comodel_name='ir.attachment',
@@ -246,23 +248,6 @@ class HolidaysRequestBatch(models.Model):
self.leave_ids.action_validate()
self.hour_leave_ids.action_validate()
@api.onchange('hour_leave_ids', 'leave_ids', 'users_id')
def _onchange_name(self):
employee_name = self.users_id.name
if self.is_day or self.is_hour:
number_day = 0
number_hours = 0
for leave in self.leave_ids:
if leave.number_of_days_display:
number_day += leave.number_of_days_display
for hour_leave in self.hour_leave_ids:
if hour_leave.number_of_hours_text:
hours_str = re.search(r'\d+', hour_leave.number_of_hours_text).group()
number_hours += float(hours_str)
self.name = f"{employee_name}的休假:{number_day + (number_hours * 0.125)}天"
else:
self.name = f'{employee_name}的休假'
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
@@ -279,6 +264,32 @@ class HolidaysRequestBatch(models.Model):
raise ValidationError("休假时长必须为 2、4、6 或 8 小时才可以保存!")
return super(HolidaysRequestBatch, self).create(vals_list)
@api.onchange('leave_ids', 'hour_leave_ids', 'employee_id')
def _onchange_leave_dates(self):
all_dates = []
for leave in self.leave_ids:
if leave.request_date_from:
all_dates.append(leave.request_date_from)
if leave.request_date_to:
all_dates.append(leave.request_date_to)
for hour_leave in self.hour_leave_ids:
if hour_leave.request_date_from:
all_dates.append(hour_leave.request_date_from)
if all_dates:
self.start_date = min(all_dates)
self.end_date = max(all_dates)
else:
self.start_date = False
self.end_date = False
if self.employee_id and self.start_date and self.end_date:
start = datetime.strptime(str(self.start_date), '%Y-%m-%d')
end = datetime.strptime(str(self.end_date), '%Y-%m-%d')
date_diff = (end - start).days
self.name = f"{self.employee_id.name}的休假{date_diff}天"
else:
self.name = f"{self.employee_id.name}"
class HrLeaveLine(models.Model):
_name = 'hr.leave.line'
+3 -1
View File
@@ -57,6 +57,8 @@
<field name="department_id" invisible="1"/>
<field name="user_role_id" invisible="1"/>
<field name="is_issues" invisible="1"/>
<field name="start_date"/>
<field name="end_date"/>
</group>
</group>
<group string="按天请假" invisible="not is_day"/>
@@ -210,8 +212,8 @@
<field name="res_model">hr.leave.batch</field>
<field name="view_mode">tree,form</field>
<field name="context">{}</field>
<field name="domain">[('users_id', '=', uid)]</field>
<field name="search_view_id" ref="hr_leave_batch_search_view"/>
<field name="domain">[]</field>
</record>
<menuitem
@@ -75,6 +75,7 @@
<record id="view_yuthon_fixes_approval_action" model="ir.actions.act_window">
<field name="name">假期修正审批</field>
<field name="res_model">yuthon.fixes.approval</field>
<field name="domain">[('users_id', '=', uid)]</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -124,6 +124,17 @@ class OvertimeApprovals(models.Model):
if self.meal == 'yes':
meal_number +=1
employee_id.write({'meal_number':meal_number})
holiday_status_id = self.env['hr.leave.type'].search([('name', '=', '补休')])
allocation = self.env['hr.leave.allocation'].create({
'employee_id': employee_id.id,
'name': '补休',
'number_of_days': self.duration/7,
'holiday_status_id': holiday_status_id.id,
'allocation_type': 'regular',
"number_of_days_display": self.duration/7,
})
if allocation:
allocation.sudo().action_validate()
@api.depends('users_id', 'duration')
def _compute_name(self):
@@ -60,6 +60,7 @@
<record id="approval_request_card" model="ir.actions.act_window">
<field name="name">补卡</field>
<field name="res_model">card.approval</field>
<field name="domain">[('users_id', '=', uid)]</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -82,6 +82,7 @@
<record id="approval_request_duty" model="ir.actions.act_window">
<field name="name">值班</field>
<field name="res_model">duty.approval</field>
<field name="domain">[('users_id', '=', uid)]</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -75,6 +75,7 @@
<record id="approval_request_going" model="ir.actions.act_window">
<field name="name">外出</field>
<field name="res_model">go.approval</field>
<field name="domain">[('users_id', '=', uid)]</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -77,6 +77,7 @@
<record id="approval_request_overtime" model="ir.actions.act_window">
<field name="name">加班</field>
<field name="res_model">overtime.approval</field>
<field name="domain">[('users_id', '=', uid)]</field>
<field name="view_mode">tree,form</field>
</record>
</odoo>
@@ -107,6 +107,9 @@ class YuthonHrEmployee(models.Model):
normal_overtime_hours = fields.Float(string="正常加班时间(小时)")
weekend_overtime_hours = fields.Float(string="周末加班时间(小时)")
holiday_overtime_hours = fields.Float(string="节假日加班时间(小时)")
overtime_this_month = fields.Float(string="本月加班时")
overtime_last_month = fields.Float(string="上月加班时")
result_overtime = fields.Float(string="结算时")
holiday_hours = fields.Float(string="假期额度")
all_overtime_hours = fields.Float(string="总加班小时", compute="_compute_all_overtime_hours", store=True)
replacement_card_count = fields.Integer(string="补卡次数")
@@ -417,3 +420,14 @@ class YuthonHrEmployee(models.Model):
domain = expression.AND([search_domain, domain])
return self._search(domain, limit=limit, order=order)
def put_overtime_return(self):
uid = self.user_id.id
action = {
'name': '加班详情',
'type': 'ir.actions.act_window',
'res_model': 'overtime.approval',
'view_mode': 'tree',
'domain': [('users_id', '=', uid)],
}
return action
@@ -132,10 +132,28 @@
</group>
</xpath>
<xpath expr="//page[@name='public']//group[@name='departure']" position="after">
<group name="overtime" string="加班">
<field name="normal_overtime_hours" readonly="1"/>
<field name="weekend_overtime_hours" readonly="1"/>
<field name="holiday_overtime_hours" readonly="1"/>
<group name="overtime" string="加班" col="2">
<group>
<field name="normal_overtime_hours" readonly="1"/>
<field name="weekend_overtime_hours" readonly="1"/>
<field name="holiday_overtime_hours" readonly="1"/>
</group>
<group>
<button name="put_overtime_return" string="详情" type="object" class="oe_highlight"/>
</group>
</group>
<group col="3">
<group>
<field name="overtime_this_month"/>
</group>
<group>
<field name="overtime_last_month"/>
</group>
<group>
<field name="result_overtime"/>
</group>
</group>
<group>
<field name="holiday_hours"/>
<field name="all_overtime_hours"/>
<field name="replacement_card_count"/>