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