diff -r 8aa2bd9ba9e8 -r c9cdc15d3caf src/EditSupplier.cpp --- a/src/EditSupplier.cpp Mon Feb 14 20:58:07 2022 +0100 +++ b/src/EditSupplier.cpp Tue Feb 15 21:21:12 2022 +0100 @@ -17,21 +17,20 @@ #include "EditSupplier.h" #include "../ui/ui_EditSupplier.h" #include "bmsapp.h" -#include -#include EditSupplier::EditSupplier(int id, QWidget *parent) : QDialog(parent), ui(new Ui::EditSupplier) { QSqlQuery query; - qDebug() << Q_FUNC_INFO << id; + qDebug() << "EditSupplier record:" << id; ui->setupUi(this); + this->recno = id; if (id < 0) { - setWindowTitle( QString("BMSapp - Add new supplier")); + setWindowTitle(QString("BMSapp - Add new supplier")); } else { - setWindowTitle( QString("BMSapp - Edit supplier %1").arg(id)); + setWindowTitle(QString("BMSapp - Edit supplier %1").arg(id)); query.prepare("SELECT * FROM inventory_suppliers WHERE record = :recno"); query.bindValue(":recno", id); query.exec(); @@ -45,34 +44,85 @@ ui->webEdit->setText(query.value(6).toString()); ui->emailEdit->setText(query.value(7).toString()); ui->phoneEdit->setText(query.value(8).toString()); - ui->notesEdit->setText(query.value(9).toString()); + ui->notesEdit->setPlainText(query.value(9).toString()); } + connect(ui->notesEdit, SIGNAL(textChanged()), this, SLOT(onTextChanged())); } EditSupplier::~EditSupplier() { - qDebug() << Q_FUNC_INFO; + qDebug() << "EditSupplier closed"; delete ui; + emit entry_changed(); } void EditSupplier::onOKButtonClicked() { - qDebug() << Q_FUNC_INFO << "Ok, check for valid data"; + QSqlQuery query; + bool modified, valid; + + /* The notes field uses a signal textChanged() */ + modified = (ui->nameEdit->isModified() || ui->addressEdit->isModified() || ui->cityEdit->isModified() || + ui->zipEdit->isModified() || ui->countryEdit->isModified() || ui->webEdit->isModified() || + ui->emailEdit->isModified() || ui->phoneEdit->isModified() || this->textIsChanged); + valid = true; /* If there are errors in the form, show a message and do "return;" */ + if (ui->nameEdit->text().length() < 2) { +// QMessageBox msgBox; +// msgBox.setText("Name empty or too short."); +// msgBox.exec(); + return; + } - /* Save or insert the data */ + if (modified && valid) { + qDebug() << "EditSupplier do SQL"; + if (this->recno == -1) { + query.prepare("INSERT INTO inventory_suppliers SET name = :name, address = :address, city = :city, zip = :zip, " + "country = :country, website = :web, email = :email, phone = :phone, notes = :notes, uuid = :uuid"); + } else { + query.prepare("UPDATE inventory_suppliers SET name = :name, address = :address, city = :city, zip = :zip, " + "country = :country, website = :web, email = :email, phone = :phone, notes = :notes WHERE record = :recno"); + } + query.bindValue(":name", ui->nameEdit->text()); + query.bindValue(":address", ui->addressEdit->text()); + query.bindValue(":city", ui->cityEdit->text()); + query.bindValue(":zip", ui->zipEdit->text()); + query.bindValue(":country", ui->countryEdit->text()); + query.bindValue(":web", ui->webEdit->text()); + query.bindValue(":email", ui->emailEdit->text()); + query.bindValue(":phone", ui->phoneEdit->text()); + query.bindValue(":notes", ui->notesEdit->toPlainText()); + if (this->recno == -1) { + query.bindValue(":uuid", QUuid::createUuid().toString().mid(1, 36)); + } else { + query.bindValue(":recno", this->recno); + } + query.exec(); + if (query.lastError().isValid()) { + qDebug() << query.lastError(); + } - this->close(); - this->setResult(1); + this->close(); + this->setResult(1); + } else { + /* Not saving */ + this->close(); + this->setResult(0); + } +} + + +void EditSupplier::onTextChanged() +{ + this->textIsChanged = true; } void EditSupplier::onCancelButtonClicked() { - qDebug() << Q_FUNC_INFO; this->close(); this->setResult(0); }