]> Shamusworld >> Repos - schematic/blobdiff - src/mainwin.cpp
Added some basic functionality to the program.
[schematic] / src / mainwin.cpp
index 55ba367f8d31e36ef642fb9e6fcd8b4bbdc76f9d..fc1ec2f44140a283c685a5259f3a4f7e276294e2 100644 (file)
@@ -26,7 +26,6 @@
 
 
 MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
-       scmWidget(new SCMWidget(this)),
        boldFont(new QFont),
        loggedInUID(0)
 {
@@ -196,6 +195,7 @@ MainWindow::MainWindow(): aboutWin(new AboutWindow(this)),
                loggedInUID = 1;
        }
 
+       scmWidget = new SCMWidget(this);
        QString s = QString("User: %1 (%2)").arg(fullName).arg(login);
        scmWidget->username->setText(s);
        setCentralWidget(scmWidget);
@@ -248,10 +248,125 @@ void MainWindow::HandleNewVendorDialog(void)
 
        // Presumably, the user has given us good data, so we try to populate the
        // database with this new vendor data.
-       QSqlQuery query;
-       query.prepare("INSERT INTO  VALUES (?, ?, ?)");
 
+       // First, see if there is anything missing from the dialog...
        
+
+       // Create new vendor entry...
+       int vid = -1;
+       bool hasNDA = (dialog.checkbox1->checkState() == Qt::Checked ? true : false);
+       int vlid = dialog.combo1->itemData(dialog.combo1->currentIndex()).toInt();
+       QSqlQuery query;
+       query.prepare("INSERT INTO Vendor VALUES ('', ?, ?, ?)");
+       query.addBindValue(vlid);
+       query.addBindValue(hasNDA);
+       query.addBindValue(dialog.edit1->text());
+       query.exec();
+
+       // Get VID from record just inserted
+       query.prepare("SELECT vid FROM Vendor WHERE vlid=? AND signedNDA=? AND name=?");
+       query.addBindValue(vlid);
+       query.addBindValue(hasNDA);
+       query.addBindValue(dialog.edit1->text());
+       query.exec();
+       query.next();
+       vid = query.value(0).toInt();
+//printf("NVD: New Vendor VID=%i\n", vid);
+
+       // Add primary address...
+       query.prepare("INSERT INTO Location VALUES ('', ?, ?, ?, ?, ?, ?)");
+       query.addBindValue(vid);
+       query.addBindValue(dialog.address->field1->text());
+       query.addBindValue(dialog.address->field2->text());
+       query.addBindValue(dialog.address->field3->text());
+       query.addBindValue(dialog.address->field4->text());
+       query.addBindValue(dialog.address->field5->text());
+       query.exec();
+
+       // Fix up primary contact type
+       int ctid = -1;
+
+       // -1 in currentIndex() means nothing was selected, so create new entry
+//NOT SO FAST: Seems it defaults to whatever is found there. So need to fix that. >:-(
+//     if (dialog.contact->field1->currentIndex() == -1)
+       if (dialog.contact->newContactType)
+       {
+               query.prepare("INSERT INTO ContactType VALUES ('', ?)");
+               query.addBindValue(dialog.contact->field1->currentText());
+               query.exec();
+
+               query.prepare("SELECT ctid FROM ContactType WHERE description=?");
+               query.addBindValue(dialog.contact->field1->currentText());
+               query.exec();
+               query.next();
+               ctid = query.value(0).toInt();
+       }
+       else
+       {
+               ctid = dialog.contact->field1->itemData(dialog.contact->field1->currentIndex()).toInt();
+       }
+
+       // Add primary contact...
+       query.prepare("INSERT INTO Contact VALUES ('', ?, ?, ?, ?, ?, ?, ?, ?)");
+       query.addBindValue(vid);
+       query.addBindValue(ctid);
+       query.addBindValue(dialog.contact->field2->text());
+       query.addBindValue(dialog.contact->field3->text());
+       query.addBindValue(dialog.contact->field4->text());
+       query.addBindValue(dialog.contact->field5->text());
+       query.addBindValue(dialog.contact->field6->text());
+       query.addBindValue(dialog.contact->field7->text());
+       query.exec();
+
+       // Add vendor classes...
+       for(int i=0; i<dialog.list->count(); i++)
+       {
+               QListWidgetItem * item = dialog.list->item(i);
+
+               if (item->checkState() == Qt::Checked)
+               {
+                       int vtid = item->data(Qt::UserRole).toInt();
+                       query.prepare("INSERT INTO VendorSpecificTypes VALUES (?, ?)");
+                       query.addBindValue(vid);
+                       query.addBindValue(vtid);
+                       query.exec();
+               }
+       }
+
+       // Update UI
+       scmWidget->GetVendorIDs();
+       scmWidget->GetVendor(vid);
+
+//printf("NVD: Contact Type index = %i\n", dialog.contact->field1->currentIndex());
+//printf("NVD: Contact type ='%s'\n", dialog.contact->field1->currentText().toAscii().data());
+//-1 means no contact selected; check currentText() to see if it has anything in it or not
+
+       // Tables to fill:
+#if 0
+Vendor
+VID (P-key) | VLID | signedNDA | Name
+CREATE TABLE Vendor (vid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vlid INT, signedNDA TINYINT(1) NOT NULL DEFAULT 0, name VARCHAR(100), FOREIGN KEY (vlid) REFERENCES VendorLevel(vlid)) ENGINE=INNODB;
+
+VendorType
+VTID (P-key) | VGID | SeqNo | Description
+CREATE TABLE VendorType (vtid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vgid INT, seqNo INT(4) NOT NULL, description VARCHAR(100), FOREIGN KEY (vgid) REFERENCES VendorGroup(vgid)) ENGINE=INNODB;
+
+VendorSpecificTypes
+VID (multi) | VTID (multi)
+CREATE TABLE VendorSpecificTypes (vid INT, vtid INT, FOREIGN KEY (vid) REFERENCES Vendor(vid), FOREIGN KEY (vtid) REFERENCES VendorType(vtid)) ENGINE=INNODB;
+
+Location
+LID (P-key) | VID | Address | City | State | Country | Code
+CREATE TABLE Location (lid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vid INT, address VARCHAR(100), city VARCHAR(64), state VARCHAR(64), country VARCHAR(64), code VARCHAR(32), FOREIGN KEY (vid) REFERENCES Vendor(vid)) ENGINE=INNODB;
+
+Contact
+CID (P-key) | VID | CTID | Name | Email | Address | Phone1 | Phone2 | Fax
+CREATE TABLE Contact (cid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, vid INT, CTID int, name VARCHAR(64), email VARCHAR(64), address VARCHAR(200), phone1 VARCHAR(32), phone2 VARCHAR(32), fax VARCHAR(32), FOREIGN KEY (vid) REFERENCES Vendor(vid), FOREIGN KEY (ctid) REFERENCES ContactType(ctid)) ENGINE=INNODB;
+
+ContactType
+CTID (P-key) | Description
+CREATE TABLE ContactType (ctid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, description VARCHAR(100)) ENGINE=INNODB;
+#endif
 }