private Money calculateCurrentValue(List<AssetClass> allocations) { Money result = MoneyFactory.fromDouble(0); for (AssetClass ac : allocations) { Money itemValue; ItemType type = ac.getType(); switch (type) { case Group: // Group. Calculate for children. itemValue = calculateCurrentValue(ac.getChildren()); break; case Allocation: // Allocation. get value of all stocks. itemValue = sumStockValues(ac.getStocks()); break; case Cash: itemValue = ac.getValue(); break; default: ExceptionHandler handler = new ExceptionHandler(getContext()); handler.showMessage("encountered an item with no type set!"); itemValue = MoneyFactory.fromDouble(0); break; } ac.setCurrentValue(itemValue); result = result.add(itemValue); } return result; }
/** * Add Cash as a separate, automatic asset class that uses all the cash amounts from the * investment accounts. * * @param assetAllocation Main asset allocation object. */ private void addCash(AssetClass assetAllocation) { // get all investment accounts, their currencies and cash balances. AccountRepository repo = new AccountRepository(getContext()); AccountService accountService = new AccountService(getContext()); List<String> investmentAccounts = new ArrayList<>(); investmentAccounts.add(AccountTypes.INVESTMENT.toString()); CurrencyService currencyService = new CurrencyService(getContext()); int destinationCurrency = currencyService.getBaseCurrencyId(); Money zero = MoneyFactory.fromDouble(0); List<Account> accounts = accountService.loadAccounts(false, false, investmentAccounts); Money sum = MoneyFactory.fromDouble(0); // Get the balances in base currency. for (Account account : accounts) { int sourceCurrency = account.getCurrencyId(); Money amountInBase = currencyService.doCurrencyExchange( destinationCurrency, account.getInitialBalance(), sourceCurrency); sum = sum.add(amountInBase); } // add the cash asset class // todo: the allocation needs to be editable! AssetClass cash = AssetClass.create(getContext().getString(R.string.cash)); cash.setType(ItemType.Cash); cash.setAllocation(zero); cash.setCurrentAllocation(zero); cash.setDifference(zero); cash.setValue(sum); assetAllocation.addChild(cash); }
private Money getDifferenceSum(List<AssetClass> group) { Money sum = MoneyFactory.fromDouble(0); for (AssetClass item : group) { sum.add(item.getDifference()); } return sum; }
private Money getCurrentAllocationSum(List<AssetClass> group) { Money sum = MoneyFactory.fromDouble(0); for (AssetClass item : group) { sum.add(item.getCurrentAllocation()); } return sum; }
public void showChart() { PayeeReportAdapter adapter = (PayeeReportAdapter) getListAdapter(); if (adapter == null) return; Cursor cursor = adapter.getCursor(); if (cursor == null) return; if (!cursor.moveToFirst()) return; ArrayList<ValuePieEntry> arrayList = new ArrayList<ValuePieEntry>(); while (!cursor.isAfterLast()) { ValuePieEntry item = new ValuePieEntry(); // total double total = Math.abs(cursor.getDouble(cursor.getColumnIndex("TOTAL"))); if (!TextUtils.isEmpty(cursor.getString(cursor.getColumnIndex(ViewMobileData.PAYEE)))) { item.setText(cursor.getString(cursor.getColumnIndex(ViewMobileData.PAYEE))); } else { item.setText(getString(R.string.empty_payee)); } item.setValue(total); CurrencyService currencyService = new CurrencyService(getContext()); item.setValueFormatted( currencyService.getBaseCurrencyFormatted(MoneyFactory.fromDouble(total))); // add element arrayList.add(item); // move to next record cursor.moveToNext(); } Bundle args = new Bundle(); args.putSerializable(PieChartFragment.KEY_CATEGORIES_VALUES, arrayList); // get fragment manager FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); if (fragmentManager != null) { PieChartFragment fragment; fragment = (PieChartFragment) fragmentManager.findFragmentByTag( IncomeVsExpensesChartFragment.class.getSimpleName()); if (fragment == null) { fragment = new PieChartFragment(); } fragment.setChartArguments(args); fragment.setDisplayHomeAsUpEnabled(true); if (fragment.isVisible()) fragment.onResume(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if (((PayeesReportActivity) getActivity()).mIsDualPanel) { fragmentTransaction.replace( R.id.fragmentChart, fragment, PieChartFragment.class.getSimpleName()); } else { fragmentTransaction.replace( R.id.fragmentContent, fragment, PieChartFragment.class.getSimpleName()); fragmentTransaction.addToBackStack(null); } fragmentTransaction.commit(); } }
@Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { super.onLoadFinished(loader, data); switch (loader.getId()) { case ID_LOADER: if (data == null) return; // parse cursor for calculate total double totalAmount = 0; while (data.moveToNext()) { totalAmount += data.getDouble(data.getColumnIndex("TOTAL")); } CurrencyService currencyService = new CurrencyService(getContext()); TextView txtColumn2 = (TextView) mFooterListView.findViewById(R.id.textViewColumn2); txtColumn2.setText( currencyService.getBaseCurrencyFormatted(MoneyFactory.fromDouble(totalAmount))); // solve bug chart if (data.getCount() > 0) { getListView().removeFooterView(mFooterListView); getListView().addFooterView(mFooterListView); } // handler to show chart if (((PayeesReportActivity) getActivity()).mIsDualPanel) { Handler handler = new Handler(); handler.postDelayed( new Runnable() { @Override public void run() { showChart(); } }, 1 * 1000); } } }
@Override public void bindView(View view, Context context, Cursor cursor) { TextView txtColumn1 = (TextView) view.findViewById(R.id.textViewColumn1); TextView txtColumn2 = (TextView) view.findViewById(R.id.textViewColumn2); Core core = new Core(context); double total = cursor.getDouble(cursor.getColumnIndex("TOTAL")); String column1; String category = cursor.getString(cursor.getColumnIndex(ViewMobileData.Category)); if (!TextUtils.isEmpty(category)) { column1 = "<b>" + category + "</b>"; String subCategory = cursor.getString(cursor.getColumnIndex(ViewMobileData.Subcategory)); if (!TextUtils.isEmpty(subCategory)) { column1 += " : " + subCategory; } } else { column1 = "<i>" + context.getString(R.string.empty_category); } txtColumn1.setText(Html.fromHtml(column1)); CurrencyService currencyService = new CurrencyService(mContext); txtColumn2.setText( currencyService.getCurrencyFormatted( currencyService.getBaseCurrencyId(), MoneyFactory.fromDouble(total))); if (total < 0) { txtColumn2.setTextColor( context.getResources().getColor(core.resolveIdAttribute(R.attr.holo_red_color_theme))); } else { txtColumn2.setTextColor( context.getResources().getColor(core.resolveIdAttribute(R.attr.holo_green_color_theme))); } // view.setBackgroundColor(core.resolveColorAttribute(cursor.getPosition() % 2 == 1 ? // R.attr.row_dark_theme : R.attr.row_light_theme)); }