package us.deans.incomeanalyser; public class IncomeAnalyzer_Engine_001 implements IncomeAnalyser_Engine { private double fed_ss_rate = .1240; private double fed_ss_limit = 106800; private double fed_oasdi_rate = 0.0145; public IncomeAnalyzer_Engine_001(){ } public void calculate(IncomeAnalyser_Model model) { model.setAnnualGross(model.getHourlyRate()*1900); model.setFedOASDITax(model.getAnnualGross()* fed_oasdi_rate); double totalGross = model.getAnnualGross(); // calculate SS Amount if (model.getTaxForm().equals("W2")){ model.setFedSSTax((totalGross*fed_ss_rate)*0.5); } if (model.getTaxForm().equals("1099")){ model.setFedSSTax((totalGross*fed_ss_rate)); } if (model.getFedSSTax() > fed_ss_limit) model.setFedSSTax(fed_ss_limit); if (model.getTaxForm().equals("W2")) { if (model.getFilingStatus().equals("M")){ System.out.println("filing status is 'M'"); if (totalGross < 373650) model.setTaxRate(.35); if (totalGross < 209250) model.setTaxRate(.33); if (totalGross < 137300) model.setTaxRate(.28); if (totalGross < 68000) model.setTaxRate(.25); if (totalGross < 16750) model.setTaxRate(.15); } if (model.getFilingStatus().equals("S")){ if (totalGross < 373650) model.setTaxRate(.35); if (totalGross < 171850) model.setTaxRate(.33); if (totalGross < 82400) model.setTaxRate(.28); if (totalGross < 34000) model.setTaxRate(.25); if (totalGross < 8375) model.setTaxRate(.15); } } model.setFedIncomeTax(totalGross*model.getTaxRate()); double taxRate = model.getTaxRate(); double afterIncomeTax = totalGross - (totalGross*taxRate); double afterFICATax = afterIncomeTax - (model.getFedOASDITax()+model.getFedSSTax()); model.setMonthlyNet(afterFICATax/12); } }