.
This commit is contained in:
@@ -105,3 +105,28 @@ cPartDistributor* cPartDistributorList::find(qint32 id)
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
cPartDistributor* cPartDistributorList::find(qint32 partID, qint32 distributorID)
|
||||
{
|
||||
for(int x = 0;x < count();x++)
|
||||
{
|
||||
if(at(x)->part()->id() == partID && at(x)->distributor()->id() == distributorID)
|
||||
return(at(x));
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
cPartDistributor* cPartDistributorList::find(cPart* lpPart, cDistributor* lpDistributor)
|
||||
{
|
||||
if(!lpPart || !lpDistributor)
|
||||
return(0);
|
||||
|
||||
for(int x = 0;x < count();x++)
|
||||
{
|
||||
if(at(x)->part() == lpPart && at(x)->distributor() == lpDistributor)
|
||||
return(at(x));
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -51,6 +51,8 @@ class cPartDistributorList : public QList<cPartDistributor*>
|
||||
public:
|
||||
cPartDistributor* add(qint32 id);
|
||||
cPartDistributor* find(qint32 id);
|
||||
cPartDistributor* find(qint32 partID, qint32 distributorID);
|
||||
cPartDistributor* find(cPart* lpPart, cDistributor* lpDistributor);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cPartDistributorList*)
|
||||
|
||||
@@ -32,18 +32,18 @@ QWidget* cPartListItemDelegate::createEditor( QWidget *parent, const QStyleOptio
|
||||
}
|
||||
case 3: // distributor
|
||||
{
|
||||
cPartDistributorList* lpList = qvariant_cast<cPartDistributorList*>(index.data(Qt::UserRole+1));
|
||||
cPartDistributorList* lpList = qvariant_cast<cPartDistributorList*>(index.data(Qt::UserRole+2));
|
||||
QComboBox* lpComboBox = new QComboBox(parent);
|
||||
cPartlistItem* lpItem = qvariant_cast<cPartlistItem*>(index.data(Qt::UserRole));
|
||||
qint32 partID = qvariant_cast<qint32>(index.data(Qt::UserRole+1));
|
||||
|
||||
if(!lpItem || !lpList)
|
||||
if(!lpList)
|
||||
return(0);
|
||||
|
||||
for(int x = 0;x < lpList->count();x++)
|
||||
{
|
||||
cPartDistributor* lpPartDistributor = lpList->at(x);
|
||||
|
||||
if(lpPartDistributor->part()->id() == lpItem->partID())
|
||||
if(lpPartDistributor->part()->id() == partID)
|
||||
lpComboBox->addItem(lpPartDistributor->distributor()->name(), QVariant::fromValue(lpPartDistributor));
|
||||
}
|
||||
return(lpComboBox);
|
||||
@@ -145,7 +145,7 @@ void cPartListItemDelegate::setModelData ( QWidget *editor, QAbstractItemModel *
|
||||
cPartDistributor* lpPartDistributor = qvariant_cast<cPartDistributor*>(lpComboBox->currentData());
|
||||
|
||||
model->setData(index, lpComboBox->currentText(), Qt::EditRole);
|
||||
model->setData(index, QVariant::fromValue(lpPartDistributor), Qt::UserRole);
|
||||
model->setData(index, QVariant::fromValue(lpPartDistributor), Qt::UserRole+1);
|
||||
QStandardItemModel* lpModel = (QStandardItemModel*)index.model();
|
||||
QStandardItem* lpItem = lpModel->itemFromIndex(lpModel->index(index.row(), 5));
|
||||
lpItem->setText(QString::number(lpPartDistributor->price(), 'f', 2));
|
||||
|
||||
@@ -58,6 +58,18 @@ void cPartlistItemEditDialog::on_m_lpPartList_currentIndexChanged(int /*index*/)
|
||||
fillDistributorList();
|
||||
}
|
||||
|
||||
void cPartlistItemEditDialog::on_m_lpDistributorList_currentIndexChanged(int /*index*/)
|
||||
{
|
||||
cPart* lpPart = qvariant_cast<cPart*>(ui->m_lpPartList->currentData(Qt::UserRole));
|
||||
cDistributor* lpDistributor = qvariant_cast<cDistributor*>(ui->m_lpDistributorList->currentData(Qt::UserRole));
|
||||
cPartDistributor* lpPartDistributor = m_lpPartDistributorList->find(lpPart, lpDistributor);
|
||||
|
||||
if(!lpPartDistributor)
|
||||
ui->m_lpPrice->setValue(0.0);
|
||||
else
|
||||
ui->m_lpPrice->setValue(lpPartDistributor->price());
|
||||
}
|
||||
|
||||
void cPartlistItemEditDialog::fillDistributorList()
|
||||
{
|
||||
ui->m_lpDistributorList->clear();
|
||||
@@ -72,8 +84,38 @@ void cPartlistItemEditDialog::fillDistributorList()
|
||||
for(int x = 0;x < m_lpPartDistributorList->count();x++)
|
||||
{
|
||||
if(lpPart->id() == m_lpPartDistributorList->at(x)->part()->id())
|
||||
ui->m_lpDistributorList->addItem(m_lpPartDistributorList->at(x)->distributor()->name(), QVariant::fromValue(m_lpPartDistributorList->at(x)));
|
||||
ui->m_lpDistributorList->addItem(m_lpPartDistributorList->at(x)->distributor()->name(), QVariant::fromValue(m_lpPartDistributorList->at(x)->distributor()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString cPartlistItemEditDialog::reference()
|
||||
{
|
||||
return(ui->m_lpReference->toPlainText());
|
||||
}
|
||||
|
||||
cPart* cPartlistItemEditDialog::part()
|
||||
{
|
||||
return(qvariant_cast<cPart*>(ui->m_lpPartList->currentData(Qt::UserRole)));
|
||||
}
|
||||
|
||||
cDistributor* cPartlistItemEditDialog::distributor()
|
||||
{
|
||||
return(qvariant_cast<cDistributor*>(ui->m_lpDistributorList->currentData(Qt::UserRole)));
|
||||
}
|
||||
|
||||
QString cPartlistItemEditDialog::state()
|
||||
{
|
||||
return(ui->m_lpOrderState->currentText());
|
||||
}
|
||||
|
||||
qreal cPartlistItemEditDialog::price()
|
||||
{
|
||||
return(ui->m_lpPrice->value());
|
||||
}
|
||||
|
||||
QString cPartlistItemEditDialog::description()
|
||||
{
|
||||
return(ui->m_lpDescription->toPlainText());
|
||||
}
|
||||
|
||||
@@ -25,8 +25,16 @@ public:
|
||||
|
||||
void setList(cDistributorList* lpDistributorList, cPartGroupList* lpPartGroupList, cPartList* lpPartList, cPartDistributorList* lpPartDistributorList);
|
||||
void setValues(const QString& szReference, const QString& szGroup, const QString& szPart, const QString& szDistributor, const QString& szState, const qreal& dPrice, const QString& szDescription);
|
||||
|
||||
QString reference();
|
||||
cPart* part();
|
||||
cDistributor* distributor();
|
||||
QString state();
|
||||
qreal price();
|
||||
QString description();
|
||||
private slots:
|
||||
void on_m_lpPartList_currentIndexChanged(int index);
|
||||
void on_m_lpPartList_currentIndexChanged(int index);
|
||||
void on_m_lpDistributorList_currentIndexChanged(int index);
|
||||
|
||||
private:
|
||||
Ui::cPartlistItemEditDialog* ui;
|
||||
|
||||
@@ -26,7 +26,11 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QDoubleSpinBox" name="m_lpPrice"/>
|
||||
<widget class="QDoubleSpinBox" name="m_lpPrice">
|
||||
<property name="maximum">
|
||||
<double>9999999.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
@@ -120,6 +124,15 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>m_lpPartList</tabstop>
|
||||
<tabstop>m_lpDistributorList</tabstop>
|
||||
<tabstop>m_lpPrice</tabstop>
|
||||
<tabstop>m_lpOrderState</tabstop>
|
||||
<tabstop>m_lpReplacement</tabstop>
|
||||
<tabstop>m_lpReference</tabstop>
|
||||
<tabstop>m_lpDescription</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
|
||||
+116
-2
@@ -229,8 +229,12 @@ void cPartlistWindow::showPartList()
|
||||
lpItems.at(0)->setText(lpPartlistItem->reference());
|
||||
lpItems.at(1)->setText(m_lpPartList->find(lpPartlistItem->partID())->partGroup()->name());
|
||||
lpItems.at(2)->setText(m_lpPartList->find(lpPartlistItem->partID())->name());
|
||||
lpItems.at(2)->setData(lpPartlistItem->partID(), Qt::UserRole);
|
||||
if(lpPartlistItem->distributorID())
|
||||
{
|
||||
lpItems.at(3)->setText(m_lpDistributorList->find(lpPartlistItem->distributorID())->name());
|
||||
lpItems.at(3)->setData(QVariant::fromValue(lpPartlistItem->distributorID()), Qt::UserRole);
|
||||
}
|
||||
lpItems.at(4)->setText(lpPartlistItem->stateString());
|
||||
lpItems.at(5)->setText(QString::number(lpPartlistItem->price(), 'f', 2));
|
||||
lpItems.at(5)->setTextAlignment(Qt::AlignRight);
|
||||
@@ -238,8 +242,8 @@ void cPartlistWindow::showPartList()
|
||||
|
||||
for(int z = 0;z < header.count();z++)
|
||||
{
|
||||
lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem), Qt::UserRole);
|
||||
lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+1);
|
||||
lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem->partID()), Qt::UserRole+1);
|
||||
lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+2);
|
||||
}
|
||||
|
||||
m_lpPartListModel->appendRow(lpItems);
|
||||
@@ -271,6 +275,39 @@ bool cPartlistWindow::save(qint32 id)
|
||||
return(false);
|
||||
}
|
||||
|
||||
for(int x = 0;x < m_lpPartListModel->rowCount();x++)
|
||||
{
|
||||
QStandardItem* lpReferenceItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 0));
|
||||
QStandardItem* lpPartItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 2));
|
||||
QStandardItem* lpDistributorItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 3));
|
||||
QStandardItem* lpStateItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 4));
|
||||
QStandardItem* lpPriceItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 5));
|
||||
QStandardItem* lpDescriptionItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 6));
|
||||
|
||||
QSqlQuery query;
|
||||
cDistributor* lpDistributor = m_lpDistributorList->find(lpDistributorItem->text());
|
||||
|
||||
query.prepare("INSERT INTO partlistitem (partlistID, partID, distributorID, replaceID, reference, description, state, price) VALUES (:partlistID, :partID, :distributorID, :replaceID, :reference, :description, :state, :price);");
|
||||
|
||||
query.bindValue(":partlistID", id);
|
||||
query.bindValue(":partID", qvariant_cast<qint32>(lpPartItem->data(Qt::UserRole+1)));
|
||||
if(!lpDistributor)
|
||||
query.bindValue(":distributorID", QVariant::Int);
|
||||
else
|
||||
query.bindValue(":distributorID", lpDistributor->id());
|
||||
query.bindValue(":replaceID", QVariant::Int);
|
||||
query.bindValue(":reference", lpReferenceItem->text());
|
||||
query.bindValue(":state", lpStateItem->text());
|
||||
query.bindValue(":description", lpDescriptionItem->text());
|
||||
query.bindValue(":price", lpPriceItem->text().toDouble());
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
@@ -288,6 +325,7 @@ bool cPartlistWindow::somethingSelected()
|
||||
|
||||
void cPartlistWindow::on_m_lpPartList_doubleClicked(const QModelIndex &/*index*/)
|
||||
{
|
||||
onPartEdit();
|
||||
}
|
||||
|
||||
void cPartlistWindow::on_m_lpPartList_clicked(const QModelIndex &index)
|
||||
@@ -321,7 +359,43 @@ void cPartlistWindow::onPartAdd()
|
||||
return;
|
||||
}
|
||||
|
||||
QString szReference = lpDialog->reference();
|
||||
cPart* lpPart = lpDialog->part();
|
||||
cDistributor* lpDistributor = lpDialog->distributor();
|
||||
QString szState = lpDialog->state();
|
||||
qreal dPrice = lpDialog->price();
|
||||
QString szDescription = lpDialog->description();
|
||||
|
||||
QList<QStandardItem*> lpItems;
|
||||
|
||||
for(int z = 0;z < m_lpPartListModel->columnCount();z++)
|
||||
lpItems.append(new QStandardItem);
|
||||
|
||||
lpItems.at(0)->setText(szReference.split("\n").join(", "));
|
||||
if(lpPart)
|
||||
{
|
||||
lpItems.at(1)->setText(lpPart->partGroup()->name());
|
||||
lpItems.at(2)->setText(lpPart->name());
|
||||
lpItems.at(2)->setData(lpPart->id(), Qt::UserRole);
|
||||
}
|
||||
if(lpDistributor)
|
||||
lpItems.at(3)->setText(lpDistributor->name());
|
||||
lpItems.at(4)->setText(szState);
|
||||
lpItems.at(5)->setText(QString::number(dPrice, 'f', 2));
|
||||
lpItems.at(5)->setTextAlignment(Qt::AlignRight);
|
||||
lpItems.at(6)->setText(szDescription);
|
||||
|
||||
for(int z = 0;z < m_lpPartListModel->columnCount();z++)
|
||||
{
|
||||
lpItems.at(z)->setData(QVariant::fromValue(lpPart->id()), Qt::UserRole+1);
|
||||
lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+2);
|
||||
}
|
||||
|
||||
m_lpPartListModel->appendRow(lpItems);
|
||||
|
||||
delete lpDialog;
|
||||
|
||||
partlistChanged(this);
|
||||
}
|
||||
|
||||
void cPartlistWindow::onPartEdit()
|
||||
@@ -345,9 +419,49 @@ void cPartlistWindow::onPartEdit()
|
||||
return;
|
||||
}
|
||||
|
||||
QString szReference = lpDialog->reference();
|
||||
cPart* lpPart = lpDialog->part();
|
||||
cDistributor* lpDistributor = lpDialog->distributor();
|
||||
QString szState = lpDialog->state();
|
||||
qreal dPrice = lpDialog->price();
|
||||
QString szDescription = lpDialog->description();
|
||||
|
||||
QList<QStandardItem*> lpItems;
|
||||
|
||||
lpReferenceItem->setText(szReference.split("\n").join(", "));
|
||||
if(lpPart)
|
||||
{
|
||||
lpPartGroupItem->setText(lpPart->partGroup()->name());
|
||||
lpPartItem->setText(lpPart->name());
|
||||
}
|
||||
else
|
||||
{
|
||||
lpPartGroupItem->setText("");
|
||||
lpPartItem->setText("");
|
||||
}
|
||||
if(lpDistributor)
|
||||
lpDistributorItem->setText(lpDistributor->name());
|
||||
else
|
||||
lpDistributorItem->setText("");
|
||||
lpStateItem->setText(szState);
|
||||
lpPriceItem->setText(QString::number(dPrice, 'f', 2));
|
||||
lpDescriptionItem->setText(szDescription);
|
||||
|
||||
delete lpDialog;
|
||||
|
||||
partlistChanged(this);
|
||||
}
|
||||
|
||||
void cPartlistWindow::onPartDelete()
|
||||
{
|
||||
QStandardItem* lpItem = m_lpPartListModel->itemFromIndex(ui->m_lpPartList->selectionModel()->selectedRows().at(0));
|
||||
if(!lpItem)
|
||||
return;
|
||||
|
||||
if(QMessageBox::question(this, "DELETE", QString("Are you sure to delete this entry?")) == QMessageBox::No)
|
||||
return;
|
||||
|
||||
m_lpPartListModel->removeRow(lpItem->row());
|
||||
|
||||
partlistChanged(this);
|
||||
}
|
||||
|
||||
@@ -97,6 +97,9 @@
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::EditKeyPressed</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
Reference in New Issue
Block a user