Wage: US FICA Social Security WAGE_US_FICA_SS python result = not contract.fica_exempt code ### year = payslip.dict.date_to.year ytd = payslip.sum('WAGE_US_FICA_SS', str(year) + '-01-01', str(year+1) + '-01-01') ytd += contract.external_wages rate = payslip.dict.get_rate('US_FICA_SS') remaining = rate.wage_limit_year - ytd if remaining <= 0.0: result = 0 elif remaining < categories.BASIC: result = remaining else: result = categories.BASIC Wage: US FICA Medicare WAGE_US_FICA_M python result = not contract.fica_exempt code result = categories.BASIC Wage: US FICA Medicare Additional WAGE_US_FICA_M_ADD python result = not contract.fica_exempt code ### rate = payslip.dict.get_rate('US_FICA_M_ADD') ADD_M = rate.wage_limit_year year = payslip.dict.date_to.year norm_med_ytd = payslip.sum('WAGE_US_FICA_M', str(year) + '-01-01', str(year+1) + '-01-01') norm_med_cur = categories.WAGE_US_FICA_M if ADD_M > norm_med_ytd: diff = ADD_M - norm_med_ytd if norm_med_cur > diff: result = norm_med_cur - diff else: result = 0 # normal condition else: result = norm_med_cur # after YTD wages have passed the max EE: US FICA Social Security EE_US_FICA_SS python result = not contract.fica_exempt code rate = payslip.dict.get_rate('US_FICA_SS') result_rate = -rate.rate result = categories.WAGE_US_FICA_SS EE: US FICA Medicare EE_US_FICA_M python result = not contract.fica_exempt code rate = payslip.dict.get_rate('US_FICA_M') result_rate = -rate.rate result = categories.WAGE_US_FICA_M EE: US FICA Medicare Additional EE_US_FICA_M_ADD python result = not contract.fica_exempt code rate = payslip.dict.get_rate('US_FICA_M_ADD') result_rate = -rate.rate result = categories.WAGE_US_FICA_M_ADD EE: US Federal Income Tax Withholding - Single EE_US_FED_INC_WITHHOLD_S python result = (contract.w4_filing_status != 'married' and contract.w4_filing_status) code year = payslip.dict.date_to.year wages = categories.GROSS allowances = contract.w4_allowances is_nra = contract.w4_is_nonresident_alien schedule_pay = contract.schedule_pay val = 0.00 additional = contract.w4_additional_withholding if year == 2018: ### # Single WEEKLY ### if 'weekly' == schedule_pay: wages -= allowances * 79.80 if is_nra: wages += 151.00 if wages > 71 and wages <= 254: val = 0.00 + ((wages - 71) * 0.10) elif wages > 254 and wages <= 815: val = 18.30 + ((wages - 254) * 0.12) elif wages > 815 and wages <= 1658: val = 85.62 + ((wages - 815) * 0.22) elif wages > 1658 and wages <= 3100: val = 271.08 + ((wages - 1658) * 0.24) elif wages > 3100 and wages <= 3917: val = 617.16 + ((wages - 3100) * 0.32) elif wages > 3917 and wages <= 9687: val = 878.60 + ((wages - 3917) * 0.35) elif wages > 9687: val = 2898.10 + ((wages - 9687) * 0.37) ### # Single BIWEEKLY ### elif 'bi-weekly' == schedule_pay: wages -= allowances * 159.60 if is_nra: wages += 301.90 if wages > 142 and wages <= 509: val = 0.00 + ((wages - 142) * 0.10) elif wages > 509 and wages <= 1631: val = 36.70 + ((wages - 509) * 0.12) elif wages > 1631 and wages <= 3315: val = 171.34 + ((wages - 1631) * 0.22) elif wages > 3315 and wages <= 6200: val = 541.82 + ((wages - 3315) * 0.24) elif wages > 6200 and wages <= 7835: val = 1234.22 + ((wages - 6200) * 0.32) elif wages > 7835 and wages <= 19373: val = 1757.42 + ((wages - 7835) * 0.35) elif wages > 19373: val = 5795.72 + ((wages - 19373) * 0.37) ### # Single SEMIMONTHLY ### elif 'semi-monthly' == schedule_pay: wages -= allowances * 172.90 if is_nra: wages += 327.10 if wages > 154 and wages <= 551: val = 0.00 + ((wages - 154) * 0.10) elif wages > 551 and wages <= 1767: val = 39.70 + ((wages - 551) * 0.12) elif wages > 1767 and wages <= 3592: val = 185.62 + ((wages - 1767) * 0.22) elif wages > 3592 and wages <= 6717: val = 587.12 + ((wages - 3592) * 0.24) elif wages > 6717 and wages <= 8488: val = 1337.12 + ((wages - 6717) * 0.32) elif wages > 8488 and wages <= 20988: val = 1903.84 + ((wages - 8488) * 0.35) elif wages > 20988: val = 6278.84 + ((wages - 20988) * 0.37) ### # Single MONTHLY ### elif 'monthly' == schedule_pay: wages -= allowances * 345.80 if is_nra: wages += 654.20 if wages > 308 and wages <= 1102: val = 0.00 + ((wages - 308) * 0.10) elif wages > 1102 and wages <= 3533: val = 79.40 + ((wages - 1102) * 0.12) elif wages > 3533 and wages <= 7183: val = 371.12 + ((wages - 3533) * 0.22) elif wages > 7183 and wages <= 13433: val = 1174.12 + ((wages - 7183) * 0.24) elif wages > 13433 and wages <= 16975: val = 2674.12 + ((wages - 13433) * 0.32) elif wages > 16975 and wages <= 41975: val = 3807.56 + ((wages - 16975) * 0.35) elif wages > 41975: val = 12557.56 + ((wages - 41975) * 0.37) ### # Single QUARTERLY ### elif 'quarterly' == schedule_pay: wages -= allowances * 1037.50 if is_nra: wages += 1962.50 if wages > 925 and wages <= 3306: val = 0.00 + ((wages - 925) * 0.10) elif wages > 3306 and wages <= 10600: val = 238.10 + ((wages - 3306) * 0.12) elif wages > 10600 and wages <= 21550: val = 1113.38 + ((wages - 10600) * 0.22) elif wages > 21550 and wages <= 40300: val = 3522.38 + ((wages - 21550) * 0.24) elif wages > 40300 and wages <= 50925: val = 8022.38 + ((wages - 40300) * 0.32) elif wages > 50925 and wages <= 125925: val = 11422.38 + ((wages - 50925) * 0.35) elif wages > 125925: val = 37672.38 + ((wages - 125925) * 0.37) ### # Single SEMIANNUAL ### elif 'semi-annually' == schedule_pay: wages -= allowances * 2075.00 if is_nra: wages += 3925.00 if wages > 1850 and wages <= 6613: val = 0.00 + ((wages - 1850) * 0.10) elif wages > 6613 and wages <= 21200: val = 476.30 + ((wages - 6613) * 0.12) elif wages > 21200 and wages <= 43100: val = 2226.74 + ((wages - 21200) * 0.22) elif wages > 43100 and wages <= 80600: val = 7044.74 + ((wages - 43100) * 0.24) elif wages > 80600 and wages <= 101850: val = 16044.74 + ((wages - 80600) * 0.32) elif wages > 101850 and wages <= 251850: val = 22844.74 + ((wages - 101850) * 0.35) elif wages > 251850: val = 75344.74 + ((wages - 251850) * 0.37) ### # Single ANNUAL ### elif 'annually' == schedule_pay: wages -= allowances * 4150.00 if is_nra: wages += 7850.00 if wages > 3700 and wages <= 13225: val = 0.00 + ((wages - 3700) * 0.10) elif wages > 13225 and wages <= 42400: val = 952.50 + ((wages - 13225) * 0.12) elif wages > 42400 and wages <= 86200: val = 4453.50 + ((wages - 42400) * 0.22) elif wages > 86200 and wages <= 161200: val = 14089.50 + ((wages - 86200) * 0.24) elif wages > 161200 and wages <= 203700: val = 32089.50 + ((wages - 161200) * 0.32) elif wages > 203700 and wages <= 503700: val = 45689.50 + ((wages - 203700) * 0.35) elif wages > 503700: val = 150689.50 + ((wages - 503700) * 0.37) else: raise Exception('Invalid schedule_pay="' + schedule_pay + '" for W4 Allowance calculation') else: ######## # 2019 # ######## # Single WEEKLY ### if 'weekly' == schedule_pay: wages -= allowances * 80.80 if is_nra: wages += 153.80 if wages > 73 and wages <= 260: val = 0.00 + ((wages - 73) * 0.10) elif wages > 260 and wages <= 832: val = 18.70 + ((wages - 260) * 0.12) elif wages > 832 and wages <= 1692: val = 87.34 + ((wages - 832) * 0.22) elif wages > 1692 and wages <= 3164: val = 276.54 + ((wages - 1692) * 0.24) elif wages > 3164 and wages <= 3998: val = 629.82 + ((wages - 3164) * 0.32) elif wages > 3998 and wages <= 9887: val = 896.70 + ((wages - 3998) * 0.35) elif wages > 9887: val = 2957.85 + ((wages - 9887) * 0.37) ### # Single BIWEEKLY ### elif 'bi-weekly' == schedule_pay: wages -= allowances * 161.50 if is_nra: wages += 307.70 if wages > 146 and wages <= 519: val = 0.00 + ((wages - 146) * 0.10) elif wages > 519 and wages <= 1664: val = 37.30 + ((wages - 519) * 0.12) elif wages > 1664 and wages <= 3385: val = 174.70 + ((wages - 1664) * 0.22) elif wages > 3385 and wages <= 6328: val = 553.32 + ((wages - 3385) * 0.24) elif wages > 6328 and wages <= 7996: val = 1259.64 + ((wages - 6328) * 0.32) elif wages > 7996 and wages <= 19773: val = 1793.40 + ((wages - 7996) * 0.35) elif wages > 19773: val = 5915.35 + ((wages - 19773) * 0.37) ### # Single SEMIMONTHLY ### elif 'semi-monthly' == schedule_pay: wages -= allowances * 175.00 if is_nra: wages += 333.30 if wages > 158 and wages <= 563: val = 0.00 + ((wages - 158) * 0.10) elif wages > 563 and wages <= 1803: val = 40.50 + ((wages - 563) * 0.12) elif wages > 1803 and wages <= 3667: val = 189.30 + ((wages - 1803) * 0.22) elif wages > 3667 and wages <= 6855: val = 599.38 + ((wages - 3667) * 0.24) elif wages > 6855 and wages <= 8663: val = 1364.50 + ((wages - 6855) * 0.32) elif wages > 8663 and wages <= 21421: val = 1943.06 + ((wages - 8663) * 0.35) elif wages > 21421: val = 6408.36 + ((wages - 21421) * 0.37) ### # Single MONTHLY ### elif 'monthly' == schedule_pay: wages -= allowances * 350.00 if is_nra: wages += 666.70 if wages > 317 and wages <= 1125: val = 0.00 + ((wages - 317) * 0.10) elif wages > 1125 and wages <= 3606: val = 80.80 + ((wages - 1125) * 0.12) elif wages > 3606 and wages <= 7333: val = 378.52 + ((wages - 3606) * 0.22) elif wages > 7333 and wages <= 13710: val = 1198.46 + ((wages - 7333) * 0.24) elif wages > 13710 and wages <= 17325: val = 2728.94 + ((wages - 13710) * 0.32) elif wages > 17325 and wages <= 42842: val = 3885.74 + ((wages - 17325) * 0.35) elif wages > 42842: val = 12816.69 + ((wages - 42842) * 0.37) ### # Single QUARTERLY ### elif 'quarterly' == schedule_pay: wages -= allowances * 1050.00 if is_nra: wages += 2000.0 if wages > 950 and wages <= 3375: val = 0.00 + ((wages - 950) * 0.10) elif wages > 3375 and wages <= 10819: val = 242.50 + ((wages - 3375) * 0.12) elif wages > 10819 and wages <= 22000: val = 1135.78 + ((wages - 10819) * 0.22) elif wages > 22000 and wages <= 41131: val = 3595.60 + ((wages - 22000) * 0.24) elif wages > 41131 and wages <= 51975: val = 8187.04 + ((wages - 41131) * 0.32) elif wages > 51975 and wages <= 128525: val = 11657.12 + ((wages - 51975) * 0.35) elif wages > 128525: val = 38449.62 + ((wages - 128525) * 0.37) ### # Single SEMIANNUAL ### elif 'semi-annually' == schedule_pay: wages -= allowances * 2100.00 if is_nra: wages += 4000.00 if wages > 1900 and wages <= 6750: val = 0.00 + ((wages - 1900) * 0.10) elif wages > 6750 and wages <= 21638: val = 485.00 + ((wages - 6750) * 0.12) elif wages > 21638 and wages <= 44000: val = 2271.56 + ((wages - 21638) * 0.22) elif wages > 44000 and wages <= 82263: val = 7191.20 + ((wages - 44000) * 0.24) elif wages > 82263 and wages <= 103950: val = 16374.32 + ((wages - 82263) * 0.32) elif wages > 103950 and wages <= 257050: val = 23314.16 + ((wages - 103950) * 0.35) elif wages > 257050: val = 76899.16 + ((wages - 257050) * 0.37) ### # Single ANNUAL ### elif 'annually' == schedule_pay: wages -= allowances * 4200.00 if is_nra: wages += 8000.00 if wages > 3800 and wages <= 13500: val = 0.00 + ((wages - 3800) * 0.10) elif wages > 13500 and wages <= 43275: val = 970.00 + ((wages - 13500) * 0.12) elif wages > 43275 and wages <= 88000: val = 4543.00 + ((wages - 43275) * 0.22) elif wages > 88000 and wages <= 164525: val = 14382.50 + ((wages - 88000) * 0.24) elif wages > 164525 and wages <= 207900: val = 32748.50 + ((wages - 164525) * 0.32) elif wages > 207900 and wages <= 514100: val = 46628.50 + ((wages - 207900) * 0.35) elif wages > 514100: val = 153798.50 + ((wages - 514100) * 0.37) else: raise Exception('Invalid schedule_pay="' + schedule_pay + '" for W4 Allowance calculation') result = -(val + additional) EE: US Federal Income Tax Withholding - Married EE_US_FED_INC_WITHHOLD_M python result = (contract.w4_filing_status == 'married') code year = payslip.dict.date_to.year wages = categories.GROSS allowances = contract.w4_allowances is_nra = contract.w4_is_nonresident_alien schedule_pay = contract.schedule_pay val = 0.00 additional = contract.w4_additional_withholding if year == 2018: ### # Married WEEKLY ### if 'weekly' == schedule_pay: wages -= allowances * 79.80 if is_nra: wages += 151.00 if wages > 222 and wages <= 588: val = 0.00 + ((wages - 222) * 0.10) elif wages > 588 and wages <= 1711: val = 36.60 + ((wages - 588) * 0.12) elif wages > 1711 and wages <= 3395: val = 171.36 + ((wages - 1711) * 0.22) elif wages > 3395 and wages <= 6280: val = 541.84 + ((wages - 3395) * 0.24) elif wages > 6280 and wages <= 7914: val = 1234.24 + ((wages - 6280) * 0.32) elif wages > 7914 and wages <= 11761: val = 1757.12 + ((wages - 7914) * 0.35) elif wages > 11761: val = 3103.57 + ((wages - 11761) * 0.37) ### # Married BIWEEKLY ### elif 'bi-weekly' == schedule_pay: wages -= allowances * 159.60 if is_nra: wages += 301.90 if wages > 444 and wages <= 1177: val = 0.00 + ((wages - 444) * 0.10) elif wages > 1177 and wages <= 3421: val = 73.30 + ((wages - 1177) * 0.12) elif wages > 3421 and wages <= 6790: val = 342.58 + ((wages - 3421) * 0.22) elif wages > 6790 and wages <= 12560: val = 1083.76 + ((wages - 6790) * 0.24) elif wages > 12560 and wages <= 15829: val = 2468.56 + ((wages - 12560) * 0.32) elif wages > 15829 and wages <= 23521: val = 3514.64 + ((wages - 15829) * 0.35) elif wages > 23521: val = 6206.84 + ((wages - 23521) * 0.37) ### # Married SEMIMONTHLY ### elif 'semi-monthly' == schedule_pay: wages -= allowances * 172.90 if is_nra: wages += 327.10 if wages > 481 and wages <= 1275: val = 0.00 + ((wages - 481) * 0.10) elif wages > 1275 and wages <= 3706: val = 79.40 + ((wages - 1275) * 0.12) elif wages > 3706 and wages <= 7356: val = 371.12 + ((wages - 3706) * 0.22) elif wages > 7356 and wages <= 13606: val = 1174.12 + ((wages - 7356) * 0.24) elif wages > 13606 and wages <= 17148: val = 2674.12 + ((wages - 13606) * 0.32) elif wages > 17148 and wages <= 25481: val = 3807.56 + ((wages - 17148) * 0.35) elif wages > 25481: val = 6724.11 + ((wages - 25481) * 0.37) ### # Married MONTHLY ### elif 'monthly' == schedule_pay: wages -= allowances * 345.80 if is_nra: wages += 654.20 if wages > 963 and wages <= 2550: val = 0.00 + ((wages - 963) * 0.10) elif wages > 2550 and wages <= 7413: val = 158.70 + ((wages - 2550) * 0.12) elif wages > 7413 and wages <= 14713: val = 742.26 + ((wages - 7413) * 0.22) elif wages > 14713 and wages <= 27213: val = 2348.26 + ((wages - 14713) * 0.24) elif wages > 27213 and wages <= 34296: val = 5348.26 + ((wages - 27213) * 0.32) elif wages > 34296 and wages <= 50963: val = 7614.82 + ((wages - 34296) * 0.35) elif wages > 50963: val = 13448.27 + ((wages - 50963) * 0.37) ### # Married QUARTERLY ### elif 'quarterly' == schedule_pay: wages -= allowances * 1037.50 if is_nra: wages += 1962.50 if wages > 2888 and wages <= 7650: val = 0.00 + ((wages - 2888) * 0.10) elif wages > 7650 and wages <= 22238: val = 476.20 + ((wages - 7650) * 0.12) elif wages > 22238 and wages <= 44138: val = 2226.76 + ((wages - 22238) * 0.22) elif wages > 44138 and wages <= 81638: val = 7044.76 + ((wages - 44138) * 0.24) elif wages > 81638 and wages <= 102888: val = 16044.76 + ((wages - 81638) * 0.32) elif wages > 102888 and wages <= 152888: val = 22844.76 + ((wages - 102888) * 0.35) elif wages > 152888: val = 40344.76 + ((wages - 152888) * 0.37) ### # Married SEMIANNUAL ### elif 'semi-annually' == schedule_pay: wages -= allowances * 2075.00 if is_nra: wages += 3925.00 if wages > 5775 and wages <= 15300: val = 0.00 + ((wages - 5775) * 0.10) elif wages > 15300 and wages <= 44475: val = 952.50 + ((wages - 15300) * 0.12) elif wages > 44475 and wages <= 88275: val = 4453.50 + ((wages - 44475) * 0.22) elif wages > 88275 and wages <= 163275: val = 14089.50 + ((wages - 88275) * 0.24) elif wages > 163275 and wages <= 205775: val = 32089.50 + ((wages - 163275) * 0.32) elif wages > 205775 and wages <= 305775: val = 45689.50 + ((wages - 205775) * 0.35) elif wages > 305775: val = 80689.50 + ((wages - 305775) * 0.37) ### # Married ANNUAL ### elif 'annually' == schedule_pay: wages -= allowances * 4150.00 if is_nra: wages += 7850.00 if wages > 11550 and wages <= 30600: val = 0.00 + ((wages - 11550) * 0.10) elif wages > 30600 and wages <= 88950: val = 1905.00 + ((wages - 30600) * 0.12) elif wages > 88950 and wages <= 176550: val = 8907.00 + ((wages - 88950) * 0.22) elif wages > 176550 and wages <= 326550: val = 28179.00 + ((wages - 176550) * 0.24) elif wages > 326550 and wages <= 411550: val = 64179.00 + ((wages - 326550) * 0.32) elif wages > 411550 and wages <= 611550: val = 91379.00 + ((wages - 411550) * 0.35) elif wages > 611550: val = 161379.00 + ((wages - 611550) * 0.37) else: raise Exception('Invalid schedule_pay="' + schedule_pay + '" for W4 Allowance calculation') else: ######## # 2019 # ######## # Married WEEKLY ### if 'weekly' == schedule_pay: wages -= allowances * 80.80 if is_nra: wages += 153.80 if wages > 227 and wages <= 600: val = 0.00 + ((wages - 227) * 0.10) elif wages > 600 and wages <= 1745: val = 37.30 + ((wages - 600) * 0.12) elif wages > 1745 and wages <= 3465: val = 174.70 + ((wages - 1745) * 0.22) elif wages > 3465 and wages <= 6409: val = 553.10 + ((wages - 3465) * 0.24) elif wages > 6409 and wages <= 8077: val = 1259.66 + ((wages - 6409) * 0.32) elif wages > 8077 and wages <= 12003: val = 1793.42 + ((wages - 8077) * 0.35) elif wages > 12003: val = 3167.52 + ((wages - 12003) * 0.37) ### # Married BIWEEKLY ### elif 'bi-weekly' == schedule_pay: wages -= allowances * 161.50 if is_nra: wages += 307.70 if wages > 454 and wages <= 1200: val = 0.00 + ((wages - 454) * 0.10) elif wages > 1200 and wages <= 3490: val = 74.60 + ((wages - 1200) * 0.12) elif wages > 3490 and wages <= 6931: val = 349.40 + ((wages - 3490) * 0.22) elif wages > 6931 and wages <= 12817: val = 1106.42 + ((wages - 6931) * 0.24) elif wages > 12817 and wages <= 16154: val = 2519.06 + ((wages - 12817) * 0.32) elif wages > 16154 and wages <= 24006: val = 3586.90 + ((wages - 16154) * 0.35) elif wages > 24006: val = 6335.10 + ((wages - 24006) * 0.37) ### # Married SEMIMONTHLY ### elif 'semi-monthly' == schedule_pay: wages -= allowances * 175.00 if is_nra: wages += 333.30 if wages > 492 and wages <= 1300: val = 0.00 + ((wages - 492) * 0.10) elif wages > 1300 and wages <= 3781: val = 80.80 + ((wages - 1300) * 0.12) elif wages > 3781 and wages <= 7508: val = 378.52 + ((wages - 3781) * 0.22) elif wages > 7508 and wages <= 13885: val = 1198.46 + ((wages - 7508) * 0.24) elif wages > 13885 and wages <= 17500: val = 2728.94 + ((wages - 13885) * 0.32) elif wages > 17500 and wages <= 26006: val = 3885.74 + ((wages - 17500) * 0.35) elif wages > 26006: val = 6862.84 + ((wages - 26006) * 0.37) ### # Married MONTHLY ### elif 'monthly' == schedule_pay: wages -= allowances * 350.00 if is_nra: wages += 666.70 if wages > 983 and wages <= 2600: val = 0.00 + ((wages - 983) * 0.10) elif wages > 2600 and wages <= 7563: val = 161.70 + ((wages - 2600) * 0.12) elif wages > 7563 and wages <= 15017: val = 757.26 + ((wages - 7563) * 0.22) elif wages > 15017 and wages <= 27771: val = 2397.14 + ((wages - 15017) * 0.24) elif wages > 27771 and wages <= 35000: val = 5458.10 + ((wages - 27771) * 0.32) elif wages > 35000 and wages <= 50963: val = 7771.38 + ((wages - 35000) * 0.35) elif wages > 52013: val = 13725.93 + ((wages - 52013) * 0.37) ### # Married QUARTERLY ### elif 'quarterly' == schedule_pay: wages -= allowances * 1050.00 if is_nra: wages += 2000.00 if wages > 2950 and wages <= 7800: val = 0.00 + ((wages - 2950) * 0.10) elif wages > 7800 and wages <= 22688: val = 485.00 + ((wages - 7800) * 0.12) elif wages > 22688 and wages <= 45050: val = 2271.56 + ((wages - 22688) * 0.22) elif wages > 45050 and wages <= 83313: val = 7191.20 + ((wages - 45050) * 0.24) elif wages > 83313 and wages <= 105000: val = 16374.32 + ((wages - 83313) * 0.32) elif wages > 105000 and wages <= 156038: val = 23314.16 + ((wages - 105000) * 0.35) elif wages > 156038: val = 41177.46 + ((wages - 156038) * 0.37) ### # Married SEMIANNUAL ### elif 'semi-annually' == schedule_pay: wages -= allowances * 2100.00 if is_nra: wages += 4000.00 if wages > 5900 and wages <= 15600: val = 0.00 + ((wages - 5900) * 0.10) elif wages > 15600 and wages <= 45375: val = 970.00 + ((wages - 15600) * 0.12) elif wages > 45375 and wages <= 90100: val = 4543.00 + ((wages - 45375) * 0.22) elif wages > 90100 and wages <= 166625: val = 14382.50 + ((wages - 90100) * 0.24) elif wages > 166625 and wages <= 210000: val = 32748.50 + ((wages - 166625) * 0.32) elif wages > 210000 and wages <= 312075: val = 46628.50 + ((wages - 210000) * 0.35) elif wages > 312075: val = 82354.75 + ((wages - 312075) * 0.37) ### # Married ANNUAL ### elif 'annually' == schedule_pay: wages -= allowances * 4200.00 if is_nra: wages += 8000.00 if wages > 11800 and wages <= 31200: val = 0.00 + ((wages - 11800) * 0.10) elif wages > 31200 and wages <= 90750: val = 1940.00 + ((wages - 31200) * 0.12) elif wages > 90750 and wages <= 180200: val = 9086.00 + ((wages - 90750) * 0.22) elif wages > 180200 and wages <= 333250: val = 28765.00 + ((wages - 180200) * 0.24) elif wages > 333250 and wages <= 420000: val = 65497.00 + ((wages - 333250) * 0.32) elif wages > 420000 and wages <= 624150: val = 93257.00 + ((wages - 420000) * 0.35) elif wages > 624150: val = 164709.50 + ((wages - 624150) * 0.37) else: raise Exception('Invalid schedule_pay="' + schedule_pay + '" for W4 Allowance calculation') result = -(val + additional) Wage: US FUTA Federal Unemployment WAGE_US_FUTA python result = (contract.futa_type != contract.FUTA_TYPE_EXEMPT) code ### rate = payslip.dict.get_futa_rate(contract) year = payslip.dict.date_to.year ytd = payslip.sum('WAGE_US_FUTA', str(year) + '-01-01', str(year+1) + '-01-01') ytd += contract.external_wages remaining = rate.wage_limit_year - ytd if remaining <= 0.0: result = 0 elif remaining < categories.BASIC: result = remaining else: result = categories.BASIC ER: US FUTA Federal Unemployment ER_US_FUTA python result = (contract.futa_type != contract.FUTA_TYPE_EXEMPT) code year = payslip.dict.date_to.year rate = payslip.dict.get_futa_rate(contract) result_rate = -(rate.rate) result = categories.WAGE_US_FUTA ER: US FICA Social Security ER_US_FICA_SS none code result = categories.EE_US_FICA_SS ER: US FICA Medicare ER_US_FICA_M none code result = categories.EE_US_FICA_M