int XSqlQueryProto::findFirst(const QString & col, const QString & val) { XSqlQuery *item = qscriptvalue_cast<XSqlQuery*>(thisObject()); if (item) return item->findFirst(col, val); return -1; }
void commentType::sModuleSelected(const QString &pModule) { XTreeWidgetItem *granted = NULL; XTreeWidgetItem *available = NULL; _available->clear(); _granted->clear(); XSqlQuery sources; sources.prepare( "SELECT source_id, source_descrip " "FROM source " "WHERE (source_module=:source_module) " "ORDER BY source_descrip;" ); sources.bindValue(":source_module", pModule); sources.exec(); if (sources.first()) { granted = NULL; available = NULL; // Insert each source into either the available or granted list XSqlQuery cmnttypesource; cmnttypesource.prepare( "SELECT source_id " "FROM source, cmnttypesource " "WHERE ( (cmnttypesource_source_id=source_id)" " AND (cmnttypesource_cmnttype_id=:cmnttype_id)" " AND (source_module=:source_module) );" ); cmnttypesource.bindValue(":cmnttype_id", _cmnttypeid); cmnttypesource.bindValue(":source_module", _module->currentText()); cmnttypesource.exec(); do { if (cmnttypesource.findFirst("source_id", sources.value("source_id").toInt()) == -1) available = new XTreeWidgetItem(_available, available, sources.value("source_id").toInt(), sources.value("source_descrip")); else { granted = new XTreeWidgetItem(_granted, granted, sources.value("source_id").toInt(), sources.value("source_descrip")); } } while (sources.next()); } }
void group::sModuleSelected(const QString &pModule) { _available->clear(); _granted->clear(); XSqlQuery privs; privs.prepare( "SELECT priv_id, priv_name " "FROM priv " "WHERE (priv_module=:priv_module) " "ORDER BY priv_name;" ); privs.bindValue(":priv_module", pModule); privs.exec(); if (privs.first()) { XTreeWidgetItem *granted = NULL; XTreeWidgetItem *available = NULL; // Insert each priv into either the available or granted list XSqlQuery grppriv; grppriv.prepare( "SELECT priv_id " "FROM priv, grppriv " "WHERE ( (grppriv_priv_id=priv_id)" " AND (grppriv_grp_id=:grp_id)" " AND (priv_module=:priv_module) );" ); grppriv.bindValue(":grp_id", _grpid); grppriv.bindValue(":priv_module", _module->currentText()); grppriv.exec(); do { if (grppriv.findFirst("priv_id", privs.value("priv_id").toInt()) == -1) available = new XTreeWidgetItem(_available, available, privs.value("priv_id").toInt(), privs.value("priv_name")); else granted = new XTreeWidgetItem(_granted, granted, privs.value("priv_id").toInt(), privs.value("priv_name")); } while (privs.next()); } }
void user::sModuleSelected(const QString &pModule) { XTreeWidgetItem *granted = NULL; XTreeWidgetItem *available = NULL; _availableGroup->clear(); _grantedGroup->clear(); XSqlQuery groups; groups.prepare("SELECT grp_id, grp_name, grp_descrip, usrgrp_id" " FROM grp LEFT OUTER JOIN usrgrp" " ON (usrgrp_grp_id=grp_id AND usrgrp_username=:username);"); groups.bindValue(":username", _cUsername); groups.exec(); while(groups.next()) { if (groups.value("usrgrp_id").toInt() == 0) available = new XTreeWidgetItem(_availableGroup, available, groups.value("grp_id").toInt(), groups.value("grp_name"), groups.value("grp_descrip")); else granted = new XTreeWidgetItem(_grantedGroup, granted, groups.value("grp_id").toInt(), groups.value("grp_name"), groups.value("grp_descrip")); } if (ErrorReporter::error(QtCriticalMsg, this, tr("Getting Groups"), groups, __FILE__, __LINE__)) return; _available->clear(); _granted->clear(); XSqlQuery privs; privs.prepare( "SELECT priv_id, priv_name, priv_descrip " "FROM priv " "WHERE (priv_module=:priv_module) " "ORDER BY priv_name;" ); privs.bindValue(":priv_module", pModule); privs.exec(); if (privs.first()) { granted = NULL; available = NULL; // Insert each priv into either the available or granted list XSqlQuery usrpriv; usrpriv.prepare( "SELECT priv_id " "FROM priv, usrpriv " "WHERE ( (usrpriv_priv_id=priv_id)" " AND (usrpriv_username=:username)" " AND (priv_module=:priv_module) );" ); usrpriv.bindValue(":username", _cUsername); usrpriv.bindValue(":priv_module", _module->currentText()); usrpriv.exec(); XSqlQuery grppriv; grppriv.prepare("SELECT priv_id" " FROM priv, grppriv, usrgrp" " WHERE((usrgrp_grp_id=grppriv_grp_id)" " AND (grppriv_priv_id=priv_id)" " AND (usrgrp_username=:username)" " AND (priv_module=:priv_module));"); grppriv.bindValue(":username", _cUsername); grppriv.bindValue(":priv_module", _module->currentText()); grppriv.exec(); do { if (usrpriv.findFirst("priv_id", privs.value("priv_id").toInt()) == -1 && grppriv.findFirst("priv_id", privs.value("priv_id").toInt()) == -1) available = new XTreeWidgetItem(_available, available, privs.value("priv_id").toInt(), privs.value("priv_name"), privs.value("priv_descrip")); else { granted = new XTreeWidgetItem(_granted, granted, privs.value("priv_id").toInt(), privs.value("priv_name"), privs.value("priv_descrip")); if(usrpriv.findFirst("priv_id", privs.value("priv_id").toInt()) == -1) granted->setTextColor(Qt::gray); } } while (privs.next()); } }
void WoLineEdit::sParse() { if (!_parsed) { if (text().stripWhiteSpace().length() == 0) setId(-1); else if (_useQuery) { XSqlQuery wo; wo.prepare(_sql); wo.exec(); if (wo.findFirst("wonumber", text().stripWhiteSpace().upper()) != -1) { setId(wo.value("wo_id").toInt()); return; } } else if (text().contains('-')) { int soNumber = text().left(text().find('-')).toInt(); int subNumber = text().right(text().length() - text().find('-') - 1).toInt(); // bool statusCheck = FALSE; QString sql = QString( "SELECT wo_id " "FROM wo " "WHERE ((wo_number=%1)" " AND (wo_subnumber=%2)" ) .arg(soNumber) .arg(subNumber); // Add in the Status checks QStringList statuses; if (_woType & cWoOpen) statuses << "(wo_status='O')"; if (_woType & cWoExploded) statuses << "(wo_status='E')"; if (_woType & cWoReleased) statuses << "(wo_status='R')"; if (_woType & cWoIssued) statuses << "(wo_status='I')"; if (_woType & cWoClosed) statuses << "(wo_status='C')"; if(!statuses.isEmpty()) sql += " AND (" + statuses.join(" OR ") + ")"; sql += ")"; XSqlQuery wo(sql); if (wo.first()) setId(wo.value("wo_id").toInt()); else setId(-1); } else { bool statusCheck = FALSE; QString sql = QString( "SELECT wo_id, wo_number " "FROM wo " "WHERE ((wo_number=%1)") .arg(text().toInt()); // Add in the Status checks if (_woType) { sql += " AND ("; if (_woType & cWoOpen) { sql += "(wo_status='O')"; statusCheck = TRUE; } if (_woType & cWoExploded) { if (statusCheck) sql += " OR "; sql += "(wo_status='E')"; statusCheck = TRUE; } if (_woType & cWoReleased) { if (statusCheck) sql += " OR "; sql += "(wo_status='R')"; statusCheck = TRUE; } if (_woType & cWoIssued) { if (statusCheck) sql += " OR "; sql += "(wo_status='I')"; statusCheck = TRUE; } if (_woType & cWoClosed) { if (statusCheck) sql += " OR "; sql += "(wo_status='C')"; } sql += ")"; } sql += ");"; XSqlQuery wo(sql); if (wo.first()) { if (wo.size() == 1) setId(wo.value("wo_id").toInt()); else { setId(-1); setText(wo.value("wo_number").toString() + "-"); focusNextPrevChild(FALSE); home(FALSE); end(FALSE); } } else setId(-1); } } }
void WoLineEdit::setId(int pId) { bool found = FALSE; if (pId != -1) { XSqlQuery wo; if (_useQuery) { wo.prepare(_sql); wo.exec(); found = (wo.findFirst("wo_id", pId) != -1); } else { wo.prepare( "SELECT formatWONumber(wo_id) AS wonumber," " warehous_code, item_id, item_number, uom_name," " item_descrip1, item_descrip2," " wo_qtyord, wo_qtyrcv, wo_status," " formatDate(wo_duedate) AS duedate," " formatDate(wo_startdate) AS startdate," " formatQtyPer(wo_qtyord) AS ordered," " formatQtyPer(wo_qtyrcv) AS received, " " formatQtyPer(noNeg(wo_qtyord - wo_qtyrcv)) AS balance " "FROM wo, itemsite, item, warehous, uom " "WHERE ((wo_itemsite_id=itemsite_id)" " AND (itemsite_item_id=item_id)" " AND (item_inv_uom_id=uom_id)" " AND (itemsite_warehous_id=warehous_id)" " AND (wo_id=:wo_id));" ); wo.bindValue(":wo_id", pId); wo.exec(); found = (wo.first()); } if (found) { _id = pId; _valid = TRUE; setText(wo.value("wonumber").toString()); emit newId(_id); emit newItemid(wo.value("item_id").toInt()); emit warehouseChanged(wo.value("warehous_code").toString()); emit itemNumberChanged(wo.value("item_number").toString()); emit uomChanged(wo.value("uom_name").toString()); emit itemDescrip1Changed(wo.value("item_descrip1").toString()); emit itemDescrip2Changed(wo.value("item_descrip2").toString()); emit startDateChanged(wo.value("startdate").toString()); emit dueDateChanged(wo.value("duedate").toString()); emit qtyOrderedChanged(wo.value("ordered").toString()); emit qtyReceivedChanged(wo.value("received").toString()); emit qtyBalanceChanged(wo.value("balance").toString()); emit statusChanged(wo.value("wo_status").toString()); emit valid(TRUE); _qtyOrdered = wo.value("wo_qtyord").toDouble(); _qtyReceived = wo.value("wo_qtyrcv").toDouble(); _parsed = TRUE; return; } } _id = -1; _valid = FALSE; setText(""); emit newId(-1); emit newItemid(-1); emit warehouseChanged(""); emit itemNumberChanged(""); emit uomChanged(""); emit itemDescrip1Changed(""); emit itemDescrip2Changed(""); emit startDateChanged(""); emit dueDateChanged(""); emit qtyOrderedChanged(""); emit qtyReceivedChanged(""); emit qtyBalanceChanged(""); emit statusChanged(""); emit valid(FALSE); _qtyOrdered = 0; _qtyReceived = 0; _parsed = TRUE; }
void ItemLineEdit::silentSetId(const int pId) { XSqlQuery item; bool found = FALSE; _parsed = TRUE; if (_useValidationQuery) { item.prepare(_validationSql); item.bindValue(":item_id", pId); item.exec(); if (item.first()) found = TRUE; } else if (_useQuery) { item.prepare(_sql); item.exec(); found = (item.findFirst("item_id", pId) != -1); } else if (pId != -1) { QString pre( "SELECT DISTINCT item_number, item_descrip1, item_descrip2," " uom_name, item_type, item_config, item_upccode"); QStringList clauses; clauses = _extraClauses; clauses << "(item_id=:item_id)"; item.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type)); item.bindValue(":item_id", pId); item.exec(); found = item.first(); } if (found) { if (completer()) { disconnect(this, SIGNAL(textChanged(QString)), this, SLOT(sHandleCompleter())); static_cast<QSqlQueryModel* >(completer()->model())->setQuery(QSqlQuery()); } _itemNumber = item.value("item_number").toString(); _uom = item.value("uom_name").toString(); _itemType = item.value("item_type").toString(); _configured = item.value("item_config").toBool(); _upc = item.value("item_upccode").toString(); _id = pId; _valid = TRUE; setText(item.value("item_number").toString()); emit aliasChanged(""); emit typeChanged(_itemType); emit descrip1Changed(item.value("item_descrip1").toString()); emit descrip2Changed(item.value("item_descrip2").toString()); emit uomChanged(item.value("uom_name").toString()); emit configured(item.value("item_config").toBool()); emit upcChanged(item.value("item_upccode").toString()); emit valid(TRUE); if (completer()) connect(this, SIGNAL(textChanged(QString)), this, SLOT(sHandleCompleter())); } else { _itemNumber = ""; _uom = ""; _itemType = ""; _id = -1; _upc = ""; _valid = FALSE; setText(""); emit aliasChanged(""); emit typeChanged(""); emit descrip1Changed(""); emit descrip2Changed(""); emit uomChanged(""); emit configured(FALSE); emit upcChanged(""); emit valid(FALSE); } }
void ItemLineEdit::setItemNumber(const QString& pNumber) { XSqlQuery item; bool found = FALSE; _parsed = TRUE; if (pNumber == text()) return; if (!pNumber.isEmpty()) { if (_useValidationQuery) { item.prepare(_validationSql); item.bindValue(":item_number", pNumber); item.exec(); if (item.first()) found = TRUE; } else if (_useQuery) { item.prepare(_sql); item.exec(); found = (item.findFirst("item_number", pNumber) != -1); } else if (pNumber != QString::Null()) { QString pre( "SELECT DISTINCT item_id, item_number, item_descrip1, item_descrip2," " uom_name, item_type, item_config, item_upccode"); QStringList clauses; clauses = _extraClauses; clauses << "(item_number=:item_number OR item_upccode=:item_number)"; item.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type)); item.bindValue(":item_number", pNumber); item.exec(); if (item.size() > 1) { ParameterList params; params.append("search", pNumber); params.append("searchNumber"); params.append("searchUpc"); sSearch(params); return; } else found = item.first(); } } if (found) { _itemNumber = pNumber; _uom = item.value("uom_name").toString(); _itemType = item.value("item_type").toString(); _configured = item.value("item_config").toBool(); _id = item.value("item_id").toInt(); _upc = item.value("item_upccode").toInt(); _valid = TRUE; setText(item.value("item_number").toString()); emit aliasChanged(""); emit typeChanged(_itemType); emit descrip1Changed(item.value("item_descrip1").toString()); emit descrip2Changed(item.value("item_descrip2").toString()); emit uomChanged(item.value("uom_name").toString()); emit configured(item.value("item_config").toBool()); emit upcChanged(item.value("item_upccode").toString()); emit valid(TRUE); } else { _itemNumber = ""; _uom = ""; _itemType = ""; _id = -1; _valid = FALSE; _upc = ""; setText(""); emit aliasChanged(""); emit typeChanged(""); emit descrip1Changed(""); emit descrip2Changed(""); emit uomChanged(""); emit configured(FALSE); emit upcChanged(""); emit valid(FALSE); } }
void WoLineEdit::setId(int pId) { bool found = FALSE; if (pId != -1) { XSqlQuery wo; if (_useQuery) { wo.prepare(_sql); wo.exec(); found = (wo.findFirst("wo_id", pId) != -1); } else { wo.prepare( "SELECT formatWONumber(wo_id) AS wonumber," " warehous_code, item_id, item_number, uom_name," " item_descrip1, item_descrip2," " abs(wo_qtyord) AS wo_qtyord," " abs(wo_qtyrcv) AS wo_qtyrcv, " " CASE WHEN (wo_status = 'O') THEN :open " " WHEN (wo_status = 'E') THEN :exploded " " WHEN (wo_status = 'I') THEN :inprocess " " WHEN (wo_status = 'R') THEN :released " " WHEN (wo_status = 'C') THEN :closed " " ELSE :unknown END AS wo_status," " wo_duedate," " wo_startdate," " noNeg(abs(wo_qtyord) - abs(wo_qtyrcv)) AS balance, " " CASE WHEN (wo_qtyord >= 0) THEN " " :assemble " " ELSE " " :disassemble " " END AS wo_method, " " CASE WHEN (wo_qtyord >= 0) THEN " " 'A' " " ELSE " " 'D' " " END AS method " "FROM wo, itemsite, item, warehous, uom " "WHERE ((wo_itemsite_id=itemsite_id)" " AND (itemsite_item_id=item_id)" " AND (item_inv_uom_id=uom_id)" " AND (itemsite_warehous_id=warehous_id)" " AND (wo_id=:wo_id));" ); wo.bindValue(":wo_id", pId); wo.bindValue(":assemble", tr("Assembly")); wo.bindValue(":disassemble", tr("Disassembly")); wo.bindValue(":open", tr("Open")); wo.bindValue(":exploded", tr("Exploded")); wo.bindValue(":inprocess", tr("In Process")); wo.bindValue(":released", tr("Released")); wo.bindValue(":closed", tr("Closed")); wo.exec(); found = (wo.first()); } if (found) { _id = pId; _valid = TRUE; setText(wo.value("wonumber").toString()); _qtyOrdered = wo.value("wo_qtyord").toDouble(); _qtyReceived = wo.value("wo_qtyrcv").toDouble(); _method = wo.value("method").toString(); emit newId(_id); emit newItemid(wo.value("item_id").toInt()); emit warehouseChanged(wo.value("warehous_code").toString()); emit itemNumberChanged(wo.value("item_number").toString()); emit uomChanged(wo.value("uom_name").toString()); emit itemDescrip1Changed(wo.value("item_descrip1").toString()); emit itemDescrip2Changed(wo.value("item_descrip2").toString()); emit startDateChanged(wo.value("wo_startdate").toDate()); emit dueDateChanged(wo.value("wo_duedate").toDate()); emit qtyOrderedChanged(wo.value("wo_qtyord").toDouble()); emit qtyReceivedChanged(wo.value("wo_qtyrcv").toDouble()); emit qtyBalanceChanged(wo.value("balance").toDouble()); emit statusChanged(wo.value("wo_status").toString()); emit methodChanged(wo.value("wo_method").toString()); emit valid(TRUE); } } else { _id = -1; _valid = FALSE; setText(""); emit newId(-1); emit newItemid(-1); emit warehouseChanged(""); emit itemNumberChanged(""); emit uomChanged(""); emit itemDescrip1Changed(""); emit itemDescrip2Changed(""); emit startDateChanged(QDate()); emit dueDateChanged(QDate()); emit qtyOrderedChanged(0); emit qtyReceivedChanged(0); emit qtyBalanceChanged(0); emit statusChanged(""); emit methodChanged(""); emit valid(FALSE); _qtyOrdered = 0; _qtyReceived = 0; } if (_mapper->model() && _mapper->model()->data(_mapper->model()->index(_mapper->currentIndex(),_mapper->mappedSection(this))).toString() != text()) _mapper->model()->setData(_mapper->model()->index(_mapper->currentIndex(),_mapper->mappedSection(this)), text()); _parsed = TRUE; }
void ItemLineEdit::sParse() { if (!_parsed) { _parsed = TRUE; if (text().length() == 0) { setId(-1); return; } else if (_useValidationQuery) { XSqlQuery item; item.prepare("SELECT item_id FROM item WHERE (item_number = :searchString);"); item.bindValue(":searchString", text().stripWhiteSpace().upper()); item.exec(); if (item.first()) { int itemid = item.value("item_id").toInt(); item.prepare(_validationSql); item.bindValue(":item_id", itemid); item.exec(); if (item.first()) { setId(itemid); return; } } } else if (_useQuery) { XSqlQuery item; item.prepare(_sql); item.exec(); if (item.findFirst("item_number", text().stripWhiteSpace().upper()) != -1) { setId(item.value("item_id").toInt()); return; } } else { XSqlQuery item; QString pre( "SELECT DISTINCT item_id" ); QStringList clauses; clauses = _extraClauses; clauses << "(item_number=:searchString)"; item.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type)); item.bindValue(":searchString", text().stripWhiteSpace().upper()); item.exec(); if (item.first()) { setId(item.value("item_id").toInt()); return; } } setId(-1); focusNextPrevChild(FALSE); QMessageBox::warning( this, tr("Invalid Item Number"), tr( "<p>The Item Number you entered is Invalid.</p>") ); } }
void ItemLineEdit::silentSetId(int pId) { XSqlQuery item; bool found = FALSE; _parsed = TRUE; if (_useValidationQuery) { item.prepare(_validationSql); item.bindValue(":item_id", pId); item.exec(); if (item.first()) found = TRUE; } else if (_useQuery) { item.prepare(_sql); item.exec(); found = (item.findFirst("item_id", pId) != -1); } else if (pId != -1) { QString pre( "SELECT DISTINCT item_number, item_descrip1, item_descrip2," " uom_name, item_type, item_config"); QStringList clauses; clauses = _extraClauses; clauses << "(item_id=:item_id)"; item.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type)); item.bindValue(":item_id", pId); item.exec(); found = item.first(); } if (found) { _itemNumber = item.value("item_number").toString(); _uom = item.value("uom_name").toString(); _itemType = item.value("item_type").toString(); _configured = item.value("item_config").toBool(); _id = pId; _valid = TRUE; setText(item.value("item_number").toString()); if (_mapper->model() && _mapper->model()->data(_mapper->model()->index(_mapper->currentIndex(),_mapper->mappedSection(this))).toString() != text()) _mapper->model()->setData(_mapper->model()->index(_mapper->currentIndex(),_mapper->mappedSection(this)), text()); emit aliasChanged(""); emit typeChanged(_itemType); emit descrip1Changed(item.value("item_descrip1").toString()); emit descrip2Changed(item.value("item_descrip2").toString()); emit uomChanged(item.value("uom_name").toString()); emit configured(item.value("item_config").toBool()); emit valid(TRUE); } else { _itemNumber = ""; _uom = ""; _itemType = ""; _id = -1; _valid = FALSE; setText(""); emit aliasChanged(""); emit typeChanged(""); emit descrip1Changed(""); emit descrip2Changed(""); emit uomChanged(""); emit configured(FALSE); emit valid(FALSE); } }
void ItemLineEdit::setItemNumber(QString pNumber) { XSqlQuery item; bool found = FALSE; _parsed = TRUE; if (_useValidationQuery) { item.prepare(_validationSql); item.bindValue(":item_number", pNumber); item.exec(); if (item.first()) found = TRUE; } else if (_useQuery) { item.prepare(_sql); item.exec(); found = (item.findFirst("item_number", pNumber) != -1); } else if (pNumber != QString::Null()) { QString pre( "SELECT DISTINCT item_number, item_descrip1, item_descrip2," " uom_name, item_type, item_config"); QStringList clauses; clauses = _extraClauses; clauses << "(item_number=:item_number)"; item.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type)); item.bindValue(":item_number", pNumber); item.exec(); found = item.first(); } if (found) { _itemNumber = pNumber; _uom = item.value("uom_name").toString(); _itemType = item.value("item_type").toString(); _configured = item.value("item_config").toBool(); _id = item.value("item_id").toInt(); _valid = TRUE; setText(item.value("item_number").toString()); emit aliasChanged(""); emit typeChanged(_itemType); emit descrip1Changed(item.value("item_descrip1").toString()); emit descrip2Changed(item.value("item_descrip2").toString()); emit uomChanged(item.value("uom_name").toString()); emit configured(item.value("item_config").toBool()); emit valid(TRUE); } else { _itemNumber = ""; _uom = ""; _itemType = ""; _id = -1; _valid = FALSE; setText(""); emit aliasChanged(""); emit typeChanged(""); emit descrip1Changed(""); emit descrip2Changed(""); emit uomChanged(""); emit configured(FALSE); emit valid(FALSE); } }
void expenseCategories::sDelete() { XSqlQuery expenseDelete; expenseDelete.prepare( "SELECT poitem_status, COUNT(*) " "FROM poitem " "WHERE (poitem_expcat_id=:expcat_id) " "GROUP BY poitem_status;" ); expenseDelete.bindValue(":expcat_id", _expcat->id()); expenseDelete.exec(); if (expenseDelete.first()) { if (expenseDelete.findFirst("poitem_status", "U") != -1) QMessageBox::warning( this, tr("Cannot Delete Expense Category"), tr( "<p>The selected Expense Category cannot be deleted as there are unposted P/O Lines assigned to it. " "You must reassign these P/O Lines before you may delete the selected Expense Category.</p>" ) ); else if (expenseDelete.findFirst("poitem_status", "O") != -1) QMessageBox::warning( this, tr("Cannot Delete Expense Category"), tr( "<p>The selected Expense Category cannot be deleted as there are open P/O Lines assigned to it. " "You must close these P/O Lines before you may delete the selected Expense Category.</p>" ) ); else if (expenseDelete.findFirst("poitem_status", "C") != -1) { int result = QMessageBox::warning( this, tr("Cannot Delete Expense Category"), tr( "<p>The selected Expense Category cannot be deleted as there are closed P/O Lines assigned to it. " "Would you like to mark the selected Expense Category as inactive instead?</p>" ), tr("&Yes"), tr("&No"), QString::null ); if (result == 0) { expenseDelete.prepare( "UPDATE expcat " "SET expcat_active=FALSE " "WHERE (expcat_id=:expcat_id);" ); expenseDelete.bindValue(":expcat_id", _expcat->id()); expenseDelete.exec(); sFillList(); } } } else { expenseDelete.prepare( "SELECT checkhead_id AS id" " FROM checkhead" " WHERE(checkhead_expcat_id=:expcat_id)" " UNION " "SELECT vodist_id AS id" " FROM vodist" " WHERE(vodist_expcat_id=:expcat_id)"); expenseDelete.bindValue(":expcat_id", _expcat->id()); expenseDelete.exec(); if(expenseDelete.first()) { QMessageBox::warning( this, tr("Cannot Delete Expense Category"), tr( "<p>The selected Expense Category cannot be deleted as there are Checks and Voucher Distributions assigned to it. " "You must change these before you may delete the selected Expense Category.</p>" ) ); } else { expenseDelete.prepare( "DELETE FROM expcat " "WHERE (expcat_id=:expcat_id); "); expenseDelete.bindValue(":expcat_id", _expcat->id()); expenseDelete.exec(); sFillList(); } } }