/*
 *  name: Derick Campos
 *  date: 02/19/2015
 *  filename: ComissionProjectWEEK3.java
 *  purpose/description: This program is to calculate
 *  commission depending on the sales amount.
 */

package Sales;

//Import to be able to read input from user//
import java.util.Scanner;

//Class declaration to set up class named ComissionProjectWEEK3//

public class CommissionProjectWEEK3
{
	
	
/*
 * mark as private static final because sales goal will not change
 *  and to prevent modification from other classes
 *  Used "Double" to convert from double to String and
 *  Vice versa.
 */
	private static final
	Double SalesGoal = 125000.00;


//main method
public static void main(String[] args)
	{
		Scanner input = new Scanner ( System.in );


//call the method from external class
		RequestInput name = new RequestInput();
		name.Input();
		Double sales = input.nextDouble();
		
		//Defining variables and formating output//
		double x=0;
		double Fixed = 42000;
		//reference "static" compensation variable	defined in line 72//
	
		x = (Fixed + Compensation(sales));

		//Output to User
		System.out.println("");
		System.out.printf("Your fixed salary is $" + "%.2f", Fixed);
		System.out.println("");
		System.out.printf("Your commission earned this year is: $" + "%.2f", Compensation(sales));
		System.out.println("");
		System.out.printf("Your total annual compensation is $" + "%.2f", x);
		System.out.println("");
		System.out.println("");
		System.out.println("This table shows your potential sales commission if you sale more:");
		System.out.println("");


//Code for table to display until it reaches 50% above the annual sales.
		double Above50PercSales;
		Above50PercSales = 50 * sales/100 + sales;
		System.out.println("Total sales    ----    Total compensation");





//while loop starts to execute the increments of $5000//
		while (sales <= Above50PercSales )
		{
			System.out.println(sales + "    ----    " + Compensation(sales));
			sales = (sales + 5000);
		}
	
	}



/* 
 * From this point on we find our Decision Statements that operate the
 * calculations and the logic to display the compensation based
 * on agent sales.
 */
static

				double 	Compensation(Double sales)
				{	
					double CommissionEarned = 0;
					if (SalesMet(sales))
					{
						CommissionEarned = 8 * sales/100;
					}

//IF statement if user exceeded sales then he will earn Commission + Acceleration Factor
						if (SalesExceeded(sales))
						{
							CommissionEarned *= 1.25;
						}
						return CommissionEarned;
				}

			
//Code to determine if user exceeded sales or not. and then return value to main method
static
				boolean SalesExceeded(Double sales)
					{
						return sales > SalesGoal;
					}

//Code to determine if user met sales or not and then return value to main method.

static
boolean SalesMet(Double sales)
			{
				return sales >= 80 * (SalesGoal/100);
			}
}