diff --git a/l10n_us_nj_hr_payroll/__init__.py b/l10n_us_nj_hr_payroll/__init__.py index 48629d95..0650744f 100755 --- a/l10n_us_nj_hr_payroll/__init__.py +++ b/l10n_us_nj_hr_payroll/__init__.py @@ -1 +1 @@ -from . import us_nj_hr_payroll +from . import models diff --git a/l10n_us_nj_hr_payroll/__manifest__.py b/l10n_us_nj_hr_payroll/__manifest__.py index 6b34c3aa..724ae7df 100755 --- a/l10n_us_nj_hr_payroll/__manifest__.py +++ b/l10n_us_nj_hr_payroll/__manifest__.py @@ -4,7 +4,7 @@ 'license': 'AGPL-3', 'category': 'Localization', 'depends': ['l10n_us_hr_payroll'], - 'version': '11.0.2018.0.0', + 'version': '11.0.2019.0.0', 'description': """ USA::New Jersey Payroll Rules. ============================== @@ -22,9 +22,10 @@ USA::New Jersey Payroll Rules. 'auto_install': False, 'website': 'https://hibou.io/', 'data':[ - 'us_nj_hr_payroll_view.xml', + 'views/us_nj_hr_payroll_views.xml', 'data/base.xml', - 'data/rules_2018.xml', + 'data/rates.xml', + 'data/rules.xml', 'data/final.xml', ], 'installable': True diff --git a/l10n_us_nj_hr_payroll/data/base.xml b/l10n_us_nj_hr_payroll/data/base.xml index 5db83ed6..4d8da28b 100755 --- a/l10n_us_nj_hr_payroll/data/base.xml +++ b/l10n_us_nj_hr_payroll/data/base.xml @@ -90,64 +90,64 @@ - New Jersey Unemployment Insurance Tax - Wages - NJ_UNEMP_WAGES + Wage: US-NJ Unemployment Insurance + WAGE_US_NJ_UNEMP - New Jersey State Disability Insurance Tax - Wages - NJ_SDI_WAGES + Wage: US-NJ State Disability Insurance + WAGE_US_NJ_SDI - New Jersey Family Leave Insurance Tax - Wages - NJ_FLI_WAGES + Wage: US-NJ Family Leave Insurance + WAGE_US_NJ_FLI - New Jersey Work Force Development - Wages - NJ_WF_WAGES + Wage: US-NJ Work Force Development + WAGE_US_NJ_WF - New Jersey Unemployment Insurance Tax - Employee - NJ_UNEMP_EMPLOYEE + EE: US-NJ Unemployment Insurance + EE_US_NJ_UNEMP - New Jersey Unemployment Insurance Tax - Employer - NJ_UNEMP_COMPANY + ER: US-NJ Unemployment Insurance + ER_US_NJ_UNEMP - New Jersey State Disability Insurance - Employer - NJ_SDI_COMPANY + ER: US-NJ State Disability Insurance + ER_US_NJ_SDI - New Jersey State Disability Insurance - Employee - NJ_SDI_EMPLOYEE + EE: US-NJ State Disability Insurance + EE_US_NJ_SDI - New Jersey State Family Leave Insurance Tax - NJ_FLI + EE: US-NJ Family Leave Insurance + EE_US_NJ_FLI - New Jersey State Workforce Development/Suppllemental Tax - NJ_WF + EE: US-NJ Workforce Development + EE_US_NJ_WF - New Jersey Income Withholding - NJ_WITHHOLD + EE: US-NJ Income Withholding + EE_US_NJ_INC_WITHHOLD diff --git a/l10n_us_nj_hr_payroll/data/rates.xml b/l10n_us_nj_hr_payroll/data/rates.xml new file mode 100644 index 00000000..c8173c3d --- /dev/null +++ b/l10n_us_nj_hr_payroll/data/rates.xml @@ -0,0 +1,56 @@ + + + + + US NJ Unemployment (Company) + ER_US_NJ_UNEMP + 3.4 + 2018-01-01 + + + + US NJ Unemployment (Employee) + EE_US_NJ_UNEMP + 0.3825 + 2018-01-01 + + + US NJ State Disability Insurance (Company) + ER_US_NJ_SDI + 0.5 + 2018-01-01 + + + + US NJ State Disability Insurance (Employee) + EE_US_NJ_SDI + 0.24 + 2018-01-01 + + + US NJ Family Leave Insurance (Company) + ER_US_NJ_FLI + 0.00 + 2018-01-01 + + + + US NJ Family Leave Insurance (Employee) + EE_US_NJ_FLI + 0.1 + 2018-01-01 + + + US NJ Workforce Development (Company) + ER_US_NJ_WF + 0.1175 + 2018-01-01 + + + US NJ Workforce Development (Employee) + EE_US_NJ_WF + 0.0425 + 2018-01-01 + + + \ No newline at end of file diff --git a/l10n_us_nj_hr_payroll/data/rules_2018.xml b/l10n_us_nj_hr_payroll/data/rules.xml similarity index 82% rename from l10n_us_nj_hr_payroll/data/rules_2018.xml rename to l10n_us_nj_hr_payroll/data/rules.xml index c4a6faad..e0f90d6e 100755 --- a/l10n_us_nj_hr_payroll/data/rules_2018.xml +++ b/l10n_us_nj_hr_payroll/data/rules.xml @@ -5,18 +5,20 @@ - + - New Jersey Unemployment Insurance Tax - Wages (2018) - NJ_UNEMP_WAGES_2018 + Wage: US-NJ Unemployment Insurance + WAGE_US_NJ_UNEMP python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code ### -ytd = payslip.sum('NJ_UNEMP_WAGES_2018', '2018-01-01', '2019-01-01') +year = int(payslip.dict.date_from[:4]) +rate = payslip.dict.get_rate('ER_US_NJ_UNEMP') +ytd = payslip.sum('WAGE_US_NJ_UNEMP', str(year) + '-01-01', str(year+1) + '-01-01') ytd += contract.external_wages -remaining = 33700.0 - ytd +remaining = rate.wage_limit_year - ytd if remaining <= 0.0: result = 0 elif remaining < categories.BASIC: @@ -29,14 +31,15 @@ else: - New Jersey Unemployment - Employee(2018) - NJ_UNEMP_EMPLOYEE_2018 + EE: US-NJ Unemployment + EE_US_NJ_UNEMP python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code -result_rate = -contract.nj_unemp_employee_rate(2018) -result = categories.NJ_UNEMP_WAGES +rate = payslip.dict.get_rate('EE_US_NJ_UNEMP') +result_rate = -rate.rate +result = categories.BASIC # result_rate of 0 implies 100% due to bug if result_rate == 0.0: @@ -48,14 +51,15 @@ if result_rate == 0.0: - New Jersey Unemployment - Employer(2018) - NJ_UNEMP_COMPANY_2018 + ER: US-NJ Unemployment + ER_US_NJ_UNEMP python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code -result_rate = -contract.nj_unemp_company_rate(2018) -result = categories.NJ_UNEMP_WAGES +rate = payslip.dict.get_rate('ER_US_NJ_UNEMP') +result_rate = -rate.rate +result = categories.WAGE_US_NJ_UNEMP # result_rate of 0 implies 100% due to bug if result_rate == 0.0: @@ -68,18 +72,20 @@ if result_rate == 0.0: - + - New Jersey State Disability Tax - Wages (2018) - NJ_SDI_WAGES_2018 + Wage: US-NJ State Disability Insurance + WAGE_US_NJ_SDI python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code ### -ytd = payslip.sum('NJ_SDI_WAGES_2018', '2018-01-01', '2019-01-01') +year = int(payslip.dict.date_from[:4]) +rate = payslip.dict.get_rate('ER_US_NJ_SDI') +ytd = payslip.sum('WAGE_US_NJ_SDI', str(year) + '-01-01', str(year+1) + '-01-01') ytd += contract.external_wages -remaining = 33700.0 - ytd +remaining = rate.wage_limit_year - ytd if remaining <= 0.0: result = 0 elif remaining < categories.BASIC: @@ -92,14 +98,15 @@ else: - New Jersey State Disability Insurance - Employee(2018) - NJ_SDI_EMPLOYEE_2018 + EE: US-NJ State Disability Insurance + EE_US_NJ_SDI python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code -result_rate = -contract.nj_sdi_employee_rate(2018) -result = categories.NJ_SDI_WAGES +rate = payslip.dict.get_rate('EE_US_NJ_SDI') +result_rate = -rate.rate +result = categories.BASIC # result_rate of 0 implies 100% due to bug if result_rate == 0.0: @@ -111,14 +118,15 @@ if result_rate == 0.0: - New Jersey State Disability Insurance - Employer(2018) - NJ_SDI_COMPANY_2018 + ER: US-NJ State Disability Insurance + ER_US_NJ_SDI python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code -result_rate = -contract.nj_sdi_company_rate(2018) -result = categories.NJ_SDI_WAGES +rate = payslip.dict.get_rate('ER_US_NJ_SDI') +result_rate = -rate.rate +result = categories.WAGE_US_NJ_SDI # result_rate of 0 implies 100% due to bug if result_rate == 0.0: @@ -130,18 +138,20 @@ if result_rate == 0.0: - + - New Jersey Family Leave Insurance Tax - Wages (2018) - NJ_FLI_WAGES_2018 + Wage: US-NJ Family Leave Insurance + WAGE_US_NJ_FLI python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code ### -ytd = payslip.sum('NJ_FLI_WAGES_2018', '2018-01-01', '2019-01-01') +year = int(payslip.dict.date_from[:4]) +rate = payslip.dict.get_rate('ER_US_NJ_FLI') +ytd = payslip.sum('WAGE_US_NJ_FLI', str(year) + '-01-01', str(year+1) + '-01-01') ytd += contract.external_wages -remaining = 33700.0 - ytd +remaining = rate.wage_limit_year - ytd if remaining <= 0.0: result = 0 elif remaining < categories.BASIC: @@ -154,14 +164,15 @@ else: - New Jersey Family Leave Insurance(2018) - NJ_FLI_2018 + EE: US-NJ Family Leave Insurance + EE_US_NJ_FLI python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code -result_rate = -contract.nj_fli_rate(2018) -result = categories.NJ_FLI_WAGES +rate = payslip.dict.get_rate('EE_US_NJ_FLI') +result_rate = -rate.rate +result = categories.BASIC @@ -171,16 +182,18 @@ result = categories.NJ_FLI_WAGES - New Jersey Workforce Development/Supplemental Workforce Funds Tax - Wages (2018) - NJ_WF_WAGES_2018 + Wage: US-NJ Workforce Development Funds + WAGE_US_NJ_WF python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code ### -ytd = payslip.sum('NJ_WF_WAGES_2018', '2018-01-01', '2019-01-01') +year = int(payslip.dict.date_from[:4]) +rate = payslip.dict.get_rate('ER_US_NJ_WF') +ytd = payslip.sum('WAGE_US_NJ_WF', str(year) + '-01-01', str(year+1) + '-01-01') ytd += contract.external_wages -remaining = 33700.0 - ytd +remaining = rate.wage_limit_year - ytd if remaining <= 0.0: result = 0 elif remaining < categories.BASIC: @@ -193,14 +206,15 @@ else: - New Jersey Workforce Development/Supplemental Workforce Funds(2018) - NJ_WF_2018 + EE: US-NJ Workforce Development Funds + EE_US_NJ_WF python - result = (payslip.date_to[:4] == '2018') + result = (contract.futa_type != contract.FUTA_TYPE_BASIC) code -result_rate = -contract.nj_wf_rate(2018) -result = categories.NJ_WF_WAGES +rate = payslip.dict.get_rate('EE_US_NJ_WF') +result_rate = -rate.rate +result = categories.BASIC if result_rate == 0.0: result = 0.0 @@ -213,10 +227,10 @@ if result_rate == 0.0: - New Jersey Income Withholding - NJ_INC_WITHHOLD_2018 + EE: US-NJ Income Withholding + EE_US_NJ_INC_WITHHOLD python - result = (payslip.date_to[:4] == '2018') + result = True code wages = categories.GROSS diff --git a/l10n_us_nj_hr_payroll/models/__init__.py b/l10n_us_nj_hr_payroll/models/__init__.py new file mode 100644 index 00000000..48629d95 --- /dev/null +++ b/l10n_us_nj_hr_payroll/models/__init__.py @@ -0,0 +1 @@ +from . import us_nj_hr_payroll diff --git a/l10n_us_nj_hr_payroll/models/us_nj_hr_payroll.py b/l10n_us_nj_hr_payroll/models/us_nj_hr_payroll.py new file mode 100755 index 00000000..315a9136 --- /dev/null +++ b/l10n_us_nj_hr_payroll/models/us_nj_hr_payroll.py @@ -0,0 +1,21 @@ +from odoo import models, fields, api + + +class USNJHrContract(models.Model): + _inherit = 'hr.contract' + + nj_njw4_allowances = fields.Integer(string="New Jersey NJ-W4 Allowances", + default=0, + help="Allowances claimed on NJ W-4") + nj_additional_withholding = fields.Float(string="Additional Withholding", + default=0.0, + help='Additional withholding from line 5 of form NJ-W4') + nj_njw4_filing_status = fields.Selection([ + ('single', 'Single'), + ('married_separate', 'Married/Civil Union partner Separate'), + ('married_joint', 'Married/Civil Union Couple Joint'), + ('widower', 'Widower/Surviving Civil Union Partner'), + ('head_household', 'Head of Household') + ], string='NJ Filing Status', default='single') + nj_njw4_rate_table = fields.Char(string='Wage Chart Letter', + help='Wage Chart Letter from line 3 of form NJ-W4.') diff --git a/l10n_us_nj_hr_payroll/tests/test_us_nj_payslip_2018.py b/l10n_us_nj_hr_payroll/tests/test_us_nj_payslip_2018.py index 24b0dd54..5e2c6522 100755 --- a/l10n_us_nj_hr_payroll/tests/test_us_nj_payslip_2018.py +++ b/l10n_us_nj_hr_payroll/tests/test_us_nj_payslip_2018.py @@ -6,6 +6,14 @@ class TestUsNJPayslip(TestUsPayslip): # 2018 Taxes and Rates ### NJ_UNEMP_MAX_WAGE = 33700.0 + EE_NJ_UNEMP = -0.3825 / 100.0 + ER_NJ_UNEMP = -3.4 / 100.0 + EE_NJ_SDI = -0.24 / 100.0 + ER_NJ_SDI = -0.5 / 100.0 + EE_NJ_FLI = -0.1 / 100.0 + ER_NJ_FLI = 0.0 + EE_NJ_WF = -0.0425 / 100.0 + ER_NJ_WF = 0.0 # Examples found on page 24 of http://www.state.nj.us/treasury/taxation/pdf/current/njwt.pdf def test_2018_taxes_example1(self): @@ -18,13 +26,6 @@ class TestUsNJPayslip(TestUsPayslip): wh = -4.21 employee = self._createEmployee() - employee.company_id.nj_unemp_employee = 0.3825 - employee.company_id.nj_unemp_company = 3.4 - employee.company_id.nj_sdi_employee = 0.19 - employee.company_id.nj_sdi_company = 0.5 - employee.company_id.nj_fli = 0.09 - employee.company_id.nj_wf = 0.0 - contract = self._createContract(employee, salary, struct_id=self.ref( @@ -35,14 +36,6 @@ class TestUsNJPayslip(TestUsPayslip): contract.nj_njw4_filing_status = 'single' contract.nj_njw4_rate_table = 'A' - # tax rates - nj_unemp_employee = contract.nj_unemp_employee_rate(2018) / -100.0 - nj_unemp_company = contract.nj_unemp_company_rate(2018) / -100.0 - nj_sdi_employee = contract.nj_sdi_employee_rate(2018) / -100.0 - nj_sdi_company = contract.nj_sdi_company_rate(2018) / -100.0 - nj_fli = contract.nj_fli_rate(2018) / -100.0 - nj_wf = contract.nj_wf_rate(2018) / -100.0 - self.assertEqual(contract.schedule_pay, 'weekly') self._log('2018 New Jersey tax first payslip:') @@ -52,14 +45,14 @@ class TestUsNJPayslip(TestUsPayslip): cats = self._getCategories(payslip) - self.assertPayrollEqual(cats['NJ_UNEMP_WAGES'], salary) - self.assertPayrollEqual(cats['NJ_UNEMP_EMPLOYEE'], round(cats['NJ_UNEMP_WAGES'] * nj_unemp_employee, 2)) - self.assertPayrollEqual(cats['NJ_UNEMP_COMPANY'], cats['NJ_UNEMP_WAGES'] * nj_unemp_company) - self.assertPayrollEqual(cats['NJ_SDI_EMPLOYEE'], cats['NJ_SDI_WAGES'] * nj_sdi_employee) - self.assertPayrollEqual(cats['NJ_SDI_COMPANY'], cats['NJ_SDI_WAGES'] * nj_sdi_company) - self.assertPayrollEqual(cats['NJ_FLI'], cats['NJ_FLI_WAGES'] * nj_fli) - self.assertPayrollEqual(cats['NJ_WF'], cats['NJ_WF_WAGES'] * nj_wf) - self.assertPayrollEqual(cats['NJ_WITHHOLD'], wh) + self.assertPayrollEqual(cats['WAGE_US_NJ_UNEMP'], salary) + self.assertPayrollEqual(cats['EE_US_NJ_UNEMP'], round(cats['BASIC'] * self.EE_NJ_UNEMP, 2)) + self.assertPayrollEqual(cats['ER_US_NJ_UNEMP'], cats['WAGE_US_NJ_UNEMP'] * self.ER_NJ_UNEMP) + self.assertPayrollEqual(cats['EE_US_NJ_SDI'], cats['BASIC'] * self.EE_NJ_SDI) + self.assertPayrollEqual(cats['ER_US_NJ_SDI'], cats['WAGE_US_NJ_SDI'] * self.ER_NJ_SDI) + self.assertPayrollEqual(cats['EE_US_NJ_FLI'], cats['BASIC'] * self.EE_NJ_FLI) + self.assertPayrollEqual(cats['EE_US_NJ_WF'], cats['BASIC'] * self.EE_NJ_WF) + self.assertPayrollEqual(cats['EE_US_NJ_INC_WITHHOLD'], wh) process_payslip(payslip) @@ -75,9 +68,9 @@ class TestUsNJPayslip(TestUsPayslip): cats = self._getCategories(payslip) - self.assertPayrollEqual(cats['NJ_UNEMP_WAGES'], remaining_nj_unemp_wages) - self.assertPayrollEqual(cats['NJ_UNEMP_COMPANY'], remaining_nj_unemp_wages * nj_unemp_company) - self.assertPayrollEqual(cats['NJ_UNEMP_EMPLOYEE'], remaining_nj_unemp_wages * nj_unemp_employee) + self.assertPayrollEqual(cats['WAGE_US_NJ_UNEMP'], remaining_nj_unemp_wages) + self.assertPayrollEqual(cats['ER_US_NJ_UNEMP'], remaining_nj_unemp_wages * self.ER_NJ_UNEMP) + self.assertPayrollEqual(cats['EE_US_NJ_UNEMP'], cats['BASIC'] * self.EE_NJ_UNEMP) def test_2018_taxes_example2(self): salary = 1400.00 @@ -89,13 +82,6 @@ class TestUsNJPayslip(TestUsPayslip): wh = -27.60 employee = self._createEmployee() - employee.company_id.nj_unemp_employee = 0.3825 - employee.company_id.nj_unemp_company = 3.4 - employee.company_id.nj_sdi_employee = 0.19 - employee.company_id.nj_sdi_company = 0.5 - employee.company_id.nj_fli = 0.09 - employee.company_id.nj_wf = 0.0 - contract = self._createContract(employee, salary, struct_id=self.ref( @@ -105,14 +91,6 @@ class TestUsNJPayslip(TestUsPayslip): contract.nj_additional_withholding = additional_withholding contract.nj_njw4_filing_status = 'married_joint' - # tax rates - nj_unemp_employee = contract.nj_unemp_employee_rate(2018) / -100.0 - nj_unemp_company = contract.nj_unemp_company_rate(2018) / -100.0 - nj_sdi_employee = contract.nj_sdi_employee_rate(2018) / -100.0 - nj_sdi_company = contract.nj_sdi_company_rate(2018) / -100.0 - nj_fli = contract.nj_fli_rate(2018) / -100.0 - nj_wf = contract.nj_wf_rate(2018) / -100.0 - self.assertEqual(contract.schedule_pay, 'weekly') self._log('2018 New Jersey tax first payslip:') @@ -122,13 +100,13 @@ class TestUsNJPayslip(TestUsPayslip): cats = self._getCategories(payslip) - self.assertPayrollEqual(cats['NJ_UNEMP_WAGES'], salary) - self.assertPayrollEqual(cats['NJ_UNEMP_EMPLOYEE'], round((cats['NJ_UNEMP_WAGES'] * nj_unemp_employee), 2)) - self.assertPayrollEqual(cats['NJ_UNEMP_COMPANY'], cats['NJ_UNEMP_WAGES'] * nj_unemp_company) - self.assertPayrollEqual(cats['NJ_SDI_EMPLOYEE'], cats['NJ_SDI_WAGES'] * nj_sdi_employee) - self.assertPayrollEqual(cats['NJ_SDI_COMPANY'], cats['NJ_SDI_WAGES'] * nj_sdi_company) - self.assertPayrollEqual(cats['NJ_FLI'], cats['NJ_FLI_WAGES'] * nj_fli) - self.assertPayrollEqual(cats['NJ_WF'], cats['NJ_WF_WAGES'] * nj_wf) - self.assertPayrollEqual(cats['NJ_WITHHOLD'], wh) + self.assertPayrollEqual(cats['WAGE_US_NJ_UNEMP'], salary) + self.assertPayrollEqual(cats['EE_US_NJ_UNEMP'], cats['BASIC'] * self.EE_NJ_UNEMP) + self.assertPayrollEqual(cats['ER_US_NJ_UNEMP'], cats['WAGE_US_NJ_UNEMP'] * self.ER_NJ_UNEMP) + self.assertPayrollEqual(cats['EE_US_NJ_SDI'], cats['BASIC'] * self.EE_NJ_SDI) + self.assertPayrollEqual(cats['ER_US_NJ_SDI'], cats['WAGE_US_NJ_SDI'] * self.ER_NJ_SDI) + self.assertPayrollEqual(cats['EE_US_NJ_FLI'], cats['BASIC'] * self.EE_NJ_FLI) + self.assertPayrollEqual(cats['EE_US_NJ_WF'], cats['BASIC'] * self.EE_NJ_WF) + self.assertPayrollEqual(cats['EE_US_NJ_INC_WITHHOLD'], wh) process_payslip(payslip) diff --git a/l10n_us_nj_hr_payroll/us_nj_hr_payroll.py b/l10n_us_nj_hr_payroll/us_nj_hr_payroll.py deleted file mode 100755 index 567aa1f2..00000000 --- a/l10n_us_nj_hr_payroll/us_nj_hr_payroll.py +++ /dev/null @@ -1,92 +0,0 @@ -from odoo import models, fields, api - - -class USNJHrContract(models.Model): - _inherit = 'hr.contract' - - nj_njw4_allowances = fields.Integer(string="New Jersey NJ-W4 Allowances", - default=0, - help="Allowances claimed on NJ W-4") - nj_additional_withholding = fields.Float(string="Additional Withholding", - default=0.0, - help='Additional withholding from line 5 of form NJ-W4') - nj_njw4_filing_status = fields.Selection([ - ('single', 'Single'), - ('married_separate', 'Married/Civil Union partner Separate'), - ('married_joint', 'Married/Civil Union Couple Joint'), - ('widower', 'Widower/Surviving Civil Union Partner'), - ('head_household', 'Head of Household') - ], string='NJ Filing Status', default='single') - nj_njw4_rate_table = fields.Char(string='Wage Chart Letter', - help='Wage Chart Letter from line 3 of form NJ-W4.') - - def nj_unemp_employee_rate(self, year): - self.ensure_one() - if self.futa_type == self.FUTA_TYPE_BASIC: - return 0.0 - - if hasattr(self.employee_id.company_id, 'nj_unemp_employee_rate_' + str(year)): - return self.employee_id.company_id['nj_unemp_employee_rate_' + str(year)] - - raise NotImplemented('Year (' + str(year) + ') Not implemented for US New Jersey.') - - def nj_unemp_company_rate(self, year): - self.ensure_one() - if self.futa_type == self.FUTA_TYPE_BASIC: - return 0.0 - - if hasattr(self.employee_id.company_id, 'nj_unemp_company_rate_' + str(year)): - return self.employee_id.company_id['nj_unemp_company_rate_' + str(year)] - - raise NotImplemented('Year (' + str(year) + ') Not implemented for US New Jersey.') - - def nj_sdi_company_rate(self, year): - self.ensure_one() - if self.futa_type == self.FUTA_TYPE_BASIC: - return 0.0 - - if hasattr(self.employee_id.company_id, 'nj_sdi_company_rate_' + str(year)): - return self.employee_id.company_id['nj_sdi_company_rate_' + str(year)] - - raise NotImplemented('Year (' + str(year) + ') Not implemented for US New Jersey.') - - def nj_sdi_employee_rate(self, year): - self.ensure_one() - if self.futa_type == self.FUTA_TYPE_BASIC: - return 0.0 - - if hasattr(self.employee_id.company_id, 'nj_sdi_employee_rate_' + str(year)): - return self.employee_id.company_id['nj_sdi_employee_rate_' + str(year)] - - raise NotImplemented('Year (' + str(year) + ') Not implemented for US New Jersey.') - - def nj_fli_rate(self, year): - self.ensure_one() - if self.futa_type == self.FUTA_TYPE_BASIC: - return 0.0 - - if hasattr(self.employee_id.company_id, 'nj_fli_rate_' + str(year)): - return self.employee_id.company_id['nj_fli_rate_' + str(year)] - - raise NotImplemented('Year (' + str(year) + ') Not implemented for US New Jersey.') - - def nj_wf_rate(self, year): - self.ensure_one() - if self.futa_type == self.FUTA_TYPE_BASIC: - return 0.0 - - if hasattr(self.employee_id.company_id, 'nj_wf_rate_' + str(year)): - return self.employee_id.company_id['nj_wf_rate_' + str(year)] - - raise NotImplemented('Year (' + str(year) + ') Not implemented for US New Jersey.') - - -class NJCompany(models.Model): - _inherit = 'res.company' - - nj_unemp_company_rate_2018 = fields.Float(string="New Jersey Employer State Unemployment Insurance Rate 2018", default=3.4) - nj_unemp_employee_rate_2018 = fields.Float(string="New Jersey Employee State Unemployment Insurance Rate 2018", default=0.3825) - nj_sdi_company_rate_2018 = fields.Float(string="New Jersey Employer State Disability Insurance Rate 2018", default=0.5) - nj_sdi_employee_rate_2018 = fields.Float(string="New Jersey Employee State Disability Insurance Rate 2018", default=0.19) - nj_fli_rate_2018 = fields.Float(string="New Jersey Family Leave Insurance Rate 2018", default=0.09) - nj_wf_rate_2018 = fields.Float(string="New Jersey Workforce Development Rate 2018", default=0.0) diff --git a/l10n_us_nj_hr_payroll/us_nj_hr_payroll_view.xml b/l10n_us_nj_hr_payroll/views/us_nj_hr_payroll_views.xml similarity index 53% rename from l10n_us_nj_hr_payroll/us_nj_hr_payroll_view.xml rename to l10n_us_nj_hr_payroll/views/us_nj_hr_payroll_views.xml index 537a05f8..ec2f564d 100755 --- a/l10n_us_nj_hr_payroll/us_nj_hr_payroll_view.xml +++ b/l10n_us_nj_hr_payroll/views/us_nj_hr_payroll_views.xml @@ -1,25 +1,6 @@ - - res.company.form - res.company - 20 - - - - - - - - - - - - - - - hr.contract.form.inherit hr.contract