#fix:Payrollstatement
This commit is contained in:
parent
257e05cc34
commit
3de90ee7ce
|
|
@ -4,6 +4,8 @@ from odoo.exceptions import ValidationError
|
||||||
from datetime import date, timedelta
|
from datetime import date, timedelta
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
import math
|
import math
|
||||||
|
import logging
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ITTaxStatementWizard(models.TransientModel):
|
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)
|
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')
|
currency_id = fields.Many2one('res.currency', related='employee_id.company_id.currency_id')
|
||||||
|
|
||||||
period_id = fields.Many2one('payroll.period', required=True)
|
def _default_period(self):
|
||||||
period_line = fields.Many2one('payroll.period.line',
|
today = fields.Date.today()
|
||||||
domain="[('period_id', '=', period_id), ('to_date', '<', 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 profile
|
||||||
taxpayer_name = fields.Char(related='employee_id.name')
|
taxpayer_name = fields.Char(related='employee_id.name')
|
||||||
|
|
@ -96,6 +136,29 @@ class ITTaxStatementWizard(models.TransientModel):
|
||||||
('new', 'New Regime')
|
('new', 'New Regime')
|
||||||
], string="Beneficial Regime", readonly=True)
|
], string="Beneficial Regime", readonly=True)
|
||||||
is_hr_manager = fields.Boolean(compute="_compute_is_hr_manager")
|
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):
|
def _compute_is_hr_manager(self):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,8 @@
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<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>
|
||||||
<group>
|
<group>
|
||||||
<field name="period_line" force_save="1" domain="[('period_id', '=', period_id),('to_date','<',(context_today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d')),('to_date','>',emp_doj)]"/>
|
<field name="period_line" force_save="1" domain="[('period_id', '=', period_id),('to_date','<',(context_today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d')),('to_date','>',emp_doj)]"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue