2026-03-05 17:08:54 +05:30

50 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
from odoo import api, fields, models
class SalaryStructure(models.Model):
_name = 'c2c.salary.structure'
_description = 'Salary Structure'
_rec_name = 'name'
name = fields.Char(string='Name', required=True)
basic_percentage = fields.Float(
string='Basic (%)', required=True, default=50.0,
help='Percentage of gross salary allocated as Basic.',
)
hra_percentage = fields.Float(
string='HRA (%)', required=True, default=20.0,
help='Percentage of gross salary allocated as HRA.',
)
allowance_percentage = fields.Float(
string='Allowances (%)', required=True, default=30.0,
help='Percentage of gross salary allocated as Allowances.',
)
pf_percentage = fields.Float(
string='PF (%)', required=True, default=12.0,
help='Provident Fund deduction percentage on Basic salary.',
)
esi_percentage = fields.Float(
string='ESI (%)', required=True, default=1.75,
help='ESI deduction percentage on Gross salary.',
)
professional_tax_fixed = fields.Float(
string='Professional Tax (Fixed)', default=200.0,
help='Fixed professional tax amount deducted per month.',
)
company_id = fields.Many2one(
'res.company', string='Company', required=True,
default=lambda self: self.env.company,
)
active = fields.Boolean(default=True)
@api.constrains('basic_percentage', 'hra_percentage', 'allowance_percentage')
def _check_percentages(self):
for rec in self:
total = rec.basic_percentage + rec.hra_percentage + rec.allowance_percentage
if abs(total - 100.0) > 0.01:
raise models.ValidationError(
'Basic + HRA + Allowances percentages must equal 100%%. '
'Current total: %.2f%%' % total
)