File indexing completed on 2024-06-16 04:47:21
0001 /*************************************************************************** 0002 * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr 0003 * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 ***************************************************************************/ 0006 #ifndef SKGIMPORTPLUGINKMY_H 0007 #define SKGIMPORTPLUGINKMY_H 0008 /** @file 0009 * This file is Skrooge plugin for KMY import / export. 0010 * 0011 * @author Stephane MANKOWSKI / Guillaume DE BURE 0012 */ 0013 #include <qset.h> 0014 0015 #include "skgbankobject.h" 0016 #include "skgimportplugin.h" 0017 0018 class SKGUnitObject; 0019 class SKGAccountObject; 0020 class SKGCategoryObject; 0021 class SKGOperationObject; 0022 class SKGPayeeObject; 0023 class SKGObjectBase; 0024 class QDomDocument; 0025 class QDomElement; 0026 0027 /** 0028 * This file is Skrooge plugin for KMY import / export. 0029 */ 0030 class SKGImportPluginKmy : public SKGImportPlugin 0031 { 0032 Q_OBJECT 0033 Q_INTERFACES(SKGImportPlugin) 0034 0035 public: 0036 /** 0037 * Default constructor 0038 * @param iImporter the parent importer 0039 * @param iArg the arguments 0040 */ 0041 explicit SKGImportPluginKmy(QObject* iImporter, const QVariantList& iArg); 0042 0043 /** 0044 * Default Destructor 0045 */ 0046 ~SKGImportPluginKmy() override; 0047 0048 /** 0049 * To know if import is possible with this plugin 0050 */ 0051 bool isImportPossible() override; 0052 0053 /** 0054 * Import a file 0055 * @return an object managing the error. 0056 * @see SKGError 0057 */ 0058 SKGError importFile() override; 0059 0060 /** 0061 * To know if export is possible with this plugin 0062 * @return true or false 0063 */ 0064 bool isExportPossible() override; 0065 0066 0067 /** 0068 * Export a file 0069 * @return an object managing the error. 0070 * @see SKGError 0071 */ 0072 SKGError exportFile() override; 0073 0074 /** 0075 * Return the mime type filter 0076 * @return the mime type filter. Example: "*.csv|CSV file" 0077 */ 0078 QString getMimeTypeFilter() const override; 0079 0080 private: 0081 Q_DISABLE_COPY(SKGImportPluginKmy) 0082 0083 SKGError importSecurities(QDomElement& docElem); 0084 SKGError importPrices(QDomElement& docElem); 0085 SKGError importInstitutions(QMap<QString, SKGBankObject>& mapIdBank, QDomElement& docElem); 0086 SKGError importPayees(QMap<QString, SKGPayeeObject>& mapIdPayee, QDomElement& docElem); 0087 SKGError importTransactions(QDomElement& docElem, SKGAccountObject& kmymoneyTemporaryAccount, QMap<QString, SKGPayeeObject>& mapIdPayee); 0088 SKGError importBudget(QDomElement& docElem); 0089 SKGError importAccounts(SKGBankObject& bank, SKGAccountObject& kmymoneyTemporaryAccount, QMap<QString, SKGBankObject>& mapIdBank, QDomElement& docElem); 0090 SKGError exportHeader(QDomDocument& doc, QDomElement& root); 0091 SKGError exportSecurities(QDomDocument& doc, QDomElement& root, const QString& stdUnit); 0092 SKGError exportBudgets(QDomDocument& doc, QDomElement& root); 0093 SKGError exportTransactions(QDomDocument& doc, QDomElement& root, const QString& stdUnit); 0094 SKGError exportPayees(QDomDocument& doc, QDomElement& root); 0095 SKGError exportSchedules(QDomDocument& doc, QDomElement& root); 0096 SKGError exportInstitutions(QDomDocument& doc, QDomElement& root); 0097 SKGError exportCategories(QDomDocument& doc, QDomElement& accounts, const QString& stdUnit, QDomElement& accountIncome, QDomElement& accountExpense, int nbAccount); 0098 SKGError exportAccounts(QDomDocument& doc, QDomElement& root, const QString& stdUnit, QDomElement& accounts, QDomElement& accountIncome, QDomElement& accountExpense, int& nbAccounts); 0099 0100 0101 static SKGError exportOperation(const SKGOperationObject& iOperation, QDomDocument& iDoc, QDomElement& iTransaction); 0102 static QString kmyValue(double iValue); 0103 static double toKmyValue(const QString& iString); 0104 0105 static QString getKmyUniqueIdentifier(const SKGObjectBase& iObject); 0106 0107 static QSet<QString> m_opTreated; 0108 static QMap<QString, SKGUnitObject> m_mapIdUnit; 0109 static QMap<QString, SKGAccountObject> m_mapIdAccount; 0110 static QMap<QString, SKGCategoryObject> m_mapIdCategory; 0111 static QMap<QString, SKGPayeeObject> m_mapIdPayee; 0112 }; 0113 0114 #endif // SKGIMPORTPLUGINKMY_H