File indexing completed on 2024-05-12 16:42:13

0001 /*
0002     SPDX-FileCopyrightText: 2007-2018 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef TRANSACTIONEDITOR_P_H
0008 #define TRANSACTIONEDITOR_P_H
0009 
0010 // ----------------------------------------------------------------------------
0011 // QT Includes
0012 
0013 #include <QDate>
0014 #include <QList>
0015 #include <QMap>
0016 #include <QString>
0017 #include <QWidget>
0018 
0019 // ----------------------------------------------------------------------------
0020 // KDE Includes
0021 
0022 // ----------------------------------------------------------------------------
0023 // Project Includes
0024 
0025 #include "kmymoneylineedit.h"
0026 #include "kmymoneyutils.h"
0027 #include "mymoneyaccount.h"
0028 #include "mymoneyenums.h"
0029 #include "mymoneyfile.h"
0030 #include "mymoneysplit.h"
0031 #include "mymoneytransaction.h"
0032 #include "register.h"
0033 #include "registeritem.h"
0034 #include "selectedtransactions.h"
0035 #include "transactioneditor.h"
0036 #include "qwidgetcontainer.h"
0037 #include "widgetenums.h"
0038 
0039 class MyMoneyMoney;
0040 class TransactionEditorContainer;
0041 namespace KMyMoneyRegister {
0042 class Transaction;
0043 }
0044 
0045 class TransactionEditorPrivate
0046 {
0047     Q_DISABLE_COPY(TransactionEditorPrivate)
0048     Q_DECLARE_PUBLIC(TransactionEditor)
0049 
0050 public:
0051     explicit TransactionEditorPrivate(TransactionEditor* qq)
0052         : q_ptr(qq)
0053         , m_paymentMethod(eMyMoney::Schedule::PaymentType::Any)
0054         , m_regForm(nullptr)
0055         , m_item(nullptr)
0056         , m_initialAction(eWidgets::eRegister::Action::None)
0057         , m_openEditSplits(false)
0058         , m_memoChanged(false)
0059         , m_readOnly(false)
0060     {
0061     }
0062 
0063     ~TransactionEditorPrivate()
0064     {
0065     }
0066 
0067     void init()
0068     {
0069         m_paymentMethod = eMyMoney::Schedule::PaymentType::Any;
0070         m_regForm = 0;
0071         m_item = 0;
0072         m_initialAction = eWidgets::eRegister::Action::None;
0073         m_openEditSplits = false;
0074         m_memoChanged = false;
0075     }
0076 
0077     /**
0078     *  If a new or an edited transaction has a valid number, keep it with the account
0079     */
0080     void keepNewNumber(const MyMoneyTransaction& tr)
0081     {
0082         Q_Q(TransactionEditor);
0083         // verify that new number, possibly containing alpha, is valid
0084         auto txn = tr;
0085         auto file = MyMoneyFile::instance();
0086         if (!txn.splits().isEmpty()) {
0087             QString number = txn.splits().first().number();
0088             if (KMyMoneyUtils::numericPart(number) > 0) {
0089                 // numeric is valid
0090                 auto numberEdit = dynamic_cast<KMyMoneyLineEdit*>(q->haveWidget("number"));
0091                 if (numberEdit) {
0092                     numberEdit->loadText(number);
0093                     MyMoneySplit split = txn.splits().first();
0094                     split.setNumber(number);
0095                     txn.modifySplit(split);
0096                     m_account.setValue("lastNumberUsed", number);
0097                     file->modifyAccount(m_account);
0098                 }
0099             }
0100         }
0101     }
0102 
0103     TransactionEditor* q_ptr;
0104     QString m_scheduleInfo;
0105     eMyMoney::Schedule::PaymentType m_paymentMethod;
0106     QString m_memoText;
0107     QList<MyMoneySplit> m_splits;
0108     KMyMoneyRegister::SelectedTransactions m_transactions;
0109     QList<const QWidget*> m_finalEditWidgets;
0110     TransactionEditorContainer* m_regForm;
0111     KMyMoneyRegister::Transaction* m_item;
0112     KMyMoneyRegister::QWidgetContainer m_editWidgets;
0113     MyMoneyAccount m_account;
0114     MyMoneyTransaction m_transaction;
0115     MyMoneySplit m_split;
0116     QDate m_lastPostDate;
0117     QMap<QString, MyMoneyMoney> m_priceInfo;
0118     eWidgets::eRegister::Action m_initialAction;
0119     bool m_openEditSplits;
0120     bool m_memoChanged;
0121     bool m_readOnly;
0122 };
0123 
0124 #endif // TRANSACTIONEDITOR_P_H