From c1b7d5f07ff8913e3cfa7d0206d6aa04c8149267 Mon Sep 17 00:00:00 2001 From: raman Date: Tue, 10 Jun 2025 10:27:16 +0530 Subject: [PATCH] hr payslip days --- .../hr_payroll/models/hr_payslip.py | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) 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'):