1 /***************************************************************************
2 konlineupdatewizardpage - description
3 -------------------
4 begin : Sun Jul 4 2010
5 copyright : (C) 2010 by Fernando Vilas
6 email : kmymoney-devel@kde.org
7 ***************************************************************************/
8
9 /***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18 #include "additionalfeeswizardpage.h"
19
20 // ----------------------------------------------------------------------------
21 // QT Includes
22
23 #include <QPointer>
24
25 // ----------------------------------------------------------------------------
26 // KDE Includes
27
28 #include <KLocalizedString>
29 #include <KGuiItem>
30
31 // ----------------------------------------------------------------------------
32 // Project Includes
33
34 #include "ui_additionalfeeswizardpage.h"
35
36 #include "knewloanwizard.h"
37 #include "knewloanwizard_p.h"
38 #include "ksplittransactiondlg.h"
39 #include "mymoneyfile.h"
40 #include "mymoneysecurity.h"
41 #include "mymoneyaccount.h"
42 #include "mymoneymoney.h"
43
AdditionalFeesWizardPage(QWidget * parent)44 AdditionalFeesWizardPage::AdditionalFeesWizardPage(QWidget *parent)
45 : QWizardPage(parent),
46 ui(new Ui::AdditionalFeesWizardPage)
47 {
48 ui->setupUi(this);
49
50 registerField("additionalCost", ui->m_additionalCost, "text");
51 registerField("periodicPayment", ui->m_periodicPayment, "text");
52 registerField("basePayment", ui->m_basePayment, "text");
53 // load button icons
54 KGuiItem additionalFeeButtonItem(i18n("&Additional fees..."),
55 0, //QIcon::fromTheme("document-new"),
56 i18n("Enter additional fees"),
57 i18n("Use this to add any additional fees other than principal and interest contained in your periodical payments."));
58 KGuiItem::assign(ui->m_additionalFeeButton, additionalFeeButtonItem);
59 connect(ui->m_additionalFeeButton, &QAbstractButton::clicked, this, &AdditionalFeesWizardPage::slotAdditionalFees);
60 }
61
~AdditionalFeesWizardPage()62 AdditionalFeesWizardPage::~AdditionalFeesWizardPage()
63 {
64 delete ui;
65 }
66
slotAdditionalFees()67 void AdditionalFeesWizardPage::slotAdditionalFees()
68 {
69 // KMessageBox::information(0, QString("Not yet implemented ... if you want to help, contact kmymoney-devel@kde.org"), QString("Development notice"));
70 MyMoneyAccount account("Phony-ID", MyMoneyAccount());
71
72 QMap<QString, MyMoneyMoney> priceInfo;
73 QPointer<KSplitTransactionDlg> dlg = new KSplitTransactionDlg(qobject_cast<KNewLoanWizard*>(wizard())->d_func()->m_transaction, qobject_cast<KNewLoanWizard*>(wizard())->d_func()->m_split, account, false, !field("borrowButton").toBool(), MyMoneyMoney(), priceInfo);
74 connect(dlg, SIGNAL(newCategory(MyMoneyAccount&)), this, SIGNAL(newCategory(MyMoneyAccount&)));
75
76 if (dlg->exec() == QDialog::Accepted) {
77 qobject_cast<KNewLoanWizard*>(wizard())->d_func()->m_transaction = dlg->transaction();
78 // sum up the additional fees
79 MyMoneyMoney fees;
80 foreach (const MyMoneySplit& it, qobject_cast<KNewLoanWizard*>(wizard())->d_func()->m_transaction.splits()) {
81 if (it.accountId() != account.id()) {
82 fees += it.value();
83 }
84 }
85 setField("additionalCost", fees.formatMoney(qobject_cast<KNewLoanWizard*>(wizard())->d_func()->m_account.fraction(MyMoneyFile::instance()->security(qobject_cast<KNewLoanWizard*>(wizard())->d_func()->m_account.currencyId()))));
86 }
87
88 delete dlg;
89
90 updatePeriodicPayment(qobject_cast<KNewLoanWizard*>(wizard())->d_func()->m_account);
91 }
92
updatePeriodicPayment(const MyMoneyAccount & account)93 void AdditionalFeesWizardPage::updatePeriodicPayment(const MyMoneyAccount& account)
94 {
95 MyMoneyMoney base(ui->m_basePayment->text());
96 MyMoneyMoney add(ui->m_additionalCost->text());
97
98 ui->m_periodicPayment->setText((base + add).formatMoney(account.fraction(MyMoneyFile::instance()->security(account.currencyId()))));
99 }
100