156 lines
7.5 KiB
Python
156 lines
7.5 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_us(self, companies):
|
|
account_codes = [
|
|
'6110', # Salary Expenses
|
|
'2300', # Salaries Payable,
|
|
'2301', # Employee Payroll Taxes
|
|
'2302', # Employer Payroll Taxes
|
|
]
|
|
default_account = '6110'
|
|
rules_mapping = defaultdict(dict)
|
|
|
|
# ================================================ #
|
|
# US Employee Payroll Structure #
|
|
# ================================================ #
|
|
|
|
gross_rule = self.env['hr.salary.rule'].search([
|
|
('struct_id', '=', self.env.ref('l10n_us_hr_payroll.hr_payroll_structure_us_employee_salary').id),
|
|
('code', '=', 'GROSS')
|
|
])
|
|
rules_mapping[gross_rule]['debit'] = '6110'
|
|
|
|
fit_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_federal_income_tax')
|
|
rules_mapping[fit_rule]['debit'] = '2301'
|
|
|
|
sst_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_social_security_tax')
|
|
rules_mapping[sst_rule]['debit'] = '2301'
|
|
|
|
medicare_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_medicare_tax')
|
|
rules_mapping[medicare_rule]['debit'] = '2301'
|
|
|
|
medicare_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_medicare_additional_tax')
|
|
rules_mapping[medicare_rule]['debit'] = '2301'
|
|
|
|
vt_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_vt_state_income_tax')
|
|
rules_mapping[vt_income_rule]['debit'] = '2301'
|
|
|
|
vt_childcare_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_vt_childcare_tax')
|
|
rules_mapping[vt_childcare_rule]['debit'] = '2301'
|
|
|
|
il_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_il_state_income_tax')
|
|
rules_mapping[il_income_rule]['debit'] = '2301'
|
|
|
|
az_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_az_state_income_tax')
|
|
rules_mapping[az_income_rule]['debit'] = '2301'
|
|
|
|
ca_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_ca_state_income_tax')
|
|
rules_mapping[ca_income_rule]['debit'] = '2301'
|
|
|
|
id_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_id_state_income_tax')
|
|
rules_mapping[id_income_rule]['debit'] = '2301'
|
|
|
|
va_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_va_state_income_tax')
|
|
rules_mapping[va_income_rule]['debit'] = '2301'
|
|
|
|
dc_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_dc_state_income_tax')
|
|
rules_mapping[dc_income_rule]['debit'] = '2301'
|
|
|
|
nc_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_nc_state_income_tax')
|
|
rules_mapping[nc_income_rule]['debit'] = '2301'
|
|
|
|
or_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_or_state_income_tax')
|
|
rules_mapping[or_income_rule]['debit'] = '2301'
|
|
|
|
ca_sdi_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_ca_sdi_tax')
|
|
rules_mapping[ca_sdi_rule]['debit'] = '2301'
|
|
|
|
ny_income_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_ny_state_income_tax')
|
|
rules_mapping[ny_income_rule]['debit'] = '2301'
|
|
|
|
ny_sdi_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_ny_sdi_tax')
|
|
rules_mapping[ny_sdi_rule]['debit'] = '2301'
|
|
|
|
ny_pfl_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_ny_pfl_tax')
|
|
rules_mapping[ny_pfl_rule]['debit'] = '2301'
|
|
|
|
or_transit_tax_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_or_transit_tax')
|
|
rules_mapping[or_transit_tax_rule]['debit'] = '2301'
|
|
|
|
or_wbf = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_or_wbf')
|
|
rules_mapping[or_wbf]['debit'] = '2301'
|
|
|
|
or_fmli = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_or_fmli')
|
|
rules_mapping[or_fmli]['debit'] = '2301'
|
|
|
|
ny_reimployment_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_ny_reimployment_tax')
|
|
rules_mapping[ny_reimployment_rule]['debit'] = '6110'
|
|
rules_mapping[ny_reimployment_rule]['credit'] = '2302'
|
|
|
|
company_or_fmli_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_or_fmli')
|
|
rules_mapping[company_or_fmli_rule]['debit'] = '6300'
|
|
rules_mapping[company_or_fmli_rule]['credit'] = '2302'
|
|
|
|
company_or_wbf_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_or_wbf')
|
|
rules_mapping[company_or_wbf_rule]['debit'] = '6300'
|
|
rules_mapping[company_or_wbf_rule]['credit'] = '2302'
|
|
|
|
company_vt_childcare_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_vt_company_childcare_tax')
|
|
rules_mapping[company_vt_childcare_rule]['debit'] = '6300'
|
|
rules_mapping[company_vt_childcare_rule]['credit'] = '2302'
|
|
|
|
company_dc_pfl_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_dc_pfl')
|
|
rules_mapping[company_dc_pfl_rule]['debit'] = '6300'
|
|
rules_mapping[company_dc_pfl_rule]['credit'] = '2302'
|
|
|
|
company_dc_admin_funding_tax_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_dc_admin_funding_tax')
|
|
rules_mapping[company_dc_admin_funding_tax_rule]['debit'] = '6300'
|
|
rules_mapping[company_dc_admin_funding_tax_rule]['credit'] = '2302'
|
|
|
|
company_sst_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_social_security')
|
|
rules_mapping[company_sst_rule]['debit'] = '6110'
|
|
rules_mapping[company_sst_rule]['credit'] = '2302'
|
|
|
|
company_medicare_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_medicare')
|
|
rules_mapping[company_medicare_rule]['debit'] = '6110'
|
|
rules_mapping[company_medicare_rule]['credit'] = '2302'
|
|
|
|
company_futa_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_futa')
|
|
rules_mapping[company_futa_rule]['debit'] = '6110'
|
|
rules_mapping[company_futa_rule]['credit'] = '2302'
|
|
|
|
company_ca_sui_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_sui')
|
|
rules_mapping[company_ca_sui_rule]['debit'] = '6110'
|
|
rules_mapping[company_ca_sui_rule]['credit'] = '2302'
|
|
|
|
company_ca_sui_rule = self.env.ref('l10n_us_hr_payroll.l10n_us_employee_salary_company_ca_ett')
|
|
rules_mapping[company_ca_sui_rule]['debit'] = '6110'
|
|
rules_mapping[company_ca_sui_rule]['credit'] = '2302'
|
|
|
|
net_rule = self.env['hr.salary.rule'].search([
|
|
('struct_id', '=', self.env.ref('l10n_us_hr_payroll.hr_payroll_structure_us_employee_salary').id),
|
|
('code', '=', 'NET')
|
|
])
|
|
rules_mapping[net_rule]['credit'] = '2300'
|
|
|
|
self._configure_payroll_account(
|
|
companies,
|
|
"US",
|
|
account_codes=account_codes,
|
|
rules_mapping=rules_mapping,
|
|
default_account=default_account)
|
|
|
|
def _configure_payroll_account_generic_coa(self, companies):
|
|
# Accounting configuration for the generic COA has always pulled in US-specific configuration. Continue
|
|
# the same behavior now that we have a US-specific COA.
|
|
self._configure_payroll_account_us(companies)
|