00001 #ifndef COSTTYPEMODEL_H 00002 #define COSTTYPEMODEL_H 00003 00004 #include <QAbstractTableModel> 00005 #include <QStringList> 00006 #include <QDomElement> 00007 #include <QPointer> 00008 #include "abstractmodel.h" 00009 #include "../Data/datadefinitions.h" 00010 class OwnCapitalCalculationModel; 00011 00012 class CostTypeModel : public QAbstractTableModel, public AbstractModel 00013 { 00014 Q_OBJECT 00015 00016 public: 00017 CostTypeModel(uint fileid, uint type, QString documentname, QObject *parent = 0); 00018 void setOwnCapitalModel(QPointer<OwnCapitalCalculationModel> owncapital); 00019 00020 void setModified(bool); 00021 bool isModified(); 00022 00023 int rowCount(const QModelIndex &parent) const; 00024 int columnCount(const QModelIndex &parent) const; 00025 00026 QVariant data(const QModelIndex &index, int role) const; 00027 QStringList data(const int row) const; 00028 QStringList dataFromRowId(const int row) const; 00029 00030 int rowFromRowId(const int row) const; 00031 QVariant headerData(int section, Qt::Orientation orientation, int role) const; 00032 Qt::ItemFlags flags(const QModelIndex &index) const; 00033 bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole); 00034 00035 bool insertRows(int position, int rows, const QModelIndex &index=QModelIndex()); 00036 bool removeRows(int position, int rows, const QModelIndex &index=QModelIndex()); 00037 void removeRowById(int rowid); 00038 00039 QList<QStringList> getList(); 00040 00041 double getCompleteSum() const; 00042 double getProfitLossSum(); 00043 00044 void refreshSums(); 00045 00046 bool searchModel(QString entry); 00047 int rowIdIndex(QString row); 00048 00049 virtual QDomElement documentNode(); 00050 virtual bool loadDocument(const QDomElement file); 00051 00052 void setLastRowId(uint rowid); 00053 00054 bool reassessValueBased(QString position, int type, QString pal, QString replacementvalue, QString decliningbalance, QString usefuleconomiclife, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00055 bool reassessIndexBased(QString position, int type, QString pal, QString decliningbalance, QString usefuleconomiclife, QString purchasePrice, QString purchaseIndex, QString currentIndex, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00056 bool delimitAmount(QString position, int type, QString incomestatement, QString amounttodelimit, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00057 bool acceptCosts(QString position, int type, QString incomestatement, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00058 bool normalize(QString position, int type, QString averagecosts, QString actualcosts, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00059 bool wages(QString position, int type, QString wages, QString specialpayment, QString legaltaxes, QString paymentbyresult, QString directcostpart, QString nonwagelaborcosts, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00060 bool incidentialInterest(QString position, int ty, QString incomestatement, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00061 bool interestOnOwnBoundCapital(QString position, int ty, QString incomestatement, QString borrowed, QString owncapital, QString interestrate, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00062 bool interestOnOperatingAssets(QString position, int ty, QString incomeStatement, QString interestRateOwnBoundCapital, QString operatingAssets, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00063 bool completeCostsEmployersSalary(QString position, int type, QString salarywithouttaxes, QString monthsforcalculation, QString riskpremium, int affectedRow = -1, QModelIndexList affectedRows = QModelIndexList()); 00064 00065 double revenues; 00066 00067 private: 00068 bool addEditEntry(QString position, QString pal, QString transition, QString costs, QString costtype, int type, QString editoptions, int rowid, int associationid, bool editExistingRow = false, QModelIndex affectedRow = QModelIndex()); 00069 bool alreadyContainsRow(QString position); 00070 00071 uint lastid; 00072 QList<QStringList> entries; 00073 bool modified; 00074 QPointer<OwnCapitalCalculationModel> ownCapitalModel; 00075 00076 signals: 00077 void sendingOwnCapitalNode(const QDomElement); 00078 void changedDataUpdateProxies(); 00079 void rowEdited(int rowid); 00080 void rowRemoved(int rowid); 00081 }; 00082 00083 #endif