/*************************************************************************** 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 TQ_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