@@ -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'
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user