File indexing completed on 2024-05-12 16:44:07

0001 /*
0002     SPDX-FileCopyrightText: 2006-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 #include "selectedtransaction.h"
0008 
0009 // ----------------------------------------------------------------------------
0010 // QT Includes
0011 
0012 // ----------------------------------------------------------------------------
0013 // KDE Includes
0014 
0015 // ----------------------------------------------------------------------------
0016 // Project Includes
0017 
0018 #include "mymoneyfile.h"
0019 #include "mymoneyaccount.h"
0020 #include "mymoneysplit.h"
0021 #include "mymoneytransaction.h"
0022 #include "mymoneyexception.h"
0023 #include "mymoneyenums.h"
0024 
0025 using namespace KMyMoneyRegister;
0026 
0027 namespace KMyMoneyRegister
0028 {
0029 class SelectedTransactionPrivate
0030 {
0031 public:
0032     MyMoneyTransaction      m_transaction;
0033     MyMoneySplit            m_split;
0034     QString                 m_scheduleId;
0035 };
0036 }
0037 
0038 SelectedTransaction::SelectedTransaction() :
0039     d_ptr(new SelectedTransactionPrivate)
0040 {
0041 }
0042 
0043 SelectedTransaction::SelectedTransaction(const MyMoneyTransaction& t, const MyMoneySplit& s, const QString& scheduleId = QString()) :
0044     d_ptr(new SelectedTransactionPrivate)
0045 {
0046     Q_D(SelectedTransaction);
0047     d->m_transaction = t;
0048     d->m_split = s;
0049     d->m_scheduleId = scheduleId;
0050 }
0051 
0052 SelectedTransaction::SelectedTransaction(const SelectedTransaction& other) :
0053     d_ptr(new SelectedTransactionPrivate(*other.d_func()))
0054 {
0055 }
0056 
0057 SelectedTransaction::~SelectedTransaction()
0058 {
0059     Q_D(SelectedTransaction);
0060     delete d;
0061 }
0062 
0063 MyMoneyTransaction& SelectedTransaction::transaction()
0064 {
0065     Q_D(SelectedTransaction);
0066     return d->m_transaction;
0067 }
0068 
0069 MyMoneyTransaction SelectedTransaction::transaction() const
0070 {
0071     Q_D(const SelectedTransaction);
0072     return d->m_transaction;
0073 }
0074 
0075 MyMoneySplit& SelectedTransaction::split()
0076 {
0077     Q_D(SelectedTransaction);
0078     return d->m_split;
0079 }
0080 
0081 MyMoneySplit SelectedTransaction::split() const
0082 {
0083     Q_D(const SelectedTransaction);
0084     return d->m_split;
0085 }
0086 
0087 bool SelectedTransaction::isScheduled() const
0088 {
0089     Q_D(const SelectedTransaction);
0090     return !d->m_scheduleId.isEmpty();
0091 }
0092 
0093 QString SelectedTransaction::scheduleId() const
0094 {
0095     Q_D(const SelectedTransaction);
0096     return d->m_scheduleId;
0097 }
0098 
0099 SelectedTransaction::warnLevel_t SelectedTransaction::warnLevel() const
0100 {
0101     auto warnLevel = NoWarning;
0102     foreach (const auto split, transaction().splits()) {
0103         try {
0104             auto acc = MyMoneyFile::instance()->account(split.accountId());
0105             if (acc.isClosed())
0106                 warnLevel = OneAccountClosed;
0107             else if (split.reconcileFlag() == eMyMoney::Split::State::Frozen)
0108                 warnLevel = OneSplitFrozen;
0109             else if (split.reconcileFlag() == eMyMoney::Split::State::Reconciled && warnLevel < 1)
0110                 warnLevel = OneSplitReconciled;
0111         } catch (const MyMoneyException &) {
0112             //qDebug("Exception in SelectedTransaction::warnLevel(): %s", e.what());
0113             warnLevel = NoWarning;
0114         }
0115     }
0116     return warnLevel;
0117 }
0118