#ifndef COMMODITYDATA_H
#define COMMODITYDATA_H

#include <QObject>
#include <QString>
#include <odb/core.hxx>
#include "commoditytypedata.h"
#include <QDecDouble.hh>
#include <QSharedDataPointer>
#include <enums.h>

#pragma db object
class CommodityData : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QString name READ name WRITE setName)
    Q_PROPERTY(QString shortName READ shortName WRITE setShortName)
    Q_PROPERTY(QString code READ code WRITE setCode)
    Q_PROPERTY(QSharedPointer<QObject> type READ type WRITE setType)
    Q_PROPERTY(QDecDouble price READ price WRITE setPrice)
    Q_PROPERTY(Enums::VatType vat READ vat WRITE setVat)
    Q_PROPERTY(int count READ count WRITE setCount)

public:
    CommodityData(QObject *parent = 0);

    int id() const;
    void setId(int id);

    QString name() const;
    void setName(const QString &name);

    QString shortName() const;
    void setShortName(const QString &shortName);

    QString code() const;
    void setCode(const QString &code);

    QSharedPointer<QObject> type() const;
    void setType(const QSharedPointer<QObject> &type);

    QDecDouble price() const;
    void setPrice(const QDecDouble &price);

    Enums::VatType vat() const;
    void setVat(const Enums::VatType &vat);

    int count() const;
    void setCount(int count);

private:
    friend class odb::access;
#pragma db id auto
    int m_id;
    QString m_name;
    QString m_shortName;
    QString m_code;
    QSharedPointer<CommodityTypeData> m_type;
    int m_price;
    Enums::VatType m_vat;
    int m_count;
};

#endif // COMMODITYDATA_H
