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