00001 #ifndef ACCOUNTINGMODEL_H
00002 #define ACCOUNTINGMODEL_H
00003
00004 #include <QAbstractTableModel>
00005 #include "../Data/dataexercise.h"
00006 #include <QStringList>
00007
00014
00015
00016 class AccountingModel : public QAbstractTableModel
00017 {
00018 public:
00019 AccountingModel(QObject *parent = 0);
00020
00021 ~AccountingModel();
00022
00023 int rowCount(const QModelIndex &parent = QModelIndex()) const;
00024 int columnCount(const QModelIndex &parent = QModelIndex()) const;
00025
00026 QStringList data(const int row) const;
00027 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
00028 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
00029
00030 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
00031 Qt::ItemFlags flags(const QModelIndex &index) const;
00032
00033 bool insertRows(int position, int rows, const QModelIndex &index = QModelIndex());
00034 bool removeRows(int position, int rows, const QModelIndex &index = QModelIndex());
00035 void addRow(QString accountingNumber, QString date, QString contraAccount, QString debit, QString credit);
00036
00037 bool insertColumns(int position, int columns, const QModelIndex &index=QModelIndex());
00038 void addColumn(int position, QString columnName);
00039
00040 double debitSum();
00041 double creditSum();
00042
00043 private:
00044 QStringList p_headers;
00045 QList<QStringList> p_entries;
00046
00047 DataExercise *exercise;
00048 int accountNumber;
00049 QList<QVariantList*> table;
00050
00051 void buildTable();
00052 void appendRecord(DataAccountingRecord *currentAccountingRecord, double amount);
00053 };
00054
00055 #endif // ACCOUNTINGMODEL_H