Skip to content
Permalink
3ecb1a4749
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
323 lines (276 sloc) 5.87 KB
package model;
import java.util.ArrayList;
public class FinancialStatement
{
private Profession _profession;
private int _cashBalance;
// Income
private int _income; // needs getter and incrementer
private int _salary;
private int _REcashFlow; // needs getter and incrementer
// Expenses
private int _expenses; // needs getter and incrementer
private int _taxes;
private int _homeMortgagePayment;
private int _schoolLoanPayment;
private int _carLoanPayment;
private int _creditCardPayment;
private int _otherExpenses;
private int _perChildExpense;
private int _numChildren; // needs getter and incrementer
// Assets
private int _assets;
private int _savings;
private Stock _stock;
private ArrayList<OwnedRealEstate> _realEstate;
// Liabilities
private int _liabilities;
private int _homeMortgage;
private int _schoolLoans;
private int _carLoans;
private int _creditCardDebt;
// Cash flows (top right of actual financial statement)
private int _monthlySalary;
private int _passiveIncome;
private int _totalIncome;
private int _totalExpenses;
private int _monthlyCashFlow;
private boolean _hasWon;
public FinancialStatement(Profession p)
{
_profession = p;
// Income
_income = 0;
_salary = p.getSalary();
_REcashFlow = 0;
// Expenses
_expenses = 0;
_taxes = p.getTaxes();
_homeMortgagePayment = p.getMortgagePay();
_schoolLoanPayment = p.getSchoolLoanPay();
_carLoanPayment = p.getCarLoanPay();
_creditCardPayment = p.getCreditCardPay();
_otherExpenses = p.getOtherExp();
_perChildExpense = p.getChildExpPer();
_numChildren = 0;
// Assets
_assets = 0;
_savings = p.getSavings();
_stock = null;
_realEstate = new ArrayList<OwnedRealEstate>();
// Liabilities
_liabilities = 0;
_homeMortgage = p.getMortgage();
_schoolLoans = p.getSchoolLoans();
_carLoans = p.getCarLoans();
_creditCardDebt = p.getCreditCardDebt();
// Cash flows
_monthlySalary = _salary;
_passiveIncome = 0;
_totalIncome = 0;
_totalExpenses = 0;
_monthlyCashFlow = 0;
_hasWon = false;
update();
}
private void update()
{
_income = _salary + _REcashFlow;
_expenses = _taxes + _homeMortgagePayment + _schoolLoanPayment + _carLoanPayment + _creditCardPayment + _otherExpenses + (_perChildExpense * _numChildren);
_assets = getOwnedREValue() + getStockValue() + _savings;
_liabilities = _homeMortgage + _schoolLoans + _carLoans + _creditCardDebt;
_passiveIncome = getPassiveIncome();
_totalIncome = _monthlySalary + _passiveIncome;
_totalExpenses = _expenses;
_monthlyCashFlow = _totalIncome - _totalExpenses;
_hasWon = _passiveIncome > _totalExpenses;
// TODO add method to update display if its currently being displayed
}
int getPassiveIncome()
{
int passiveInc = 0;
for(OwnedRealEstate re : _realEstate)
{
passiveInc += re.getCashFlow();
}
return passiveInc;
}
public int getStockValue()
{
if(_stock == null) {
return 0;
}
else {
return _stock.getNumShares() * _stock.getSharePrice();
}
}
public int getOwnedREValue()
{
int reValue = 0;
for(OwnedRealEstate re : _realEstate)
{
reValue += re.getPrice();
}
return reValue;
}
public boolean canBuy(int price)
{
return price < _cashBalance;
}
public boolean hasStock()
{
return _stock != null;
}
public void buyProperty(OwnedRealEstate newProperty)
{
_cashBalance -= newProperty.getDownPayment();
_realEstate.add(newProperty);
update();
}
public void buyStock(int numShares, int sharePrice)
{
_stock = new Stock(numShares, sharePrice);
int cashOut = _stock.getCashOut();
_cashBalance += cashOut; // getCashOut() will negate the value automatically so we will add not subtract
update();
}
public void sellStock()
{
_cashBalance += _stock.getSharePrice() * _stock.getNumShares();
_stock = null;
update();
}
public void addChild()
{
// People can only have a max of 3 children
if(_numChildren < 3)
{
_numChildren++;
}
update();
}
public int getCashBalance()
{
return _cashBalance;
}
public void setCashBalance(int d)
{
_cashBalance = d;
update();
}
public void increaseCashBalance(int cashIncrease)
{
this._cashBalance =+ cashIncrease;
update();
}
public Profession getProfession()
{
return _profession;
}
public int getTotalIncome()
{
return _totalIncome;
}
//income getters
public int getIncome()
{
return _income;
}
public int getSalary()
{
return _salary;
}
public int getREcashFlow()
{
return _REcashFlow;
}
//expense getters
public int getExpenses()
{
return _expenses;
}
public int getTaxes()
{
return _taxes;
}
public int getHomeMortgagePayment()
{
return _homeMortgagePayment;
}
public int getSchoolLoanPayment()
{
return _schoolLoanPayment;
}
public int getCarLoanPayment()
{
return _carLoanPayment;
}
public int getCreditCardPayment()
{
return _creditCardPayment;
}
public int getOtherExpenses()
{
return _otherExpenses;
}
public int getPerChildExpense()
{
return _perChildExpense;
}
public int getNumChildren()
{
return _numChildren;
}
//assets getters
public int getAssets()
{
return _assets;
}
public int getSavings()
{
return _savings;
}
public int getStock()
{
return _stock.getNumShares() * _stock.getSharePrice();
}
//for realestate,maybe
// public int get()
// {
// return _;
// }
//liabilities getters
public int getLiabilities()
{
return _liabilities;
}
public int getHomeMortgage()
{
return _homeMortgage;
}
public int getSchoolLoans()
{
return _schoolLoans;
}
public int getCarLoans()
{
return _carLoans;
}
public int getCreditCardDebt()
{
return _creditCardDebt;
}
//additonal cash flow getters
public int getMonthlySalary()
{
return _monthlySalary;
}
public int getTotalExpenses()
{
return _totalExpenses;
}
public int getMonthlyCashflow() {
// TODO Auto-generated method stub
return _monthlyCashFlow;
}
}