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