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/knewloanwizard.h

169 lines
5.9 KiB

/***************************************************************************
knewloanwizard.h - description
-------------------
begin : Wed Oct 8 2003
copyright : (C) 2000-2003 by Thomas Baumgart
email : mte@users.sourceforge.net
Javier Campos Morales <javi_c@users.sourceforge.net>
Felix Rodriguez <frodriguez@users.sourceforge.net>
John C <thetacoturtle@users.sourceforge.net>
Thomas Baumgart <ipwizard@users.sourceforge.net>
Kevin Tambascio <ktambascio@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. *
* *
***************************************************************************/
#ifndef KNEWLOANWIZARD_H
#define KNEWLOANWIZARD_H
// ----------------------------------------------------------------------------
// QT Includes
#include <tqwidget.h>
// ----------------------------------------------------------------------------
// KDE Includes
// ----------------------------------------------------------------------------
// Project Includes
#include <../dialogs/knewloanwizarddecl.h>
#include <kmymoney/mymoneyscheduled.h>
#include <kmymoney/kmymoneyaccountselector.h>
#include <kmymoney/kmymoneydateinput.h>
/**
* @author Thomas Baumgart
*/
/**
* This class implementes a wizard for the creation of loan accounts.
* The user is asked a set of questions and according to the answers
* the respective MyMoneyAccount object can be requested from the
* wizard when accept() has been called. A MyMoneySchedule is also
* available to create a schedule entry for the payments to the newly
* created loan.
*/
class KNewLoanWizard : public KNewLoanWizardDecl
{
Q_OBJECT
public:
KNewLoanWizard(TQWidget *parent=0, const char *name=0);
~KNewLoanWizard();
/**
* This method returns the schedule for the payments. The account
* where the amortization should be transferred to is the one
* we currently try to create with this wizard. The appropriate split
* will be returned as the first split of the transaction inside
*
* as parameter @p accountId as this is the account that was created
* after this wizard was left via the accept() method.
*
* @return MyMoneySchedule object for payments
*/
MyMoneySchedule schedule(void) const;
/**
* This method returns the id of the account to/from which
* the payout should be created. If the checkbox that allows
* to skip the creation of this transaction is checked, this
* method returns TQString()
*
* @return id of account or empty TQString
*/
TQString initialPaymentAccount(void) const;
/**
* This method returns the date of the payout transaction.
* If the checkbox that allows to skip the creation of
* this transaction is checked, this method returns TQDate()
*
* @return selected date or invalid TQDate if checkbox is selected.
*/
TQDate initialPaymentDate(void) const;
protected:
/**
* This method returns the transaction that is stored within
* the schedule. See schedule().
*
* @return MyMoneyTransaction object to be used within the schedule
*/
MyMoneyTransaction transaction(void) const;
public slots:
void next();
protected slots:
void slotLiabilityLoan(void);
void slotAssetLoan(void);
virtual void slotCheckPageFinished(void);
void slotPaymentsMade(void);
void slotNoPaymentsMade(void);
void slotRecordAllPayments(void);
void slotRecordThisYearsPayments(void);
void slotInterestOnPayment(void);
void slotInterestOnReception(void);
void slotCreateCategory(void);
virtual void slotAdditionalFees(void);
// void slotNewPayee(const TQString&);
void slotReloadEditWidgets(void);
protected:
void loadComboBoxes(void);
void loadAccountList(void);
void resetCalculator(void);
void updateLoanAmount(void);
void updateInterestRate(void);
void updateDuration(void);
void updatePayment(void);
void updateFinalPayment(void);
void updateLoanInfo(void);
TQString updateTermWidgets(const long double v);
void updatePeriodicPayment(void);
void updateSummary(void);
int calculateLoan(void);
int term(void) const;
signals:
/**
* This signal is emitted, when a new category name has been
* entered by the user and this name is not known as account
* by the MyMoneyFile object.
* Before the signal is emitted, a MyMoneyAccount is constructed
* by this object and filled with the desired name. All other members
* of MyMoneyAccount will remain in their default state. Upon return,
* the connected slot should have created the object in the MyMoneyFile
* engine and filled the member @p id.
*
* @param acc reference to MyMoneyAccount object that caries the name
* and will return information about the created category.
*/
void newCategory(MyMoneyAccount& acc);
/**
* This signal is sent out, when a new payee needs to be created
* @sa KMyMoneyCombo::createItem()
*
* @param txt The name of the payee to be created
* @param id A connected slot should store the id of the created object in this variable
*/
void createPayee(const TQString& txt, TQString& id);
protected:
MyMoneyAccountLoan m_account;
MyMoneyTransaction m_transaction;
MyMoneySplit m_split;
};
#endif