void itemList::sFillList() { if (_useQuery) { _item->populate(_sql, _itemid); } else { QString pre; QString post; if(_x_preferences && _x_preferences->boolean("ListNumericItemNumbersFirst")) { pre = "SELECT DISTINCT ON (toNumeric(item_number, 999999999999999), item_number) item_id, item_number, (item_descrip1 || ' ' || item_descrip2)"; post = "ORDER BY toNumeric(item_number, 999999999999999), item_number"; } else { pre = "SELECT DISTINCT item_id, item_number, (item_descrip1 || ' ' || item_descrip2)"; post = "ORDER BY item_number"; } QStringList clauses; clauses = _extraClauses; if(!(_itemType & ItemLineEdit::cActive) && !_showInactive->isChecked()) clauses << "(item_active)"; _item->populate(buildItemLineEditQuery(pre, clauses, post, _itemType), _itemid); } }
void itemAliasList::sFillList() { _item->clear(); if (_alias->text().trimmed().length() == 0) return; QString pre( "SELECT item_id, itemalias_id, itemalias_number, item_number, (item_descrip1 || ' ' || item_descrip2) AS item_descrip " "FROM (SELECT DISTINCT item_id, item_number, item_descrip1, item_descrip2"); QString post(") AS data, itemalias " "WHERE ( (itemalias_item_id=item_id)" " AND (UPPER(itemalias_number)~UPPER(:searchString)) )" ); if(_x_preferences && _x_preferences->boolean("ListNumericItemNumbersFirst")) post += " ORDER BY toNumeric(item_number, 999999999999999), item_number"; else post += " ORDER BY item_number"; QStringList clauses; clauses = _extraClauses; if ( !(_itemType & ItemLineEdit::cActive) && !_showInactive->isChecked()) clauses << "(item_active)"; XSqlQuery alias; alias.prepare(buildItemLineEditQuery(pre, clauses, post, _itemType)); alias.bindValue(":searchString", _alias->text().trimmed()); alias.exec(); if (alias.first()) { if (_useQuery) { XSqlQuery item(_sql); if (item.first()) { XTreeWidgetItem *last = NULL; do { if (item.findFirst("item_id", alias.value("item_id").toInt()) != -1) last = new XTreeWidgetItem( _item, last, alias.value("item_id").toInt(), alias.value("itemalias_id").toInt(), alias.value("itemalias_number").toString(), alias.value("item_number").toString(), alias.value("item_descrip").toString() ); } while (alias.next()); } } else _item->populate(alias, TRUE); } }
void itemList::sFillList() { _listTab->clear(); if (_useQuery) { _listTab->populate(_sql, _itemid); } else { QString pre; QString post; if(_x_preferences && _x_preferences->boolean("ListNumericItemNumbersFirst")) { pre = "SELECT DISTINCT ON (toNumeric(item_number, 999999999999999), item_number) item_id, item_number," "(item_descrip1 || ' ' || item_descrip2) AS itemdescrip, item_upccode "; post = "ORDER BY toNumeric(item_number, 999999999999999), item_number, item_upccode "; } else { pre = "SELECT DISTINCT item_id, item_number," "(item_descrip1 || ' ' || item_descrip2) AS itemdescrip, item_upccode "; post = "ORDER BY item_number"; } QStringList clauses; clauses = _extraClauses; if(!(_itemType & ItemLineEdit::cActive) && !_showInactive->isChecked()) clauses << "(item_active)"; if (_showMake->isChecked()) _itemType = (_itemType | ItemLineEdit::cGeneralManufactured); else if (_itemType & ItemLineEdit::cGeneralManufactured) _itemType = (_itemType ^ ItemLineEdit::cGeneralManufactured); if (_showBuy->isChecked()) _itemType = (_itemType | ItemLineEdit::cGeneralPurchased); else if (_itemType & ItemLineEdit::cGeneralPurchased) _itemType = (_itemType ^ ItemLineEdit::cGeneralPurchased); setWindowTitle(buildItemLineEditTitle(_itemType, tr("Items"))); _listTab->populate(buildItemLineEditQuery(pre, clauses, post, _itemType, false), _itemid); } }
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 OR item_upccode = :searchString);"); item.bindValue(":searchString", text().trimmed().toUpper()); item.exec(); if (item.first()) { int itemid = item.value("item_id").toInt(); item.prepare(_validationSql); item.bindValue(":item_id", itemid); item.exec(); if (item.size() > 1) { ParameterList params; params.append("search", text().trimmed().toUpper()); params.append("searchNumber"); params.append("searchUpc"); sSearch(params); return; } else if (item.first()) { setId(itemid); return; } } } else if (_useQuery) { XSqlQuery item; item.prepare(_sql); item.exec(); if (item.first()) { do { if (item.value("item_number").toString().startsWith(text().trimmed().toUpper())) { setId(item.value("item_id").toInt()); return; } } while (item.next()); } } else { XSqlQuery item; QString pre( "SELECT DISTINCT item_id, item_number AS number, " "(item_descrip1 || ' ' || item_descrip2) AS name, " "item_upccode AS description " ); QStringList clauses; clauses = _extraClauses; clauses << "(item_number ~* :searchString OR item_upccode ~* :searchString)"; item.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type).replace(";"," ORDER BY item_number LIMIT 1;")); item.bindValue(":searchString", QString(text().trimmed().toUpper()).prepend("^")); item.exec(); if (item.first()) { setId(item.value("item_id").toInt()); return; } } setId(-1); } }
void ItemLineEdit::sHandleCompleter() { if (!hasFocus()) return; QString stripped = text().trimmed().toUpper(); if (stripped.isEmpty()) return; int width = 0; QSqlQueryModel* model = static_cast<QSqlQueryModel *>(_completer->model()); QTreeView * view = static_cast<QTreeView *>(_completer->popup()); _parsed = true; XSqlQuery numQ; if (_useQuery) { numQ.prepare(QString("SELECT * FROM (%1) data WHERE (item_number ~* :number) LIMIT 10") .arg(QString(_sql)).remove(";")); numQ.bindValue(":number", "^" + stripped); } else { QString pre( "SELECT DISTINCT item_id, item_number, " "(item_descrip1 || ' ' || item_descrip2) AS itemdescrip, " "item_upccode AS description " ); QStringList clauses; clauses = _extraClauses; clauses << "(item_number ~* :searchString OR item_upccode ~* :searchString)"; numQ.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type).replace(";"," ORDER BY item_number LIMIT 10;")); numQ.bindValue(":searchString", QString(text().trimmed().toUpper()).prepend("^")); } numQ.exec(); if (numQ.first()) { int numberCol = numQ.record().indexOf("item_number"); int descripCol = numQ.record().indexOf("itemdescrip"); model->setQuery(numQ); _completer->setCompletionPrefix(stripped); for (int i = 0; i < model->columnCount(); i++) { if ( (i == numberCol) || (i == descripCol) ) { view->resizeColumnToContents(i); width += view->columnWidth(i); } else view->hideColumn(i); } } else model->setQuery(QSqlQuery()); if (width > 350) width = 350; QRect rect; rect.setHeight(height()); rect.setWidth(width); rect.setBottomLeft(QPoint(0, height() - 2)); _completer->complete(rect); _parsed = false; }
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 itemSearch::sFillList() { _search->setText(_search->text().trimmed().toUpper()); if (_search->text().length() == 0) return; QString sql; if (_useQuery) { QStringList clauses; if (!_showInactive->isChecked()) clauses << "(item_active)"; QStringList subClauses; if (_searchNumber->isChecked()) subClauses << "(item_number ~* :searchString)"; if (_searchName->isChecked()) subClauses << "(item_descrip1 ~* :searchString)"; if (_searchDescrip->isChecked()) subClauses << "(item_descrip2 ~* :searchString)"; if (_searchUpc->isChecked()) subClauses << "(item_upccode ~* :searchString)"; if(!subClauses.isEmpty()) clauses << QString("( " + subClauses.join(" OR ") + " )"); sql = "SELECT * FROM (" + _sql + ") AS dummy WHERE (" + clauses.join(" AND ") + ");" ; } else { if ( (!_searchNumber->isChecked()) && (!_searchName->isChecked()) && (!_searchDescrip->isChecked()) && (!_searchUpc->isChecked()) ) { _listTab->clear(); return; } QString pre; QString post; if(_x_preferences && _x_preferences->boolean("ListNumericItemNumbersFirst")) { pre = "SELECT DISTINCT ON (toNumeric(item_number, 999999999999999), item_number) item_id, item_number, (item_descrip1 || ' ' || item_descrip2), item_upccode "; post = "ORDER BY toNumeric(item_number, 999999999999999), item_number"; } else { pre = "SELECT DISTINCT item_id, item_number AS number, " "(item_descrip1 || ' ' || item_descrip2) AS name, " "item_upccode AS description "; post = "ORDER BY item_number"; } QStringList clauses; clauses = _extraClauses; if(!(_itemType & ItemLineEdit::cActive) && !_showInactive->isChecked()) clauses << "(item_active)"; QStringList subClauses; if (_searchNumber->isChecked()) subClauses << "(item_number ~* :searchString)"; if (_searchName->isChecked()) subClauses << "(item_descrip1 ~* :searchString)"; if (_searchDescrip->isChecked()) subClauses << "(item_descrip2 ~* :searchString)"; if (_searchUpc->isChecked()) subClauses << "(item_upccode ~* :searchString)"; if(!subClauses.isEmpty()) clauses << QString("( " + subClauses.join(" OR ") + " )"); sql = buildItemLineEditQuery(pre, clauses, post, _itemType); } XSqlQuery search; search.prepare(sql); search.bindValue(":searchString", _search->text()); search.exec(); _listTab->populate(search, _itemid); }
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 itemSearch::sFillList() { _item->clear(); _search->setText(_search->text().stripWhiteSpace().upper()); if (_search->text().length() == 0) return; if (_useQuery) { XSqlQuery item(_sql); if (item.first()) { XTreeWidgetItem *last = NULL; bool addToList; do { addToList = FALSE; if ( (_searchNumber->isChecked()) && (item.value("item_number").toString().contains(_search->text(), FALSE)) ) addToList = TRUE; if ( (_searchDescrip1->isChecked()) && (item.value("item_descrip1").toString().contains(_search->text(), FALSE)) ) addToList = TRUE; if ( (_searchDescrip2->isChecked()) && (item.value("item_descrip2").toString().contains(_search->text(), FALSE)) ) addToList = TRUE; if (addToList) last = new XTreeWidgetItem( _item, last, item.value("item_id").toInt(), item.value("item_number"), (item.value("item_descrip1").toString() + " " + item.value("item_descrip2").toString()) ); } while (item.next()); } } else { if ( (!_searchNumber->isChecked()) && (!_searchDescrip1->isChecked()) && (!_searchDescrip2->isChecked()) ) { _item->clear(); return; } QString pre; QString post; if(_x_preferences && _x_preferences->boolean("ListNumericItemNumbersFirst")) { pre = "SELECT DISTINCT ON (toNumeric(item_number, 999999999999999), item_number) item_id, item_number, (item_descrip1 || ' ' || item_descrip2)"; post = "ORDER BY toNumeric(item_number, 999999999999999), item_number"; } else { pre = "SELECT DISTINCT item_id, item_number, (item_descrip1 || ' ' || item_descrip2)"; post = "ORDER BY item_number"; } QStringList clauses; clauses = _extraClauses; if(!(_itemType & ItemLineEdit::cActive) && !_showInactive->isChecked()) clauses << "(item_active)"; QStringList subClauses; if (_searchNumber->isChecked()) subClauses << "(item_number ~* :searchString)"; if (_searchDescrip1->isChecked()) subClauses << "(item_descrip1 ~* :searchString)"; if (_searchDescrip2->isChecked()) subClauses << "(item_descrip2 ~* :searchString)"; if(!subClauses.isEmpty()) clauses << QString("( " + subClauses.join(" OR ") + " )"); XSqlQuery search; search.prepare(buildItemLineEditQuery(pre, clauses, post, _itemType)); search.bindValue(":searchString", _search->text()); search.exec(); _item->populate(search, _itemid); } }
void ItemLineEdit::sParse() { if (DEBUG) qDebug("%s::sParse() entered with parsed %d, text [%s], " "_useValidationQuery %d, _useQuery %d", qPrintable(objectName()), _parsed, qPrintable(text()), _useValidationQuery, _useQuery); if (!_parsed) { _parsed = TRUE; if (text().length() == 0) { setId(-1); return; } else if (_useValidationQuery) { XSqlQuery item; if (completer()) item.prepare("SELECT item_id" " FROM item" " WHERE ((POSITION(:searchString IN item_number) = 1)" " OR (POSITION(:searchString IN item_upccode) = 1));"); else item.prepare("SELECT item_id" " FROM item" " WHERE (item_number = :searchString" " OR item_upccode = :searchString);"); item.bindValue(":searchString", text().trimmed().toUpper()); item.exec(); while (item.next()) { int itemid = item.value("item_id").toInt(); XSqlQuery oneq; oneq.prepare(_validationSql); oneq.bindValue(":item_id", itemid); oneq.exec(); if (oneq.size() > 1) { ParameterList params; params.append("search", text().trimmed().toUpper()); params.append("searchNumber"); params.append("searchUpc"); sSearch(params); return; } else if (oneq.first()) { setId(itemid); return; } } } else if (_useQuery) { XSqlQuery item; item.prepare(_sql); item.exec(); if (item.first()) { do { if (item.value("item_number").toString().startsWith(text().trimmed().toUpper()) || item.value("item_upccode").toString().startsWith(text().trimmed().toUpper())) { setId(item.value("item_id").toInt()); return; } } while (item.next()); } } else { XSqlQuery item; QString pre( "SELECT DISTINCT item_id, item_number AS number, " "(item_descrip1 || ' ' || item_descrip2) AS name, " "item_upccode AS description " ); QStringList clauses; clauses = _extraClauses; clauses << "((POSITION(:searchString IN item_number) = 1)" " OR (POSITION(:searchString IN item_upccode) = 1))"; item.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type, true) .replace(";"," ORDER BY item_number LIMIT 1;")); item.bindValue(":searchString", QString(text().trimmed().toUpper())); item.exec(); if (item.first()) { setId(item.value("item_id").toInt()); return; } } setId(-1); } }