File indexing completed on 2024-05-12 16:42:18
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 #include "ledgertransaction.h" 0008 #include "ledgertransaction_p.h" 0009 0010 // ---------------------------------------------------------------------------- 0011 // QT Includes 0012 0013 #include <QString> 0014 #include <QDate> 0015 0016 // ---------------------------------------------------------------------------- 0017 // KDE Includes 0018 0019 #include <KLocalizedString> 0020 0021 // ---------------------------------------------------------------------------- 0022 // Project Includes 0023 0024 #include "mymoneysplit.h" 0025 #include "mymoneytransaction.h" 0026 #include "mymoneymoney.h" 0027 #include "mymoneyenums.h" 0028 0029 using namespace eMyMoney; 0030 0031 LedgerTransaction::LedgerTransaction() : 0032 LedgerItem(), 0033 d_ptr(new LedgerTransactionPrivate) 0034 { 0035 } 0036 0037 LedgerTransaction::LedgerTransaction(const MyMoneyTransaction& t, const MyMoneySplit& s) : 0038 LedgerItem(), 0039 d_ptr(new LedgerTransactionPrivate) 0040 { 0041 Q_D(LedgerTransaction); 0042 d->init(t,s); 0043 } 0044 0045 LedgerTransaction::LedgerTransaction(LedgerTransactionPrivate &dd) : 0046 d_ptr(&dd) 0047 { 0048 } 0049 0050 LedgerTransaction::LedgerTransaction(LedgerTransactionPrivate &dd, const MyMoneyTransaction& t, const MyMoneySplit& s) : 0051 d_ptr(&dd) 0052 { 0053 Q_D(LedgerTransaction); 0054 d->init(t,s); 0055 } 0056 0057 LedgerTransaction::LedgerTransaction(const LedgerTransaction& other) : 0058 d_ptr(new LedgerTransactionPrivate(*other.d_func())) 0059 { 0060 } 0061 0062 LedgerTransaction::~LedgerTransaction() 0063 { 0064 delete d_ptr; 0065 } 0066 0067 QDate LedgerTransaction::postDate() const 0068 { 0069 Q_D(const LedgerTransaction); 0070 return d->m_transaction.postDate(); 0071 } 0072 0073 MyMoneyTransaction LedgerTransaction::transaction() const 0074 { 0075 Q_D(const LedgerTransaction); 0076 return d->m_transaction; 0077 } 0078 0079 const MyMoneySplit& LedgerTransaction::split() const 0080 { 0081 Q_D(const LedgerTransaction); 0082 return d->m_split; 0083 } 0084 0085 QString LedgerTransaction::accountId() const 0086 { 0087 Q_D(const LedgerTransaction); 0088 return d->m_split.accountId(); 0089 } 0090 0091 QString LedgerTransaction::account() const 0092 { 0093 Q_D(const LedgerTransaction); 0094 return d->m_account; 0095 } 0096 0097 QString LedgerTransaction::counterAccountId() const 0098 { 0099 Q_D(const LedgerTransaction); 0100 return d->m_counterAccountId; 0101 } 0102 0103 QString LedgerTransaction::counterAccount() const 0104 { 0105 Q_D(const LedgerTransaction); 0106 return d->m_counterAccount; 0107 } 0108 0109 QString LedgerTransaction::costCenterId() const 0110 { 0111 Q_D(const LedgerTransaction); 0112 return d->m_costCenterId; 0113 } 0114 0115 QString LedgerTransaction::payeeName() const 0116 { 0117 Q_D(const LedgerTransaction); 0118 return d->m_payeeName; 0119 } 0120 0121 QString LedgerTransaction::payeeId() const 0122 { 0123 Q_D(const LedgerTransaction); 0124 return d->m_payeeId; 0125 } 0126 0127 QString LedgerTransaction::transactionNumber() const 0128 { 0129 Q_D(const LedgerTransaction); 0130 return d->m_split.number(); 0131 } 0132 0133 Qt::ItemFlags LedgerTransaction::flags() const 0134 { 0135 return (Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable); 0136 } 0137 0138 QString LedgerTransaction::transactionSplitId() const 0139 { 0140 Q_D(const LedgerTransaction); 0141 QString rc; 0142 if(!d->m_transaction.id().isEmpty()) { 0143 rc = QString("%1-%2").arg(d->m_transaction.id(), d->m_split.id()); 0144 } 0145 return rc; 0146 } 0147 0148 int LedgerTransaction::splitCount() const 0149 { 0150 Q_D(const LedgerTransaction); 0151 return d->m_transaction.splitCount(); 0152 } 0153 0154 QString LedgerTransaction::transactionId() const 0155 { 0156 Q_D(const LedgerTransaction); 0157 return d->m_transaction.id(); 0158 } 0159 0160 eMyMoney::Split::State LedgerTransaction::reconciliationState() const 0161 { 0162 Q_D(const LedgerTransaction); 0163 return d->m_split.reconcileFlag(); 0164 } 0165 0166 QString LedgerTransaction::reconciliationStateShort() const 0167 { 0168 Q_D(const LedgerTransaction); 0169 QString rc; 0170 switch(d->m_split.reconcileFlag()) { 0171 case eMyMoney::Split::State::NotReconciled: 0172 default: 0173 break; 0174 case eMyMoney::Split::State::Cleared: 0175 rc = i18nc("Reconciliation flag C", "C"); 0176 break; 0177 case eMyMoney::Split::State::Reconciled: 0178 rc = i18nc("Reconciliation flag R", "R"); 0179 break; 0180 case eMyMoney::Split::State::Frozen: 0181 rc = i18nc("Reconciliation flag F", "F"); 0182 break; 0183 } 0184 return rc; 0185 } 0186 0187 QString LedgerTransaction::reconciliationStateLong() const 0188 { 0189 Q_D(const LedgerTransaction); 0190 QString rc; 0191 switch(d->m_split.reconcileFlag()) { 0192 case eMyMoney::Split::State::NotReconciled: 0193 default: 0194 rc = i18nc("Reconciliation flag empty", "Not reconciled"); 0195 break; 0196 case eMyMoney::Split::State::Cleared: 0197 rc = i18nc("Reconciliation flag C", "Cleared"); 0198 break; 0199 case eMyMoney::Split::State::Reconciled: 0200 rc = i18nc("Reconciliation flag R", "Reconciled"); 0201 break; 0202 case eMyMoney::Split::State::Frozen: 0203 rc = i18nc("Reconciliation flag F", "Frozen"); 0204 break; 0205 } 0206 return rc; 0207 } 0208 0209 QString LedgerTransaction::payment() const 0210 { 0211 Q_D(const LedgerTransaction); 0212 return d->m_payment; 0213 } 0214 0215 QString LedgerTransaction::deposit() const 0216 { 0217 Q_D(const LedgerTransaction); 0218 return d->m_deposit; 0219 } 0220 0221 void LedgerTransaction::setBalance(QString txt) 0222 { 0223 Q_D(LedgerTransaction); 0224 d->m_balance = txt; 0225 } 0226 0227 QString LedgerTransaction::balance() const 0228 { 0229 Q_D(const LedgerTransaction); 0230 return d->m_balance; 0231 } 0232 0233 MyMoneyMoney LedgerTransaction::shares() const 0234 { 0235 Q_D(const LedgerTransaction); 0236 return d->m_split.shares(); 0237 } 0238 0239 QString LedgerTransaction::sharesAmount() const 0240 { 0241 Q_D(const LedgerTransaction); 0242 return d->m_shares; 0243 } 0244 0245 QString LedgerTransaction::signedSharesAmount() const 0246 { 0247 Q_D(const LedgerTransaction); 0248 return d->m_signedShares; 0249 } 0250 0251 QString LedgerTransaction::sharesSuffix() const 0252 { 0253 Q_D(const LedgerTransaction); 0254 return d->m_sharesSuffix; 0255 } 0256 0257 MyMoneyMoney LedgerTransaction::value() const 0258 { 0259 Q_D(const LedgerTransaction); 0260 return d->m_split.value(); 0261 } 0262 0263 QString LedgerTransaction::memo() const 0264 { 0265 Q_D(const LedgerTransaction); 0266 auto memo = d->m_split.memo(); 0267 if(memo.isEmpty()) { 0268 memo = d->m_transaction.memo(); 0269 } 0270 return memo; 0271 } 0272 0273 bool LedgerTransaction::isErroneous() const 0274 { 0275 Q_D(const LedgerTransaction); 0276 return d->m_erroneous; 0277 } 0278 0279 bool LedgerTransaction::isImported() const 0280 { 0281 Q_D(const LedgerTransaction); 0282 return d->m_transaction.isImported(); 0283 } 0284 0285 LedgerTransaction LedgerTransaction::newTransactionEntry() 0286 { 0287 // create a dummy entry for new transactions 0288 MyMoneyTransaction t; 0289 t.setPostDate(QDate(2900,12,31)); 0290 return LedgerTransaction(t, MyMoneySplit()); 0291 } 0292 0293 bool LedgerTransaction::isNewTransactionEntry() const 0294 { 0295 Q_D(const LedgerTransaction); 0296 return d->m_transaction.id().isEmpty() && d->m_split.id().isEmpty(); 0297 } 0298 0299 QString LedgerTransaction::transactionCommodity() const 0300 { 0301 Q_D(const LedgerTransaction); 0302 return d->m_transaction.commodity(); 0303 }