package beans;

import java.text.NumberFormat;

public class IncomeTaxCalculatorBean {
    
    private double grossIncome;
    private double baselineValue;

    public String getIncomeTax() {
	double baselineValuesAmount = grossIncome / baselineValue;

	final double baselineGroup1 = 240d;
	final double baselineGroup3 = baselineValuesAmount - 600d;
	final double baselineGroup2 = baselineValuesAmount
		- (baselineGroup1 + baselineGroup3);
	final double baselineGroup4 = baselineValuesAmount - 840d;
	final double baselineGroup5 = baselineValuesAmount - 1080d;

	final double baselineTax1 = baselineValuesAmount * 0.09;
	final double baselineTax2 = (baselineValuesAmount - baselineGroup1) * 0.15;
	final double baselineGroupTax1 = baselineGroup1 * 0.09;
	final double baselineGroupTax2 = baselineGroup2 * 0.15;
	double baselineGroupTax3 = baselineGroup3 * 0.20;
	double baselineGroupTax4 = baselineGroup4 * 0.25;
	final double baselineGroupTax5 = baselineGroup5 * 0.30;

	double totalTax = 0d;
	double income = 0d;

	final NumberFormat nf = NumberFormat.getInstance();
	nf.setMaximumFractionDigits(2);
	nf.setMinimumFractionDigits(2);

	if (baselineValuesAmount >= 0d && baselineValuesAmount <= 240d) {
	    totalTax = baselineTax1;
	} else if (baselineValuesAmount > 240d && baselineValuesAmount <= 600d) {
	    totalTax = baselineGroupTax1 + baselineTax2;
	} else if (baselineValuesAmount > 600d && baselineValuesAmount <= 840d) {
	    totalTax = baselineGroupTax1 + baselineGroupTax2
		    + baselineGroupTax3;
	} else if (baselineValuesAmount > 840d && baselineValuesAmount <= 1080d) {
	    baselineGroupTax3 = (baselineGroup3 - baselineGroup4) * 0.20;
	    totalTax = baselineGroupTax1 + baselineGroupTax2
		    + baselineGroupTax3 + baselineGroupTax4;
	} else if (baselineValuesAmount > 1080d) {
	    baselineGroupTax3 = (baselineGroup3 - baselineGroup4) * 0.20;
	    baselineGroupTax4 = (baselineGroup4 - baselineGroup5) * 0.25;
	    totalTax = baselineGroupTax1 + baselineGroupTax2
		    + baselineGroupTax3 + baselineGroupTax4 + baselineGroupTax5;
	}
	income = (baselineValuesAmount - totalTax) * baselineValue;
	return nf.format(income) + "(Чистый доход (бел. руб.)) = "
		+ nf.format(grossIncome) + "(Доход) - "
		+ nf.format((totalTax * baselineValue)) + "(Подоходный налог)";
    }

    public double getGrossIncome() {
        return grossIncome;
    }

    public void setGrossIncome(double grossIncome) {
        this.grossIncome = grossIncome;
    }

    public double getBaselineValue() {
        return baselineValue;
    }

    public void setBaselineValue(double baselineValue) {
        this.baselineValue = baselineValue;
    }

}
