diff --git a/l10n_us_hr_payroll/data/state/nj_newjersey.xml b/l10n_us_hr_payroll/data/state/nj_newjersey.xml
index 50c72dcd..c1b7e003 100644
--- a/l10n_us_hr_payroll/data/state/nj_newjersey.xml
+++ b/l10n_us_hr_payroll/data/state/nj_newjersey.xml
@@ -7,16 +7,17 @@
-
- 34400.00
-
-
-
35300.00
+
+
+ 36200.00
+
+
+
@@ -27,11 +28,7 @@
-
- 2.6825
-
-
-
+
2.6825
@@ -45,11 +42,7 @@
-
- 0.3825
-
-
-
+
0.3825
@@ -64,11 +57,7 @@
-
- 0.5
-
-
-
+
0.5
@@ -82,16 +71,17 @@
-
- 0.17
-
-
-
0.26
+
+
+ 0.47
+
+
+
@@ -101,11 +91,7 @@
-
- 0.1175
-
-
-
+
0.1175
@@ -119,11 +105,7 @@
-
- 0.0425
-
-
-
+
0.0425
@@ -138,11 +120,7 @@
-
- 0.0
-
-
-
+
0.0
@@ -156,16 +134,17 @@
-
- 0.08
-
-
-
0.16
+
+
+ 0.28
+
+
+
@@ -175,351 +154,6 @@
-
- {
- 'A': {
- 'weekly': (
- ( 385, 0.00, 1.50),
- ( 673, 5.77, 2.00),
- ( 769, 11.54, 3.90),
- ( 1442, 15.29, 6.10),
- ( 9615, 56.34, 7.00),
- (96154, 628.46, 9.90),
- ('inf', 9195.77, 11.80),
- ),
- 'bi-weekly': (
- ( 769, 0.00, 1.50),
- ( 1346, 12.00, 2.00),
- ( 1538, 23.00, 3.90),
- ( 2885, 31.00, 6.10),
- ( 19231, 113.00, 7.00),
- (192308, 1257.00, 9.90),
- ( 'inf', 18392.00, 11.80),
- ),
- 'semi-monthly': (
- ( 833, 0.00, 1.50),
- ( 1458, 13.00, 2.00),
- ( 1667, 25.00, 3.90),
- ( 3125, 33.00, 6.10),
- ( 20833, 122.00, 7.00),
- (208333, 1362.00, 9.90),
- ( 'inf', 19924.00, 11.80),
- ),
- 'monthly': (
- ( 1667, 0.00, 1.50),
- ( 2917, 25.00, 2.00),
- ( 3333, 50.00, 3.90),
- ( 6250, 66.00, 6.10),
- ( 41667, 244.00, 7.00),
- (416667, 2723.00, 9.90),
- ( 'inf', 39848.00, 11.80),
- ),
- 'quarterly': (
- ( 5000, 0.00, 1.50),
- ( 8750, 75.00, 2.00),
- ( 10000, 150.00, 3.90),
- ( 18750, 198.75, 6.10),
- ( 125000, 732.50, 7.00),
- (1250000, 8170.00, 9.90),
- ( 'inf', 119545.00, 11.80),
- ),
- 'semi-annual': (
- ( 10000, 0.00, 1.50),
- ( 17500, 150.00, 2.00),
- ( 20000, 300.00, 3.90),
- ( 37500, 397.50, 6.10),
- ( 250000, 1465.00, 7.00),
- (2500000, 16340.00, 9.90),
- ( 'inf', 239090.00, 11.80),
- ),
- 'annual': (
- ( 20000, 0.00, 1.50),
- ( 35000, 300.00, 2.00),
- ( 40000, 600.00, 3.90),
- ( 75000, 795.00, 6.10),
- ( 500000, 2930.00, 7.00),
- (5000000, 32680.00, 9.90),
- ( 'inf', 478180.00, 11.80),
- ),
- },
- 'B': {
- 'weekly': (
- ( 385, 0.00, 1.50),
- ( 962, 5.77, 2.00),
- ( 1346, 17.31, 2.70),
- ( 1538, 27.69, 3.90),
- ( 2885, 35.19, 6.10),
- ( 9615, 117.31, 7.00),
- (96154, 588.46, 9.90),
- ('inf', 9155.77, 11.80),
- ),
- 'bi-weekly': (
- ( 769, 0.00, 1.50),
- ( 1923, 12.00, 2.00),
- ( 2692, 35.00, 2.70),
- ( 3076, 55.00, 3.90),
- ( 5769, 70.00, 6.10),
- ( 19231, 235.00, 7.00),
- (192308, 1177.00, 9.90),
- ( 'inf', 18312.00, 11.80),
- ),
- 'semi-monthly': (
- ( 833, 0.00, 1.50),
- ( 2083, 12.50, 2.00),
- ( 2917, 37.50, 2.70),
- ( 3333, 59.99, 3.90),
- ( 6250, 76.25, 6.10),
- ( 20833, 254.19, 7.00),
- (208333, 1275.00, 9.90),
- ( 'inf', 19838.00, 11.80),
- ),
- 'monthly': (
- ( 1667, 0.00, 1.50),
- ( 4167, 25.00, 2.00),
- ( 5833, 75.00, 2.70),
- ( 6667, 120.00, 3.90),
- ( 12500, 153.00, 6.10),
- ( 41667, 508.00, 7.00),
- (416667, 2550.00, 9.90),
- ( 'inf', 39675.00, 11.80),
- ),
- 'quarterly': (
- ( 5000, 0.00, 1.50),
- ( 12500, 75.00, 2.00),
- ( 17500, 225.00, 2.70),
- ( 20000, 360.00, 3.90),
- ( 37500, 397.50, 6.10),
- ( 125000, 1525.00, 7.00),
- (1250000, 7650.00, 9.90),
- ( 'inf', 119025.00, 11.80),
- ),
- 'semi-annual': (
- ( 10000, 0.00, 1.50),
- ( 25000, 150.00, 2.00),
- ( 35000, 450.00, 2.70),
- ( 40000, 720.00, 3.90),
- ( 75000, 915.00, 6.10),
- ( 250000, 3050.00, 7.00),
- (2500000, 15300.00, 9.90),
- ( 'inf', 238050.00, 11.80),
- ),
- 'annual': (
- ( 20000, 0.00, 1.50),
- ( 50000, 300.00, 2.00),
- ( 70000, 900.00, 2.70),
- (80000, 1440.00, 3.90),
- ( 150000, 1830.00, 6.10),
- ( 500000, 6100.00, 7.00),
- (5000000, 30600.00, 9.90),
- ( 'inf', 476100.00, 11.80),
- ),
- },
- 'C': {
- 'weekly': (
- ( 385, 0.00, 1.50),
- ( 769, 5.77, 2.30),
- ( 962, 14.62, 2.80),
- ( 1154, 20.00, 3.50),
- ( 2885, 26.73, 5.60),
- ( 9615, 123.65, 6.60),
- (96154, 567.88, 9.90),
- ('inf', 9135.19, 11.80),
- ),
- 'bi-weekly': (
- ( 769, 0.00, 1.50),
- ( 1538, 11.54, 2.30),
- ( 1923, 29.23, 2.80),
- ( 2308, 40.00, 3.50),
- ( 5769, 53.46, 5.60),
- ( 19231, 247.31, 6.60),
- (192308, 1135.77, 9.90),
- ( 'inf', 18270.38, 11.80),
- ),
- 'semi-monthly': (
- ( 833, 0.00, 1.50),
- ( 1667, 12.50, 2.30),
- ( 2083, 31.67, 2.80),
- ( 2500, 43.33, 3.50),
- ( 6250, 57.92, 5.60),
- ( 20833, 267.92, 6.60),
- (208333, 1230.42, 9.90),
- ( 'inf', 19792.92, 11.80),
- ),
- 'monthly': (
- ( 1667, 0.00, 1.50),
- ( 3333, 25.00, 2.30),
- ( 4167, 63.33, 2.80),
- ( 5000, 86.67, 3.50),
- ( 12500, 115.83, 5.60),
- ( 41667, 535.85, 6.60),
- (416667, 2460.83, 9.90),
- ( 'inf', 39585.83, 11.80),
- ),
- 'quarterly': (
- ( 5000, 0.00, 1.50),
- ( 10000, 75.00, 2.30),
- ( 12500, 190.00, 2.80),
- ( 15000, 260.00, 3.50),
- ( 37500, 347.50, 5.60),
- ( 125000, 1607.50, 6.60),
- (1250000, 7382.50, 9.90),
- ( 'inf', 118757.50, 11.80),
- ),
- 'semi-annual': (
- ( 10000, 0.00, 1.50),
- ( 20000, 150.00, 2.30),
- ( 25000, 380.00, 2.80),
- ( 30000, 520.00, 3.50),
- ( 75000, 695.00, 5.60),
- ( 250000, 3215.00, 6.60),
- (2500000, 14765.00, 9.90),
- ( 'inf', 237515.00, 11.80),
- ),
- 'annual': (
- ( 20000, 0.00, 1.50),
- ( 40000, 300.00, 2.30),
- ( 50000, 760.00, 2.80),
- ( 60000, 1040.00, 3.50),
- ( 150000, 1390.00, 5.60),
- ( 500000, 6430.00, 6.60),
- (5000000, 29530.00, 9.90),
- ( 'inf', 475030.00, 11.80),
- ),
- },
- 'D': {
- 'weekly': (
- ( 385, 0.00, 1.50),
- ( 769, 5.77, 2.70),
- ( 962, 16.15, 3.40),
- ( 1154, 22.69, 4.30),
- ( 2885, 30.96, 5.60),
- ( 9615, 127.88, 6.50),
- ( 96154, 565.38, 9.90),
- ( 'inf', 9132.69, 11.80),
- ),
- 'bi-weekly': (
- ( 769, 0.00, 1.50),
- ( 1538, 11.54, 2.70),
- ( 1923, 32.31, 3.40),
- ( 2308, 45.38, 4.30),
- ( 5769, 61.92, 5.60),
- ( 19231, 255.77, 6.50),
- (192308, 1130.77, 9.90),
- ( 'inf', 18265.38, 11.80),
- ),
- 'semi-monthly': (
- ( 833, 0.00, 1.50),
- ( 1667, 12.50, 2.70),
- ( 2083, 35.00, 3.40),
- ( 2500, 49.17, 4.30),
- ( 6250, 67.08, 5.60),
- ( 20833, 277.08, 6.50),
- (208333, 1225.00, 9.90),
- ( 'inf', 19787.50, 11.80),
- ),
- 'monthly': (
- ( 1667, 0.00, 1.50),
- ( 3333, 25.00, 2.70),
- ( 4167, 70.00, 3.40),
- ( 5000, 98.33, 4.00),
- ( 12500, 134.17, 5.60),
- ( 41667, 554.17, 6.50),
- (416667, 2450.00, 9.90),
- ( 'inf', 39575.00, 11.80),
- ),
- 'quarterly': (
- ( 5000, 0.00, 1.50),
- ( 10000, 75.00, 2.07),
- ( 12500, 210.00, 3.40),
- ( 15000, 295.00, 4.30),
- ( 37500, 402.50, 5.60),
- ( 125000, 1662.50, 6.50),
- (1250000, 7350.00, 9.90),
- ( 'inf', 118725.00, 11.80),
- ),
- 'semi-annual': (
- ( 10000, 0.00, 1.50),
- ( 20000, 150.00, 2.70),
- ( 25000, 420.00, 3.40),
- ( 30000, 590.00, 4.30),
- ( 75000, 805.00, 5.60),
- ( 250000, 3325.00, 6.50),
- (2500000, 14700.00, 9.90),
- ( 'inf', 237450.00, 11.80),
- ),
- 'annual': (
- ( 20000, 0.00, 1.50),
- ( 40000, 300.00, 2.70),
- ( 50000, 840.00, 3.40),
- ( 60000, 1180.00, 4.30),
- ( 150000, 1610.00, 5.60),
- ( 250000, 6650.00, 6.50),
- (2500000, 29400.00, 9.90),
- ( 'inf', 474900.00, 11.80),
- ),
- },
- 'E': {
- 'weekly': (
- ( 385, 0.00, 1.50),
- ( 673, 5.77, 2.00),
- ( 1923, 11.54, 5.80),
- ( 9615, 84.04, 6.50),
- ( 96154, 584.04, 9.90),
- ( 'inf', 9151.35, 11.80),
- ),
- 'bi-weekly': (
- ( 769, 0.00, 1.50),
- ( 1346, 12.00, 2.00),
- ( 3846, 23.00, 5.80),
- ( 19231, 168.00, 6.50),
- (192308, 1168.00, 9.90),
- ( 'inf', 18303.00, 11.80),
- ),
- 'semi-monthly': (
- ( 833, 0.00, 1.50),
- ( 1458, 13.00, 2.00),
- ( 4167, 25.00, 5.80),
- ( 20833, 182.00, 6.50),
- (208333, 1265.00, 9.90),
- ( 'inf', 19828.00, 11.80),
- ),
- 'monthly': (
- ( 1667, 0.00, 1.50),
- ( 2916, 25.00, 2.00),
- ( 8333, 50.00, 5.80),
- ( 41667, 364.00, 6.50),
- (416667, 2531.00, 9.90),
- ( 'inf', 39656.00, 11.80),
- ),
- 'quarterly': (
- ( 5000, 0.00, 1.50),
- ( 8750, 75.00, 2.00),
- ( 25000, 150.00, 5.80),
- ( 125000, 1092.50, 6.50),
- (1250000, 7592.50, 9.90),
- ( 'inf', 118967.50, 11.80),
- ),
- 'semi-annual': (
- ( 10000, 0.00, 1.50),
- ( 17500, 150.00, 2.00),
- ( 50000, 300.00, 5.80),
- ( 250000, 2185.00, 6.50),
- (2500000, 15185.00, 9.90),
- ( 'inf', 237935.00, 11.80),
- ),
- 'annual': (
- ( 20000, 0.00, 1.50),
- ( 35000, 300.00, 2.00),
- ( 100000, 600.00, 5.80),
- ( 500000, 4370.00, 6.50),
- (5000000, 30370.00, 9.90),
- ( 'inf', 475870.00, 11.80),
- ),
- },
- }
-
-
-
{
@@ -866,6 +500,352 @@
+
+
+ {
+ 'A': {
+ 'weekly': (
+ ( 385, 0.00, 1.50),
+ ( 673, 5.77, 2.00),
+ ( 769, 11.54, 3.90),
+ ( 1442, 15.29, 6.10),
+ ( 9615, 56.34, 7.00),
+ (19231, 628.46, 9.90),
+ ('inf', 1580.38, 11.80),
+ ),
+ 'bi-weekly': (
+ ( 769, 0.00, 1.50),
+ ( 1346, 12.00, 2.00),
+ ( 1538, 23.00, 3.90),
+ ( 2885, 31.00, 6.10),
+ ( 19231, 113.00, 7.00),
+ ( 38462, 1257.00, 9.90),
+ ( 'inf', 3161.00, 11.80),
+ ),
+ 'semi-monthly': (
+ ( 833, 0.00, 1.50),
+ ( 1458, 13.00, 2.00),
+ ( 1667, 25.00, 3.90),
+ ( 3125, 33.00, 6.10),
+ ( 20833, 122.00, 7.00),
+ ( 41667, 1362.00, 9.90),
+ ( 'inf', 3424.00, 11.80),
+ ),
+ 'monthly': (
+ ( 1667, 0.00, 1.50),
+ ( 2917, 25.00, 2.00),
+ ( 3333, 50.00, 3.90),
+ ( 6250, 66.00, 6.10),
+ ( 41667, 244.00, 7.00),
+ ( 83333, 2723.00, 9.90),
+ ( 'inf', 6848.00, 11.80),
+ ),
+ 'quarterly': (
+ ( 5000, 0.00, 1.50),
+ ( 8750, 75.00, 2.00),
+ ( 10000, 150.00, 3.90),
+ ( 18750, 198.75, 6.10),
+ ( 125000, 732.50, 7.00),
+ ( 250000, 8170.00, 9.90),
+ ( 'inf', 20545.00, 11.80),
+ ),
+ 'semi-annual': (
+ ( 10000, 0.00, 1.50),
+ ( 17500, 150.00, 2.00),
+ ( 20000, 300.00, 3.90),
+ ( 37500, 397.50, 6.10),
+ ( 250000, 1465.00, 7.00),
+ ( 500000, 16340.00, 9.90),
+ ( 'inf', 41060.00, 11.80),
+ ),
+ 'annual': (
+ ( 20000, 0.00, 1.50),
+ ( 35000, 300.00, 2.00),
+ ( 40000, 600.00, 3.90),
+ ( 75000, 795.00, 6.10),
+ ( 500000, 2930.00, 7.00),
+ (1000000, 32680.00, 9.90),
+ ( 'inf', 82180.00, 11.80),
+ ),
+ },
+ 'B': {
+ 'weekly': (
+ ( 385, 0.00, 1.50),
+ ( 962, 5.77, 2.00),
+ ( 1346, 17.31, 2.70),
+ ( 1538, 27.69, 3.90),
+ ( 2885, 35.19, 6.10),
+ ( 9615, 117.31, 7.00),
+ (19231, 588.46, 9.90),
+ ('inf', 1540.38, 11.80),
+ ),
+ 'bi-weekly': (
+ ( 769, 0.00, 1.50),
+ ( 1923, 12.00, 2.00),
+ ( 2692, 35.00, 2.70),
+ ( 3076, 55.00, 3.90),
+ ( 5769, 70.00, 6.10),
+ ( 19231, 235.00, 7.00),
+ ( 38462, 1177.00, 9.90),
+ ( 'inf', 3081.00, 11.80),
+ ),
+ 'semi-monthly': (
+ ( 833, 0.00, 1.50),
+ ( 2083, 12.50, 2.00),
+ ( 2917, 37.50, 2.70),
+ ( 3333, 59.99, 3.90),
+ ( 6250, 76.25, 6.10),
+ ( 20833, 254.19, 7.00),
+ ( 41667, 1275.00, 9.90),
+ ( 'inf', 3338.00, 11.80),
+ ),
+ 'monthly': (
+ ( 1667, 0.00, 1.50),
+ ( 4167, 25.00, 2.00),
+ ( 5833, 75.00, 2.70),
+ ( 6667, 120.00, 3.90),
+ ( 12500, 153.00, 6.10),
+ ( 41667, 508.00, 7.00),
+ ( 83333, 2550.00, 9.90),
+ ( 'inf', 6675.00, 11.80),
+ ),
+ 'quarterly': (
+ ( 5000, 0.00, 1.50),
+ ( 12500, 75.00, 2.00),
+ ( 17500, 225.00, 2.70),
+ ( 20000, 360.00, 3.90),
+ ( 37500, 397.50, 6.10),
+ ( 125000, 1525.00, 7.00),
+ ( 250000, 7650.00, 9.90),
+ ( 'inf', 20025.00, 11.80),
+ ),
+ 'semi-annual': (
+ ( 10000, 0.00, 1.50),
+ ( 25000, 150.00, 2.00),
+ ( 35000, 450.00, 2.70),
+ ( 40000, 720.00, 3.90),
+ ( 75000, 915.00, 6.10),
+ ( 250000, 3050.00, 7.00),
+ ( 500000, 15300.00, 9.90),
+ ( 'inf', 40050.00, 11.80),
+ ),
+ 'annual': (
+ ( 20000, 0.00, 1.50),
+ ( 50000, 300.00, 2.00),
+ ( 70000, 900.00, 2.70),
+ (80000, 1440.00, 3.90),
+ ( 150000, 1830.00, 6.10),
+ ( 500000, 6100.00, 7.00),
+ (1000000, 30600.00, 9.90),
+ ( 'inf', 80100.00, 11.80),
+ ),
+ },
+ 'C': {
+ 'weekly': (
+ ( 385, 0.00, 1.50),
+ ( 769, 5.77, 2.30),
+ ( 962, 14.62, 2.80),
+ ( 1154, 20.00, 3.50),
+ ( 2885, 26.73, 5.60),
+ ( 9615, 123.65, 6.60),
+ (19231, 567.88, 9.90),
+ ('inf', 1519.81, 11.80),
+ ),
+ 'bi-weekly': (
+ ( 769, 0.00, 1.50),
+ ( 1538, 11.54, 2.30),
+ ( 1923, 29.23, 2.80),
+ ( 2308, 40.00, 3.50),
+ ( 5769, 53.46, 5.60),
+ ( 19231, 247.31, 6.60),
+ ( 38462, 1135.77, 9.90),
+ ( 'inf', 3039.62, 11.80),
+ ),
+ 'semi-monthly': (
+ ( 833, 0.00, 1.50),
+ ( 1667, 12.50, 2.30),
+ ( 2083, 31.67, 2.80),
+ ( 2500, 43.33, 3.50),
+ ( 6250, 57.92, 5.60),
+ ( 20833, 267.92, 6.60),
+ ( 41667, 1230.42, 9.90),
+ ( 'inf', 3292.92, 11.80),
+ ),
+ 'monthly': (
+ ( 1667, 0.00, 1.50),
+ ( 3333, 25.00, 2.30),
+ ( 4167, 63.33, 2.80),
+ ( 5000, 86.67, 3.50),
+ ( 12500, 115.83, 5.60),
+ ( 41667, 535.85, 6.60),
+ ( 83333, 2460.83, 9.90),
+ ( 'inf', 6585.83, 11.80),
+ ),
+ 'quarterly': (
+ ( 5000, 0.00, 1.50),
+ ( 10000, 75.00, 2.30),
+ ( 12500, 190.00, 2.80),
+ ( 15000, 260.00, 3.50),
+ ( 37500, 347.50, 5.60),
+ ( 125000, 1607.50, 6.60),
+ ( 250000, 7382.50, 9.90),
+ ( 'inf', 19757.50, 11.80),
+ ),
+ 'semi-annual': (
+ ( 10000, 0.00, 1.50),
+ ( 20000, 150.00, 2.30),
+ ( 25000, 380.00, 2.80),
+ ( 30000, 520.00, 3.50),
+ ( 75000, 695.00, 5.60),
+ ( 250000, 3215.00, 6.60),
+ ( 500000, 14765.00, 9.90),
+ ( 'inf', 39515.00, 11.80),
+ ),
+ 'annual': (
+ ( 20000, 0.00, 1.50),
+ ( 40000, 300.00, 2.30),
+ ( 50000, 760.00, 2.80),
+ ( 60000, 1040.00, 3.50),
+ ( 150000, 1390.00, 5.60),
+ ( 500000, 6430.00, 6.60),
+ (1000000, 29530.00, 9.90),
+ ( 'inf', 79030.00, 11.80),
+ ),
+ },
+ 'D': {
+ 'weekly': (
+ ( 385, 0.00, 1.50),
+ ( 769, 5.77, 2.70),
+ ( 962, 16.15, 3.40),
+ ( 1154, 22.69, 4.30),
+ ( 2885, 30.96, 5.60),
+ ( 9615, 127.88, 6.50),
+ ( 19231, 565.38, 9.90),
+ ( 'inf', 1517.31, 11.80),
+ ),
+ 'bi-weekly': (
+ ( 769, 0.00, 1.50),
+ ( 1538, 11.54, 2.70),
+ ( 1923, 32.31, 3.40),
+ ( 2308, 45.38, 4.30),
+ ( 5769, 61.92, 5.60),
+ ( 19231, 255.77, 6.50),
+ ( 38462, 1130.77, 9.90),
+ ( 'inf', 3034.62, 11.80),
+ ),
+ 'semi-monthly': (
+ ( 833, 0.00, 1.50),
+ ( 1667, 12.50, 2.70),
+ ( 2083, 35.00, 3.40),
+ ( 2500, 49.17, 4.30),
+ ( 6250, 67.08, 5.60),
+ ( 20833, 277.08, 6.50),
+ ( 41667, 1225.00, 9.90),
+ ( 'inf', 3287.50, 11.80),
+ ),
+ 'monthly': (
+ ( 1667, 0.00, 1.50),
+ ( 3333, 25.00, 2.70),
+ ( 4167, 70.00, 3.40),
+ ( 5000, 98.33, 4.00),
+ ( 12500, 134.17, 5.60),
+ ( 41667, 554.17, 6.50),
+ ( 83333, 2450.00, 9.90),
+ ( 'inf', 6575.00, 11.80),
+ ),
+ 'quarterly': (
+ ( 5000, 0.00, 1.50),
+ ( 10000, 75.00, 2.07),
+ ( 12500, 210.00, 3.40),
+ ( 15000, 295.00, 4.30),
+ ( 37500, 402.50, 5.60),
+ ( 125000, 1662.50, 6.50),
+ ( 250000, 7350.00, 9.90),
+ ( 'inf', 19725.00, 11.80),
+ ),
+ 'semi-annual': (
+ ( 10000, 0.00, 1.50),
+ ( 20000, 150.00, 2.70),
+ ( 25000, 420.00, 3.40),
+ ( 30000, 590.00, 4.30),
+ ( 75000, 805.00, 5.60),
+ ( 250000, 3325.00, 6.50),
+ ( 500000, 14700.00, 9.90),
+ ( 'inf', 39450.00, 11.80),
+ ),
+ 'annual': (
+ ( 20000, 0.00, 1.50),
+ ( 40000, 300.00, 2.70),
+ ( 50000, 840.00, 3.40),
+ ( 60000, 1180.00, 4.30),
+ ( 150000, 1610.00, 5.60),
+ ( 250000, 6650.00, 6.50),
+ (1000000, 29400.00, 9.90),
+ ( 'inf', 78900.00, 11.80),
+ ),
+ },
+ 'E': {
+ 'weekly': (
+ ( 385, 0.00, 1.50),
+ ( 673, 5.77, 2.00),
+ ( 1923, 11.54, 5.80),
+ ( 9615, 84.04, 6.50),
+ ( 19231, 584.04, 9.90),
+ ( 'inf', 1535.96, 11.80),
+ ),
+ 'bi-weekly': (
+ ( 769, 0.00, 1.50),
+ ( 1346, 12.00, 2.00),
+ ( 3846, 23.00, 5.80),
+ ( 19231, 168.00, 6.50),
+ ( 38462, 1168.00, 9.90),
+ ( 'inf', 3072.00, 11.80),
+ ),
+ 'semi-monthly': (
+ ( 833, 0.00, 1.50),
+ ( 1458, 13.00, 2.00),
+ ( 4167, 25.00, 5.80),
+ ( 20833, 182.00, 6.50),
+ ( 41667, 1265.00, 9.90),
+ ( 'inf', 3328.00, 11.80),
+ ),
+ 'monthly': (
+ ( 1667, 0.00, 1.50),
+ ( 2916, 25.00, 2.00),
+ ( 8333, 50.00, 5.80),
+ ( 41667, 364.00, 6.50),
+ ( 83333, 2531.00, 9.90),
+ ( 'inf', 6656.00, 11.80),
+ ),
+ 'quarterly': (
+ ( 5000, 0.00, 1.50),
+ ( 8750, 75.00, 2.00),
+ ( 25000, 150.00, 5.80),
+ ( 125000, 1092.50, 6.50),
+ ( 250000, 7592.50, 9.90),
+ ( 'inf', 19967.50, 11.80),
+ ),
+ 'semi-annual': (
+ ( 10000, 0.00, 1.50),
+ ( 17500, 150.00, 2.00),
+ ( 50000, 300.00, 5.80),
+ ( 250000, 2185.00, 6.50),
+ ( 500000, 15185.00, 9.90),
+ ( 'inf', 39935.00, 11.80),
+ ),
+ 'annual': (
+ ( 20000, 0.00, 1.50),
+ ( 35000, 300.00, 2.00),
+ ( 100000, 600.00, 5.80),
+ ( 500000, 4370.00, 6.50),
+ (1000000, 30370.00, 9.90),
+ ( 'inf', 79870.00, 11.80),
+ ),
+ },
+ }
+
+
+
@@ -874,21 +854,8 @@
-
- {
- 'weekly': 19.20,
- 'bi-weekly': 38.40,
- 'semi-monthly': 41.60,
- 'monthly': 83.30,
- 'quarterly': 250.00,
- 'semi-annual': 500.00,
- 'annual': 1000.00,
- 'daily or miscellaneous': 2.70,
- }
-
-
-
+
{
'weekly': 19.20,
diff --git a/l10n_us_hr_payroll/tests/test_us_nj_newjersey_payslip_2019.py b/l10n_us_hr_payroll/tests/test_us_nj_newjersey_payslip_2019.py
deleted file mode 100755
index c28849b5..00000000
--- a/l10n_us_hr_payroll/tests/test_us_nj_newjersey_payslip_2019.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-
-from .common import TestUsPayslip, process_payslip
-
-
-class TestUsNJPayslip(TestUsPayslip):
- ###
- # 2019 Taxes and Rates
- ###
- NJ_UNEMP_MAX_WAGE = 34400.0 # Note that this is used for SDI and FLI as well
-
- ER_NJ_UNEMP = -2.6825 / 100.0
- EE_NJ_UNEMP = -0.3825 / 100.0
-
- ER_NJ_SDI = -0.5 / 100.0
- EE_NJ_SDI = -0.17 / 100.0
-
- ER_NJ_WF = -0.1175 / 100.0
- EE_NJ_WF = -0.0425 / 100.0
-
- ER_NJ_FLI = 0.0
- EE_NJ_FLI = -0.08 / 100.0
-
- # Examples found on page 24 of http://www.state.nj.us/treasury/taxation/pdf/current/njwt.pdf
- def test_2019_taxes_example1(self):
- salary = 300
-
- # Tax Percentage Method for Single, taxable under $385
- wh = -4.21
-
- employee = self._createEmployee()
- contract = self._createContract(employee,
- wage=salary,
- state_id=self.get_us_state('NJ'),
- nj_njw4_sit_filing_status='single',
- nj_njw4_sit_allowances=1,
- state_income_tax_additional_withholding=0.0,
- nj_njw4_sit_rate_table='A',
- schedule_pay='weekly')
-
- self._log('2019 New Jersey tax first payslip:')
- payslip = self._createPayslip(employee, '2019-01-01', '2019-01-31')
-
- payslip.compute_sheet()
-
- cats = self._getCategories(payslip)
-
- self.assertPayrollEqual(cats['EE_US_SUTA'], salary * (self.EE_NJ_UNEMP + self.EE_NJ_SDI + self.EE_NJ_WF + self.EE_NJ_FLI))
- self.assertPayrollEqual(cats['ER_US_SUTA'], salary * (self.ER_NJ_UNEMP + self.ER_NJ_SDI + self.ER_NJ_WF + self.ER_NJ_FLI))
- self.assertTrue(all((cats['EE_US_SUTA'], cats['ER_US_SUTA'])))
- # self.assertPayrollEqual(cats['EE_US_NJ_SDI_SIT'], cats['EE_US_NJ_SDI_SIT'] * self.EE_NJ_SDI)
- # self.assertPayrollEqual(cats['ER_US_NJ_SDI_SUTA'], cats['ER_US_NJ_SDI_SUTA'] * self.ER_NJ_SDI)
- # self.assertPayrollEqual(cats['EE_US_NJ_FLI_SIT'], cats['EE_US_NJ_FLI_SIT'] * self.EE_NJ_FLI)
- # self.assertPayrollEqual(cats['EE_US_NJ_WF_SIT'], cats['EE_US_NJ_WF_SIT'] * self.EE_NJ_WF)
- self.assertPayrollEqual(cats['EE_US_SIT'], wh)
-
- process_payslip(payslip)
-
- # # Make a new payslip, this one will have maximums
- #
- remaining_nj_unemp_wages = self.NJ_UNEMP_MAX_WAGE - salary if (self.NJ_UNEMP_MAX_WAGE - 2 * salary < salary) \
- else salary
-
- self._log('2019 New Jersey tax second payslip:')
- payslip = self._createPayslip(employee, '2019-02-01', '2019-02-28')
-
- payslip.compute_sheet()
-
- cats = self._getCategories(payslip)
-
- # self.assertPayrollEqual(cats['WAGE_US_NJ_UNEMP'], remaining_nj_unemp_wages)
- self.assertPayrollEqual(cats['ER_US_SUTA'], remaining_nj_unemp_wages * (self.ER_NJ_UNEMP + self.ER_NJ_SDI + self.ER_NJ_WF + self.ER_NJ_FLI))
- self.assertPayrollEqual(cats['EE_US_SUTA'], remaining_nj_unemp_wages * (self.EE_NJ_UNEMP + self.EE_NJ_SDI + self.EE_NJ_WF + self.EE_NJ_FLI))
-
- def test_2019_taxes_example2(self):
- salary = 1400.00
-
- # Tax Percentage Method for Single, taxable pay over $962, under $1346
- wh = -27.58
-
- employee = self._createEmployee()
- contract = self._createContract(employee,
- wage=salary,
- state_id=self.get_us_state('NJ'),
- nj_njw4_sit_filing_status='married_separate',
- nj_njw4_sit_allowances=3,
- state_income_tax_additional_withholding=0.0,
- #nj_njw4_sit_rate_table='B',
- schedule_pay='weekly')
-
- self.assertEqual(contract.schedule_pay, 'weekly')
-
- self._log('2019 New Jersey tax first payslip:')
- payslip = self._createPayslip(employee, '2019-01-01', '2019-01-31')
-
- payslip.compute_sheet()
-
- cats = self._getCategories(payslip)
-
- self.assertPayrollEqual(cats['EE_US_SIT'], wh)
-
-
- def test_2019_taxes_to_the_limits(self):
- salary = 30000.00
-
- # Tax Percentage Method for Single, taxable pay over $18750, under 125000
- wh = -1467.51
-
- employee = self._createEmployee()
- contract = self._createContract(employee,
- wage=salary,
- state_id=self.get_us_state('NJ'),
- nj_njw4_sit_filing_status='married_joint',
- nj_njw4_sit_allowances=3,
- state_income_tax_additional_withholding=0.0,
- # nj_njw4_sit_rate_table='B',
- schedule_pay='quarterly')
-
- self.assertEqual(contract.schedule_pay, 'quarterly')
-
- self._log('2019 New Jersey tax first payslip:')
- payslip = self._createPayslip(employee, '2019-01-01', '2019-03-31')
-
- payslip.compute_sheet()
-
- cats = self._getCategories(payslip)
-
- self.assertPayrollEqual(cats['EE_US_SIT'], wh)
diff --git a/l10n_us_hr_payroll/tests/test_us_nj_newjersey_payslip_2021.py b/l10n_us_hr_payroll/tests/test_us_nj_newjersey_payslip_2021.py
new file mode 100755
index 00000000..2b3fc627
--- /dev/null
+++ b/l10n_us_hr_payroll/tests/test_us_nj_newjersey_payslip_2021.py
@@ -0,0 +1,51 @@
+# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
+
+from datetime import date, timedelta
+from .common import TestUsPayslip
+
+
+class TestUsNJPayslip(TestUsPayslip):
+ ###
+ # 2021 Taxes and Rates
+ ###
+ NJ_UNEMP_MAX_WAGE = 36200.0 # Note that this is used for SDI and FLI as well
+
+ ER_NJ_UNEMP = 2.6825
+ EE_NJ_UNEMP = 0.3825
+
+ ER_NJ_SDI = 0.5
+ EE_NJ_SDI = 0.47
+
+ ER_NJ_WF = 0.1175
+ EE_NJ_WF = 0.0425
+
+ ER_NJ_FLI = 0.0
+ EE_NJ_FLI = 0.28
+
+ def _test_sit(self, wage, filing_status, allowances, schedule_pay, date_start, expected_withholding, rate_table=False):
+ employee = self._createEmployee()
+ contract = self._createContract(employee,
+ wage=wage,
+ state_id=self.get_us_state('NJ'),
+ nj_njw4_sit_filing_status=filing_status,
+ nj_njw4_sit_allowances=allowances,
+ state_income_tax_additional_withholding=0.0,
+ nj_njw4_sit_rate_table=rate_table,
+ schedule_pay=schedule_pay)
+ payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
+ payslip.compute_sheet()
+ cats = self._getCategories(payslip)
+ self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding if filing_status else 0.0)
+
+ def test_2021_taxes_example1(self):
+ combined_er_rate = self.ER_NJ_UNEMP + self.ER_NJ_FLI + self.ER_NJ_SDI + self.ER_NJ_WF
+ self._test_er_suta('NJ', combined_er_rate, date(2021, 1, 1), wage_base=self.NJ_UNEMP_MAX_WAGE, relaxed=True)
+ combined_ee_rate = self.EE_NJ_UNEMP + self.EE_NJ_FLI + self.EE_NJ_SDI + self.EE_NJ_WF
+ self._test_ee_suta('NJ', combined_ee_rate, date(2021, 1, 1), wage_base=self.NJ_UNEMP_MAX_WAGE, relaxed=True)
+ # these expected values come from https://www.state.nj.us/treasury/taxation/pdf/current/njwt.pdf
+ self._test_sit(300.0, 'single', 1, 'weekly', date(2021, 1, 1), 4.21)
+ self._test_sit(375.0, 'married_separate', 3, 'weekly', date(2021, 1, 1), 4.76)
+ self._test_sit(1400.0, 'head_household', 3, 'weekly', date(2021, 1, 1), 27.60)
+ self._test_sit(1400.0, '', 3, 'weekly', date(2021, 1, 1), 0.00)
+ self._test_sit(2500.0, 'single', 3, 'bi-weekly', date(2021, 1, 1), 82.66)
+ self._test_sit(15000.0, 'married_joint', 2, 'monthly', date(2021, 1, 1), 844.85)