/* Diese Datei ist Teil von pmv-client * * pmv-client ist Freie Software: Sie können es unter den Bedingungen * der GNU General Public License, wie von der Free Software Foundation, * Version 3 der Lizenz weiter verteilen und/oder modifizieren. * * Dieses Programm wird in der Hoffnung bereitgestellt, dass es nützlich sein * wird, jedoch OHNE JEDE GEWÄHR,; sogar ohne die implizite Gewähr der * MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. * Siehe die GNU General Public License für weitere Einzelheiten. * * Sie sollten eine Kopie der GNU General Public License zusammen mit diesem * Programm erhalten haben. Wenn nicht, siehe . * * SPDX-License-Identifier: GPL-3.0-only */ #include "editdialog.h" #include "ui_editdialog.h" #include #include #include #include #include EditDialog::EditDialog(QWidget *parent, int nummer) : QDialog(parent), ui(new Ui::EditDialog) { ui->setupUi(this); ui->buttonBox->button(QDialogButtonBox::Close)->setText("Schließen"); ui->buttonBox->button(QDialogButtonBox::Save)->setText("Speichern"); // Mahnstatus initialisieren QStringList mahnstatuslist = {"0", "1", "20", "30"}; // Bedeutung noch unbekannt ui->comboBox_mahnstatus->insertItems(0, mahnstatuslist); this->mitgliednr = nummer; QSqlQuery qry; qry.prepare("SELECT nr, vorname, nachname, nickname, strasse, plz, ort," " email, telefon, geburtsdatum, eintrittsdatum, austrittsdatum," " staatsang, schwebend, stimmberechtigt, status " "FROM mitglied WHERE nr=:nr"); qry.bindValue(":nr", nummer); qry.exec(); qry.first(); ui->lineEdit_nr->setText(qry.value("nr").toString()); ui->lineEdit_vorname->setText(qry.value("vorname").toString()); ui->lineEdit_nachname->setText(qry.value("nachname").toString()); ui->dateEdit_geburtstag->setDate(qry.value("geburtsdatum").toDate()); ui->lineEdit_nick->setText(qry.value("nickname").toString()); ui->lineEdit_email->setText(qry.value("email").toString()); ui->lineEdit_telefon->setText(qry.value("telefon").toString()); ui->lineEdit_plz->setText(qry.value("plz").toString()); // TODO Führende Nullen beachten! ui->lineEdit_ort->setText(qry.value("ort").toString()); ui->lineEdit_strasse->setText(qry.value("strasse").toString()); ui->lineEdit_staatsang->setText(qry.value("staatsang").toString()); ui->dateEdit_eintritt->setDate(qry.value("eintrittsdatum").toDate()); // TODO 01.01.2006 entspricht "kein Austrittsdatum" n/a if (ui->dateEdit_austritt->minimumDate() == qry.value("austrittsdatum").toDate()) { } else { ui->dateEdit_austritt->setDate(qry.value("austrittsdatum").toDate()); } ui->checkBox_schwebend->setCheckState(qry.value("schwebend").toBool() ? Qt::Checked : Qt::Unchecked); ui->checkBox_stimmberechtigt->setCheckState(qry.value("stimmberechtigt").toBool() ? Qt::Checked : Qt::Unchecked); // Status-Radiobuttons QStringList statusOptions = {"aktiv", "ruhend", "ausgetreten"}; switch(statusOptions.indexOf(qry.value("status").toString())) { case 0: ui->radioButton_aktiv->setChecked(true); break; case 1: ui->radioButton_ruhend->setChecked(true); break; case 2: ui->radioButton_ausgetreten->setChecked(true); break; } qry.finish(); // TODO Die Sichtbarkeit der Beitragsdaten hängt von den Berechtigungen ab qry.prepare("SELECT beitrag, mahndatum, reduziert, reduziert_bis " "FROM beitrag WHERE mitgliednr=:nr"); qry.bindValue(":nr", nummer); qry.exec(); qry.first(); // TODO Datensätze gefunden? if (qry.isValid()) { ui->lineEdit_beitrag->setText(qry.value("beitrag").toString()); ui->dateEdit_mdatum->setDate(qry.value("mahndatum").toDate()); ui->dateEdit_rdatum->setDate(qry.value("reduziert_bis").toDate()); ui->checkBox_reduziert->setCheckState(qry.value("reduziert").toBool() ? Qt::Checked : Qt::Unchecked); } else { QSqlQuery qrynew; qrynew.prepare("INSERT INTO beitrag (mitgliednr, beitrag) VALUES (:nr, :beitrag)"); qrynew.bindValue(":nr", nummer); qrynew.bindValue(":beitrag", 72); // TODO Globale Variable if (!qrynew.exec()) { qDebug() << qrynew.lastError(); } } qry.finish(); // TODO Berechtigungen für die einzelnen Buchungen sind vmtl. noch eine Stufe // "höher" in den Berechtigungen einzustufen. model = new QSqlTableModel(this); model->setTable("buchung"); model->setFilter(QString("mitgliednr=%1").arg(nummer)); model->setSort(2, Qt::DescendingOrder); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->setHeaderData(0, Qt::Horizontal, "ID"); model->setHeaderData(1, Qt::Horizontal, "Mitglied-Nr."); model->setHeaderData(2, Qt::Horizontal, "Datum"); model->setHeaderData(3, Qt::Horizontal, "Soll"); model->setHeaderData(4, Qt::Horizontal, "Ist"); model->setHeaderData(5, Qt::Horizontal, "Jahr"); // model->setSort(0, Qt::AscendingOrder); ui->tableView_Buchung->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableView_Buchung->setModel(model); ui->tableView_Buchung->setColumnHidden(0, true); ui->tableView_Buchung->setColumnHidden(1, true); model->select(); } EditDialog::~EditDialog() { delete ui; } void EditDialog::on_buttonBox_accepted() { // TODO Dirty-Prüfung um nur geänderte Felder zurückzuschreiben QSqlQuery qry; qry.prepare("UPDATE mitglied SET" " vorname=:vorname, nachname=:nachname, nickname=:nick," " email=:email, telefon=:telefon, strasse=:str, ort=:ort, plz=:plz," " geburtsdatum=:geburtsdatum, eintrittsdatum=:edatum, austrittsdatum=:adatum," " schwebend=:schwebend, stimmberechtigt=:stimmberechtigt, status=:status " "WHERE nr=:nr"); // TODO Änderung der Mitgliedsmummer erfordert besondere Beachtung? //int nrneu = ui->lineEdit_nr->text().toInt(); //if (nrneu != this->mitgliednr) { // qry.bindValue(":nrneu", nrneu); //} qry.bindValue(":nr", this->mitgliednr); qry.bindValue(":vorname", ui->lineEdit_vorname->text()); qry.bindValue(":nachname", ui->lineEdit_nachname->text()); qry.bindValue(":nick", ui->lineEdit_nick->text()); qry.bindValue(":email", ui->lineEdit_email->text()); qry.bindValue(":telefon", ui->lineEdit_telefon->text()); qry.bindValue(":str", ui->lineEdit_strasse->text()); qry.bindValue(":plz", ui->lineEdit_plz->text().toUInt()); qry.bindValue(":ort", ui->lineEdit_ort->text()); qry.bindValue(":edatum", ui->dateEdit_eintritt->date()); qry.bindValue(":geburtsdatum", ui->dateEdit_geburtstag->date()); if ( ui->dateEdit_austritt->date() == ui->dateEdit_austritt->minimumDate()) { qry.bindValue(":adatum", QVariant(QVariant::String)); // NULL erzeugen } else { qry.bindValue(":adatum", ui->dateEdit_austritt->date()); } qry.bindValue(":schwebend", ui->checkBox_schwebend->isChecked()); qry.bindValue(":stimmberechtigt", ui->checkBox_stimmberechtigt->isChecked()); if (ui->radioButton_aktiv->isChecked()) { qry.bindValue(":status", "aktiv"); } else if (ui->radioButton_ruhend->isChecked()) { qry.bindValue(":status", "ruhend"); } else { qry.bindValue(":status", "ausgetreten"); } if (!qry.exec()) { qDebug() << qry.lastError(); } }