diff --git a/addons_extensions/hr_emp_dashboard/static/src/js/profile_component.js b/addons_extensions/hr_emp_dashboard/static/src/js/profile_component.js index afe51967c..112dfe751 100644 --- a/addons_extensions/hr_emp_dashboard/static/src/js/profile_component.js +++ b/addons_extensions/hr_emp_dashboard/static/src/js/profile_component.js @@ -309,7 +309,7 @@ attendanceLines.forEach(line => { const dateStr = createDate.toLocaleDateString('en-IN', { timeZone: 'Asia/Kolkata' }); const workedHours = parseFloat(line.worked_hours); - + const working_hours = '' const checkIn = new Date(line.check_in + 'Z'); const checkOut = new Date(line.check_out + 'Z'); @@ -320,6 +320,7 @@ attendanceLines.forEach(line => { groupedLines[dateStr] = { create_date: dateStr, worked_hours: workedHours, + working_hours: `${Math.floor(workedHours)}h ${Math.round((workedHours - Math.floor(workedHours)) * 60)}m`, check_in: checkInStr, check_out: checkOutStr, earliestCheckIn: checkIn, @@ -346,6 +347,7 @@ attendanceLines.forEach(line => { const groupedAttendance = Object.values(groupedLines).map(line => ({ create_date: line.create_date, worked_hours: line.worked_hours.toFixed(2), + working_hours :line.working_hours, check_in: line.check_in, check_out: line.check_out })); diff --git a/addons_extensions/hr_emp_dashboard/static/src/xml/employee_profile_template.xml b/addons_extensions/hr_emp_dashboard/static/src/xml/employee_profile_template.xml index 3fcad56b0..98823058d 100644 --- a/addons_extensions/hr_emp_dashboard/static/src/xml/employee_profile_template.xml +++ b/addons_extensions/hr_emp_dashboard/static/src/xml/employee_profile_template.xml @@ -219,7 +219,7 @@ - + diff --git a/addons_extensions/hr_payroll/models/hr_payslip.py b/addons_extensions/hr_payroll/models/hr_payslip.py index 6c7793846..824a24c4b 100644 --- a/addons_extensions/hr_payroll/models/hr_payslip.py +++ b/addons_extensions/hr_payroll/models/hr_payslip.py @@ -7,9 +7,10 @@ import pytz from collections import defaultdict, Counter from datetime import date, datetime, time +from datetime import timedelta + from dateutil.relativedelta import relativedelta from functools import reduce - from odoo import api, Command, fields, models, _ from odoo.exceptions import UserError, ValidationError from odoo.tools import float_round, date_utils, convert_file, format_amount @@ -1378,6 +1379,29 @@ class HrPayslip(models.Model): for file_to_update in files_to_update: convert_file(self.env, module_name, file_to_update, idref) + + def days_count(self): + joining_date = self.contract_id.date_start + date_from = min(joining_date, self.date_from) + if joining_date > date_from: + + # Define weekend days (Saturday and Sunday) + weekend_days = [5, 6] # 5 = Saturday, 6 = Sunday + + # Count weekends between date_from and date_to + weekend_count = 0 + current_date = date_from + while current_date <= joining_date: + if current_date.weekday() in weekend_days: + weekend_count += 1 + current_date += timedelta(days=1) + + # Output: number of weekly offs since joining + weekend_days_count = weekend_count + else: + weekend_days_count = 0 + return weekend_days_count + def action_edit_payslip_lines(self): self.ensure_one() if not self.env.user.has_group('hr_payroll.group_hr_payroll_manager'):