#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 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:
|
||||
|
|
|
|||
|
|
@ -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','<',(context_today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d')),('to_date','>',emp_doj)]"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue