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