File indexing completed on 2024-05-19 16:15:07
0001 /* 0002 SPDX-FileCopyrightText: 2016-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 LEDGERTRANSACTION_H 0008 #define LEDGERTRANSACTION_H 0009 0010 // ---------------------------------------------------------------------------- 0011 // QT Includes 0012 0013 //#include <QScopedPointer> 0014 0015 // ---------------------------------------------------------------------------- 0016 // KDE Includes 0017 0018 // ---------------------------------------------------------------------------- 0019 // Project Includes 0020 0021 #include "ledgeritem.h" 0022 0023 class MyMoneyMoney; 0024 class MyMoneySplit; 0025 class MyMoneyTransaction; 0026 0027 class LedgerTransactionPrivate; 0028 class LedgerTransaction : public LedgerItem 0029 { 0030 public: 0031 explicit LedgerTransaction(const MyMoneyTransaction& t, const MyMoneySplit& s); 0032 LedgerTransaction(const LedgerTransaction & other); 0033 LedgerTransaction(LedgerTransaction && other); 0034 LedgerTransaction & operator=(LedgerTransaction other); 0035 friend void swap(LedgerTransaction& first, LedgerTransaction& second); 0036 0037 virtual ~LedgerTransaction(); 0038 0039 static LedgerTransaction newTransactionEntry(); 0040 0041 /// @copydoc LedgerItem::postDate() 0042 QDate postDate() const override; 0043 0044 /// @copydoc LedgerItem::transaction() 0045 MyMoneyTransaction transaction() const override; 0046 0047 /// @copydoc LedgerItem::split() 0048 const MyMoneySplit& split() const override; 0049 0050 /// @copydoc LedgerItem::accountId() 0051 QString accountId() const override; 0052 0053 /// @copydoc LedgerItem::account() 0054 QString account() const override; 0055 0056 /// @copydoc LedgerItem::counterAccountId() 0057 QString counterAccountId() const override; 0058 0059 /// @copydoc LedgerItem::counterAccount() 0060 QString counterAccount() const override; 0061 0062 /// @copydoc LedgerItem::costCenterId() 0063 QString costCenterId() const override; 0064 0065 /// @copydoc LedgerItem::payeeName() 0066 QString payeeName() const override; 0067 0068 /// @copydoc LedgerItem::payeeId() 0069 QString payeeId() const override; 0070 0071 /// @copydoc LedgerItem::transactionNumber() 0072 QString transactionNumber() const override; 0073 0074 /// @copydoc LedgerItem::flags() 0075 Qt::ItemFlags flags() const override; 0076 0077 /// @copydoc LedgerItem::transactionSplitId() 0078 QString transactionSplitId() const override; 0079 0080 /// @copydoc LedgerItem::splitCount() 0081 int splitCount() const override; 0082 0083 /// @copydoc LedgerItem::transactionId() 0084 QString transactionId() const override; 0085 0086 /// @copydoc LedgerItem::reconciliationState() 0087 eMyMoney::Split::State reconciliationState() const override; 0088 0089 /// @copydoc LedgerItem::reconciliationStateShort() 0090 QString reconciliationStateShort() const override; 0091 0092 /// @copydoc LedgerItem::reconciliationStateShort() 0093 QString reconciliationStateLong() const override; 0094 0095 /// @copydoc LedgerItem::payment() 0096 QString payment() const override; 0097 0098 /// @copydoc LedgerItem::deposit() 0099 QString deposit() const override; 0100 0101 /// @copydoc LedgerItem::setBalance() 0102 void setBalance(QString txt) override; 0103 0104 /// @copydoc LedgerItem::balance() 0105 QString balance() const override; 0106 0107 /// @copydoc LedgerItem::shares() 0108 MyMoneyMoney shares() const override; 0109 0110 /// @copydoc LedgerItem::sharesAmount() 0111 QString sharesAmount() const override; 0112 0113 /// @copydoc LedgerItem::signedSharesAmount() 0114 QString signedSharesAmount() const override; 0115 0116 /// @copydoc LedgerItem::sharesSuffix() 0117 QString sharesSuffix() const override; 0118 0119 /// @copydoc LedgerItem::value() 0120 MyMoneyMoney value() const override; 0121 0122 /// @copydoc LedgerItem::memo() 0123 QString memo() const override; 0124 0125 /// @copydoc LedgerItem::isErroneous() 0126 bool isErroneous() const override; 0127 0128 /// @copydoc LedgerItem::isImported() 0129 bool isImported() const override; 0130 0131 /// @copydoc LedgerItem::isNewTransactionEntry() 0132 bool isNewTransactionEntry() const override; 0133 0134 /// @copydoc LedgerItem::transactionCommodity() 0135 QString transactionCommodity() const override; 0136 0137 protected: 0138 LedgerTransactionPrivate *d_ptr; 0139 LedgerTransaction(LedgerTransactionPrivate &dd); 0140 LedgerTransaction(LedgerTransactionPrivate &dd, 0141 const MyMoneyTransaction &t, 0142 const MyMoneySplit &s); 0143 0144 private: 0145 LedgerTransaction(); 0146 Q_DECLARE_PRIVATE(LedgerTransaction) 0147 }; 0148 0149 inline void swap(LedgerTransaction& first, LedgerTransaction& second) // krazy:exclude=inline 0150 { 0151 using std::swap; 0152 swap(first.d_ptr, second.d_ptr); 0153 } 0154 0155 inline LedgerTransaction::LedgerTransaction(LedgerTransaction && other) : LedgerTransaction() // krazy:exclude=inline 0156 { 0157 swap(*this, other); 0158 } 0159 0160 inline LedgerTransaction & LedgerTransaction::operator=(LedgerTransaction other) // krazy:exclude=inline 0161 { 0162 swap(*this, other); 0163 return *this; 0164 } 0165 0166 #endif // LEDGERTRANSACTION_H 0167