37 lines
1.8 KiB
Python
37 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import models, fields, api, _
|
|
|
|
|
|
class HRHolidaysCustom(models.Model):
|
|
_inherit = 'hr.employee'
|
|
|
|
remaining_leaves = fields.Float(compute='_gte_balance_employee')
|
|
leaves_count = fields.Float(compute='_gte_balance_employee')
|
|
leave_line = fields.One2many(comodel_name='hr.holidays', inverse_name='employee_id',
|
|
domain=[('type', '=', 'remove'), ('state', '=', 'validate1')])
|
|
# leave_request_id = fields.Many2one('hr.holidays', string='Leave Request')
|
|
# leave_type = fields.Many2one('hr.holidays.status', string='Leave Type',
|
|
# related='leave_request_id.holiday_status_id', readonly=True)
|
|
current_leave_state = fields.Selection(selection_add=[('approved', 'Workflow'), ('refused', 'Refused')])
|
|
|
|
def _gte_balance_employee(self):
|
|
for item in self:
|
|
employee_balance = self.env['hr.holidays'].search(
|
|
[('type', '=', 'add'), ('holiday_status_id.leave_type', '=', 'annual'),
|
|
('employee_id', '=', item.id), ('check_allocation_view', '=', 'balance')],
|
|
limit=1)
|
|
item.remaining_leaves = employee_balance.remaining_leaves
|
|
item.leaves_count = employee_balance.remaining_leaves
|
|
|
|
# dynamic domain on leave_request_id , and constrain on employee if he is single
|
|
# @api.onchange('employee_id')
|
|
# def _get_leave_request_domain(self):
|
|
# self.leave_request_id = False
|
|
# record_id = self.env['hr.holidays'].search([('employee_id', '=', self.employee_id.id)])
|
|
# employee_leaves = []
|
|
# for item in record_id:
|
|
# employee_leaves.append(item.id)
|
|
# return {'domain': {'leave_request_id': [('id', 'in', employee_leaves), ('state', '=', 'validate1'),
|
|
# ('type', '=', 'remove')]}}
|