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