This commit is contained in:
Herwig Birke
2018-01-10 16:41:07 +01:00
parent af9e35927f
commit 23f9e1ec02
9 changed files with 346 additions and 30 deletions
+6 -1
View File
@@ -145,7 +145,8 @@ void cMainWindow::initDB()
query.exec("CREATE TABLE partlistitem ("
" id INTEGER PRIMARY KEY,"
" partlistID INTEGER REFERENCES partlist (id),"
" part_disttributorID INTEGER REFERENCES part_distributor (id),"
" partID INTEGER REFERENCES par (id),"
" distributorID INTEGER REFERENCES distributor (id),"
" replaceID INTEGER REFERENCES partlistitem (id),"
" reference STRING,"
" description TEXT,"
@@ -585,6 +586,8 @@ void cMainWindow::on_m_lpMenuPartlistNew_triggered()
ui->m_lpMainTab->addTab(lpNew, szNew);
ui->m_lpMainTab->setCurrentWidget(lpNew);
lpNew->setList(&m_distributorList, &m_partGroupList, &m_partList, &m_partDistributorList);
connect(lpNew, SIGNAL(partlistChanged(QWidget*)), this, SLOT(partlistChanged(QWidget*)));
}
@@ -633,6 +636,8 @@ void cMainWindow::on_m_lpMenuPartlistOpen_triggered()
lpNew->setMainTab(ui->m_lpMainTab);
ui->m_lpMainTab->addTab(lpNew, "INITIALIZING");
ui->m_lpMainTab->setCurrentWidget(lpNew);
lpNew->setList(&m_distributorList, &m_partGroupList, &m_partList, &m_partDistributorList);
lpNew->setPartlistID(id);
connect(lpNew, SIGNAL(partlistChanged(QWidget*)), this, SLOT(partlistChanged(QWidget*)));
+14 -4
View File
@@ -83,6 +83,19 @@ QString cPartDistributor::link()
}
cPartDistributor* cPartDistributorList::add(qint32 id)
{
cPartDistributor* lpPartDistributor = find(id);
if(lpPartDistributor)
return(lpPartDistributor);
lpPartDistributor = new cPartDistributor;
lpPartDistributor->setID(id);
append(lpPartDistributor);
return(lpPartDistributor);
}
cPartDistributor* cPartDistributorList::find(qint32 id)
{
for(int x = 0;x < count();x++)
{
@@ -90,8 +103,5 @@ cPartDistributor* cPartDistributorList::add(qint32 id)
return(at(x));
}
cPartDistributor* lpPartDistributor = new cPartDistributor;
lpPartDistributor->setID(id);
append(lpPartDistributor);
return(lpPartDistributor);
return(0);
}
+1
View File
@@ -50,6 +50,7 @@ class cPartDistributorList : public QList<cPartDistributor*>
{
public:
cPartDistributor* add(qint32 id);
cPartDistributor* find(qint32 id);
};
#endif // CPARTDISTRIBUTOR_H
+127
View File
@@ -0,0 +1,127 @@
#include "cpartlistitem.h"
cPartlistItem::cPartlistItem() :
m_id(-1),
m_partlistID(-1),
m_partID(-1),
m_distributorID(-1),
m_replaceID(-1),
m_szReference(""),
m_szDescription(""),
m_state(STATE_init),
m_dPrice(0.0)
{
}
void cPartlistItem::setID(const qint32& id)
{
m_id = id;
}
qint32 cPartlistItem::id()
{
return(m_id);
}
void cPartlistItem::setPartlistID(const qint32& id)
{
m_partlistID = id;
}
qint32 cPartlistItem::partlistID()
{
return(m_partlistID);
}
void cPartlistItem::setPartID(const qint32& id)
{
m_partID = id;
}
qint32 cPartlistItem::partID()
{
return(m_partID);
}
void cPartlistItem::setDistributorID(const qint32& id)
{
m_distributorID = id;
}
qint32 cPartlistItem::distributorID()
{
return(m_distributorID);
}
void cPartlistItem::setReplaceID(const qint32& id)
{
m_replaceID = id;
}
qint32 cPartlistItem::replaceID()
{
return(m_replaceID);
}
void cPartlistItem::setReference(const QString& szReference)
{
m_szReference = szReference;
}
QString cPartlistItem::reference()
{
return(m_szReference);
}
void cPartlistItem::setDescription(const QString& szDescription)
{
m_szDescription = szDescription;
}
QString cPartlistItem::description()
{
return(m_szDescription);
}
void cPartlistItem::setState(const cPartlistItem::STATE& state)
{
m_state = state;
}
cPartlistItem::STATE cPartlistItem::state()
{
return(m_state);
}
void cPartlistItem::setPrice(const qreal& price)
{
m_dPrice = price;
}
qreal cPartlistItem::price()
{
return(m_dPrice);
}
cPartlistItem* cPartlistItemList::add(qint32 id)
{
cPartlistItem* lpPartlistItem = find(id);
if(lpPartlistItem)
return(lpPartlistItem);
lpPartlistItem = new cPartlistItem;
lpPartlistItem->setID(id);
append(lpPartlistItem);
return(lpPartlistItem);
}
cPartlistItem* cPartlistItemList::find(qint32 id)
{
for(int x = 0;x < count();x++)
{
if(at(x)->id() == id)
return(at(x));
}
return(0);
}
+68
View File
@@ -0,0 +1,68 @@
#ifndef CPARTLISTITEM_H
#define CPARTLISTITEM_H
#include <QMetaType>
#include <QList>
class cPartlistItem
{
public:
enum STATE
{
STATE_init = 0,
STATE_ordered = 1,
STATE_received = 2,
};
cPartlistItem();
void setID(const qint32& id);
qint32 id();
void setPartlistID(const qint32& id);
qint32 partlistID();
void setPartID(const qint32& id);
qint32 partID();
void setDistributorID(const qint32& id);
qint32 distributorID();
void setReplaceID(const qint32& id);
qint32 replaceID();
void setReference(const QString& szReference);
QString reference();
void setDescription(const QString& szDescription);
QString description();
void setState(const STATE& state);
STATE state();
void setPrice(const qreal& price);
qreal price();
private:
qint32 m_id;
qint32 m_partlistID;
qint32 m_partID;
qint32 m_distributorID;
qint32 m_replaceID;
QString m_szReference;
QString m_szDescription;
STATE m_state;
qreal m_dPrice;
};
Q_DECLARE_METATYPE(cPartlistItem*)
class cPartlistItemList : public QList<cPartlistItem*>
{
public:
cPartlistItem* add(qint32 id);
cPartlistItem* find(qint32 id);
};
#endif // CPARTLISTITEM_H
+75 -2
View File
@@ -15,9 +15,16 @@ cPartlistWindow::cPartlistWindow(QWidget *parent) :
ui(new Ui::cPartlistWindow),
m_lpMainTab(0),
m_id(-1),
m_bSomethingChanged(false)
m_bSomethingChanged(false),
m_lpDistributorList(0),
m_lpPartGroupList(0),
m_lpPartList(0),
m_lpPartDistributorList(0)
{
ui->setupUi(this);
m_lpPartListModel = new QStandardItemModel(0, 3);
ui->m_lpPartList->setModel(m_lpPartListModel);
}
cPartlistWindow::~cPartlistWindow()
@@ -71,6 +78,38 @@ void cPartlistWindow::setPartlistID(const qint32& id)
m_lpMainTab->setTabText(m_lpMainTab->currentIndex(), query.value("name").toString());
partlistChanged(this);
}
query.prepare("SELECT id, partID, distributorID, replaceID, reference, description, state, price FROM partlistitem WHERE partlistID=:partlistID;");
query.bindValue(":partlistID", m_id);
if(!query.exec())
{
myDebug << query.lastError().text();
return;
}
while(query.next())
{
cPartlistItem* lpPartlistItem = m_partlistItemList.add(query.value("id").toInt());
lpPartlistItem->setPartlistID(m_id);
lpPartlistItem->setPartID(query.value("partID").toInt());
lpPartlistItem->setDistributorID(query.value("distributorID").toInt());
lpPartlistItem->setReplaceID(query.value("replaceID").toInt());
lpPartlistItem->setReference(query.value("reference").toString());
lpPartlistItem->setDescription(query.value("description").toString());
lpPartlistItem->setState((cPartlistItem::STATE)query.value("state").toInt());
lpPartlistItem->setPrice(query.value("price").toReal());
}
showPartList();
}
void cPartlistWindow::setList(cDistributorList* lpDistributorList, cPartGroupList* lpPartGroupList, cPartList* lpPartList, cPartDistributorList* lpPartDistributorList)
{
m_lpDistributorList = lpDistributorList;
m_lpPartGroupList = lpPartGroupList;
m_lpPartList = lpPartList;
m_lpPartDistributorList = lpPartDistributorList;
}
void cPartlistWindow::on_m_lpName_textChanged(const QString &arg1)
@@ -164,6 +203,40 @@ bool cPartlistWindow::saveAs()
return(save(m_id));
}
void cPartlistWindow::showPartList()
{
m_lpPartListModel->clear();
QStringList header;
header << tr("reference") << tr("part") << tr("distributor") << tr("state") << tr("price") << tr("description");
m_lpPartListModel->setHorizontalHeaderLabels(header);
for(int x = 0;x < m_partlistItemList.count();x++)
{
QList<QStandardItem*> lpItems;
cPartlistItem* lpPartlistItem = m_partlistItemList.at(x);
for(int z = 0;z < header.count();z++)
lpItems.append(new QStandardItem);
lpItems.at(0)->setText(lpPartlistItem->reference());
lpItems.at(1)->setText(m_lpPartList->find(lpPartlistItem->partID())->name());
if(lpPartlistItem->distributorID())
lpItems.at(2)->setText(m_lpDistributorList->find(lpPartlistItem->distributorID())->name());
//lpItems.at(3)->setText(lpPartlistItem->state());
lpItems.at(4)->setText(QString::number(lpPartlistItem->price(), 'f', 2));
lpItems.at(5)->setText(lpPartlistItem->description());
for(int z = 0;z < header.count();z++)
lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem), Qt::UserRole);
m_lpPartListModel->appendRow(lpItems);
}
for(int z = 0;z < header.count();z++)
ui->m_lpPartList->resizeColumnToContents(z);
}
bool cPartlistWindow::save(qint32 id)
{
QSqlQuery query;
@@ -194,6 +267,6 @@ bool cPartlistWindow::somethingChanged()
return(m_bSomethingChanged);
}
void cPartlistWindow::on_m_lpPartList_doubleClicked(const QModelIndex &index)
void cPartlistWindow::on_m_lpPartList_doubleClicked(const QModelIndex &/*index*/)
{
}
+37 -16
View File
@@ -1,8 +1,18 @@
#ifndef CPARTLISTWINDOW_H
#define CPARTLISTWINDOW_H
#include "cdistributor.h"
#include "cpartgroup.h"
#include "cpart.h"
#include "cpartdistributor.h"
#include "cpartlistitem.h"
#include <QWidget>
#include <QTabWidget>
#include <QStandardItemModel>
namespace Ui {
class cPartlistWindow;
@@ -16,32 +26,43 @@ public:
explicit cPartlistWindow(QWidget *parent = 0);
~cPartlistWindow();
void setMainTab(QTabWidget* lpMainTab);
void setMainTab(QTabWidget* lpMainTab);
void setPartlistName(const QString& szPartlistName);
QString partlistName();
void setPartlistName(const QString& szPartlistName);
QString partlistName();
void setPartlistID(const qint32& id);
void setPartlistID(const qint32& id);
void setList(cDistributorList* lpDistributorList, cPartGroupList* lpPartGroupList, cPartList* lpPartList, cPartDistributorList* lpPartDistributorList);
bool close();
bool save();
bool saveAs();
bool close();
bool save();
bool saveAs();
bool somethingChanged();
bool somethingChanged();
private slots:
void on_m_lpName_textChanged(const QString &arg1);
void on_m_lpPartList_doubleClicked(const QModelIndex &index);
void on_m_lpName_textChanged(const QString &arg1);
void on_m_lpPartList_doubleClicked(const QModelIndex &index);
signals:
void partlistChanged(QWidget* lpWidget) const;
void partlistChanged(QWidget* lpWidget) const;
private:
Ui::cPartlistWindow *ui;
QTabWidget* m_lpMainTab;
qint32 m_id;
bool m_bSomethingChanged;
Ui::cPartlistWindow* ui;
QTabWidget* m_lpMainTab;
QStandardItemModel* m_lpPartListModel;
qint32 m_id;
bool m_bSomethingChanged;
bool save(qint32 id);
cDistributorList* m_lpDistributorList;
cPartGroupList* m_lpPartGroupList;
cPartList* m_lpPartList;
cPartDistributorList* m_lpPartDistributorList;
cPartlistItemList m_partlistItemList;
void showPartList();
bool save(qint32 id);
};
#endif // CPARTLISTWINDOW_H
+14 -5
View File
@@ -223,10 +223,10 @@ void cPartWindow::onDelete()
continue;
QSqlQuery query;
QString szQuery;
szQuery = QString("SELECT * FROM partlistitem WHERE partID = %1;").arg(lpPart->id());
if(!query.exec(szQuery))
query.prepare("SELECT * FROM partlistitem WHERE partID = :partID;");
query.bindValue(":partID", lpPart->id());
if(!query.exec())
{
myDebug << query.lastError().text();
continue;
@@ -241,8 +241,17 @@ void cPartWindow::onDelete()
if(QMessageBox::question(this, "DELETE", QString("Are you sure to delete part '%1'?").arg(lpPart->name())) == QMessageBox::No)
continue;
szQuery = QString("DELETE FROM part WHERE id=%1;").arg(lpPart->id());
if(!query.exec(szQuery))
query.prepare("DELETE FROM part_distributor WHERE partID = :partID;");
query.bindValue(":partID", lpPart->id());
if(!query.exec())
{
myDebug << query.lastError().text();
continue;
}
query.prepare("DELETE FROM part WHERE id=:partID;");
query.bindValue(":partID", lpPart->id());
if(!query.exec())
{
myDebug << query.lastError().text();
continue;
+4 -2
View File
@@ -37,7 +37,8 @@ SOURCES += \
cparteditdialog.cpp \
cpartdistributor.cpp \
clabel.cpp \
cpartdistributoreditdialog.cpp
cpartdistributoreditdialog.cpp \
cpartlistitem.cpp
HEADERS += \
cmainwindow.h \
@@ -52,7 +53,8 @@ HEADERS += \
cparteditdialog.h \
cpartdistributor.h \
clabel.h \
cpartdistributoreditdialog.h
cpartdistributoreditdialog.h \
cpartlistitem.h
FORMS += \
cmainwindow.ui \