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

188 lines
9.3 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_mx(self, companies):
account_codes = [
"110.01.01", # Employment Subsidy to Apply
"201.01.02", # Employee Reimbursement
"205.06.02", # Other Various Short-Term Credits (Fonacot)
"210.01.01", # Provision for Wages and Salaries to Pay
"210.02.01", # Provision for Vacation to Pay
"210.03.01", # Provision for Bonus to Pay
"210.04.01", # Provision for Savings Fund to Pay
"211.01.01", # Provision for Employer IMSS to Pay
"211.02.01", # Provision for SAR to Pay
"211.03.01", # Provision for Infonavit to Pay
"216.01.01", # ISR Income Taxes
"216.11.01", # IMSS Withholding for Workers
"601.01.01", # Wages and Salaries
"601.06.01", # Vacations
"601.07.01", # Holiday Bonus
"601.12.01", # Bonus
"601.15.01", # Pantry
"601.16.01", # Transport (Support)
"601.16.02", # Transport (Gasoline Vouchers)
"601.19.01", # Savings Fund
"601.26.01", # IMSS Quota
"601.27.01", # Contributions to Infonavit
"601.28.01", # Contributions to the SAR
"601.74.01", # Commissions on Sales
]
default_account = '210.01.01'
rules_mapping = defaultdict(dict)
# ================================================ #
# MX Regular Pay Payroll Structure #
# ================================================ #
gross_without_holidays = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_bruto')
rules_mapping[gross_without_holidays]['debit'] = '601.01.01'
holidays_on_time = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_holidays_on_time')
rules_mapping[holidays_on_time]['debit'] = '210.02.01'
gasoline_period = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_gasoline_period')
rules_mapping[gasoline_period]['debit'] = '601.16.02'
transport_period = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_transport_period')
rules_mapping[transport_period]['debit'] = '601.16.01'
meal_voucher_period = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_meal_voucher_period')
rules_mapping[meal_voucher_period]['debit'] = '601.15.01'
holiday_bonus = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_holiday_bonus')
rules_mapping[holiday_bonus]['debit'] = '210.02.01'
discount_absence = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_discount_for_absence')
rules_mapping[discount_absence]['debit'] = '601.01.01'
imss_disabilities = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_disabilities')
rules_mapping[imss_disabilities]['debit'] = '601.01.01'
savings_fund_employer_alw = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_employer_savings_fund_alw')
rules_mapping[savings_fund_employer_alw]['debit'] = '601.19.01'
reimbursement = self.env.ref('l10n_mx_hr_payroll.l10n_mx_hr_payroll_structure_mx_employee_salary_reimbursement_salary_rule')
rules_mapping[reimbursement]['debit'] = '201.01.02'
expenses = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_expenses')
rules_mapping[expenses]['debit'] = '201.01.02'
commissions = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_commissions')
rules_mapping[commissions]['debit'] = '601.74.01'
bonus = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_bonus')
rules_mapping[bonus]['debit'] = '601.01.01'
isr = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_isr')
rules_mapping[isr]['debit'] = '216.01.01'
isr_holiday_bonus = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_isr_holiday_bonus_tax')
rules_mapping[isr_holiday_bonus]['debit'] = '216.01.01'
savings_fund_employee = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_savings_fund')
rules_mapping[savings_fund_employee]['debit'] = '210.04.01'
savings_fund_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_employer_savings_fund')
rules_mapping[savings_fund_employer]['debit'] = '210.04.01'
subsidy = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_subsidy')
rules_mapping[subsidy]['debit'] = '110.01.01'
infonavit = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_infonavit_employee')
rules_mapping[infonavit]['debit'] = '211.03.01'
fonacot = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_fonacot')
rules_mapping[fonacot]['debit'] = '205.06.02'
imss_employee = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_social_security_total_employee')
rules_mapping[imss_employee]['credit'] = '216.11.01'
imss_work_risk_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_work_risk')
rules_mapping[imss_work_risk_employer]['debit'] = '601.26.01'
rules_mapping[imss_work_risk_employer]['credit'] = '211.01.01'
imss_dis_fix_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_disease_maternity_fixed')
rules_mapping[imss_dis_fix_employer]['debit'] = '601.26.01'
rules_mapping[imss_dis_fix_employer]['credit'] = '211.01.01'
imss_dis_add_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_disease_maternity_additional')
rules_mapping[imss_dis_add_employer]['debit'] = '601.26.01'
rules_mapping[imss_dis_add_employer]['credit'] = '211.01.01'
imss_dis_med_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_disease_maternity_medical')
rules_mapping[imss_dis_med_employer]['debit'] = '601.26.01'
rules_mapping[imss_dis_med_employer]['credit'] = '211.01.01'
imss_dis_mon_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_disease_maternity_money')
rules_mapping[imss_dis_mon_employer]['debit'] = '601.26.01'
rules_mapping[imss_dis_mon_employer]['credit'] = '211.01.01'
imss_dis_lif_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_disability_life')
rules_mapping[imss_dis_lif_employer]['debit'] = '601.26.01'
rules_mapping[imss_dis_lif_employer]['credit'] = '211.01.01'
imss_retire_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_retirement')
rules_mapping[imss_retire_employer]['debit'] = '601.28.01'
rules_mapping[imss_retire_employer]['credit'] = '211.02.01'
imss_ceav_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_ceav')
rules_mapping[imss_ceav_employer]['debit'] = '601.28.01'
rules_mapping[imss_ceav_employer]['credit'] = '211.02.01'
imss_nursery_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_imss_nursery')
rules_mapping[imss_nursery_employer]['debit'] = '601.26.01'
rules_mapping[imss_nursery_employer]['credit'] = '211.01.01'
imss_infonavit_employer = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_infonavit')
rules_mapping[imss_infonavit_employer]['debit'] = '601.27.01'
rules_mapping[imss_infonavit_employer]['credit'] = '211.03.01'
provision_period_christmas = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_period_provisions_christmas_bonus')
rules_mapping[provision_period_christmas]['debit'] = '601.12.01'
rules_mapping[provision_period_christmas]['credit'] = '210.03.01'
provision_period_holiday = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_period_provisions_holiday_bonus')
rules_mapping[provision_period_holiday]['debit'] = '601.07.01'
rules_mapping[provision_period_holiday]['credit'] = '210.02.01'
provision_period_vacation = self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay_period_provisions_vacations_bonus')
rules_mapping[provision_period_vacation]['debit'] = '601.06.01'
rules_mapping[provision_period_vacation]['credit'] = '210.02.01'
net = self.env['hr.salary.rule'].search([
('struct_id', '=', self.env.ref('l10n_mx_hr_payroll.l10n_mx_regular_pay').id),
('code', '=', 'NET')
])
rules_mapping[net]['credit'] = '210.01.01'
# ================================================ #
# MX Christmas Bonus Payroll Structure #
# ================================================ #
basic = self.env.ref('l10n_mx_hr_payroll.l10n_mx_christmas_bonus_basic')
rules_mapping[basic]['debit'] = '210.03.01'
isr = self.env.ref('l10n_mx_hr_payroll.l10n_mx_christmas_bonus_isr')
rules_mapping[isr]['debit'] = '216.01.01'
net = self.env.ref('l10n_mx_hr_payroll.l10n_mx_christmas_bonus_net')
rules_mapping[net]['credit'] = '210.01.01'
self._configure_payroll_account(
companies,
"MX",
account_codes=account_codes,
rules_mapping=rules_mapping,
default_account=default_account)