void MyMoneyAccountTest::testSetClosed() { MyMoneyAccount a; QVERIFY(a.isClosed() == false); a.setClosed(true); QVERIFY(a.isClosed() == true); a.setClosed(false); QVERIFY(a.isClosed() == false); }
void KInstitutionsView::loadSubAccounts(KMyMoneyAccountTreeItem* parent) { bool showClosedAccounts = kmymoney2->toggleAction("view_show_all_accounts")->isChecked() || !KMyMoneyGlobalSettings::hideClosedAccounts(); const MyMoneyAccount& account = dynamic_cast<const MyMoneyAccount&>(parent->itemObject()); QValueList<QString>::const_iterator it_a; MyMoneyFile* file = MyMoneyFile::instance(); for(it_a = account.accountList().begin(); it_a != account.accountList().end(); ++it_a) { MyMoneyAccount acc = m_accountMap[(*it_a)]; if(!acc.isInvest()) continue; if(acc.isClosed() && !showClosedAccounts) continue; const MyMoneySecurity& security = m_securityMap[acc.currencyId()]; QValueList<MyMoneyPrice> prices; prices += file->price(acc.currencyId(), security.tradingCurrency()); if(security.tradingCurrency() != file->baseCurrency().id()) { MyMoneySecurity sec = m_securityMap[security.tradingCurrency()]; prices += file->price(sec.id(), file->baseCurrency().id()); } KMyMoneyAccountTreeItem* item = new KMyMoneyAccountTreeItem(parent, acc, prices, security); if(acc.id() == m_reconciliationAccount.id()) item->setReconciliation(true); } }
QValueList<MyMoneyAccount> MyMoneyForecast::forecastAccountList(void) { MyMoneyFile* file = MyMoneyFile::instance(); QValueList<MyMoneyAccount> accList; //Get all accounts from the file and check if they are of the right type to calculate forecast file->accountList(accList); QValueList<MyMoneyAccount>::iterator accList_t = accList.begin(); for(; accList_t != accList.end(); ) { MyMoneyAccount acc = *accList_t; if(acc.isClosed() //check the account is not closed || (!acc.isAssetLiability()) ) { //|| (acc.accountType() == MyMoneyAccount::Investment) ) {//check that it is not an Investment account and only include Stock accounts accList.remove(accList_t); //remove the account if it is not of the correct type accList_t = accList.begin(); } else { ++accList_t; } } return accList; }
QValueList<MyMoneyAccount> MyMoneyForecast::budgetAccountList(void) { MyMoneyFile* file = MyMoneyFile::instance(); QValueList<MyMoneyAccount> accList; QStringList emptyStringList; //Get all accounts from the file and check if they are of the right type to calculate forecast file->accountList(accList, emptyStringList, false); QValueList<MyMoneyAccount>::iterator accList_t = accList.begin(); for(; accList_t != accList.end(); ) { MyMoneyAccount acc = *accList_t; if(acc.isClosed() //check the account is not closed || (!acc.isIncomeExpense()) ) { accList.remove(accList_t); //remove the account if it is not of the correct type accList_t = accList.begin(); } else { ++accList_t; } } return accList; }
void KNewAccountDlg::initParentWidget(QString parentId, const QString& accountId) { MyMoneyFile *file = MyMoneyFile::instance(); MyMoneyAccount liabilityAccount = file->liability(); MyMoneyAccount assetAccount = file->asset(); MyMoneyAccount expenseAccount = file->expense(); MyMoneyAccount incomeAccount = file->income(); MyMoneyAccount equityAccount = file->equity(); m_parentItem = 0; m_accountItem = 0; // Determine the parent account try { m_parentAccount = file->account(parentId); } catch (MyMoneyException *e) { m_bSelectedParentAccount = false; m_parentAccount = MyMoneyAccount(); if(m_account.accountType() != MyMoneyAccount::UnknownAccountType) { parentAccount(); parentId = m_parentAccount.id(); } delete e; } m_bSelectedParentAccount = true; // extract the account type from the combo box MyMoneyAccount::accountTypeE type; MyMoneyAccount::accountTypeE groupType; type = KMyMoneyUtils::stringToAccountType(typeCombo->currentText()); groupType = MyMoneyAccount::accountGroup(type); m_qlistviewParentAccounts->clear(); // Now scan all 4 account roots to load the list and mark the parent try { if (!m_categoryEditor) { if(groupType == MyMoneyAccount::Asset || type == MyMoneyAccount::Loan) { // Asset KMyMoneyAccountTreeBaseItem *assetTopLevelAccount = new KMyMoneyAccountTreeItem(m_qlistviewParentAccounts, assetAccount); if(m_parentAccount.id().isEmpty()) { m_parentAccount = assetAccount; parentId = m_parentAccount.id(); } if (parentId == assetAccount.id()) m_parentItem = assetTopLevelAccount; assetTopLevelAccount->setOpen(true); for ( QStringList::ConstIterator it = assetAccount.accountList().begin(); it != assetAccount.accountList().end(); ++it ) { MyMoneyAccount acc = file->account(*it); if(acc.isClosed()) continue; KMyMoneyAccountTreeBaseItem *accountItem = new KMyMoneyAccountTreeItem(assetTopLevelAccount, acc); if(parentId == acc.id()) { m_parentItem = accountItem; } else if(accountId == acc.id()) { if(m_isEditing) accountItem->setSelectable(false); m_accountItem = accountItem; } QStringList subAccounts = acc.accountList(); if (subAccounts.count() >= 1) { showSubAccounts(subAccounts, accountItem, parentId, acc.id()); } } } if(groupType == MyMoneyAccount::Liability) { // Liability KMyMoneyAccountTreeBaseItem *liabilityTopLevelAccount = new KMyMoneyAccountTreeItem(m_qlistviewParentAccounts, liabilityAccount); if(m_parentAccount.id().isEmpty()) { m_parentAccount = liabilityAccount; parentId = m_parentAccount.id(); } if (parentId == liabilityAccount.id()) m_parentItem = liabilityTopLevelAccount; liabilityTopLevelAccount->setOpen(true); for ( QStringList::ConstIterator it = liabilityAccount.accountList().begin(); it != liabilityAccount.accountList().end(); ++it ) { MyMoneyAccount acc = file->account(*it); if(acc.isClosed()) continue; KMyMoneyAccountTreeBaseItem *accountItem = new KMyMoneyAccountTreeItem(liabilityTopLevelAccount, acc); if(parentId == acc.id()) { m_parentItem = accountItem; } else if(accountId == acc.id()) { if(m_isEditing) accountItem->setSelectable(false); m_accountItem = accountItem; } QStringList subAccounts = acc.accountList(); if (subAccounts.count() >= 1) { showSubAccounts(subAccounts, accountItem, parentId, acc.id()); } } } } else { if(groupType == MyMoneyAccount::Income) { // Income KMyMoneyAccountTreeBaseItem *incomeTopLevelAccount = new KMyMoneyAccountTreeItem(m_qlistviewParentAccounts, incomeAccount); if(m_parentAccount.id().isEmpty()) { m_parentAccount = incomeAccount; parentId = m_parentAccount.id(); } if (parentId == incomeAccount.id()) m_parentItem = incomeTopLevelAccount; incomeTopLevelAccount->setOpen(true); for ( QStringList::ConstIterator it = incomeAccount.accountList().begin(); it != incomeAccount.accountList().end(); ++it ) { KMyMoneyAccountTreeBaseItem *accountItem = new KMyMoneyAccountTreeItem(incomeTopLevelAccount, file->account(*it)); QString id = file->account(*it).id(); if(parentId == id) { m_parentItem = accountItem; } else if(accountId == id) { if(m_isEditing) accountItem->setSelectable(false); m_accountItem = accountItem; } QStringList subAccounts = file->account(*it).accountList(); if (subAccounts.count() >= 1) { showSubAccounts(subAccounts, accountItem, parentId, accountId); } } } if(groupType == MyMoneyAccount::Expense) { // Expense KMyMoneyAccountTreeBaseItem *expenseTopLevelAccount = new KMyMoneyAccountTreeItem(m_qlistviewParentAccounts, expenseAccount); if(m_parentAccount.id().isEmpty()) { m_parentAccount = expenseAccount; parentId = m_parentAccount.id(); } if (parentId == expenseAccount.id()) m_parentItem = expenseTopLevelAccount; expenseTopLevelAccount->setOpen(true); for ( QStringList::ConstIterator it = expenseAccount.accountList().begin(); it != expenseAccount.accountList().end(); ++it ) { KMyMoneyAccountTreeBaseItem *accountItem = new KMyMoneyAccountTreeItem(expenseTopLevelAccount, file->account(*it)); QString id = file->account(*it).id(); if(parentId == id) { m_parentItem = accountItem; } else if(accountId == id) { if(m_isEditing) accountItem->setSelectable(false); m_accountItem = accountItem; } QStringList subAccounts = file->account(*it).accountList(); if (subAccounts.count() >= 1) { showSubAccounts(subAccounts, accountItem, parentId, accountId); } } } } } catch (MyMoneyException *e) { qDebug("Exception in assets account refresh: %s", e->what().latin1()); delete e; } m_qlistviewParentAccounts->setColumnWidth(0, m_qlistviewParentAccounts->width()); if (m_parentItem) { m_subAccountLabel->setText(i18n("Is a sub account of %1").arg(m_parentAccount.name())); m_parentItem->setOpen(true); m_qlistviewParentAccounts->setSelected(m_parentItem, true); } m_qlistviewParentAccounts->setEnabled(true); }