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