From: <ste...@us...> - 2011-04-13 12:36:09
|
Revision: 1230 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1230&view=rev Author: stef145g Date: 2011-04-13 12:35:58 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Correct "cash flow" for auto repeat transactions. Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2011-04-12 13:59:53 UTC (rev 1229) +++ trunk/mmex/src/reportcashflow.cpp 2011-04-13 12:35:58 UTC (rev 1230) @@ -170,6 +170,12 @@ wxString transType = q1.GetString(wxT("TRANSCODE")); double amt = q1.GetDouble(wxT("TRANSAMOUNT")); + // DeMultiplex the Auto Executable fields from the db entry: REPEATS + if (repeats >= BD_REPEATS_MULTIPLEX_BASE) // Auto Execute User Acknowlegement required + repeats -= BD_REPEATS_MULTIPLEX_BASE; + if (repeats >= BD_REPEATS_MULTIPLEX_BASE) // Auto Execute Silent mode + repeats -= BD_REPEATS_MULTIPLEX_BASE; + bool processNumRepeats = false; if (numRepeats != -1) processNumRepeats = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2011-04-20 11:01:32
|
Revision: 1242 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1242&view=rev Author: stef145g Date: 2011-04-20 11:01:26 +0000 (Wed, 20 Apr 2011) Log Message: ----------- disregard closed accounts in reports Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2011-04-19 18:17:30 UTC (rev 1241) +++ trunk/mmex/src/reportcashflow.cpp 2011-04-20 11:01:26 UTC (rev 1242) @@ -86,43 +86,15 @@ mmCheckingAccount* pCA = dynamic_cast<mmCheckingAccount*>(core_->accountList_.accounts_[iAdx].get()); if (pCA) { - // Check if this account belongs in our list - if (accountArray_ != NULL) + if (pCA->status_ != pCA->MMEX_Closed) { - bool isFound = false; - for (int arrIdx = 0; arrIdx < (int)accountArray_->size(); arrIdx++) - { - if (pCA->accountName_ == accountArray_->Item(arrIdx)) - { - isFound = true; - break; - } - } - if (!isFound) - continue; // skip account - } - - double bal = pCA->initialBalance_ + core_->bTransactionList_.getBalance(pCA->accountID_); - boost::shared_ptr<mmCurrency> pCurrencyPtr = core_->accountList_.getCurrencyWeakPtr(pCA->accountID_).lock(); - wxASSERT(pCurrencyPtr); - mmex::CurrencyFormatter::instance().loadSettings(*pCurrencyPtr); - double rate = pCurrencyPtr->baseConv_; - - tBalance += bal * rate; - } - - if (activeTermAccounts_) // Add Term accounts to cashflows as well - { - mmTermAccount* pTA = dynamic_cast<mmTermAccount*>(core_->accountList_.accounts_[iAdx].get()); - if (pTA) - { // Check if this account belongs in our list if (accountArray_ != NULL) { bool isFound = false; for (int arrIdx = 0; arrIdx < (int)accountArray_->size(); arrIdx++) { - if (pTA->accountName_ == accountArray_->Item(arrIdx)) + if (pCA->accountName_ == accountArray_->Item(arrIdx)) { isFound = true; break; @@ -132,8 +104,8 @@ continue; // skip account } - double bal = pTA->initialBalance_ + core_->bTransactionList_.getBalance(pTA->accountID_); - boost::shared_ptr<mmCurrency> pCurrencyPtr = core_->accountList_.getCurrencyWeakPtr(pTA->accountID_).lock(); + double bal = pCA->initialBalance_ + core_->bTransactionList_.getBalance(pCA->accountID_); + boost::shared_ptr<mmCurrency> pCurrencyPtr = core_->accountList_.getCurrencyWeakPtr(pCA->accountID_).lock(); wxASSERT(pCurrencyPtr); mmex::CurrencyFormatter::instance().loadSettings(*pCurrencyPtr); double rate = pCurrencyPtr->baseConv_; @@ -141,6 +113,40 @@ tBalance += bal * rate; } } + + if (activeTermAccounts_) // Add Term accounts to cashflows as well + { + mmTermAccount* pTA = dynamic_cast<mmTermAccount*>(core_->accountList_.accounts_[iAdx].get()); + if (pTA) + { + if (pTA->status_ != pTA->MMEX_Closed) + { + // Check if this account belongs in our list + if (accountArray_ != NULL) + { + bool isFound = false; + for (int arrIdx = 0; arrIdx < (int)accountArray_->size(); arrIdx++) + { + if (pTA->accountName_ == accountArray_->Item(arrIdx)) + { + isFound = true; + break; + } + } + if (!isFound) + continue; // skip account + } + + double bal = pTA->initialBalance_ + core_->bTransactionList_.getBalance(pTA->accountID_); + boost::shared_ptr<mmCurrency> pCurrencyPtr = core_->accountList_.getCurrencyWeakPtr(pTA->accountID_).lock(); + wxASSERT(pCurrencyPtr); + mmex::CurrencyFormatter::instance().loadSettings(*pCurrencyPtr); + double rate = pCurrencyPtr->baseConv_; + + tBalance += bal * rate; + } + } + } } // We now know the total balance on the account This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vo...@us...> - 2011-04-23 18:42:22
|
Revision: 1246 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1246&view=rev Author: vomikan Date: 2011-04-23 18:42:16 +0000 (Sat, 23 Apr 2011) Log Message: ----------- cash flow from now for 3 years ahead Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2011-04-23 04:10:29 UTC (rev 1245) +++ trunk/mmex/src/reportcashflow.cpp 2011-04-23 18:42:16 UTC (rev 1246) @@ -32,7 +32,8 @@ mmHTMLBuilder hb; hb.init(); - wxString headerMsg = _("Cash Flow Forecast A Year Ahead - For "); + int years = 3; + wxString headerMsg = wxString::Format (_("Cash Flow Forecast for %d Years Ahead - For "), years); if (accountArray_ == NULL) { if ( !(termAccountsHeading_ == activeTermAccounts_ ) && @@ -161,7 +162,7 @@ "ACCOUNTID " "from BILLSDEPOSITS_V1"; - wxDateTime yearFromNow = wxDateTime::Now().Add(wxDateSpan::Year()); + wxDateTime yearFromNow = wxDateTime::Now().Add(wxDateSpan::Years(years)); forecastVec fvec; wxSQLite3ResultSet q1 = core_->db_.get()->ExecuteQuery(sql); @@ -288,8 +289,8 @@ // Need to use different month ranges to figure out cash flow std::vector<double> forecastOver12Months; - forecastOver12Months.resize(12, 0.0); - for (int idx = 0; idx < 12; idx++) + forecastOver12Months.resize(12*years, 0.0); + for (int idx = 0; idx < 12*years; idx++) { wxDateTime dtBegin = wxDateTime::Now(); wxDateTime dtEnd = wxDateTime::Now().Add(wxDateSpan::Months(idx+1)); @@ -317,7 +318,7 @@ hb.addTableCell(dtStr, false, true); if(forecastOver12Months[idx] + tBalance < 0) { - hb.addTableCell(balance, true, true, true, wxT("#ff0000")); + hb.addTableCell(balance, true, true, true, wxT("RED")); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vo...@us...> - 2011-04-23 19:27:57
|
Revision: 1247 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1247&view=rev Author: vomikan Date: 2011-04-23 19:27:51 +0000 (Sat, 23 Apr 2011) Log Message: ----------- cash flow forecast for 10 years ahead with difference between month balance minus previous month balance Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2011-04-23 18:42:16 UTC (rev 1246) +++ trunk/mmex/src/reportcashflow.cpp 2011-04-23 19:27:51 UTC (rev 1247) @@ -32,7 +32,7 @@ mmHTMLBuilder hb; hb.init(); - int years = 3; + int years = 10; wxString headerMsg = wxString::Format (_("Cash Flow Forecast for %d Years Ahead - For "), years); if (accountArray_ == NULL) { @@ -78,6 +78,7 @@ hb.startTableRow(); hb.addTableHeaderCell(_("Date")); hb.addTableHeaderCell(_("Total")); + hb.addTableHeaderCell(_("Difference")); hb.endTableRow(); double tBalance = 0.0; @@ -311,19 +312,15 @@ wxString balance; mmex::formatDoubleToCurrency(forecastOver12Months[idx] + tBalance, balance); + wxString diff; + mmex::formatDoubleToCurrency(forecastOver12Months[idx]-forecastOver12Months[idx-1], diff); wxString dtStr = mmGetDateForDisplay(core_->db_.get(), dtEnd); hb.startTableRow(); hb.addTableCell(dtStr, false, true); - if(forecastOver12Months[idx] + tBalance < 0) - { - hb.addTableCell(balance, true, true, true, wxT("RED")); - } - else - { - hb.addTableCell(balance, true, false, true); - } + hb.addTableCell(balance, true, true, true, ((forecastOver12Months[idx] + tBalance < 0) ? wxT("RED") : wxT("BLACK"))); + hb.addTableCell((idx==0 ? wxT ("") : diff), true, true, true, (forecastOver12Months[idx]-forecastOver12Months[idx-1] < 0 ? wxT("RED") : wxT("BLACK"))) ; hb.endTableRow(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vo...@us...> - 2011-04-24 05:50:56
|
Revision: 1248 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1248&view=rev Author: vomikan Date: 2011-04-24 05:50:50 +0000 (Sun, 24 Apr 2011) Log Message: ----------- exception added for non gcc compilers Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2011-04-23 19:27:51 UTC (rev 1247) +++ trunk/mmex/src/reportcashflow.cpp 2011-04-24 05:50:50 UTC (rev 1248) @@ -33,38 +33,38 @@ hb.init(); int years = 10; - wxString headerMsg = wxString::Format (_("Cash Flow Forecast for %d Years Ahead - For "), years); + wxString headerMsg = wxString::Format (_("Cash Flow Forecast for %d Years Ahead"), years); + hb.addHeader(3, headerMsg ); + headerMsg = _("Accounts: "); if (accountArray_ == NULL) { if ( !(termAccountsHeading_ == activeTermAccounts_ ) && (termAccountsHeading_ || activeTermAccounts_) ) - headerMsg = headerMsg + _("All Bank Accounts"); + headerMsg << _("All Bank Accounts"); else - headerMsg = headerMsg + _("All Accounts"); + headerMsg << _("All Accounts"); - hb.addHeader(3, headerMsg ); } else { int arrIdx = 0; - wxString msgString = wxT(": "); if ( (int)accountArray_->size() == 0 ) - msgString = msgString + wxT("?"); - else if ( (int)accountArray_->size() > 1 ) - msgString = wxT("s") + msgString; + headerMsg << wxT("?"); + //else if ( (int)accountArray_->size() > 1 ) + // msgString = wxT("s") + msgString; //<-- we can't translate it to other languages if ( (int)accountArray_->size() > 0 ) { - msgString = msgString + accountArray_->Item(arrIdx); + headerMsg << accountArray_->Item(arrIdx); arrIdx ++; } while ( arrIdx < (int)accountArray_->size() ) { - msgString = msgString + wxT(", ") + accountArray_->Item(arrIdx); + headerMsg << wxT(", ") << accountArray_->Item(arrIdx); arrIdx ++; } - hb.addHeader(3, headerMsg + _("Account" + msgString)); } + hb.addHeader(6, headerMsg); wxDateTime now = wxDateTime::Now(); wxString dt = _("Today's Date: ") + mmGetNiceDateString(now); @@ -230,7 +230,6 @@ mmRepeatForecast rf; rf.date = nextOccurDate; - wxString dtStr = mmGetDateForDisplay(core_->db_.get(), nextOccurDate); if (transType == wxT("Withdrawal")) rf.amount = -amt * convRate; @@ -310,17 +309,22 @@ { wxDateTime dtEnd = wxDateTime::Now().Add(wxDateSpan::Months(idx+1)); - wxString balance; - mmex::formatDoubleToCurrency(forecastOver12Months[idx] + tBalance, balance); - wxString diff; - mmex::formatDoubleToCurrency(forecastOver12Months[idx]-forecastOver12Months[idx-1], diff); + wxString balanceStr; + double balance = forecastOver12Months[idx] + tBalance; + mmex::formatDoubleToCurrency(balance, balanceStr); + wxString diffStr; + double diff; + diff = (idx==0 ? 0 : forecastOver12Months[idx]-forecastOver12Months[idx-1]) ; + mmex::formatDoubleToCurrency(diff, diffStr); - wxString dtStr = mmGetDateForDisplay(core_->db_.get(), dtEnd); + wxString dtStr ; + //dtStr << mmGetNiceShortMonthName(dtEnd.GetMonth()) << wxT(" ") << dtEnd.GetYear(); + dtStr << mmGetDateForDisplay(core_->db_.get(), dtEnd); hb.startTableRow(); hb.addTableCell(dtStr, false, true); - hb.addTableCell(balance, true, true, true, ((forecastOver12Months[idx] + tBalance < 0) ? wxT("RED") : wxT("BLACK"))); - hb.addTableCell((idx==0 ? wxT ("") : diff), true, true, true, (forecastOver12Months[idx]-forecastOver12Months[idx-1] < 0 ? wxT("RED") : wxT("BLACK"))) ; + hb.addTableCell(balanceStr, true, true, true, ((balance < 0) ? wxT("RED") : wxT("BLACK"))); + hb.addTableCell((idx==0 ? wxT ("") : diffStr), true, true, true, (diff < 0 ? wxT("RED") : wxT("BLACK"))) ; hb.endTableRow(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2011-04-28 02:32:51
|
Revision: 1251 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1251&view=rev Author: stef145g Date: 2011-04-28 02:32:45 +0000 (Thu, 28 Apr 2011) Log Message: ----------- Adjust width of report Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2011-04-25 11:04:27 UTC (rev 1250) +++ trunk/mmex/src/reportcashflow.cpp 2011-04-28 02:32:45 UTC (rev 1251) @@ -74,7 +74,7 @@ hb.startCenter(); - hb.startTable(wxT("50%")); + hb.startTable(wxT("65%")); hb.startTableRow(); hb.addTableHeaderCell(_("Date")); hb.addTableHeaderCell(_("Total")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vo...@us...> - 2012-01-05 10:40:04
|
Revision: 1607 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1607&view=rev Author: vomikan Date: 2012-01-05 10:25:23 +0000 (Thu, 05 Jan 2012) Log Message: ----------- transfer transactions calculation added. Patch provided by Lisheng Guan Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2012-01-05 08:56:03 UTC (rev 1606) +++ trunk/mmex/src/reportcashflow.cpp 2012-01-05 10:25:23 UTC (rev 1607) @@ -72,14 +72,14 @@ hb.addLineBreak(); hb.addLineBreak(); - hb.startCenter(); + hb.startCenter(); hb.startTable(wxT("65%")); - hb.startTableRow(); - hb.addTableHeaderCell(_("Date")); - hb.addTableHeaderCell(_("Total")); - hb.addTableHeaderCell(_("Difference")); - hb.endTableRow(); + hb.startTableRow(); + hb.addTableHeaderCell(_("Date")); + hb.addTableHeaderCell(_("Total")); + hb.addTableHeaderCell(_("Difference")); + hb.endTableRow(); double tBalance = 0.0; @@ -93,16 +93,7 @@ // Check if this account belongs in our list if (accountArray_ != NULL) { - bool isFound = false; - for (int arrIdx = 0; arrIdx < (int)accountArray_->size(); arrIdx++) - { - if (pCA->accountName_ == accountArray_->Item(arrIdx)) - { - isFound = true; - break; - } - } - if (!isFound) + if (wxNOT_FOUND == accountArray_->Index(pCA->accountName_)) //linear search continue; // skip account } @@ -126,16 +117,7 @@ // Check if this account belongs in our list if (accountArray_ != NULL) { - bool isFound = false; - for (int arrIdx = 0; arrIdx < (int)accountArray_->size(); arrIdx++) - { - if (pTA->accountName_ == accountArray_->Item(arrIdx)) - { - isFound = true; - break; - } - } - if (!isFound) + if (wxNOT_FOUND == accountArray_->Index(pCA->accountName_)) //linear search continue; // skip account } @@ -160,6 +142,7 @@ "NUMOCCURRENCES, " "TRANSCODE, " "TRANSAMOUNT, " + "TOACCOUNTID, " "ACCOUNTID " "from BILLSDEPOSITS_V1"; @@ -197,25 +180,20 @@ if (nextOccurDate > yearFromNow) continue; - if (transType == TRANS_TYPE_TRANSFER_STR) - continue; + int accountID = q1.GetInt(wxT("ACCOUNTID")); + int toAccountID = q1.GetInt(wxT("TOACCOUNTID")); - int accountID = q1.GetInt(wxT("ACCOUNTID")); + bool isAccountFound = true, isToAccountFound = true; if (accountArray_ != NULL) { - bool isFound = false; - for (int arrIdx = 0; arrIdx < (int)accountArray_->size(); arrIdx++) - { - if (accountID == core_->accountList_.getAccountID(accountArray_->Item(arrIdx))) - { - isFound = true; - break; - } - } - if (!isFound) - continue; // skip account + if (wxNOT_FOUND == accountArray_->Index(core_->accountList_.getAccountName(accountID))) //linear search + isAccountFound = false; + + if (wxNOT_FOUND == accountArray_->Index(core_->accountList_.getAccountName(toAccountID))) //linear search + isToAccountFound = false; } + if (!isAccountFound && !isToAccountFound) continue; // skip account double convRate = mmDBWrapper::getCurrencyBaseConvRate(core_->db_.get(), accountID); @@ -230,11 +208,23 @@ mmRepeatForecast rf; rf.date = nextOccurDate; + rf.amount = 0.0; if (transType == TRANS_TYPE_WITHDRAWAL_STR) + { rf.amount = -amt * convRate; - else + } + else if (transType == TRANS_TYPE_DEPOSIT_STR) + { rf.amount = +amt * convRate; + } + else //if (transType == TRANS_TYPE_TRANSFER_STR) + { + if (isAccountFound) + rf.amount -= amt * convRate; + if (isToAccountFound) + rf.amount += amt * convRate; + } fvec.push_back(rf); @@ -282,24 +272,22 @@ nextOccurDate = nextOccurDate.Add(wxDateSpan::Days(1)); } } // end while - } + } //end query q1.Finalize(); // Now we have a vector of dates and amounts over next year // Need to use different month ranges to figure out cash flow - std::vector<double> forecastOver12Months; - forecastOver12Months.resize(12*years, 0.0); - for (int idx = 0; idx < 12*years; idx++) + std::vector<double> forecastOver12Months(12 * years, 0.0); + for (int idx = 0; idx < (int)forecastOver12Months.size(); idx++) { wxDateTime dtBegin = wxDateTime::Now(); wxDateTime dtEnd = wxDateTime::Now().Add(wxDateSpan::Months(idx+1)); for (int fcIdx = 0; fcIdx < (int)fvec.size(); fcIdx++) { - if (!fvec[fcIdx].date.IsBetween(dtBegin, dtEnd)) - continue; - forecastOver12Months[idx] += fvec[fcIdx].amount; + if (fvec[fcIdx].date.IsBetween(dtBegin, dtEnd)) + forecastOver12Months[idx] += fvec[fcIdx].amount; } } @@ -314,18 +302,18 @@ mmex::formatDoubleToCurrency(balance, balanceStr); wxString diffStr; double diff; - diff = (idx==0 ? 0 : forecastOver12Months[idx]-forecastOver12Months[idx-1]) ; + diff = (idx==0 ? 0 : forecastOver12Months[idx] - forecastOver12Months[idx-1]) ; mmex::formatDoubleToCurrency(diff, diffStr); wxString dtStr ; //dtStr << mmGetNiceShortMonthName(dtEnd.GetMonth()) << wxT(" ") << dtEnd.GetYear(); dtStr << mmGetDateForDisplay(core_->db_.get(), dtEnd); - hb.startTableRow(); - hb.addTableCell(dtStr, false, true); - hb.addTableCell(balanceStr, true, true, true, ((balance < 0) ? wxT("RED") : wxT("BLACK"))); - hb.addTableCell((idx==0 ? wxT ("") : diffStr), true, true, true, (diff < 0 ? wxT("RED") : wxT("BLACK"))) ; - hb.endTableRow(); + hb.startTableRow(); + hb.addTableCell(dtStr, false, true); + hb.addTableCell(balanceStr, true, true, true, ((balance < 0) ? wxT("RED") : wxT("BLACK"))); + hb.addTableCell((idx==0 ? wxT ("") : diffStr), true, true, true, (diff < 0 ? wxT("RED") : wxT("BLACK"))) ; + hb.endTableRow(); } hb.endTable(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vo...@us...> - 2012-01-05 11:56:39
|
Revision: 1608 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1608&view=rev Author: vomikan Date: 2012-01-05 11:56:31 +0000 (Thu, 05 Jan 2012) Log Message: ----------- fixed for transfers calculation Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2012-01-05 10:25:23 UTC (rev 1607) +++ trunk/mmex/src/reportcashflow.cpp 2012-01-05 11:56:31 UTC (rev 1608) @@ -142,6 +142,7 @@ "NUMOCCURRENCES, " "TRANSCODE, " "TRANSAMOUNT, " + "TOTRANSAMOUNT, " "TOACCOUNTID, " "ACCOUNTID " "from BILLSDEPOSITS_V1"; @@ -160,6 +161,7 @@ int numRepeats = q1.GetInt(wxT("NUMOCCURRENCES")); wxString transType = q1.GetString(wxT("TRANSCODE")); double amt = q1.GetDouble(wxT("TRANSAMOUNT")); + double toAmt = q1.GetDouble(wxT("TOTRANSAMOUNT")); // DeMultiplex the Auto Executable fields from the db entry: REPEATS if (repeats >= BD_REPEATS_MULTIPLEX_BASE) // Auto Execute User Acknowlegement required @@ -196,6 +198,7 @@ if (!isAccountFound && !isToAccountFound) continue; // skip account double convRate = mmDBWrapper::getCurrencyBaseConvRate(core_->db_.get(), accountID); + double toConvRate = mmDBWrapper::getCurrencyBaseConvRate(core_->db_.get(), toAccountID); // Process all possible repeating transactions for this BD while(1) @@ -223,7 +226,7 @@ if (isAccountFound) rf.amount -= amt * convRate; if (isToAccountFound) - rf.amount += amt * convRate; + rf.amount += toAmt * toConvRate; } fvec.push_back(rf); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2012-01-06 11:35:59
|
Revision: 1611 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1611&view=rev Author: stef145g Date: 2012-01-06 11:35:52 +0000 (Fri, 06 Jan 2012) Log Message: ----------- Code fix: Update from Lisheng Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2012-01-06 10:03:04 UTC (rev 1610) +++ trunk/mmex/src/reportcashflow.cpp 2012-01-06 11:35:52 UTC (rev 1611) @@ -118,7 +118,7 @@ // Check if this account belongs in our list if (accountArray_ != NULL) { - if (wxNOT_FOUND == accountArray_->Index(pCA->accountName_)) //linear search + if (wxNOT_FOUND == accountArray_->Index(pTA->accountName_)) //linear search continue; // skip account } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gua...@us...> - 2012-01-21 02:48:00
|
Revision: 1688 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1688&view=rev Author: guanlisheng Date: 2012-01-21 02:47:54 +0000 (Sat, 21 Jan 2012) Log Message: ----------- cash flow report: more changes Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2012-01-21 01:33:39 UTC (rev 1687) +++ trunk/mmex/src/reportcashflow.cpp 2012-01-21 02:47:54 UTC (rev 1688) @@ -88,36 +88,39 @@ std::map<wxDateTime, double> daily_balance; for (int iAdx = 0; iAdx < (int) core_->accountList_.accounts_.size(); iAdx++) + for (std::vector<boost::shared_ptr<mmAccount> >::const_iterator it = core_->accountList_.accounts_.begin(); + it != core_->accountList_.accounts_.end(); + ++ it) { - //XXX - if (activeBankAccounts_) - { - mmCheckingAccount* pCA = dynamic_cast<mmCheckingAccount*>(core_->accountList_.accounts_[iAdx].get()); - if (pCA) - { - if (pCA->status_ != pCA->MMEX_Closed) - { - // Check if this account belongs in our list - if (accountArray_ != NULL) - { - if (wxNOT_FOUND == accountArray_->Index(pCA->accountName_)) //linear search - continue; // skip account - } + //XXX + if (activeBankAccounts_) + { + mmCheckingAccount* pCA = dynamic_cast<mmCheckingAccount*>(it->get()); + if (pCA) + { + if (pCA->status_ != pCA->MMEX_Closed) + { + // Check if this account belongs in our list + if (accountArray_ != NULL) + { + if (wxNOT_FOUND == accountArray_->Index(pCA->accountName_)) //linear search + continue; // skip account + } - core_->bTransactionList_.getDailyBalance(pCA->accountID_, daily_balance); + core_->bTransactionList_.getDailyBalance(pCA->accountID_, daily_balance); - boost::shared_ptr<mmCurrency> pCurrencyPtr = core_->accountList_.getCurrencyWeakPtr(pCA->accountID_).lock(); - wxASSERT(pCurrencyPtr); - mmex::CurrencyFormatter::instance().loadSettings(*pCurrencyPtr); - double rate = pCurrencyPtr->baseConv_; - tInitialBalance += pCA->initialBalance_ * rate; - } - } - } + boost::shared_ptr<mmCurrency> pCurrencyPtr = core_->accountList_.getCurrencyWeakPtr(pCA->accountID_).lock(); + wxASSERT(pCurrencyPtr); + mmex::CurrencyFormatter::instance().loadSettings(*pCurrencyPtr); + double rate = pCurrencyPtr->baseConv_; + tInitialBalance += pCA->initialBalance_ * rate; + } + } + } if (activeTermAccounts_) // Add Term accounts to cashflows as well { - mmTermAccount* pTA = dynamic_cast<mmTermAccount*>(core_->accountList_.accounts_[iAdx].get()); + mmTermAccount* pTA = dynamic_cast<mmTermAccount*>(it->get()); if (pTA) { if (pTA->status_ != pTA->MMEX_Closed) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gua...@us...> - 2012-02-02 14:32:22
|
Revision: 1712 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1712&view=rev Author: guanlisheng Date: 2012-02-02 14:32:16 +0000 (Thu, 02 Feb 2012) Log Message: ----------- remove unused comment Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2012-02-01 14:40:06 UTC (rev 1711) +++ trunk/mmex/src/reportcashflow.cpp 2012-02-02 14:32:16 UTC (rev 1712) @@ -290,7 +290,6 @@ q1.Finalize(); // Now we have a vector of dates and amounts over next year - // Need to use different month ranges to figure out cash flow std::vector<double> forecastOver12Months(12 * years, 0.0); for (int idx = 0; idx < (int)forecastOver12Months.size(); idx++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gua...@us...> - 2012-03-08 13:22:46
|
Revision: 1953 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=1953&view=rev Author: guanlisheng Date: 2012-03-08 13:22:35 +0000 (Thu, 08 Mar 2012) Log Message: ----------- stop warning Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2012-03-08 06:16:33 UTC (rev 1952) +++ trunk/mmex/src/reportcashflow.cpp 2012-03-08 13:22:35 UTC (rev 1953) @@ -6,10 +6,10 @@ #include "util.h" mmReportCashFlow::mmReportCashFlow(mmCoreDB* core, const wxArrayString* accountArray) : - mmPrintableBase(core), - activeTermAccounts_(false), - activeBankAccounts_(false), - accountArray_(accountArray) + mmPrintableBase(core) + , accountArray_(accountArray) + , activeTermAccounts_(false) + , activeBankAccounts_(false) { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ste...@us...> - 2012-06-04 02:29:52
|
Revision: 2521 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=2521&view=rev Author: stef145g Date: 2012-06-04 02:29:46 +0000 (Mon, 04 Jun 2012) Log Message: ----------- Bug Fix: Cash Flow - Hanging when using repeat (In/Every) X Days/Months Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2012-06-04 01:49:15 UTC (rev 2520) +++ trunk/mmex/src/reportcashflow.cpp 2012-06-04 02:29:46 UTC (rev 2521) @@ -255,6 +255,41 @@ { nextOccurDate = nextOccurDate.Add(wxDateSpan::Days(1)); } + else if (repeats == 11) // repeat in numRepeats Days (Once only) + { + if (numRepeats > 0) + { + nextOccurDate = nextOccurDate.Add(wxDateSpan::Days(numRepeats)); + numRepeats = -1; + } + else break; + } + else if (repeats == 12) // repeat in numRepeats Months (Once only) + { + if (numRepeats > 0) + { + nextOccurDate = nextOccurDate.Add(wxDateSpan::Months(numRepeats)); + numRepeats = -1; + } + else break; + } + else if (repeats == 13) // repeat every numRepeats Days + { + if (numRepeats > 0) + { + nextOccurDate = nextOccurDate.Add(wxDateSpan::Days(numRepeats)); + } + else break; + } + else if (repeats == 14) // repeat every numRepeats Months + { + if (numRepeats > 0) + { + nextOccurDate = nextOccurDate.Add(wxDateSpan::Months(numRepeats)); + } + else break; + } + else break; } // end while } //end query q1.Finalize(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <oma...@us...> - 2013-03-11 03:12:31
|
Revision: 3563 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=3563&view=rev Author: omalleypat Date: 2013-03-11 03:12:23 +0000 (Mon, 11 Mar 2013) Log Message: ----------- fix compiler warnings Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2013-03-11 02:56:39 UTC (rev 3562) +++ trunk/mmex/src/reportcashflow.cpp 2013-03-11 03:12:23 UTC (rev 3563) @@ -31,7 +31,7 @@ mmHTMLBuilder hb; hb.init(); - int years; + int years = -1; if (cashflowreporttype_ == 0) // Monthly for 10 years { years =10; @@ -40,6 +40,9 @@ { years = 1; } + + wxASSERT(years != -1); + wxString headerMsg = wxString::Format (_("Cash Flow Forecast for %d Years Ahead"), years); hb.addHeader(2, headerMsg ); headerMsg = _("Accounts: "); @@ -286,7 +289,7 @@ q1.Finalize(); // Now we have a vector of dates and amounts over next year - int fcstsz; + int fcstsz = -1; std::vector<double> forecastOver12Months; if (cashflowreporttype_ == 0) { @@ -296,7 +299,7 @@ { fcstsz = years * 366; } - + wxASSERT(fcstsz != -1); forecastOver12Months.resize(fcstsz, 0.0);; for (int idx = 0; idx < (int)forecastOver12Months.size(); idx++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <oma...@us...> - 2013-03-11 03:32:52
|
Revision: 3564 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=3564&view=rev Author: omalleypat Date: 2013-03-11 03:32:46 +0000 (Mon, 11 Mar 2013) Log Message: ----------- added seperators between months for daily cash flow report Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2013-03-11 03:12:23 UTC (rev 3563) +++ trunk/mmex/src/reportcashflow.cpp 2013-03-11 03:32:46 UTC (rev 3564) @@ -358,6 +358,7 @@ mmex::formatDoubleToCurrency(diff, diffStr); bool addSeparator = false; + bool addSeparatorAfter = false; if (frame_->budgetFinancialYears()) { @@ -389,6 +390,17 @@ hb.addTableCell(balanceStr, true, true, true, ((balance < 0) ? wxT("RED") : wxT("BLACK"))); hb.addTableCell((idx==0 ? wxT ("") : diffStr), true, true, true, (diff < 0 ? wxT("RED") : wxT("BLACK"))) ; hb.endTableRow(); + + // Add a separator for each month in daily cash flow report + if (cashflowreporttype_ == 1) + { + wxDateTime dtLMD;// Last day of the month + dtLMD = dtLMD.SetToLastMonthDay(dtEnd.GetMonth(),dtEnd.GetYear()); + + if (dtEnd.IsSameDate(dtLMD)) + addSeparatorAfter = true; + } + if (addSeparatorAfter) hb.addRowSeparator(3); } hb.addRowSeparator(3); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <oma...@us...> - 2013-03-11 03:49:13
|
Revision: 3565 http://moneymanagerex.svn.sourceforge.net/moneymanagerex/?rev=3565&view=rev Author: omalleypat Date: 2013-03-11 03:49:07 +0000 (Mon, 11 Mar 2013) Log Message: ----------- get daily cash flow report to work with new repeating transaction types: monthly on the last day and monthly on the last business day Modified Paths: -------------- trunk/mmex/src/reportcashflow.cpp Modified: trunk/mmex/src/reportcashflow.cpp =================================================================== --- trunk/mmex/src/reportcashflow.cpp 2013-03-11 03:32:46 UTC (rev 3564) +++ trunk/mmex/src/reportcashflow.cpp 2013-03-11 03:49:07 UTC (rev 3565) @@ -283,6 +283,16 @@ } else break; } + else if ((repeats == 15) || (repeats == 16)) + { + nextOccurDate = nextOccurDate.Add(wxDateSpan::Month()); + nextOccurDate = nextOccurDate.SetToLastMonthDay(nextOccurDate.GetMonth(),nextOccurDate.GetYear()); + if (repeats == 16) // last weekday of month + { + if (nextOccurDate.GetWeekDay() == wxDateTime::Sun || nextOccurDate.GetWeekDay() == wxDateTime::Sat) + nextOccurDate.SetToPrevWeekDay(wxDateTime::Fri); + } + } else break; } // end while } //end query This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |