You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmymoney/kmymoney2/dialogs/kreconciledlg.cpp

460 lines
13 KiB

/***************************************************************************
kreconciledlg.cpp
-------------------
copyright : (C) 2000 by Michael Edwardes
email : mte@users.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <kmessagebox.h>
#include <kglobal.h>
#include <klocale.h>
#include <kstandarddirs.h>
#include "kreconciledlg.h"
KReconcileDlg::KReconcileDlg(const MyMoneyMoney /* previousBal */, const MyMoneyMoney /* endingBal */,
const TQDate /* endingDate */, MyMoneyAccount* /*accountIndex */,
const MyMoneyFile* /* file */, TQWidget *parent, const char *name)
: KReconcileDlgDecl(parent,name,true)
{
/*
m_balanced = false;
m_debitsTQList.setAutoDelete(false);
m_creditsTQList.setAutoDelete(false);
m_reconciledTransactions.setAutoDelete(false);
m_file = file;
m_accountIndex = accountIndex;
m_endingBalance = endingBal;
m_previousBalance = previousBal;
m_clearedBalance.setAmount(0.0);
m_debitBalance.setAmount(0.0);
m_creditBalance.setAmount(0.0);
m_endingDate = endingDate;
totalCreditsLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
totalDebitsLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
previousLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
endingLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
differenceLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
debitListView->setRootIsDecorated(false);
debitListView->addColumn(i18n("Date"));
debitListView->addColumn(i18n("Number"));
debitListView->addColumn(i18n("Payee"));
debitListView->addColumn(i18n("Amount"));
debitListView->addColumn(i18n("C"));
debitListView->setMultiSelection(true);
debitListView->setAllColumnsShowFocus(true);
// never show a horizontal scroll bar
debitListView->setHScrollBarMode(TQScrollView::AlwaysOff);
creditListView->setRootIsDecorated(false);
creditListView->addColumn(i18n("Date"));
creditListView->addColumn(i18n("Number"));
creditListView->addColumn(i18n("Payee"));
creditListView->addColumn(i18n("Amount"));
creditListView->addColumn(i18n("C"));
creditListView->setMultiSelection(true);
creditListView->setAllColumnsShowFocus(true);
// never show a horizontal scroll bar
creditListView->setHScrollBarMode(TQScrollView::AlwaysOff);
endingLabel->setText(KGlobal::locale()->formatMoney(m_clearedBalance.amount(),""));
previousLabel->setText(KGlobal::locale()->formatMoney(m_endingBalance.amount(),""));
broughtForwardLabel->setText(KGlobal::locale()->formatMoney(m_previousBalance.amount(),""));
totalCreditsLabel->setText(i18n("Deposits: ") + KGlobal::locale()->formatMoney(m_creditBalance.amount(),""));
totalDebitsLabel->setText(i18n("Withdrawals: ") + KGlobal::locale()->formatMoney(m_debitBalance.amount(),""));
loadLists();
insertTransactions();
connect(debitListView, TQT_SIGNAL(clicked(TQListViewItem*, const TQPoint&, int)), this, TQT_SLOT(slotDebitSelected(TQListViewItem*, const TQPoint&, int)));
connect(creditListView, TQT_SIGNAL(clicked(TQListViewItem*, const TQPoint&, int)), this, TQT_SLOT(slotCreditSelected(TQListViewItem*, const TQPoint&, int)));
connect(buttonCancel, TQT_SIGNAL(clicked()), this, TQT_SLOT(cancelClicked()));
connect(buttonOk, TQT_SIGNAL(clicked()), this, TQT_SLOT(finishClicked()));
connect(buttonEdit, TQT_SIGNAL(clicked()), this, TQT_SLOT(editClicked()));
doDifference();
*/
}
KReconcileDlg::~KReconcileDlg()
{
}
void KReconcileDlg::clearReconcile()
{
/*
MyMoneyTransaction *temp_transaction;
for(temp_transaction = m_creditsTQList.first();temp_transaction;temp_transaction = m_creditsTQList.next())
{
if(temp_transaction->state() == MyMoneyTransaction::Reconciled)
{
temp_transaction->setState(MyMoneyTransaction::Unreconciled);
}
}
for(temp_transaction = m_debitsTQList.first();temp_transaction;temp_transaction = m_debitsTQList.next())
{
if(temp_transaction->state() == MyMoneyTransaction::Reconciled)
{
temp_transaction->setState(MyMoneyTransaction::Unreconciled);
}
}
*/
}
void KReconcileDlg::loadLists(void)
{
/*
// Load the internal transaaction lists
m_creditsTQList.clear();
m_debitsTQList.clear();
unsigned int i=0;
MyMoneyTransaction *transaction;
for (i=0, transaction=m_accountIndex->transactionFirst(); transaction; transaction=m_accountIndex->transactionNext(), i++) {
if (transaction->date()>m_endingDate)
break;
if (transaction->state()!=MyMoneyTransaction::Reconciled) {
if (transaction->type() == MyMoneyTransaction::Debit) {
transaction->setIndex(i);
m_debitsTQList.append(transaction);
}
else {
transaction->setIndex(i);
m_creditsTQList.append(transaction);
}
}
}
resizeEvent(NULL);
*/
}
void KReconcileDlg::insertTransactions(void)
{
/*
creditListView->clear();
debitListView->clear();
TQListIterator<MyMoneyTransaction> it(m_debitsTQList);
for ( ; it.current(); ++it) {
(void) new KReconcileListItem(debitListView, it.current());
}
TQListIterator<MyMoneyTransaction> it2(m_creditsTQList);
for ( ; it2.current(); ++it2) {
(void) new KReconcileListItem(creditListView, it2.current());
}
resizeEvent(0);
*/
}
void KReconcileDlg::slotDebitSelected(TQListViewItem* /* item */, const TQPoint&/*p*/, int/* col*/)
{
/*
KReconcileListItem *reconcileItem = (KReconcileListItem*)item;
if (!reconcileItem)
return;
// Changed double types to MyMoneyMoney because in the future
// we will support mulitple currencies and have our own incompatable
// internal format. (one that rounds properly and supports large numbers
// e.g unsigned long.int with sign being a boolean).
// MyMoneyMoney dblDebit = m_debitBalance;
// MyMoneyMoney dblCleared = m_clearedBalance;
MyMoneyMoney dblItem = reconcileItem->transaction()->amount();
if(reconcileItem->isSelected())
{
m_debitBalance += dblItem;
m_clearedBalance -= dblItem;
reconcileItem->setReconciled(true);
m_reconciledTransactions.append(reconcileItem->transaction());
}
else
{
m_debitBalance -= dblItem;
m_clearedBalance += dblItem;
reconcileItem->setReconciled(false);
m_reconciledTransactions.remove(reconcileItem->transaction());
}
totalDebitsLabel->setText(i18n("Withdrawals: ") + KGlobal::locale()->formatMoney(m_debitBalance.amount(),""));
endingLabel->setText(KGlobal::locale()->formatMoney(m_clearedBalance.amount(),""));
doDifference();
*/
}
void KReconcileDlg::slotCreditSelected(TQListViewItem* /* item */, const TQPoint&, int)
{
/*
KReconcileListItem *reconcileItem = (KReconcileListItem*)item;
if (!reconcileItem)
return;
// See above func
// double dblCredit = m_creditBalance.amount();
// double dblCleared = m_clearedBalance.amount();
MyMoneyMoney dblItem = reconcileItem->transaction()->amount();
if(reconcileItem->isSelected())
{
m_creditBalance += dblItem;
m_clearedBalance += dblItem;
reconcileItem->setReconciled(true);
m_reconciledTransactions.append(reconcileItem->transaction());
}
else
{
m_creditBalance -= dblItem;
m_clearedBalance -= dblItem;
reconcileItem->setReconciled(false);
m_reconciledTransactions.remove(reconcileItem->transaction());
}
totalCreditsLabel->setText(i18n("Deposits: ") + KGlobal::locale()->formatMoney(m_creditBalance.amount(),""));
endingLabel->setText(KGlobal::locale()->formatMoney(m_clearedBalance.amount(),""));
doDifference();
*/
}
void KReconcileDlg::doDifference(void)
{
/*
MyMoneyMoney difference((m_previousBalance + m_clearedBalance)- m_endingBalance);
differenceLabel->setText(KGlobal::locale()->formatMoney(difference.amount(),""));
if (difference.isZero())
m_balanced = true;
else
m_balanced = false;
*/
}
void KReconcileDlg::finishClicked(void)
{
/*
if (!m_balanced) {
if ((KMessageBox::questionYesNo(this, i18n("Account did not balance, are you sure ?")))==KMessageBox::No) {
clearReconcile();
return;
}
}
// else
// {
// }
emit reconcileFinished(true);
*/
}
/*
void KReconcileDlg::updateData(void)
{
// Simply reload the list clearing the status.
qDebug("In updateData");
m_reconciledTransactions.clear();
m_debitsTQList.clear();
m_creditsTQList.clear();
loadLists();
insertTransactions();
doDifference();
}
*/
void KReconcileDlg::cancelClicked()
{
/*
clearReconcile();
// Stop the transaction view from being refreshed on
// cancel by passing false.
emit reconcileFinished(false);
*/
}
void KReconcileDlg::resetData(const MyMoneyMoney /* previousBal */, const MyMoneyMoney /* endingBal */, const TQDate /* endingDate */, MyMoneyAccount* /* accountIndex */, const MyMoneyFile* /* file */)
{
/*
m_reconciledTransactions.clear();
m_debitsTQList.clear();
m_creditsTQList.clear();
m_balanced = false;
m_file = file;
m_bankIndex = bankIndex;
m_accountIndex = accountIndex;
m_endingBalance = endingBal;
m_previousBalance = previousBal;
m_clearedBalance.setAmount(0.0);
m_debitBalance.setAmount(0.0);
m_creditBalance.setAmount(0.0);
m_endingDate = endingDate;
//totalCreditsLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
//totalDebitsLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
//previousLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
//endingLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
//differenceLabel->setAlignment(AlignRight | AlignVCenter | ExpandTabs | SingleLine);
endingLabel->setText(KGlobal::locale()->formatMoney(m_clearedBalance.amount(),""));
previousLabel->setText(KGlobal::locale()->formatMoney(m_endingBalance.amount(),""));
broughtForwardLabel->setText(KGlobal::locale()->formatMoney(m_previousBalance.amount(),""));
totalCreditsLabel->setText(i18n("Deposits: ") + KGlobal::locale()->formatMoney(m_creditBalance.amount(),""));
totalDebitsLabel->setText(i18n("Withdrawals: ") + KGlobal::locale()->formatMoney(m_debitBalance.amount(),""));
loadLists();
insertTransactions();
*/
}
void KReconcileDlg::slotTransactionChanged()
{
/*
reloadLists();
insertTransactions();
show();
*/
}
/** No descriptions */
void KReconcileDlg::reloadLists()
{
/*
unsigned int i=0;
MyMoneyTransaction *transaction;
for (i=0, transaction=m_accountIndex->transactionFirst(); transaction; transaction=m_accountIndex->transactionNext(), i++) {
if (transaction->state()!=MyMoneyTransaction::Reconciled) {
if (transaction->type() == MyMoneyTransaction::Debit) {
transaction->setIndex(i);
if(m_debitsTQList.find(transaction) < 0)
{
m_debitsTQList.append(transaction);
}
}
else {
transaction->setIndex(i);
if(m_creditsTQList.find(transaction) < 0)
{
m_creditsTQList.append(transaction);
}
}
}
}
TQListIterator<MyMoneyTransaction> it(m_debitsTQList);
for ( ; it.current(); ++it) {
bool transactionFound = inTransactions(it.current());
if(transactionFound == false)
m_debitsTQList.remove(it.current());
}
TQListIterator<MyMoneyTransaction> it2(m_creditsTQList);
for ( ; it2.current(); ++it2) {
bool transactionFound = inTransactions(it2.current());
if(transactionFound == false)
m_creditsTQList.remove(it2.current());
}
*/
}
/** No descriptions */
bool KReconcileDlg::inTransactions(MyMoneyTransaction * /*credittrans */)
{
/*
MyMoneyTransaction *transaction;
int i = 0;
for ( i=0, transaction=m_accountIndex->transactionFirst(); transaction; transaction=m_accountIndex->transactionNext(), i++) {
if( credittrans == transaction)
return true;
}
*/
return false;
}
/* Not used (yet?)
bool KReconcileDlg::inCredits(MyMoneyTransaction *transaction)
{
TQListIterator<MyMoneyTransaction> it(m_creditsTQList);
for ( ; it.current(); ++it) {
if(transaction == it.current())
return true;
}
return false;
}
*/
/* Not used (yet?)
bool KReconcileDlg::inDebits(MyMoneyTransaction *transaction)
{
TQListIterator<MyMoneyTransaction> it(m_debitsTQList);
for ( ; it.current(); ++it) {
if(transaction == it.current())
return true;
}
return false;
}
*/
void KReconcileDlg::editClicked()
{
/*
hide();
*/
}
void KReconcileDlg::resizeEvent(TQResizeEvent* /* e */)
{
/*
debitListView->setColumnWidth( 2, debitListView->visibleWidth()
- debitListView->columnWidth(0)
- debitListView->columnWidth(1)
- debitListView->columnWidth(3)
- debitListView->columnWidth(4));
creditListView->setColumnWidth( 2, creditListView->visibleWidth()
- creditListView->columnWidth(0)
- creditListView->columnWidth(1)
- creditListView->columnWidth(3)
- creditListView->columnWidth(4));
// call base class resizeEvent()
KReconcileDlgDecl::resizeEvent(e);
*/
}
#include "kreconciledlg.moc"