00001 #ifndef DATAACCOUNTINGRECORD_H
00002 #define DATAACCOUNTINGRECORD_H
00003
00004 #include <QString>
00005 #include <QList>
00006 #include <QDate>
00007 #include <QDomElement>
00008 #include <QDomDocument>
00009 #include <QPair>
00010 #include <QObject>
00011
00013
00017 class DataAccountingRecord: public QObject
00018 {
00019 Q_OBJECT
00020
00021 public:
00022 QList<QPair<int, double> *> *debits() { return &debitList; }
00023 QList<QPair<int, double> *> *credits() { return &creditList; }
00024 QString documentNumber() { return documentNumberValue; }
00025 QDate date() { return dateValue; }
00026 void setDate(QString date) { dateValue = QDate::fromString(date, "dd.MM.yyyy"); emit changed(); }
00027 void setDocumentNumberValue(QString accountingNumber) { documentNumberValue = accountingNumber; emit changed(); }
00028 bool isEmpty() { return empty; }
00029
00031 void hash(unsigned int &startValue);
00033 bool loadDataNode(const QDomNode data);
00035 QDomElement saveDataNode(QDomDocument *xml);
00036
00037 DataAccountingRecord();
00038 ~DataAccountingRecord();
00039
00040 public slots:
00041 void dataChanged() { emit changed(); }
00042
00043 signals:
00044 void changed();
00045
00046 private:
00047 QString documentNumberValue;
00048 QDate dateValue;
00049 bool empty;
00050
00051 QList<QPair<int, double> *> debitList;
00052 QList<QPair<int, double> *> creditList;
00053
00054 bool loadSubrecords(const QDomNode data, QList<QPair<int, double> *> *targetList);
00055 void saveSubrecords(QDomDocument *xml, QDomElement *parent, QList<QPair<int, double> *> *records);
00056 };
00057
00058 #endif // DATAACCOUNTINGRECORD_H