Merge branch 'imp/12.0/payroll_leaves_breakdown' into '12.0-test'

imp/12.0/payroll_leaves_breakdown into 12.0-test

See merge request hibou-io/hibou-odoo/suite!110
This commit is contained in:
Hibou Bot
2019-09-18 20:32:05 +00:00
2 changed files with 41 additions and 0 deletions

View File

@@ -1,3 +1,4 @@
from collections import defaultdict
from odoo import models, api from odoo import models, api
from odoo.addons.resource.models.resource import HOURS_PER_DAY from odoo.addons.resource.models.resource import HOURS_PER_DAY
@@ -50,3 +51,22 @@ class HrPayslip(models.Model):
def _create_leave_code(self, name): def _create_leave_code(self, name):
return 'L_' + name.replace(' ', '_') return 'L_' + name.replace(' ', '_')
@api.multi
def hour_break_down(self, code):
"""
:param code: what kind of worked days you need aggregated
:return: dict: keys are isocalendar tuples, values are hours.
"""
self.ensure_one()
if code.startswith('L_'):
leaves = self._fetch_valid_leaves(self.employee_id.id, self.date_from, self.date_to)
day_values = defaultdict(float)
for leave in leaves:
leave_code = self._create_leave_code(leave.holiday_status_id.name)
if leave_code == code:
leave_iso = leave.date_from.isocalendar()
day_values[leave_iso] += leave.number_of_days * HOURS_PER_DAY
return day_values
elif hasattr(super(HrPayslip, self), 'hour_break_down'):
return super(HrPayslip, self).hour_break_down(code)

View File

@@ -1,3 +1,4 @@
from collections import defaultdict
from odoo import models, api from odoo import models, api
from odoo.addons.resource.models.resource import HOURS_PER_DAY from odoo.addons.resource.models.resource import HOURS_PER_DAY
@@ -50,3 +51,23 @@ class HrPayslip(models.Model):
def _create_leave_code(self, name): def _create_leave_code(self, name):
return 'L_' + name.replace(' ', '_') return 'L_' + name.replace(' ', '_')
@api.multi
def hour_break_down(self, code):
"""
:param code: what kind of worked days you need aggregated
:return: dict: keys are isocalendar tuples, values are hours.
"""
self.ensure_one()
if code.startswith('L_'):
leaves = self._fetch_valid_leaves(self.employee_id.id, self.date_from, self.date_to)
day_values = defaultdict(float)
for leave in leaves:
leave_code = self._create_leave_code(leave.holiday_status_id.name)
if leave_code == code:
leave_iso = leave.date_from.isocalendar()
day_values[leave_iso] += leave.number_of_days * HOURS_PER_DAY
return day_values
elif hasattr(super(HrPayslip, self), 'hour_break_down'):
return super(HrPayslip, self).hour_break_down(code)