Update to upstream stable version 1.0.5

r14.0.x
Timothy Pearson 13 years ago
parent 2a54aa58cf
commit 8654cea10f

@ -1,7 +1,40 @@
2010-05-15 Thomas Baumgart <ipwizard@users.sourceforge.net>
* Released 1.0.5
2010-05-12 Thomas Baumgart <ipwizard@users.sourceforge.net>
* Fixed the way to calculate balance variation for the linear regression
forecast method (backported from KDE4)
2010-05-09 Alvaro Soliverez <asoliverez@gmail.com>
* Fixed a crash when a budget selected for a report is no longer present
2010-05-04 Thomas Baumgart <ipwizard@users.sourceforge.net>
* replace all new line characters because we only have one line
available for the displayed data (backported from KDE4)
* Don't allow import of investment transactions that don't have a share
amount. This used to end in a div by zero when calculating the price.
(Backported from KDE4)
2010-05-03 Alvaro Soliverez <asoliverez@gmail.com>
* Add all overdue schedules when calculating forecast
* Do not show accounts of institutions if it has been selected
in the general settings to Do not show closed accounts
* Do not show an institution if it has no visible accounts and
it has been selected to not show closed accounts
2010-04-20 Thomas Baumgart <ipwizard@users.sourceforge.net>
* Backported fix from Ian Neal to solve problems when opening the ledger
with specific scheduled transactions
2010-04-03 Alvaro Soliverez <asoliverez@gmail.com>
* Fixed loop in payments of the home page when a schedule is set to
end by date
2010-03-30 Thomas Baumgart <ipwizard@users.sourceforge.net>
* Backported encoding patch from KDE4 version
* Bumped version number
* Released 1.0.4
2010-03-29 Thomas Baumgart <ipwizard@users.sourceforge.net>
* Updated Finnish translation by Mikael Kujanpaa

@ -40,7 +40,7 @@ dnl Perform program name transformation
AC_ARG_PROGRAM
dnl Automake doc recommends to do this only here. (Janos)
AM_INIT_AUTOMAKE(kmymoney2, 1.0.4) dnl searches for some needed programs
AM_INIT_AUTOMAKE(kmymoney2, 1.0.5) dnl searches for some needed programs
KDE_SET_PREFIX

@ -1,6 +1,6 @@
#MIN_CONFIG(3.3.1)
AM_INIT_AUTOMAKE(kmymoney2,1.0.4)
AM_INIT_AUTOMAKE(kmymoney2,1.0.5)
KDE_ENABLE_HIDDEN_VISIBILITY

@ -664,6 +664,10 @@ void MyMoneyStatementReader::processTransactionEntry(const MyMoneyStatement::Tra
if(!t_in.m_price.isZero()) {
s1.setPrice(t_in.m_price);
} else {
if(t_in.m_shares.isZero()) {
KMessageBox::information(0, i18n("This imported statement contains investment transactions with no share amount. These transactions will be ignored."), i18n("No share amount provided"), TQString("BlankAmount"));
return;
}
s1.setPrice(((t_in.m_amount - t_in.m_fees) / t_in.m_shares).convert(MyMoneyMoney::precToDenom(KMyMoneyGlobalSettings::pricePrecision())));
}

@ -651,7 +651,7 @@ void MyMoneyForecast::addScheduledTransactions (void)
TQValueList<MyMoneySchedule> schedule;
schedule = file->scheduleList("", MyMoneySchedule::TYPE_ANY, MyMoneySchedule::OCCUR_ANY, MyMoneySchedule::STYPE_ANY,
TQDate::currentDate(), forecastEndDate());
TQDate(), forecastEndDate());
if(schedule.count() > 0) {
TQValueList<MyMoneySchedule>::Iterator it;
do {
@ -871,8 +871,21 @@ MyMoneyMoney MyMoneyForecast::accountCycleVariation(const MyMoneyAccount& acc)
MyMoneyMoney cycleVariation;
if (forecastMethod() == eHistoric) {
for(int t_day = 1; t_day <= accountsCycle() ; ++t_day) {
cycleVariation += m_accountTrendList[acc.id()][t_day];
switch(historyMethod()) {
case 0:
case 1:
{
for(int t_day = 1; t_day <= accountsCycle() ; ++t_day) {
cycleVariation += m_accountTrendList[acc.id()][t_day];
}
}
break;
case 2:
{
cycleVariation = m_accountList[acc.id()][TQDate::currentDate().addDays(accountsCycle())] - m_accountList[acc.id()][TQDate::currentDate()];
}
break;
}
}
return cycleVariation;

@ -825,9 +825,27 @@ void PivotTable::calculateBudgetMapping( void )
//
// It will choose the first budget in the list for the start year of the report if no budget is select
MyMoneyBudget budget = MyMoneyBudget();
TQValueList<MyMoneyBudget> budgets = file->budgetList();
bool validBudget = false;
//check that the selected budget is valid
if (m_config_f.budget() != "Any") {
TQValueList<MyMoneyBudget>::const_iterator budgets_it = budgets.begin();
while( budgets_it != budgets.end() ) {
//pick the budget by id
if ((*budgets_it).id() == m_config_f.budget()) {
budget = file->budget((*budgets_it).id());
validBudget = true;
break;
}
++budgets_it;
}
}
//if no budget has been selected
if (m_config_f.budget() == "Any" ) {
TQValueList<MyMoneyBudget> budgets = file->budgetList();
if (!validBudget ) {
TQValueList<MyMoneyBudget>::const_iterator budgets_it = budgets.begin();
while( budgets_it != budgets.end() ) {
//pick the first budget that matches the report start year
@ -843,9 +861,6 @@ void PivotTable::calculateBudgetMapping( void )
//assign the budget to the report
m_config_f.setBudget(budget.id(), m_config_f.isIncludingBudgetActuals());
} else {
//pick the budget selected by the user
budget = file->budget( m_config_f.budget());
}
// Dump the budget

@ -485,7 +485,12 @@ void KGlobalLedgerView::loadView(void)
break;
// for all others, we check if the next payment date is still 'in range'
s.setNextDueDate(s.nextPayment(s.nextDueDate()));
TQDate nextDueDate = s.nextPayment(s.nextDueDate());
if (nextDueDate.isValid()) {
s.setNextDueDate(nextDueDate);
} else {
break;
}
}
scheduleList.pop_front();
}

@ -595,6 +595,13 @@ void KHomeView::showPayments(void)
schedule.remove(it);
continue;
}
//if nextPayment returns an invalid date, setNextDueDate will just skip it, resulting in a loop
//we check the resulting date and erase the schedule if invalid
if(!((*it).nextPayment((*it).nextDueDate())).isValid()) {
schedule.remove(it);
continue;
}
(*it).setNextDueDate((*it).nextPayment((*it).nextDueDate()));
qBubbleSort(schedule);

@ -161,6 +161,9 @@ void KInstitutionsView::loadAccounts(void)
// hide it, if unused
noInstitutionItem->setVisible(noInstitutionItem->childCount() != 0);
bool showClosedAccounts = kmymoney2->toggleAction("view_show_all_accounts")->isChecked()
|| !KMyMoneyGlobalSettings::hideClosedAccounts();
TQValueList<MyMoneyInstitution> list = file->institutionList();
TQValueList<MyMoneyInstitution>::const_iterator it_i;
@ -168,6 +171,8 @@ void KInstitutionsView::loadAccounts(void)
KMyMoneyAccountTreeItem* item = new KMyMoneyAccountTreeItem(m_accountTree, *it_i);
item->setPixmap(0, none.pixmap());
loadSubAccounts(item, (*it_i).id());
if(!showClosedAccounts)
item->setVisible(item->childCount() != 0);
}
} catch(MyMoneyException *e) {
@ -201,7 +206,8 @@ void KInstitutionsView::loadAccounts(void)
void KInstitutionsView::loadSubAccounts(KMyMoneyAccountTreeItem* parent)
{
bool showClosedAccounts = kmymoney2->toggleAction("view_show_all_accounts")->isChecked();
bool showClosedAccounts = kmymoney2->toggleAction("view_show_all_accounts")->isChecked()
|| !KMyMoneyGlobalSettings::hideClosedAccounts();
const MyMoneyAccount& account = dynamic_cast<const MyMoneyAccount&>(parent->itemObject());
TQValueList<TQString>::const_iterator it_a;
MyMoneyFile* file = MyMoneyFile::instance();
@ -230,7 +236,8 @@ void KInstitutionsView::loadSubAccounts(KMyMoneyAccountTreeItem* parent, const T
TQMap<TQString, MyMoneyAccount>::const_iterator it_a;
MyMoneyMoney value;
bool showClosedAccounts = kmymoney2->toggleAction("view_show_all_accounts")->isChecked();
bool showClosedAccounts = kmymoney2->toggleAction("view_show_all_accounts")->isChecked()
|| !KMyMoneyGlobalSettings::hideClosedAccounts();
for(it_a = m_accountMap.begin(); it_a != m_accountMap.end(); ++it_a) {
const MyMoneyAccount& acc = *it_a;

@ -179,6 +179,8 @@ void StdTransactionMatched::registerCellText(TQString& txt, int& align, int row,
memo = memo.left(pos);
if(memo.endsWith("\n"))
memo = memo.left(pos-1);
// replace all new line characters because we only have one line available for the displayed data
memo.replace('\n', " ");
}
}
txt = TQString("%1 %2").arg(postDate.toString(Qt::ISODate)).arg(memo);

Loading…
Cancel
Save