Files
enterprise-addons/l10n_be_hr_payroll_account/models/account_chart_template.py
T

196 lines
8.7 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from collections import defaultdict
from odoo import models
class AccountChartTemplate(models.AbstractModel):
_inherit = "account.chart.template"
def _configure_payroll_account_be(self, companies):
account_codes = [
'453000', # Withholding taxes, IP Deduction
'454000', # ONSS (Employee, Employer, Miscellaneous)
'455000', # Due amount (net)
'620200', # Remuneration, Representation Fees; Private Car
'621000', # ONSS Employer (debit)
'643000', # IP
'743000', # Meal Vouchers
]
default_account = '620200'
rules_mapping = defaultdict(dict)
# ================================================ #
# CP200: 13th month #
# ================================================ #
basic_rule = self.env['hr.salary.rule'].search([
('struct_id', '=', self.env.ref('l10n_be_hr_payroll.hr_payroll_structure_cp200_thirteen_month').id),
('code', '=', 'BASIC')
])
rules_mapping[basic_rule]['credit'] = '455000'
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_thirteen_month_onss_rule')
rules_mapping[onss_rule]['credit'] = '454000'
pp_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_thirteen_month_p_p')
rules_mapping[pp_rule]['credit'] = '453000'
net_rule = self.env['hr.salary.rule'].search([
('struct_id', '=', self.env.ref('l10n_be_hr_payroll.hr_payroll_structure_cp200_thirteen_month').id),
('code', '=', 'NET')
])
rules_mapping[net_rule]['credit'] = '455000'
# ================================================ #
# CP200: Double Holidays #
# ================================================ #
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_double_holiday_onss_rule')
rules_mapping[onss_rule]['credit'] = '454000'
pp_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_double_holiday_pay_p_p')
rules_mapping[pp_rule]['credit'] = '453000'
net_rule = self.env['hr.salary.rule'].search([
('struct_id', '=', self.env.ref('l10n_be_hr_payroll.hr_payroll_structure_cp200_double_holiday').id),
('code', '=', 'NET')
])
rules_mapping[net_rule]['credit'] = '455000'
# ================================================ #
# CP200: Employees Monthly Pay #
# ================================================ #
# Remunerations
remun_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_remuneration')
rules_mapping[remun_rule]['debit'] = '620200'
# IP
ip_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_ip')
rules_mapping[ip_rule]['debit'] = '643000'
# ONSS (Onss - employment bonus)
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_onss_total')
rules_mapping[onss_rule]['credit'] = '454000'
# Private car reimbursement
car_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_private_car')
rules_mapping[car_rule]['debit'] = '620200'
# Total withholding taxes
pp_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_withholding_taxes_total')
rules_mapping[pp_rule]['credit'] = '453000'
# Special Social Cotisation (MISC ONSS)
monss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_mis_ex_onss')
rules_mapping[monss_rule]['debit'] = '454000' # Note: this is a credit, but the amount is negative
# Representation Fees
rep_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_representation_fees')
rules_mapping[rep_rule]['debit'] = '620200'
# IP Deduction
ip_ded_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_ip_deduction')
rules_mapping[ip_ded_rule]['debit'] = '453000' # Note: This is a credit, but the amount is negative
# Meal vouchers
meal_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_ch_worker')
rules_mapping[meal_rule]['debit'] = '743000' # Note: this is a credit, but the amount is negative
# Owed Remunerations (NET)
net_rule = self.env['hr.salary.rule'].search([
('struct_id', '=', self.env.ref('l10n_be_hr_payroll.hr_payroll_structure_cp200_employee_salary').id),
('code', '=', 'NET')
])
rules_mapping[net_rule]['credit'] = '455000'
# ONSS Employer
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_onss_employer')
rules_mapping[onss_rule]['debit'] = '621000'
rules_mapping[onss_rule]['credit'] = '454000'
# ================================================ #
# CP200: Termination Fees #
# ================================================ #
# Remuneration
remun_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_fees_remuneration')
rules_mapping[remun_rule]['debit'] = '620200'
# ONSS (Onss - employment bonus)
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_fees_onss_total')
rules_mapping[onss_rule]['credit'] = '454000'
# Total withholding taxes
pp_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_withholding_taxes_total')
rules_mapping[pp_rule]['credit'] = '453000'
# Owed Remunerations (NET)
net_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_fees_withholding_taxes_total')
rules_mapping[net_rule]['credit'] = '455000'
# Mobility Budget Withholding Tax
net_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_salary_mobility_budget_tax', raise_if_not_found=False)
if net_rule:
rules_mapping[net_rule]['credit'] = '454000'
# ONSS Employer
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_fees_termination_ONSS')
rules_mapping[onss_rule]['debit'] = '621000'
rules_mapping[onss_rule]['credit'] = '454000'
# ================================================ #
# CP200: Termination Holidays N #
# ================================================ #
basic_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n_total_n')
rules_mapping[basic_rule]['credit'] = '455000'
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n_rules_onss_termination')
rules_mapping[onss_rule]['credit'] = '454000'
monss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n_rules_special_contribution_termination')
rules_mapping[monss_rule]['credit'] = '454000'
pp_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n_rules_professional_tax_termination')
rules_mapping[pp_rule]['credit'] = '453000'
net_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n_pay_net_termination')
rules_mapping[net_rule]['debit'] = '455000'
# ================================================ #
# CP200: Termination Holidays N-1 #
# ================================================ #
basic_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n1_total_n')
rules_mapping[basic_rule]['credit'] = '455000'
onss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n1_rules_onss_termination')
rules_mapping[onss_rule]['credit'] = '454000'
monss_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n1_rules_special_contribution_termination')
rules_mapping[monss_rule]['credit'] = '454000'
pp_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n1_rules_professional_tax_termination')
rules_mapping[pp_rule]['credit'] = '453000'
net_rule = self.env.ref('l10n_be_hr_payroll.cp200_employees_termination_n1_pay_net_termination')
rules_mapping[net_rule]['debit'] = '455000'
self._configure_payroll_account(
companies,
"BE",
account_codes=account_codes,
rules_mapping=rules_mapping,
default_account=default_account)
def _configure_payroll_account_be_comp(self, companies):
return self._configure_payroll_account_be(companies)
def _configure_payroll_account_be_asso(self, companies):
return self._configure_payroll_account_be(companies)