package hw02;

public class Account {
	static int nextAcct = 1000;
	int acctNumber;
	double balance;
	Transaction[] log;
	int nli; // Next log index
	int month;
	int year;

	public Account(double initBalance) {
		acctNumber=nextAcct;
		nextAcct++;
		nli=0;
		log = new Transaction[100];
		log[nli++] = new Transaction(0.0,'D',initBalance);
		balance=initBalance;
		month=8;
		year=2017;
	}

	void deposit(double amt) {
		log[nli++]=new Transaction(balance,'D',amt);
		balance+=amt;
	}

	boolean withdraw(double amt) {
		if (amt > balance) {
			System.out.println("Account: " + acctNumber + " requested a withdrawal of " + amt + " but only " + balance + " is available.");
			log[nli++]=new Transaction(balance,'W',balance);
			balance=0;
			return false;
		}
		log[nli++]=new Transaction(balance,'W',amt);
		balance-=amt;
		return true;
	}

	void printStatement() {
		double interest=balance*(0.05/12);
		log[nli++]=new Transaction(balance,'I',interest);
		balance+=interest;
		log[0].printHeader(acctNumber,month,year);
		for(int i=0; i<nli; i++) {
			log[i].printLine();
		}
		log[0].printTrailer();
		nli=0;
		month++;
		if (month>11) { month=0; year++; }
	}

	void report() {
		System.out.println("Account: " + acctNumber + " Current balance: " +
			String.format("$%.02f", balance));
	}

}