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