#fix:Payrollstatement

This commit is contained in:
seshikanth 2026-06-30 12:24:02 +05:30
parent 257e05cc34
commit 3de90ee7ce
2 changed files with 68 additions and 4 deletions

View File

@ -4,6 +4,8 @@ from odoo.exceptions import ValidationError
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
import math
import logging
_logger = logging.getLogger(__name__)
class ITTaxStatementWizard(models.TransientModel):
@ -18,9 +20,47 @@ class ITTaxStatementWizard(models.TransientModel):
contract_id = fields.Many2one('hr.contract', related='employee_id.contract_id', required=True)
currency_id = fields.Many2one('res.currency', related='employee_id.company_id.currency_id')
period_id = fields.Many2one('payroll.period', required=True)
period_line = fields.Many2one('payroll.period.line',
domain="[('period_id', '=', period_id), ('to_date', '<', fields.Date.today())]")
def _default_period(self):
today = fields.Date.today()
return self.env['payroll.period'].search([
('from_date', '<=', today),
('to_date', '>=', today),
], limit=1)
def _default_period_line(self):
previous_month_end = fields.Date.today().replace(day=1) - relativedelta(days=1)
_logger.info("Today: %s", fields.Date.today())
_logger.info("Previous Month End: %s", previous_month_end)
period = self._default_period()
_logger.info("Period: %s", period.name if period else "None")
lines = self.env['payroll.period.line'].search([
('period_id', '=', period.id),
], order='from_date')
for line in lines:
_logger.info(
"Month=%s From=%s To=%s",
line.name,
line.from_date,
line.to_date
)
month = self.env['payroll.period.line'].search([
('period_id', '=', period.id),
('from_date', '<=', previous_month_end),
('to_date', '>=', previous_month_end),
], limit=1)
_logger.info("Selected Month: %s", month.name if month else "None")
return month
period_id = fields.Many2one('payroll.period', required=True, default=_default_period,)
period_line = fields.Many2one('payroll.period.line', default=_default_period_line,
domain="[('period_id', '=', period_id),('to_date','<=', previous_month_end)]")
# Taxpayer profile
taxpayer_name = fields.Char(related='employee_id.name')
@ -96,6 +136,29 @@ class ITTaxStatementWizard(models.TransientModel):
('new', 'New Regime')
], string="Beneficial Regime", readonly=True)
is_hr_manager = fields.Boolean(compute="_compute_is_hr_manager")
available_period_ids = fields.Many2many(
'payroll.period',
compute='_compute_available_period_ids'
)
@api.depends('employee_id')
def _compute_available_period_ids(self):
today = fields.Date.today()
for rec in self:
employee = rec.employee_id or self.env.user.employee_id
if not employee:
rec.available_period_ids = False
continue
joining_date = employee.doj or today
periods = self.env['payroll.period'].search([
('to_date', '>=', joining_date),
('from_date', '<=', today),
])
rec.available_period_ids = periods
def _compute_is_hr_manager(self):
for rec in self:

View File

@ -55,7 +55,8 @@
</group>
<group>
<group>
<field name="period_id" options="{'no_edit': True, 'no_create': True, 'no_open': True}"/>
<field name="period_id" domain="[('id', 'in', available_period_ids)]"
options="{'no_edit': True, 'no_create': True, 'no_open': True}"/>
</group>
<group>
<field name="period_line" force_save="1" domain="[('period_id', '=', period_id),('to_date','&lt;',(context_today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d')),('to_date','&gt;',emp_doj)]"/>