From: <ste...@us...> - 2012-01-17 03:47:22
|
Revision: 1644 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1644&view=rev Author: stef145g Date: 2012-01-17 03:47:16 +0000 (Tue, 17 Jan 2012) Log Message: ----------- Setting up to allow user to ignore future dates in reports. Modified Paths: -------------- trunk/mmex/src/mmhomepagepanel.cpp trunk/mmex/src/mmtransaction.cpp trunk/mmex/src/mmtransaction.h trunk/mmex/src/util.cpp trunk/mmex/src/util.h Modified: trunk/mmex/src/mmhomepagepanel.cpp =================================================================== --- trunk/mmex/src/mmhomepagepanel.cpp 2012-01-17 01:56:59 UTC (rev 1643) +++ trunk/mmex/src/mmhomepagepanel.cpp 2012-01-17 03:47:16 UTC (rev 1644) @@ -167,8 +167,8 @@ wxASSERT(pCurrencyPtr); mmex::CurrencyFormatter::instance().loadSettings(*pCurrencyPtr); - double bal = pCA->initialBalance_ + core_->bTransactionList_.getBalance(pCA->accountID_); - double reconciledBal = pCA->initialBalance_ + core_->bTransactionList_.getReconciledBalance(pCA->accountID_); + double bal = pCA->initialBalance_ + core_->bTransactionList_.getBalance(pCA->accountID_, mmIniOptions::ignoreFutureTransactions_); + double reconciledBal = pCA->initialBalance_ + core_->bTransactionList_.getReconciledBalance(pCA->accountID_, mmIniOptions::ignoreFutureTransactions_); double rate = pCurrencyPtr->baseConv_; tBalance += bal * rate; // actual amount in that account in the original rate @@ -177,7 +177,7 @@ { double income = 0.0; double expenses = 0.0; - core_->bTransactionList_.getExpensesIncome(pCA->accountID_, expenses, income, false,dtBegin, dtEnd); + core_->bTransactionList_.getExpensesIncome(pCA->accountID_, expenses, income, false, dtBegin, dtEnd, mmIniOptions::ignoreFutureTransactions_); // show the actual amount in that account wxString balanceStr; @@ -227,8 +227,8 @@ wxASSERT(pCurrencyPtr); mmex::CurrencyFormatter::instance().loadSettings(*pCurrencyPtr); - double bal = pTA->initialBalance_ + core_->bTransactionList_.getBalance(pTA->accountID_); - double reconciledBal = pTA->initialBalance_ + core_->bTransactionList_.getReconciledBalance(pTA->accountID_); + double bal = pTA->initialBalance_ + core_->bTransactionList_.getBalance(pTA->accountID_, mmIniOptions::ignoreFutureTransactions_); + double reconciledBal = pTA->initialBalance_ + core_->bTransactionList_.getReconciledBalance(pTA->accountID_, mmIniOptions::ignoreFutureTransactions_); double rate = pCurrencyPtr->baseConv_; tTermBalance += bal * rate; // actual amount in that account in the original rate @@ -237,7 +237,7 @@ { double income = 0; double expenses = 0; - core_->bTransactionList_.getExpensesIncome(pTA->accountID_, expenses, income, false,dtBegin, dtEnd); + core_->bTransactionList_.getExpensesIncome(pTA->accountID_, expenses, income, false, dtBegin, dtEnd, mmIniOptions::ignoreFutureTransactions_); // show the actual amount in that account wxString balanceStr; Modified: trunk/mmex/src/mmtransaction.cpp =================================================================== --- trunk/mmex/src/mmtransaction.cpp 2012-01-17 01:56:59 UTC (rev 1643) +++ trunk/mmex/src/mmtransaction.cpp 2012-01-17 03:47:16 UTC (rev 1644) @@ -703,8 +703,7 @@ } } -int mmBankTransactionList::updateAllTransactionsForPayee(mmCoreDB* core, - int payeeID) +int mmBankTransactionList::updateAllTransactionsForPayee(mmCoreDB* core, int payeeID) { // We need to update all transactions incase of errors when loading std::vector< boost::shared_ptr<mmBankTransaction> >::const_iterator i; @@ -726,8 +725,8 @@ return 0; } -void mmBankTransactionList::getExpensesIncome(int accountID, double& expenses, double& income, - bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd) const +void mmBankTransactionList::getExpensesIncome(int accountID, double& expenses, double& income, + bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool ignoreFuture) const { std::vector< boost::shared_ptr<mmBankTransaction> >::const_iterator i; for (i = transactions_.begin(); i != transactions_.end(); i++ ) @@ -740,10 +739,15 @@ if (pBankTransaction->accountID_ != accountID && pBankTransaction->toAccountID_ != accountID) continue; // skip } - if (pBankTransaction->status_ == wxT("V")) + { continue; // skip - + } + if (ignoreFuture) + { + if (pBankTransaction->date_.IsLaterThan(wxDateTime::Now())) + continue; //skip future dated transactions + } if (!ignoreDate) { if (!pBankTransaction->date_.IsBetween(dtBegin, dtEnd)) @@ -761,15 +765,12 @@ { // transfers are not considered in income/expenses calculations } - } - } } - void mmBankTransactionList::getTransactionStats(int accountID, int& number, - bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd) const + bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool ignoreFuture) const { std::vector<boost::shared_ptr<mmBankTransaction> >::const_iterator i; @@ -784,10 +785,15 @@ if (pBankTransaction->accountID_ != accountID && pBankTransaction->toAccountID_ != accountID) continue; // skip } - if (pBankTransaction->status_ == wxT("V")) + { continue; // skip - + } + if (ignoreFuture) + { + if (pBankTransaction->date_.IsLaterThan(wxDateTime::Now())) + continue; //skip future dated transactions + } if (!ignoreDate) { if (!pBankTransaction->date_.IsBetween(dtBegin, dtEnd)) @@ -802,13 +808,12 @@ { ++number; } - } } } double mmBankTransactionList::getAmountForPayee(int payeeID, bool ignoreDate, - const wxDateTime &dtBegin, const wxDateTime &dtEnd) const + const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool ignoreFuture) const { double amt = 0.0; std::vector< boost::shared_ptr<mmBankTransaction> >::const_iterator i; @@ -817,27 +822,37 @@ boost::shared_ptr<const mmBankTransaction> pBankTransaction = *i; if (pBankTransaction) { - if (pBankTransaction->payeeID_ == payeeID) - { - if (pBankTransaction->status_ == wxT("V")) - continue; // skip + if (pBankTransaction->payeeID_ == payeeID) + { + if (pBankTransaction->status_ == wxT("V")) + { + continue; // skip + } + if (ignoreFuture) + { + if (pBankTransaction->date_.IsLaterThan(wxDateTime::Now())) + continue; //skip future dated transactions + } + if (!ignoreDate) + { + if (!pBankTransaction->date_.IsBetween(dtBegin, dtEnd)) + continue; //skip + } - if (!ignoreDate) - { - if (!pBankTransaction->date_.IsBetween(dtBegin, dtEnd)) - continue; //skip - } + if (pBankTransaction->transType_ == TRANS_TYPE_TRANSFER_STR) + continue; - if (pBankTransaction->transType_ == TRANS_TYPE_TRANSFER_STR) - continue; + double convRate = mmDBWrapper::getCurrencyBaseConvRate(db_.get(), pBankTransaction->accountID_); - double convRate = mmDBWrapper::getCurrencyBaseConvRate(db_.get(), pBankTransaction->accountID_); - - if (pBankTransaction->transType_ == TRANS_TYPE_WITHDRAWAL_STR) - amt -= pBankTransaction->amt_ * convRate; - else if (pBankTransaction->transType_ == TRANS_TYPE_DEPOSIT_STR) - amt += pBankTransaction->amt_ * convRate; - } + if (pBankTransaction->transType_ == TRANS_TYPE_WITHDRAWAL_STR) + { + amt -= pBankTransaction->amt_ * convRate; + } + else if (pBankTransaction->transType_ == TRANS_TYPE_DEPOSIT_STR) + { + amt += pBankTransaction->amt_ * convRate; + } + } } } return amt; @@ -850,7 +865,8 @@ const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool evaluateTransfer, - bool asDeposit + bool asDeposit, + bool ignoreFuture ) const { double amt = 0.0; @@ -870,6 +886,11 @@ { continue; // skip } + if (ignoreFuture) + { + if (pBankTransaction->date_.IsLaterThan(wxDateTime::Now())) + continue; //skip future dated transactions + } if (!ignoreDate) { if (!pBankTransaction->date_.IsBetween(dtBegin, dtEnd)) @@ -1007,7 +1028,7 @@ return true; } -double mmBankTransactionList::getReconciledBalance(int accountID) const +double mmBankTransactionList::getReconciledBalance(int accountID, bool ignoreFuture) const { double balance = 0.0; std::vector< boost::shared_ptr<mmBankTransaction> >::const_iterator i; @@ -1018,6 +1039,12 @@ { if (pBankTransaction->accountID_ != accountID && pBankTransaction->toAccountID_ != accountID) continue; // skip + + if (ignoreFuture) + { + if (pBankTransaction->date_.IsLaterThan(wxDateTime::Now())) + continue; //skip future dated transactions + } if (pBankTransaction->status_ != wxT("R")) continue; // skip Modified: trunk/mmex/src/mmtransaction.h =================================================================== --- trunk/mmex/src/mmtransaction.h 2012-01-17 01:56:59 UTC (rev 1643) +++ trunk/mmex/src/mmtransaction.h 2012-01-17 03:47:16 UTC (rev 1644) @@ -157,14 +157,14 @@ void deleteTransactions(int accountID); /* Query Functions */ - void getExpensesIncome(int accountID, double& expenses, double& income, bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd) const; - double getAmountForCategory(int categID, int subcategID, bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool evaluateTransfer = false, bool asDeposit = false) const; - double getAmountForPayee(int payeeID, bool ignoreDate, const wxDateTime &dtbegin, const wxDateTime &dtEnd) const; - void getTransactionStats(int accountID, int& number, bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd) const; + void getExpensesIncome(int accountID, double& expenses, double& income, bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool ignoreFuture = false) const; + double getAmountForCategory(int categID, int subcategID, bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool evaluateTransfer = false, bool asDeposit = false, bool ignoreFuture = false) const; + double getAmountForPayee(int payeeID, bool ignoreDate, const wxDateTime &dtbegin, const wxDateTime &dtEnd, bool ignoreFuture = false) const; + void getTransactionStats(int accountID, int& number, bool ignoreDate, const wxDateTime &dtBegin, const wxDateTime &dtEnd, bool ignoreFuture = false) const; double getBalance(int accountID, bool ignoreFuture = false) const; bool getDailyBalance(int accountID, std::map<wxDateTime, double>& daily_balance, bool ignoreFuture = false) const; - double getReconciledBalance(int accountID) const; + double getReconciledBalance(int accountID, bool ignoreFuture = false) const; int countFollowupTransactions() const; /* Update Transactions */ Modified: trunk/mmex/src/util.cpp =================================================================== --- trunk/mmex/src/util.cpp 2012-01-17 01:56:59 UTC (rev 1643) +++ trunk/mmex/src/util.cpp 2012-01-17 03:47:16 UTC (rev 1644) @@ -243,6 +243,7 @@ bool mmIniOptions::expandStocksHome_ = true; bool mmIniOptions::expandBankTree_ = true; bool mmIniOptions::expandTermTree_ = false; +bool mmIniOptions::ignoreFutureTransactions_ = false; int mmIniOptions::transPayeeSelectionNone_ = 0; int mmIniOptions::transCategorySelectionNone_ = 0; @@ -255,7 +256,7 @@ wxString mmOptions::financialYearStartMonthString_; //---------------------------------------------------------------------------- -void correctEmptyFileExt(wxString ext, wxString & fileName ) +void correctEmptyFileExt(wxString ext, wxString & fileName) { wxFileName tempFileName(fileName); if (tempFileName.GetExt().IsEmpty()) @@ -263,9 +264,9 @@ } //---------------------------------------------------------------------------- -void mmOptions::loadOptions( wxSQLite3Database* db ) +void mmOptions::loadOptions(wxSQLite3Database* db) { - dateFormat = mmDBWrapper::getInfoSettingValue( db, wxT( "DATEFORMAT" ), mmex::DEFDATEFORMAT ); + dateFormat = mmDBWrapper::getInfoSettingValue(db, wxT("DATEFORMAT"), mmex::DEFDATEFORMAT); financialYearStartDayString_ = mmDBWrapper::getInfoSettingValue(db, wxT("FINANCIAL_YEAR_START_DAY"), wxT("1")); financialYearStartMonthString_ = mmDBWrapper::getInfoSettingValue(db, wxT("FINANCIAL_YEAR_START_MONTH"), wxT("7")); @@ -273,48 +274,51 @@ } //---------------------------------------------------------------------------- -void mmOptions::saveOptions( wxSQLite3Database* db ) +void mmOptions::saveOptions(wxSQLite3Database* db) { - mmDBWrapper::setInfoSettingValue( db, wxT( "DATEFORMAT" ), dateFormat ); + mmDBWrapper::setInfoSettingValue(db, wxT("DATEFORMAT"), dateFormat); } // -------------------------------------------------------------------------- -void mmIniOptions::loadOptions( wxSQLite3Database* db ) +void mmIniOptions::loadOptions(wxSQLite3Database* db) { - if ( mmDBWrapper::getINISettingValue( db, wxT( "ENABLESTOCKS" ), wxT( "TRUE" ) ) != wxT( "TRUE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("ENABLESTOCKS"), wxT("TRUE")) != wxT("TRUE")) expandStocksHome_ = false; - if ( mmDBWrapper::getINISettingValue( db, wxT( "ENABLEASSETS" ), wxT( "TRUE" ) ) != wxT( "TRUE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("ENABLEASSETS"), wxT("TRUE")) != wxT("TRUE")) enableAssets_ = false; - if ( mmDBWrapper::getINISettingValue( db, wxT( "ENABLEBUDGET" ), wxT( "TRUE" ) ) != wxT( "TRUE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("ENABLEBUDGET"), wxT("TRUE")) != wxT("TRUE")) enableBudget_ = false; - if ( mmDBWrapper::getINISettingValue( db, wxT( "ENABLEGRAPHS" ), wxT( "TRUE" ) ) != wxT( "TRUE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("ENABLEGRAPHS"), wxT("TRUE")) != wxT("TRUE")) enableGraphs_ = false; - mmIniOptions::fontSize_ = mmDBWrapper::getINISettingValue( db, wxT( "HTMLFONTSIZE" ), wxT( "3" ) ); + mmIniOptions::fontSize_ = mmDBWrapper::getINISettingValue(db, wxT("HTMLFONTSIZE"), wxT("3")); - if ( mmDBWrapper::getINISettingValue( db, wxT("EXPAND_BANK_HOME"), wxT( "TRUE" ) ) != wxT( "TRUE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("EXPAND_BANK_HOME"), wxT("TRUE")) != wxT("TRUE")) expandBankHome_ = false; - if ( mmDBWrapper::getINISettingValue( db, wxT("EXPAND_TERM_HOME"), wxT( "FALSE" ) ) != wxT( "FALSE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("EXPAND_TERM_HOME"), wxT("FALSE")) != wxT("FALSE")) expandTermHome_ = true; - if ( mmDBWrapper::getINISettingValue( db, wxT("EXPAND_BANK_TREE"), wxT( "TRUE" ) ) != wxT( "TRUE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("EXPAND_BANK_TREE"), wxT("TRUE")) != wxT("TRUE")) expandBankTree_ = false; - if ( mmDBWrapper::getINISettingValue( db, wxT("EXPAND_TERM_TREE"), wxT( "FALSE" ) ) != wxT( "FALSE" ) ) + if (mmDBWrapper::getINISettingValue(db, wxT("EXPAND_TERM_TREE"), wxT("FALSE")) != wxT("FALSE")) expandTermTree_ = true; + if (mmDBWrapper::getINISettingValue(db, wxT("REPORT_FUTURE_TRANSACTIONS"), wxT("FALSE")) != wxT("FALSE")) + ignoreFutureTransactions_ = true; + // Read the preference as a string and convert to int - transPayeeSelectionNone_ = wxAtoi(mmDBWrapper::getINISettingValue( db, wxT("TRANSACTION_PAYEE_NONE"), wxT("0") )); + transPayeeSelectionNone_ = wxAtoi(mmDBWrapper::getINISettingValue(db, wxT("TRANSACTION_PAYEE_NONE"), wxT("0"))); // For the category selection, default behavior should remain that the last category used for the payee is selected. // This is item 1 (0-indexed) in the list. - transCategorySelectionNone_ = wxAtoi(mmDBWrapper::getINISettingValue( db, wxT("TRANSACTION_CATEGORY_NONE"), wxT("1") )); - transStatusReconciled_ = wxAtoi(mmDBWrapper::getINISettingValue( db, wxT("TRANSACTION_STATUS_RECONCILED"), wxT("0") )); + transCategorySelectionNone_ = wxAtoi(mmDBWrapper::getINISettingValue(db, wxT("TRANSACTION_CATEGORY_NONE"), wxT("1"))); + transStatusReconciled_ = wxAtoi(mmDBWrapper::getINISettingValue(db, wxT("TRANSACTION_STATUS_RECONCILED"), wxT("0"))); } -void mmIniOptions::loadInfoOptions( wxSQLite3Database* db ) +void mmIniOptions::loadInfoOptions(wxSQLite3Database* db) { - mmIniOptions::userNameString_ = mmDBWrapper::getInfoSettingValue( db, wxT( "USERNAME" ), wxT( "" ) ); + mmIniOptions::userNameString_ = mmDBWrapper::getInfoSettingValue(db, wxT("USERNAME"), wxT("")); } void mmIniOptions::saveOptions( wxSQLite3Database* /*db*/ ) Modified: trunk/mmex/src/util.h =================================================================== --- trunk/mmex/src/util.h 2012-01-17 01:56:59 UTC (rev 1643) +++ trunk/mmex/src/util.h 2012-01-17 03:47:16 UTC (rev 1644) @@ -73,65 +73,66 @@ class mmOptions { public: - static void loadOptions( wxSQLite3Database* db ); - static void saveOptions( wxSQLite3Database* db ); + static void loadOptions( wxSQLite3Database* db ); + static void saveOptions( wxSQLite3Database* db ); - static wxString dateFormat; - static wxString language; - static wxString financialYearStartDayString_; - static wxString financialYearStartMonthString_; + static wxString dateFormat; + static wxString language; + static wxString financialYearStartDayString_; + static wxString financialYearStartMonthString_; }; class mmIniOptions { public: - static void loadOptions( wxSQLite3Database* db ); - static void loadInfoOptions( wxSQLite3Database* db ); - static void saveOptions( wxSQLite3Database* db ); + static void loadOptions( wxSQLite3Database* db ); + static void loadInfoOptions( wxSQLite3Database* db ); + static void saveOptions( wxSQLite3Database* db ); - static bool enableAssets_; - static bool enableBudget_; - static bool enableGraphs_; - static bool enableAddAccount_; - static bool enableDeleteAccount_; - static bool enableRepeatingTransactions_; - static bool enableCustomLogo_; - static bool enableCheckForUpdates_; - static bool enableReportIssues_; - static bool enableBeNotifiedForNewReleases_; - static bool enableVisitWebsite_; - static wxString logoName_; - static wxString fontSize_; - static bool enableImportMMNETCSV_; - static bool enableImportMMCSV_; - static bool enableCustomAboutDialog_; - static wxString aboutCompanyName_; - static bool disableCategoryModify_; - static wxString userNameString_; - static bool enableCustomTemplateDB_; - static wxString customTemplateDB_; + static bool enableAssets_; + static bool enableBudget_; + static bool enableGraphs_; + static bool enableAddAccount_; + static bool enableDeleteAccount_; + static bool enableRepeatingTransactions_; + static bool enableCustomLogo_; + static bool enableCheckForUpdates_; + static bool enableReportIssues_; + static bool enableBeNotifiedForNewReleases_; + static bool enableVisitWebsite_; + static wxString logoName_; + static wxString fontSize_; + static bool enableImportMMNETCSV_; + static bool enableImportMMCSV_; + static bool enableCustomAboutDialog_; + static wxString aboutCompanyName_; + static bool disableCategoryModify_; + static wxString userNameString_; + static bool enableCustomTemplateDB_; + static wxString customTemplateDB_; - static bool expandBankHome_; - static bool expandTermHome_; - static bool expandStocksHome_; - static bool expandBankTree_; - static bool expandTermTree_; + static bool expandBankHome_; + static bool expandTermHome_; + static bool expandStocksHome_; + static bool expandBankTree_; + static bool expandTermTree_; + static bool ignoreFutureTransactions_; - static int transPayeeSelectionNone_; - static int transCategorySelectionNone_; - static int transStatusReconciled_; + static int transPayeeSelectionNone_; + static int transCategorySelectionNone_; + static int transStatusReconciled_; }; class mmColors { public: - static wxColour listAlternativeColor0; - static wxColour listAlternativeColor1; - static wxColour listBorderColor; - static wxColour listBackColor; - static wxColour navTreeBkColor; - static wxColour listDetailsPanelColor; - static wxColour listFutureDateColor; + static wxColour listAlternativeColor0; + static wxColour listAlternativeColor1; + static wxColour listBorderColor; + static wxColour listBackColor; + static wxColour navTreeBkColor; + static wxColour listDetailsPanelColor; + static wxColour listFutureDateColor; }; //---------------------------------------------------------------------------- @@ -143,33 +144,33 @@ public: static CurrencyFormatter& instance(); - void loadDefaultSettings(); - void loadSettings(const mmCurrency &cur); + void loadDefaultSettings(); + void loadSettings(const mmCurrency &cur); - void loadSettings(const wxString &pfx, const wxString &sfx, - wxChar dec, wxChar grp, - const wxString &unit, const wxString ¢, - int scale - ); + void loadSettings(const wxString &pfx, const wxString &sfx, + wxChar dec, wxChar grp, + const wxString &unit, const wxString ¢, + int scale + ); - wxString getPrefix() const { return m_pfx_symbol; } - wxString getSuffix() const { return m_sfx_symbol; } + wxString getPrefix() const { return m_pfx_symbol; } + wxString getSuffix() const { return m_sfx_symbol; } - wxChar getDecimalPoint() const { return m_decimal_point; } - wxChar getGroupSeparator() const { return m_group_separator; } + wxChar getDecimalPoint() const { return m_decimal_point; } + wxChar getGroupSeparator() const { return m_group_separator; } int getScale() const { return m_scale; } private: - wxString m_pfx_symbol; // Leading currency symbol - wxString m_sfx_symbol; // Trailing currency symbol - wxChar m_decimal_point; // Character for 100ths - wxChar m_group_separator;// Character for 1000nds - wxString m_unit_name; // Name of monetary unit - wxString m_cent_name; // Name of fraction unit - int m_scale; + wxString m_pfx_symbol; // Leading currency symbol + wxString m_sfx_symbol; // Trailing currency symbol + wxChar m_decimal_point; // Character for 100ths + wxChar m_group_separator;// Character for 1000nds + wxString m_unit_name; // Name of monetary unit + wxString m_cent_name; // Name of fraction unit + int m_scale; - CurrencyFormatter(); + CurrencyFormatter(); }; //---------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |