File indexing completed on 2024-05-12 05:06:36
0001 /* 0002 SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com> 0003 SPDX-FileCopyrightText: 2019-2020 Thomas Baumgart <tbaumgart@kde.org> 0004 SPDX-FileCopyrightText: 2020 Robert Szczesiak <dev.rszczesiak@gmail.com> 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef MYMONEYENUMS_H 0009 #define MYMONEYENUMS_H 0010 0011 #include <QtCore/qnamespace.h> 0012 #include <QMetaType> 0013 #include <QHashFunctions> 0014 0015 #include "qhashseedtype.h" 0016 0017 namespace eMyMoney { 0018 /** 0019 * Account types currently supported. 0020 */ 0021 namespace Account { 0022 enum class Type { 0023 Unknown = 0, /**< For error handling */ 0024 Checkings, /**< Standard checking account */ 0025 Savings, /**< Typical savings account */ 0026 Cash, /**< Denotes a shoe-box or pillowcase stuffed 0027 with cash */ 0028 CreditCard, /**< Credit card accounts */ 0029 Loan, /**< Loan and mortgage accounts (liability) */ 0030 CertificateDep, /**< Certificates of Deposit */ 0031 Investment, /**< Investment account */ 0032 MoneyMarket, /**< Money Market Account */ 0033 Asset, /**< Denotes a generic asset account.*/ 0034 Liability, /**< Denotes a generic liability account.*/ 0035 Currency, /**< Denotes a currency trading account. */ 0036 Income, /**< Denotes an income account */ 0037 Expense, /**< Denotes an expense account */ 0038 AssetLoan, /**< Denotes a loan (asset of the owner of this object) */ 0039 Stock, /**< Denotes an security account as sub-account for an investment */ 0040 Equity, /**< Denotes an equity account e.g. opening/closing balance */ 0041 0042 /* insert new account types above this line */ 0043 MaxAccountTypes, /**< Denotes the number of different account types */ 0044 }; 0045 0046 inline qHashSeedType qHash(const Type key, qHashSeedType seed) 0047 { 0048 return ::qHash(static_cast<uint>(key), seed); 0049 } 0050 0051 enum class Standard { 0052 Liability, 0053 Asset, 0054 Expense, 0055 Income, 0056 Equity, 0057 Favorite, /**< Used internally as parent for all favorite accounts */ 0058 // insert new groups above this line 0059 MaxGroups, 0060 }; 0061 0062 inline qHashSeedType qHash(const Standard key, qHashSeedType seed) 0063 { 0064 return ::qHash(static_cast<uint>(key), seed); 0065 } 0066 } 0067 0068 namespace Payee { 0069 enum class MatchType { 0070 Disabled = 0, 0071 Name, 0072 Key, 0073 NameExact, 0074 }; 0075 } 0076 0077 namespace Security { 0078 enum class Type { 0079 Stock, 0080 MutualFund, 0081 Bond, 0082 Currency, 0083 None, 0084 }; 0085 0086 inline qHashSeedType qHash(const Type key, qHashSeedType seed) 0087 { 0088 return ::qHash(static_cast<uint>(key), seed); 0089 } 0090 } 0091 0092 namespace Report { 0093 enum class RowType { NoRows = 0, AssetLiability, ExpenseIncome, Category, TopCategory, Account, Tag, Payee, Month, Week, TopAccount, AccountByTopAccount, EquityType, AccountType, Institution, Budget, BudgetActual, Schedule, AccountInfo, AccountLoanInfo, AccountReconcile, CashFlow, Invalid }; 0094 inline qHashSeedType qHash(const RowType key, qHashSeedType seed) 0095 { 0096 return ::qHash(static_cast<uint>(key), seed); 0097 } 0098 0099 enum class ColumnType { NoColumns = 0, Days = 1, Months = 1, BiMonths = 2, Quarters = 3, Weeks = 7, Years = 12, Invalid }; 0100 inline qHashSeedType qHash(const ColumnType key, qHashSeedType seed) 0101 { 0102 return ::qHash(static_cast<uint>(key), seed); 0103 } 0104 0105 enum class ReportType { NoReport = 0, PivotTable, QueryTable, InfoTable, Invalid }; 0106 // if you add bits to this bitmask, start with the value currently assigned to QCend and update its value afterwards 0107 // also don't forget to add column names to kQueryColumnsText in mymoneyreport.cpp 0108 enum QueryColumn : int { None = 0x0, Begin = 0x1, Number = 0x1, Payee = 0x2, Category = 0x4, Tag = 0x8, Memo = 0x10, Account = 0x20, Reconciled = 0x40, Action = 0x80, Shares = 0x100, Price = 0x200, Performance = 0x400, Loan = 0x800, Balance = 0x1000, CapitalGain = 0x2000, End = 0x4000 }; 0109 0110 enum class DetailLevel { None = 0, All, Top, Group, Total, End }; 0111 inline qHashSeedType qHash(const DetailLevel key, qHashSeedType seed) 0112 { 0113 return ::qHash(static_cast<uint>(key), seed); 0114 } 0115 0116 enum class InvestmentSum { Period = 0, OwnedAndSold, Owned, Sold, Bought}; 0117 enum class ChartType { None = 0, Line, Bar, Pie, Ring, StackedBar, End }; 0118 inline qHashSeedType qHash(const ChartType key, qHashSeedType seed) 0119 { 0120 return ::qHash(static_cast<uint>(key), seed); 0121 } 0122 0123 enum class DataLock { Automatic = 0, UserDefined, DataOptionCount }; 0124 inline qHashSeedType qHash(const DataLock key, qHashSeedType seed) 0125 { 0126 return ::qHash(static_cast<uint>(key), seed); 0127 } 0128 enum class ChartPalette { Application = 0, Default, Rainbow, Subdued, End}; 0129 inline qHashSeedType qHash(const ChartPalette key, qHashSeedType seed) 0130 { 0131 return ::qHash(static_cast<uint>(key), seed); 0132 } 0133 } 0134 0135 namespace Schedule { 0136 /** 0137 * This enum is used to describe all the possible schedule frequencies. 0138 * The special entry, Any, is used to combine all the other types. 0139 */ 0140 enum class Occurrence { 0141 Any = 0, 0142 Once = 1, 0143 Daily = 2, 0144 Weekly = 4, 0145 Fortnightly = 8, 0146 EveryOtherWeek = 16, 0147 EveryHalfMonth = 18, 0148 EveryThreeWeeks = 20, 0149 EveryThirtyDays = 30, 0150 Monthly = 32, 0151 EveryFourWeeks = 64, 0152 EveryEightWeeks = 126, 0153 EveryOtherMonth = 128, 0154 EveryThreeMonths = 256, 0155 TwiceYearly = 1024, 0156 EveryOtherYear = 2048, 0157 Quarterly = 4096, 0158 EveryFourMonths = 8192, 0159 Yearly = 16384, 0160 }; 0161 inline qHashSeedType qHash(const Occurrence key, qHashSeedType seed) 0162 { 0163 return ::qHash(static_cast<uint>(key), seed); 0164 } 0165 0166 /** 0167 * This enum is used to describe the schedule type. 0168 */ 0169 enum class Type { 0170 Any = 0, 0171 Bill = 1, 0172 Deposit = 2, 0173 Transfer = 4, 0174 LoanPayment = 5, 0175 }; 0176 inline qHashSeedType qHash(const Type key, qHashSeedType seed) 0177 { 0178 return ::qHash(static_cast<uint>(key), seed); 0179 } 0180 0181 /** 0182 * This enum is used to describe the schedule's payment type. 0183 */ 0184 enum class PaymentType { 0185 Any = 0, 0186 DirectDebit = 1, 0187 DirectDeposit = 2, 0188 ManualDeposit = 4, 0189 Other = 8, 0190 WriteChecque = 16, 0191 StandingOrder = 32, 0192 BankTransfer = 64, 0193 }; 0194 inline qHashSeedType qHash(const PaymentType key, qHashSeedType seed) 0195 { 0196 return ::qHash(static_cast<uint>(key), seed); 0197 } 0198 0199 /** 0200 * This enum is used by the auto-commit functionality. 0201 * 0202 * Depending upon the value of m_weekendOption the schedule can 0203 * be entered on a different date 0204 **/ 0205 enum class WeekendOption { 0206 MoveBefore = 0, 0207 MoveAfter = 1, 0208 MoveNothing = 2, 0209 }; 0210 } 0211 0212 namespace Budget { 0213 enum class Level { 0214 None = 0, 0215 Monthly, 0216 MonthByMonth, 0217 Yearly, 0218 Max, 0219 }; 0220 0221 inline qHashSeedType qHash(const Level key, qHashSeedType seed) 0222 { 0223 return ::qHash(static_cast<uint>(key), seed); 0224 } 0225 } 0226 0227 namespace TransactionFilter { 0228 // Make sure to keep the following enum values in sync with the values 0229 // used by the GUI (for KMyMoney in kfindtransactiondlgdecl.ui) 0230 enum class Type { 0231 All = 0, 0232 Payments, 0233 Deposits, 0234 Transfers, 0235 // insert new constants above of this line 0236 LastType, 0237 }; 0238 0239 // Make sure to keep the following enum values in sync with the values 0240 // used by the GUI (for KMyMoney in kfindtransactiondlgdecl.ui) 0241 enum class State { 0242 All = 0, 0243 NotReconciled, 0244 Cleared, 0245 Reconciled, 0246 Frozen, 0247 // insert new constants above of this line 0248 LastState, 0249 }; 0250 0251 // Make sure to keep the following enum values in sync with the values 0252 // used by the GUI (for KMyMoney in kfindtransactiondlgdecl.ui) 0253 enum class Validity { 0254 Any = 0, 0255 Valid, 0256 Invalid, 0257 // insert new constants above of this line 0258 LastValidity, 0259 }; 0260 0261 // Make sure to keep the following enum values in sync with the values 0262 // used by the GUI (for KMyMoney in kfindtransactiondlgdecl.ui) 0263 enum class Date { 0264 All = 0, 0265 AsOfToday, 0266 CurrentMonth, 0267 CurrentYear, 0268 MonthToDate, 0269 YearToDate, 0270 YearToMonth, 0271 LastMonth, 0272 LastYear, 0273 Last7Days, 0274 Last30Days, 0275 Last3Months, 0276 Last6Months, 0277 Last12Months, 0278 Next7Days, 0279 Next30Days, 0280 Next3Months, 0281 Next6Months, 0282 Next12Months, 0283 UserDefined, 0284 Last3ToNext3Months, 0285 Last11Months, 0286 CurrentQuarter, 0287 LastQuarter, 0288 NextQuarter, 0289 CurrentFiscalYear, 0290 LastFiscalYear, 0291 Today, 0292 Next18Months, 0293 // insert new constants above of this line 0294 LastDateItem, 0295 }; 0296 inline qHashSeedType qHash(const Date key, qHashSeedType seed) 0297 { 0298 return ::qHash(static_cast<uint>(key), seed); 0299 } 0300 } 0301 0302 namespace Split { 0303 /** 0304 * This enum defines the possible reconciliation states a split 0305 * can be in. Possible values are as follows: 0306 * 0307 * @li NotReconciled 0308 * @li Cleared 0309 * @li Reconciled 0310 * @li Frozen 0311 * 0312 * Whenever a new split is created, it has the status NotReconciled. It 0313 * can be set to cleared when the transaction has been performed. Once the 0314 * account is reconciled, cleared splits will be set to Reconciled. The 0315 * state Frozen will be used, when the concept of books is introduced into 0316 * the engine and a split must not be changed anymore. 0317 */ 0318 enum class State { 0319 Unknown = -1, 0320 NotReconciled = 0, 0321 Cleared, 0322 Reconciled, 0323 Frozen, 0324 // insert new values above 0325 MaxReconcileState, 0326 }; 0327 0328 enum class InvestmentTransactionType { 0329 UnknownTransactionType = -1, 0330 BuyShares = 0, 0331 SellShares, 0332 Dividend, 0333 ReinvestDividend, 0334 Yield, 0335 AddShares, 0336 RemoveShares, 0337 SplitShares, 0338 InterestIncome, 0339 }; 0340 0341 inline qHashSeedType qHash(const InvestmentTransactionType key, qHashSeedType seed) 0342 { 0343 return ::qHash(static_cast<uint>(key), seed); 0344 } 0345 0346 enum class Action { 0347 Unknown = -1, 0348 Check, 0349 Deposit, 0350 Transfer, 0351 Withdrawal, 0352 ATM, 0353 Amortization, 0354 Interest, 0355 BuyShares, 0356 Dividend, 0357 ReinvestDividend, 0358 Yield, 0359 AddShares, 0360 SplitShares, 0361 InterestIncome, 0362 }; 0363 0364 inline qHashSeedType qHash(const Action key, qHashSeedType seed) 0365 { 0366 return ::qHash(static_cast<uint>(key), seed); 0367 } 0368 } 0369 0370 namespace File { 0371 /** 0372 * notificationObject identifies the type of the object 0373 * for which this notification is stored 0374 */ 0375 enum class Object { 0376 Account = 1, 0377 Institution, 0378 Payee, 0379 Transaction, 0380 Tag, 0381 Schedule, 0382 Security, 0383 OnlineJob, 0384 CostCenter, 0385 Budget, 0386 Currency, 0387 Price, 0388 Parameter, 0389 Report, 0390 BaseCurrency 0391 }; 0392 0393 /** 0394 * notificationMode identifies the type of notification 0395 * (add, modify, remove) 0396 */ 0397 enum class Mode { 0398 Add = 1, 0399 Modify, 0400 Remove, 0401 }; 0402 0403 } 0404 0405 /** 0406 * @brief Type of message 0407 * 0408 * An usually it is not easy to categorise log messages. This description is only a hint. 0409 */ 0410 namespace OnlineJob { 0411 enum class MessageType { 0412 Debug, /**< Just for debug purposes. In normal scenarios the user should not see this. No need to store this message. Plugins should 0413 not create them at all if debug mode is not enabled. */ 0414 Log, /**< A piece of information the user should not see during normal operation. It is not shown in any UI by default. It is stored persistently. */ 0415 Information, /**< Information that should be kept but without the need to burden the user. The user can 0416 see this during normal operation. */ 0417 Warning, /**< A piece of information the user should see but not be enforced to do so (= no modal dialog). E.g. a task is expected to have 0418 direct effect but instead you have to wait a day (and that is common behavior). */ 0419 Error, /**< Important for the user - he must be warned. E.g. a task could unexpectedly not be executed */ 0420 }; 0421 0422 /** 0423 * @brief The state of a job given by the onlinePlugin 0424 */ 0425 enum class sendingState { 0426 noBankAnswer, /**< Used during or before sending or if sendDate().isValid() the job was successfully sent */ 0427 acceptedByBank, /**< bank definitely confirmed the job */ 0428 rejectedByBank, /**< bank definitely rejected this job */ 0429 abortedByUser, /**< aborted by user during sending */ 0430 sendingError, /**< an error occurred, the job is certainly not executed by the bank */ 0431 }; 0432 } 0433 0434 namespace Statement { 0435 enum class Type { 0436 None = 0, 0437 Checkings, 0438 Savings, 0439 Investment, 0440 CreditCard, 0441 Invalid, 0442 }; 0443 0444 inline qHashSeedType qHash(const Type key, qHashSeedType seed) 0445 { 0446 return ::qHash(static_cast<uint>(key), seed); 0447 } 0448 } 0449 0450 namespace Transaction { 0451 // the following members are only used for investment accounts (m_eType==etInvestment) 0452 // eaNone means the action, shares, and security can be ignored. 0453 enum class Action { 0454 None = 0, 0455 Buy, 0456 Sell, 0457 ReinvestDividend, 0458 CashDividend, 0459 Shrsin, 0460 Shrsout, 0461 Stksplit, 0462 Fees, 0463 Interest, 0464 Invalid, 0465 }; 0466 0467 inline qHashSeedType qHash(const Action key, qHashSeedType seed) 0468 { 0469 return ::qHash(static_cast<uint>(key), seed); 0470 } 0471 } 0472 0473 namespace Money { 0474 enum signPosition : int { 0475 // keep those in sync with the ones defined in localeconv 0476 ParensAround = 0, 0477 PreceedQuantityAndSymbol = 1, 0478 SucceedQuantityAndSymbol = 2, 0479 PreceedSymbol = 3, 0480 SucceedSymbol = 4, 0481 }; 0482 } 0483 0484 namespace Delegates { 0485 enum class Types { 0486 JournalDelegate, 0487 OnlineBalanceDelegate, 0488 SpecialDateDelegate, 0489 ReconciliationDelegate, 0490 SecurityAccountNameDelegate, 0491 SchedulesDelegate, 0492 }; 0493 } 0494 0495 namespace Model { 0496 enum Roles { 0497 // The IdRole is used by all model items whereas the id of all other roles id unique 0498 // for each model. This way, we can identify if an id is used on the wrong model. 0499 IdRole = Qt::UserRole, // must remain Qt::UserRole due to KMyMoneyMVCCombo::selectedItem 0500 ItemReferenceRole, 0501 LongDisplayRole, 0502 0503 // MyMoneyPayee 0504 PayeeNameRole, 0505 PayeeAddressRole, 0506 PayeeCityRole, 0507 PayeeStateRole, 0508 PayeePostCodeRole, 0509 PayeeTelephoneRole, 0510 PayeeEmailRole, 0511 PayeeNotesRole, 0512 PayeeReferenceRole, 0513 PayeeMatchTypeRole, 0514 PayeeMatchKeyRole, 0515 PayeeMatchCaseRole, 0516 PayeeDefaultAccountRole, 0517 0518 // MyMoneyAccount 0519 AccountTypeRole, 0520 AccountGroupRole, 0521 AccountTypeInBudgetRole, 0522 AccountCanBeClosedRole, 0523 AccountIsClosedRole, 0524 AccountIsInvestRole, 0525 AccountBalanceRole, 0526 AccountValueRole, 0527 AccountTotalValueRole, 0528 AccountFullHierarchyNameRole, 0529 AccountFullNameRole, 0530 AccountNameRole, 0531 AccountDisplayOrderRole, 0532 AccountFractionRole, 0533 AccountParentIdRole, 0534 AccountCurrencyIdRole, 0535 AccountInstitutionIdRole, 0536 AccountOnlineBalanceDateRole, 0537 AccountOnlineBalanceValueRole, 0538 AccountIsFavoriteIndexRole, 0539 AccountIsIncomeExpenseRole, 0540 AccountIsAssetLiabilityRole, 0541 0542 // MyMoneyInstitution 0543 InstitutionBankCodeRole, 0544 0545 // MyMoneyCostCenter 0546 CostCenterShortNameRole, 0547 0548 // MyMoneySchedule 0549 ScheduleNameRole, 0550 ScheduleTypeRole, 0551 ScheduleAccountRole, 0552 SchedulePayeeRole, 0553 ScheduleNextDueDateRole, 0554 ScheduleIsOverdueRole, 0555 ScheduleIsOverdueSinceRole, 0556 ScheduleIsFinishedRole, 0557 ScheduleFrequencyRole, 0558 SchedulePaymentTypeRole, 0559 0560 // MyMoneySecurity 0561 SecuritySymbolRole, 0562 SecurityTradingCurrencyIdRole, 0563 SecurityTradingCurrencyIndexRole, 0564 SecurityPricePrecisionRole, 0565 SecuritySmallestAccountFractionRole, 0566 SecuritySmallestCashFractionRole, 0567 0568 // MyMoneyBudget 0569 BudgetNameRole, 0570 0571 // MyMoneyTransaction 0572 TransactionErroneousRole, 0573 TransactionPostDateRole, 0574 TransactionEntryDateRole, 0575 TransactionCounterAccountRole, 0576 TransactionCounterAccountIdRole, 0577 TransactionIsTransferRole, 0578 TransactionIsInvestmentRole, 0579 TransactionInvestementType, 0580 TransactionSplitCountRole, 0581 TransactionValuableSplitCountRole, 0582 TransactionSplitSumRole, 0583 TransactionBrokerageAccountRole, 0584 TransactionInterestSplitPresentRole, 0585 TransactionFeeSplitPresentRole, 0586 TransactionInterestCategoryRole, 0587 TransactionFeesCategoryRole, 0588 TransactionInterestValueRole, 0589 TransactionFeesValueRole, 0590 TransactionIsStockSplitRole, 0591 TransactionInvestmentAccountIdRole, 0592 TransactionCommodityRole, 0593 TransactionIsImportedRole, 0594 TransactionAccountSignatureRole, 0595 0596 // MyMoneySchedule 0597 TransactionScheduleRole, 0598 TransactionScheduleIdRole, 0599 0600 // MyMoneySplit 0601 SplitSharesSuffixRole, 0602 SplitAccountIdRole, 0603 SplitPayeeIdRole, 0604 SplitPayeeRole, 0605 SplitMemoRole, 0606 SplitSingleLineMemoRole, 0607 SplitSharesRole, 0608 SplitSharesFormattedRole, 0609 SplitValueRole, 0610 SplitPriceRole, 0611 SplitReconcileFlagRole, // the short status flag 0612 SplitReconcileStatusRole, // the full status name 0613 SplitReconcileStateRole, // the numeric status value 0614 SplitReconcileDateRole, 0615 SplitActionRole, 0616 SplitNumberRole, 0617 SplitCostCenterIdRole, 0618 SplitActivityRole, 0619 SplitTagIdRole, 0620 SplitBankIdRole, 0621 SplitFormattedValueRole, 0622 SplitFormattedSharesRole, 0623 SplitIsNewRole, 0624 0625 // MatchedSplit 0626 MatchedSplitPayeeRole, 0627 MatchedSplitMemoRole, 0628 0629 // Journal 0630 JournalSplitIdRole, 0631 JournalTransactionIdRole, 0632 JournalSplitPaymentRole, 0633 JournalSplitDepositRole, 0634 JournalSplitAccountIdRole, 0635 JournalSplitIsMatchedRole, 0636 JournalSplitNumberRole, 0637 JournalBalanceRole, 0638 JournalSplitMaxLinesCountRole, 0639 JournalSplitQuantitySortRole, 0640 JournalSplitPriceSortRole, 0641 JournalSplitValueSortRole, 0642 JournalSplitSecurityNameRole, 0643 JournalEntryIsFrozenRole, 0644 0645 // Ledger 0646 LedgerDisplayOrderRole, 0647 0648 // Parameter 0649 ParameterKeyRole, 0650 ParameterValueRole, 0651 0652 // Templates 0653 TemplatesCountryRole, 0654 TemplatesTypeRole, 0655 TemplatesDescriptionRole, 0656 TemplatesLongDescriptionRole, 0657 TemplatesDomRole, 0658 TemplatesLocaleRole, 0659 0660 // Tags 0661 TagNameRole, 0662 0663 // Reconciliation 0664 ReconciliationAmountRole, // the reconciliation balance as MyMoneyMoney object 0665 ReconciliationBalanceRole, // the reconciliation balance as formatted string 0666 ReconciliationFilterHintRole, // filtering hint for the entry 0667 0668 // General state 0669 ClosedRole, 0670 0671 // OnlineJobsModel 0672 OnlineJobRole, 0673 OnlineJobLockedRole, 0674 OnlineJobSendableRole, 0675 OnlineJobEditableRole, 0676 OnlineJobSendDateRole, 0677 OnlineJobTaskIidRole, 0678 OnlineJobPurposeRole, 0679 OnlineJobPostDateRole, 0680 OnlineJobValueAsDoubleRole, 0681 0682 // LedgerStack special roles 0683 ActiveFilterRole, 0684 ActiveFilterTextRole, 0685 ActiveFilterStateRole, 0686 ShowValueInvertedRole, 0687 0688 DelegateRole, 0689 0690 // Modeltypes 0691 BaseModelRole, 0692 JournalEntryRole, // true if entry is a journal record 0693 OnlineBalanceEntryRole, // true if entry is an online balance record 0694 SecurityAccountNameEntryRole, // true if entry is a security account name record 0695 SpecialDatesEntryRole, // true if entry is a special dates record 0696 ReconciliationEntryRole, // true if entry is a reconciliation record 0697 SchedulesJournalEntryRole, // true if entry is a scheduled journal record 0698 }; 0699 0700 typedef enum { 0701 DontFilter, // Always display 0702 DontFilterLast, // Don't filter, this is the latest entry 0703 StdFilter, // No special filter handling 0704 } ReconciliationFilterHint; 0705 0706 } // namespace Model 0707 } // namespace eMyMoney 0708 0709 Q_DECLARE_METATYPE(eMyMoney::Split::State) 0710 Q_DECLARE_METATYPE(eMyMoney::Split::InvestmentTransactionType) 0711 Q_DECLARE_METATYPE(eMyMoney::Schedule::Occurrence) 0712 Q_DECLARE_METATYPE(eMyMoney::Schedule::PaymentType) 0713 Q_DECLARE_METATYPE(eMyMoney::Model::ReconciliationFilterHint) 0714 Q_DECLARE_METATYPE(eMyMoney::Model::Roles) 0715 0716 #endif