diff --git a/addons/l10n_in_hr_payroll/data/l10n_in_hr_payroll_data.xml b/addons/l10n_in_hr_payroll/data/l10n_in_hr_payroll_data.xml index 61a0b4e4352..ae465db8e8d 100644 --- a/addons/l10n_in_hr_payroll/data/l10n_in_hr_payroll_data.xml +++ b/addons/l10n_in_hr_payroll/data/l10n_in_hr_payroll_data.xml @@ -19,6 +19,45 @@ Register for Food Coupen + + Register for TDS + + + + Register for NPS Contribution + + + + Register for Voluntarily Provident Fund + + + + Register for Company Provided Transport Deduction + + + + Register for Food Coupons Deduction + + + + Register for State Labour Welfare Fund Deduction + + + + Register for Company Provided Group Term Insurance Deduction + + + + Register for Leave Availed Deduction + + + + Register for Company Provided Medical Insurance Deduction + + + + Register for Other Deduction from Employer + @@ -34,7 +73,7 @@ HRAMN code - result=payslip.company_id.dearness_allowance and ((contract.wage + DA) * 0.50) or (contract.wage * 0.50) if (contract.city_type=='metro') else payslip.company_id.dearness_allowance and ((contract.wage + DA) * 0.40) or (contract.wage * 0.40) if (contract.city_type=='non-metro') else 0.00 + result = payslip.company_id.dearness_allowance and ((contract.wage + DA) * contract.house_rent_allowance_metro_nonmetro / 100) or (contract.wage * contract.house_rent_allowance_metro_nonmetro / 100) House Rent Allowance for metro and nonmetro city @@ -54,8 +93,10 @@ SA Grade/Special/Management/Supplementary Allowance - fix - + python + result = bool(contract.supplementary_allowance) + code + result = contract.supplementary_allowance This allowance is normally given as an additional benefit to employees and is fully taxable. @@ -116,7 +157,8 @@ ARRE Arrears - fix + code + result = inputs.ARS.amount Generally arrears are fully taxable, but employee may claim exemption u/s 89(1). @@ -124,25 +166,13 @@ One would need to compute income tax on the arrears if it would have been receiv Now difference of income tax between payment year and actual year would be allowed for deduction. - - GRA - Gratuity - - none - code - result = payslip.company_id.dearness_allowance and ((contract.wage + DA) * 15 * employee.number_of_year / worked_days.WORK100.number_of_days) or (contract.wage * 15 * employee.number_of_year / worked_days.WORK100.number_of_days) - - Covered under the Payment of Gratuity Act, 1971: -(Last drawn monthly basic salary + dearness allowance)/26 x 15 days x -number of years of service (date of joining – date of retirement/leaving job) - - LTA Leave Travel Allowance - fix - 1666 + percentage + contract.wage + As per Income tax rules of India, if transport bills for LTA are not provided,the amount will be taxed. E.g. If an employee has LTA allowance as Rs 50,000 in his CTC(cost to company),and he provides proofs of Rs 40,000 (boarding pass,air tickets, taxi vouchers) then income tax will be deducted for rest of the Rs 10,000. Does not matter whats the amount of LTA in an employee’s package, income tax laws only permits domestic air tickets only for LTA claim. @@ -152,8 +182,8 @@ number of years of service (date of joining – date of retirement/leaving job)< Leave Encashment none - fix - 0.0 + code + result = inputs.LE.amount Payment by way of leave encashment received by Central and State Govt.employees at the time of retirement in respect of the period of earned leave at credit is fully exempt. In case of other employees, the exemption is to be limited to minimum of all below: 1.The actual amount received @@ -162,29 +192,40 @@ number of years of service (date of joining – date of retirement/leaving job)< 4.Rs. 3 Lakh - + PI - Performance Incentive/Bonus + Performance Incentive - fix - + code + result = inputs.PERF.amount This would be fully taxable based on incentive. + + BONUS + Bonus + + code + result = inputs.BNS.amount + + This would be fully taxable based on Bonus. + + + MEDA Medical Reimbursement fix - + This component is on-taxable up to 15000 per year (or Rs 1250 per month) on producing medical bills. fix - + worked_days.WORK100.number_of_days FC @@ -197,28 +238,38 @@ number of years of service (date of joining – date of retirement/leaving job)< PERJ Periodical Journals - fix - + code + result = inputs.PJ.amount Some employers may provide component for buying magazines, journals and books as a part of knowledge enhancement for business growth.This part would become non taxable on providing original bills. - - UNIF - Uniform/Dress Allowance + + UNIFS + Uniform/Dress Allowance for Senior Executive fix - + Some sections of employees mat get allowance for purchase of office dress/uniform.In such case, the component would become non-taxable. + + UNIFJ + Uniform/Dress Allowance for Junior Executive + + fix + + + Some sections of employees mat get allowance for purchase of office dress/uniform.In such case, the component would become non-taxable. + + TELR Telephone Reimbursement - fix - 1500 + code + result = inputs.TR.amount In some of the cases, companies may provide a component for telephone bills.Employees may provide actual phone usage bills to reimburse this component and make it non-taxable. @@ -237,8 +288,8 @@ number of years of service (date of joining – date of retirement/leaving job)< CAR Car Expenses Reimbursement - fix - 1800 + code + result = inputs.CEI.amount In case company provides component for this and employee use self owned car for official and personal purposes, Rs 1800 per month would be non-taxable on showing bills for fuel or can maintenance. This amount would be Rs 2400 in case car is more capacity than 1600cc. @@ -247,8 +298,8 @@ number of years of service (date of joining – date of retirement/leaving job)< INT Internet Expense - fix - + code + result = inputs.IE.amount Employer may also provide reimbursement of internet expenses and thus this would become non taxable. @@ -276,6 +327,7 @@ number of years of service (date of joining – date of retirement/leaving job)< result = bool(contract.tds) code result = -(contract.tds) + As per income tax rules, all payment which are taxable in nature should be done after deduction of taxes at the source itself. Hence employer compute income tax on salary payment and deduct it every month. This TDS is based on employee’s saving/investment declaration at the start of year. If investments for tax saving is not done, large amount may be deducted in last few months. @@ -297,7 +349,7 @@ number of years of service (date of joining – date of retirement/leaving job)< Employee's PF Contribution code - result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 8.33 / 100) or - (contract.wage * 8.33 / 100) + result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 0.12) or - (contract.wage * 0.12) Employer contribution does not become part of employee’s income and hence income tax is not payable on this part. @@ -310,6 +362,7 @@ number of years of service (date of joining – date of retirement/leaving job)< code result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 0.10) or - (contract.wage * 0.10) + Employee can claim deduction even of employer's contribution to NPS. @@ -322,6 +375,7 @@ number of years of service (date of joining – date of retirement/leaving job)< code result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * contract.voluntary_provident_fund / 100) or - (contract.wage * contract.voluntary_provident_fund / 100) + VPF is a safe option wherein you can contribute more than the PF ceiling of 12% that has been mandated by the government.This additional amount enjoys all the benefits of PF except that the employer is not liable to contribute any extra amount apart from 12%.An added advantage is that the interest rate is equal to the interest rate of PF and he withdrawal is tax free. Please note that the maximum contribution towards VPF is 100% of your Basic.The highest rate of interest (close to 9%) makes it a very attractive saving scheme. Because of these advantages many employees chose not to close their PF account even after getting employment else where other than India.Employees also get a major tax break on their entire contribution to the fund up to a ceiling of Rs. 70,000/- @@ -331,27 +385,42 @@ number of years of service (date of joining – date of retirement/leaving job)< none fix - + + + Company provided transport amount is based on company. fix - + worked_days.WORK100.number_of_days FD Deduction Towards Food Coupons + - - LWF - Deduction Towards State Labour Welfare Fund + + LWFE + Employee's Deduction Towards State Labour Welfare Fund fix - + + + The LWF is applicable to all the members of the organisation except the Management staff (Staffs having authority to sign on the cheque/official documents on behalf of the organisation). for e.x. Employee Contribution is Rs. 3.00 and Employer contribution Rs. 6.00 Total Rs 9.00 and deposited to the LWF office.It is half yearly contribution (June and December). + + + + LWF + Employer's Deduction Towards State Labour Welfare Fund + + fix + + + The LWF is applicable to all the members of the organisation except the Management staff (Staffs having authority to sign on the cheque/official documents on behalf of the organisation). for e.x. Employee Contribution is Rs. 3.00 and Employer contribution Rs. 6.00 Total Rs 9.00 and deposited to the LWF office.It is half yearly contribution (June and December). @@ -360,8 +429,10 @@ number of years of service (date of joining – date of retirement/leaving job)< Deduction Towards Company Provided Group Term Insurance fix - + + + Group term insurance provides a solid foundation to a comprehensive employee benifit program,backed up by government asistance in the form of valuable tax incentives to both employees and employers. @@ -369,8 +440,9 @@ number of years of service (date of joining – date of retirement/leaving job)< Deduction Towards Leave Availed none - fix - + code + result = inputs.LAI.amount + @@ -383,6 +455,7 @@ number of years of service (date of joining – date of retirement/leaving job)< code result = - (contract.medical_insurance) + @@ -392,6 +465,7 @@ number of years of service (date of joining – date of retirement/leaving job)< fix + @@ -402,6 +476,7 @@ number of years of service (date of joining – date of retirement/leaving job)< code result = payslip.company_id.dearness_allowance and - ((contract.wage + DA) * 0.10) or - (contract.wage * 0.10) + Any amount contributed by your employer to your NPS account is treated as part of your salary and is included in your income but you can claim deduction under Section 80C for this too.thus, effectively making it exempt from tax within the limit of 10% of your basic salary. This is very useful and tax efficient for you particularly if you fall in the maximum tax. @@ -416,5 +491,60 @@ number of years of service (date of joining – date of retirement/leaving job)< Both the employees and employer contribute to the fund at the rate of 12% of the basic wages, dearness allowance and retaining allowance, if any, payable to employees per month. + + + + PERF + Performance of Employee + + + + + BNS + Bonus of Employee + + + + + ARS + Arrears Input + + + + + LE + Leave Encashment Input + + + + + PJ + Periodical Journals Input + + + + + TR + Telephone Reimbursement Input + + + + + CEI + Car Expenses Input + + + + + IE + Internet Expence Input + + + + + LAI + Leave Availed Input + + diff --git a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py index 16cb12493c6..f3537a25cd7 100644 --- a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py +++ b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py @@ -45,62 +45,12 @@ class hr_contract(osv.osv): 'driver_salay': fields.boolean('Driver Salary', help="Check this box if you provide allowance for driver"), 'medical_insurance': fields.float('Medical Insurance', digits_compute=dp.get_precision('Payroll'), help="Deduction towards company provided medical insurance"), 'voluntary_provident_fund': fields.float('Voluntary Provident Fund', digits_compute=dp.get_precision('Payroll'), help="VPF computed as percentage(%)"), - 'city_type': fields.selection([ - ('metro', 'Metro'), - ('non-metro', 'Non Metro'), - ], 'Type of City'), - } - _defaults = { - 'city_type': 'non-metro', + 'house_rent_allowance_metro_nonmetro': fields.float('House Rent Allowance for Metro and Non Metro City', digits_compute=dp.get_precision('Payroll'), help="HRA computed as percentage(%)"), + 'supplementary_allowance': fields.float('Supplementary Allowance', digits_compute=dp.get_precision('Payroll')), } hr_contract() -class hr_employee(osv.osv): - ''' - Employee's Join date allows to compute total working - experience of Employee and it is used to calculate Gratuity rule. - ''' - - _inherit = 'hr.employee' - _description = 'Employee' - - def _compute_year(self, cr, uid, ids, fields, args, context=None): - """ - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of employee’s IDs - @return: No. of years of experience. - @param context: A standard dictionary for contextual values - """ - res = {} - c_date = time.strftime(DATETIME_FORMAT) - current_date = datetime.strptime(c_date, DATETIME_FORMAT) - for employee in self.browse(cr, uid, ids, context=context): - if employee.join_date: - date_start = datetime.strptime(employee.join_date, DATETIME_FORMAT) - diffyears = current_date.year - date_start.year - difference = current_date - date_start.replace(current_date.year) - days_in_year = isleap(current_date.year) and 366 or 365 - difference_in_years = diffyears + (difference.days + difference.seconds / 86400.0) / days_in_year - total_years = relativedelta(current_date, date_start).years - total_months = relativedelta(current_date, date_start).months - if total_months < 10: - year_month = float(total_months) / 10 + total_years - else: - year_month = float(total_months) / 100 + total_years - res[employee.id] = year_month - else: - res[employee.id] = 0.0 - return res - - _columns = { - 'join_date': fields.date('Join Date', help="Joining date of employee"), - 'number_of_year': fields.function(_compute_year, string='No. of Years of Service', type="float", store=True, help="Total years of work experience"), - } - -hr_employee() - class payroll_advice(osv.osv): ''' Bank Advice diff --git a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml index 6aaef2c9069..bcb168467a9 100644 --- a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml +++ b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml @@ -7,7 +7,7 @@ NE Non-Executive Employee - + diff --git a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml index 81491fd8937..949693d0f1a 100644 --- a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml +++ b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml @@ -13,7 +13,8 @@ - + + @@ -26,21 +27,6 @@ - - hr.employee.form.inherit - hr.employee - form - - - - - - - - - - - hr.payslip.run.form.inherit hr.payslip.run