void purchaseOrderItem::sInventoryItemToggled( bool yes ) { if(yes) sPopulateItemSourceInfo(_item->id()); else sPopulateItemSourceInfo(-1); }
void purchaseOrderItem::sVendorItemNumberSearch() { ParameterList params; params.append("vend_id", _vendid); if (!_vendorItemNumber->text().isEmpty()) params.append("search", _vendorItemNumber->text()); else if (_item->id() != -1) params.append("search", _item->itemNumber()); itemSourceSearch newdlg(this, "", true); newdlg.set(params); if(newdlg.exec() == XDialog::Accepted) { int itemsrcid = newdlg.itemsrcId(); if(itemsrcid != -1) { _inventoryItem->setChecked(TRUE); sPopulateItemSourceInfo(itemsrcid); } else { _nonInventoryItem->setChecked(TRUE); _expcat->setId(newdlg.expcatId()); _vendorItemNumber->setText(newdlg.vendItemNumber()); _vendorDescrip->setText(newdlg.vendItemDescrip()); _manufName->setText(newdlg.manufName()); _manufItemNumber->setText(newdlg.manufItemNumber()); _manufItemDescrip->setText(newdlg.manufItemDescrip()); } } }
void purchaseOrderItem::sVendorItemNumberList() { ParameterList params; params.append("item_id", _item->id()); params.append("vend_id", _vendid); itemSourceList newdlg(this, "", true); newdlg.set(params); int itemsrcid = newdlg.exec(); if(itemsrcid > 0) { _inventoryItem->setChecked(TRUE); sPopulateItemSourceInfo(itemsrcid); } }
void purchaseOrderItem::sVendorItemNumberList() { ParameterList params; q.prepare( "SELECT vend_id" " FROM pohead, vend " " WHERE((pohead_vend_id=vend_id)" " AND (pohead_id=:pohead_id));" ); q.bindValue(":pohead_id", _poheadid); q.exec(); if (q.first()) params.append("vend_id", q.value("vend_id").toInt()); if (!_vendorItemNumber->text().isEmpty()) params.append("search", _vendorItemNumber->text()); else if (_item->id() != -1) params.append("search", _item->itemNumber()); itemSourceSearch newdlg(this, "", true); newdlg.set(params); if(newdlg.exec() == XDialog::Accepted) { int itemsrcid = newdlg.itemsrcId(); if(itemsrcid != -1) { _inventoryItem->setChecked(TRUE); sPopulateItemSourceInfo(itemsrcid); } else { _nonInventoryItem->setChecked(TRUE); _expcat->setId(newdlg.expcatId()); _vendorItemNumber->setText(newdlg.vendItemNumber()); _vendorDescrip->setText(newdlg.vendItemDescrip()); _manufName->setText(newdlg.manufName()); _manufItemNumber->setText(newdlg.manufItemNumber()); _manufItemDescrip->setText(newdlg.manufItemDescrip()); } } }
enum SetResponse purchaseOrderItem::set(const ParameterList &pParams) { QVariant param; bool valid; bool haveQty = FALSE; bool haveDate = FALSE; param = pParams.value("warehous_id", &valid); if (valid) _preferredWarehouseid = param.toInt(); param = pParams.value("parentWo", &valid); if (valid) _parentwo = param.toInt(); param = pParams.value("parentSo", &valid); if (valid) _parentso = param.toInt(); param = pParams.value("pohead_id", &valid); if (valid) { _poheadid = param.toInt(); q.prepare( "SELECT pohead_number, pohead_orderdate, pohead_status, " " vend_id, vend_restrictpurch, pohead_curr_id " "FROM pohead, vend " "WHERE ( (pohead_vend_id=vend_id)" " AND (pohead_id=:pohead_id) );" ); q.bindValue(":pohead_id", param.toInt()); q.exec(); if (q.first()) { _poNumber->setText(q.value("pohead_number").toString()); _poStatus = q.value("pohead_status").toString(); _unitPrice->setEffective(q.value("pohead_orderdate").toDate()); _unitPrice->setId(q.value("pohead_curr_id").toInt()); if (q.value("vend_restrictpurch").toBool()) { _item->setQuery( QString( "SELECT DISTINCT item_id, item_number, item_descrip1, item_descrip2," " (item_descrip1 || ' ' || item_descrip2) AS itemdescrip," " uom_name, item_type, item_config, item_active " "FROM item, itemsite, itemsrc, uom " "WHERE ( (itemsite_item_id=item_id)" " AND (itemsrc_item_id=item_id)" " AND (item_inv_uom_id=uom_id)" " AND (itemsite_active)" " AND (item_active)" " AND (itemsrc_active)" " AND (itemsrc_vend_id=%1) ) " "ORDER BY item_number" ) .arg(q.value("vend_id").toInt()) ); _item->setValidationQuery( QString( "SELECT DISTINCT item_id, item_number, item_descrip1, item_descrip2," " (item_descrip1 || ' ' || item_descrip2) AS itemdescrip," " uom_name, item_type, item_config, item_active " "FROM item, itemsite, itemsrc, uom " "WHERE ( (itemsite_item_id=item_id)" " AND (itemsrc_item_id=item_id)" " AND (item_inv_uom_id=uom_id)" " AND (itemsite_active)" " AND (item_active)" " AND (itemsrc_active)" " AND (itemsrc_vend_id=%1) " " AND (itemsite_item_id=:item_id) ) ") .arg(q.value("vend_id").toInt()) ); } else { _item->setType(ItemLineEdit::cGeneralPurchased | ItemLineEdit::cGeneralManufactured | ItemLineEdit::cActive); _item->setDefaultType(ItemLineEdit::cGeneralPurchased | ItemLineEdit::cActive); } } else { systemError(this, tr("A System Error occurred at %1::%2.") .arg(__FILE__) .arg(__LINE__) ); return UndefinedError; } } param = pParams.value("poitem_id", &valid); if (valid) { _poitemid = param.toInt(); q.prepare( "SELECT pohead_number " "FROM pohead, poitem " "WHERE ( (pohead_id=poitem_pohead_id) " " AND (poitem_id=:poitem_id) );" ); q.bindValue(":poitem_id", param.toInt()); q.exec(); if (q.first()) { _poNumber->setText(q.value("pohead_number").toString()); } populate(); } // connect here and not in the .ui to avoid timing issues at initialization connect(_unitPrice, SIGNAL(valueChanged()), this, SLOT(sPopulateExtPrice())); param = pParams.value("mode", &valid); if (valid) { if (param.toString() == "new") { _mode = cNew; q.exec("SELECT NEXTVAL('poitem_poitem_id_seq') AS poitem_id;"); if (q.first()) _poitemid = q.value("poitem_id").toInt(); else { systemError(this, tr("A System Error occurred at %1::%2.") .arg(__FILE__) .arg(__LINE__) ); return UndefinedError; } if(_parentso != -1) { q.prepare( "INSERT INTO charass" " (charass_target_type, charass_target_id," " charass_char_id, charass_value) " "SELECT 'PI', :orderid, charass_char_id, charass_value" " FROM charass" " WHERE ((charass_target_type='SI')" " AND (charass_target_id=:soitem_id));"); q.bindValue(":orderid", _poitemid); q.bindValue(":soitem_id", _parentso); q.exec(); } q.prepare( "SELECT (COALESCE(MAX(poitem_linenumber), 0) + 1) AS _linenumber " "FROM poitem " "WHERE (poitem_pohead_id=:pohead_id);" ); q.bindValue(":pohead_id", _poheadid); q.exec(); if (q.first()) _lineNumber->setText(q.value("_linenumber").toString()); else { systemError(this, tr("A System Error occurred at %1::%2.") .arg(__FILE__) .arg(__LINE__) ); return UndefinedError; } if (!_item->isValid()) _item->setFocus(); else if (!haveQty) _ordered->setFocus(); else if (!haveDate) _dueDate->setFocus(); _comments->setEnabled(FALSE); } else if (param.toString() == "edit") { _mode = cEdit; _typeGroup->setEnabled(FALSE); _ordered->setFocus(); } else if (param.toString() == "view") { _mode = cView; _typeGroup->setEnabled(FALSE); _vendorItemNumber->setEnabled(FALSE); _vendorItemNumberList->setEnabled(FALSE); _vendorDescrip->setEnabled(FALSE); _warehouse->setEnabled(FALSE); _dueDate->setEnabled(FALSE); _ordered->setEnabled(FALSE); _unitPrice->setEnabled(FALSE); _freight->setEnabled(FALSE); _notes->setReadOnly(TRUE); _comments->setReadOnly(TRUE); _project->setEnabled(FALSE); _close->setText(tr("&Close")); _save->hide(); _close->setFocus(); } } param = pParams.value("itemsite_id", &valid); if (valid) { _item->setItemsiteid(param.toInt()); _item->setEnabled(FALSE); _warehouse->setEnabled(FALSE); } param = pParams.value("itemsrc_id", &valid); if (valid) sPopulateItemSourceInfo(param.toInt()); param = pParams.value("qty", &valid); if (valid) { _ordered->setDouble((param.toDouble()/_invVendUOMRatio)); if (_item->isValid()) sDeterminePrice(); haveQty = TRUE; } param = pParams.value("dueDate", &valid); if (valid) { _dueDate->setDate(param.toDate()); haveDate = TRUE; } param = pParams.value("prj_id", &valid); if (valid) _project->setId(param.toInt()); if(_parentso != -1) { q.prepare("SELECT coitem_prcost" " FROM coitem" " WHERE (coitem_id=:parentso); "); q.bindValue(":parentso", _parentso); q.exec(); if(q.first()) { if(q.value("coitem_prcost").toDouble() > 0) { _overriddenUnitPrice = true; _unitPrice->setLocalValue(q.value("coitem_prcost").toDouble()); sPopulateExtPrice(); } } } return NoError; }
void purchaseOrderItem::sPopulateItemInfo(int pItemid) { XSqlQuery item; if (pItemid != -1 && _mode == cNew) { if(_metrics->boolean("RequireStdCostForPOItem")) { item.prepare("SELECT stdCost(:item_id) AS result"); item.bindValue(":item_id", pItemid); item.exec(); if(item.first() && item.value("result").toDouble() == 0.0) { QMessageBox::critical( this, tr("Selected Item Missing Cost"), tr("<p>The selected item has no Std. Costing information. " "Please see your controller to correct this situation " "before continuing.")); _item->setId(-1); return; } } item.prepare( "SELECT DISTINCT char_id, char_name," " COALESCE(b.charass_value, (SELECT c.charass_value FROM charass c WHERE ((c.charass_target_type='I') AND (c.charass_target_id=:item_id) AND (c.charass_default) AND (c.charass_char_id=char_id)) LIMIT 1)) AS charass_value" " FROM charass a, char " " LEFT OUTER JOIN charass b" " ON (b.charass_target_type='PI'" " AND b.charass_target_id=:poitem_id" " AND b.charass_char_id=char_id) " " WHERE ( (a.charass_char_id=char_id)" " AND (a.charass_target_type='I')" " AND (a.charass_target_id=:item_id) ) " " ORDER BY char_name;" ); item.bindValue(":item_id", pItemid); item.bindValue(":poitem_id", _poitemid); item.exec(); int row = 0; QModelIndex idx; while(item.next()) { _itemchar->insertRow(_itemchar->rowCount()); idx = _itemchar->index(row, 0); _itemchar->setData(idx, item.value("char_name"), Qt::DisplayRole); _itemchar->setData(idx, item.value("char_id"), Qt::UserRole); idx = _itemchar->index(row, 1); _itemchar->setData(idx, item.value("charass_value"), Qt::DisplayRole); _itemchar->setData(idx, pItemid, Qt::UserRole); row++; } item.prepare("SELECT itemsrc_id " "FROM itemsrc, pohead " "WHERE ( (itemsrc_vend_id=pohead_vend_id)" " AND (itemsrc_item_id=:item_id)" " AND (pohead_id=:pohead_id) );" ); item.bindValue(":item_id", pItemid); item.bindValue(":pohead_id", _poheadid); item.exec(); if (item.size() == 1) { item.first(); if (item.value("itemsrc_id").toInt() != _itemsrcid) sPopulateItemSourceInfo(item.value("itemsrc_id").toInt()); } else if (item.size() > 1) { bool isCurrent = false; while (item.next()) { if (item.value("itemsrc_id").toInt() == _itemsrcid) isCurrent = true; } if (!isCurrent) { _vendorItemNumber->clear(); sVendorItemNumberList(); } } else { _itemsrcid = -1; _vendorItemNumber->clear(); _vendorDescrip->clear(); _vendorUOM->setText(_item->uom()); _uom->setText(_item->uom()); _minOrderQty->clear(); _orderQtyMult->clear(); _invVendorUOMRatio->setDouble(1.0); _earliestDate->setDate(omfgThis->dbDate()); _manufName->clear(); _manufItemNumber->clear(); _manufItemDescrip->clear(); _invVendUOMRatio = 1; _minimumOrder = 0; _orderMultiple = 0; } } }
void purchaseOrderItem::populate() { q.prepare( "SELECT pohead_number, poitem_linenumber, " " COALESCE(poitem_itemsite_id,-1) AS poitem_itemsite_id," " COALESCE(poitem_itemsrc_id,-1) AS poitem_itemsrc_id, " " poitem_vend_item_number, poitem_vend_item_descrip," " poitem_vend_uom," " poitem_invvenduomratio," " COALESCE(poitem_expcat_id,-1) AS poitem_expcat_id, " " poitem_duedate," " poitem_qty_ordered," " poitem_qty_received," " pohead_curr_id, pohead_orderdate, " " poitem_unitprice," " poitem_freight," " poitem_unitprice * poitem_qty_ordered AS f_extended," " poitem_comments, poitem_prj_id," " poitem_bom_rev_id,poitem_boo_rev_id, " " poitem_manuf_name, poitem_manuf_item_number, " " poitem_manuf_item_descrip, " " COALESCE(coitem_prcost, 0.0) AS overrideCost " "FROM pohead, poitem LEFT OUTER JOIN coitem ON (poitem_soitem_id=coitem_id) " "WHERE ( (poitem_pohead_id=pohead_id) " " AND (poitem_id=:poitem_id) );" ); q.bindValue(":poitem_id", _poitemid); q.exec(); if (q.first()) { _poNumber->setText(q.value("pohead_number").toString()); _lineNumber->setText(q.value("poitem_linenumber").toString()); _dueDate->setDate(q.value("poitem_duedate").toDate()); _ordered->setDouble(q.value("poitem_qty_ordered").toDouble()); _received->setDouble(q.value("poitem_qty_received").toDouble()); _unitPrice->set(q.value("poitem_unitprice").toDouble(), q.value("pohead_curr_id").toInt(), q.value("pohead_orderdate").toDate(), false); _freight->setLocalValue(q.value("poitem_freight").toDouble()); _extendedPrice->setLocalValue(q.value("f_extended").toDouble()); _notes->setText(q.value("poitem_comments").toString()); _project->setId(q.value("poitem_prj_id").toInt()); if(q.value("overrideCost").toDouble() > 0) _overriddenUnitPrice = true; if (q.value("poitem_itemsite_id").toInt() == -1) { _nonInventoryItem->setChecked(TRUE); _expcat->setId(q.value("poitem_expcat_id").toInt()); sPopulateItemSourceInfo(-1); _vendorItemNumber->setText(q.value("poitem_vend_item_number").toString()); _vendorDescrip->setText(q.value("poitem_vend_item_descrip").toString()); _vendorUOM->setText(q.value("poitem_vend_uom").toString()); _uom->setText(q.value("poitem_vend_uom").toString()); } else { _inventoryItem->setChecked(TRUE); _item->setItemsiteid(q.value("poitem_itemsite_id").toInt()); sPopulateItemSourceInfo(_item->id()); if (_metrics->boolean("RevControl")) { _bomRevision->setId(q.value("poitem_bom_rev_id").toInt()); _booRevision->setId(q.value("poitem_boo_rev_id").toInt()); } } _itemsrcid = q.value("poitem_itemsrc_id").toInt(); _vendorItemNumber->setText(q.value("poitem_vend_item_number").toString()); _vendorDescrip->setText(q.value("poitem_vend_item_descrip").toString()); if (_itemsrcid == -1) { _vendorUOM->setText(q.value("poitem_vend_uom").toString()); _uom->setText(q.value("poitem_vend_uom").toString()); _invVendorUOMRatio->setDouble(q.value("poitem_invvenduomratio").toDouble()); _invVendUOMRatio = q.value("poitem_invvenduomratio").toDouble(); _manufName->setCurrentText(q.value("poitem_manuf_name").toString()); _manufItemNumber->setText(q.value("poitem_manuf_item_number").toString()); _manufItemDescrip->setText(q.value("poitem_manuf_item_descrip").toString()); } else { q.prepare( "SELECT itemsrc_id, itemsrc_vend_item_number," " itemsrc_vend_item_descrip, itemsrc_vend_uom," " itemsrc_minordqty," " itemsrc_multordqty," " itemsrc_invvendoruomratio, " " itemsrc_manuf_name, " " itemsrc_manuf_item_number, " " itemsrc_manuf_item_descrip " "FROM itemsrc " "WHERE (itemsrc_id=:itemsrc_id);" ); q.bindValue(":itemsrc_id", _itemsrcid); q.exec(); if (q.first()) { // _vendorItemNumber->setEnabled(FALSE); // _vendorItemNumberList->setEnabled(FALSE); // _vendorDescrip->setEnabled(FALSE); _vendorUOM->setEnabled(FALSE); _manufName->setEnabled(FALSE); _manufItemNumber->setEnabled(FALSE); _manufItemDescrip->setEnabled(FALSE); if(_vendorItemNumber->text().isEmpty()) _vendorItemNumber->setText(q.value("itemsrc_vend_item_number").toString()); if(_vendorDescrip->toPlainText().isEmpty()) _vendorDescrip->setText(q.value("itemsrc_vend_item_descrip").toString()); _vendorUOM->setText(q.value("itemsrc_vend_uom").toString()); _uom->setText(q.value("itemsrc_vend_uom").toString()); _minOrderQty->setDouble(q.value("itemsrc_minordqty").toDouble()); _orderQtyMult->setDouble(q.value("itemsrc_multordqty").toDouble()); _invVendorUOMRatio->setDouble(q.value("itemsrc_invvendoruomratio").toDouble()); _invVendUOMRatio = q.value("itemsrc_invvendoruomratio").toDouble(); _minimumOrder = q.value("itemsrc_minordqty").toDouble(); _orderMultiple = q.value("itemsrc_multordqty").toDouble(); if(_manufName->currentText().isEmpty()) _manufName->setCurrentText(q.value("itemsrc_manuf_name").toString()); if(_manufItemNumber->text().isEmpty()) _manufItemNumber->setText(q.value("itemsrc_manuf_item_number").toString()); if(_manufItemDescrip->text().isEmpty()) _manufItemDescrip->setText(q.value("itemsrc_manuf_item_descrip").toString()); } // ToDo } q.prepare( "SELECT DISTINCT char_id, char_name," " COALESCE(b.charass_value, (SELECT c.charass_value FROM charass c WHERE ((c.charass_target_type='I') AND (c.charass_target_id=:item_id) AND (c.charass_default) AND (c.charass_char_id=char_id)) LIMIT 1)) AS charass_value" " FROM charass a, char " " LEFT OUTER JOIN charass b" " ON (b.charass_target_type='PI'" " AND b.charass_target_id=:poitem_id" " AND b.charass_char_id=char_id) " " WHERE ( (a.charass_char_id=char_id)" " AND (a.charass_target_type='I')" " AND (a.charass_target_id=:item_id) ) " " ORDER BY char_name;" ); q.bindValue(":item_id", _item->id()); q.bindValue(":poitem_id", _poitemid); q.exec(); int row = 0; QModelIndex idx; while(q.next()) { _itemchar->insertRow(_itemchar->rowCount()); idx = _itemchar->index(row, 0); _itemchar->setData(idx, q.value("char_name"), Qt::DisplayRole); _itemchar->setData(idx, q.value("char_id"), Qt::UserRole); idx = _itemchar->index(row, 1); _itemchar->setData(idx, q.value("charass_value"), Qt::DisplayRole); _itemchar->setData(idx, _item->id(), Qt::UserRole); row++; } _comments->setId(_poitemid); } }
void purchaseOrderItem::populate() { XSqlQuery purchasepopulate; MetaSQLQuery mql = mqlLoad("purchaseOrderItems", "detail"); ParameterList params; params.append("poitem_id", _poitemid); params.append("sonum", tr("Sales Order #")), params.append("wonum", tr("Work Order #")), purchasepopulate = mql.toQuery(params); if (purchasepopulate.lastError().type() != QSqlError::NoError) { systemError(this, purchasepopulate.lastError().databaseText(), __FILE__, __LINE__); return; } if (purchasepopulate.first()) { _poNumber->setText(purchasepopulate.value("pohead_number").toString()); _lineNumber->setText(purchasepopulate.value("poitem_linenumber").toString()); _taxzoneid=purchasepopulate.value("pohead_taxzone_id").toInt(); // added to pick up tax zone id. _dueDate->setDate(purchasepopulate.value("poitem_duedate").toDate()); _ordered->setDouble(purchasepopulate.value("poitem_qty_ordered").toDouble()); _orderQtyCache = _ordered->toDouble(); _received->setDouble(purchasepopulate.value("poitem_qty_received").toDouble()); _unitPrice->set(purchasepopulate.value("poitem_unitprice").toDouble(), purchasepopulate.value("pohead_curr_id").toInt(), purchasepopulate.value("pohead_orderdate").toDate(), false); _freight->setLocalValue(purchasepopulate.value("poitem_freight").toDouble()); _extendedPrice->setLocalValue(purchasepopulate.value("extended_price").toDouble()); _taxtype->setId(purchasepopulate.value("poitem_taxtype_id").toInt()); _taxRecoverable->setChecked(purchasepopulate.value("poitem_tax_recoverable").toBool()); _notes->setText(purchasepopulate.value("poitem_comments").toString()); _project->setId(purchasepopulate.value("poitem_prj_id").toInt()); if(purchasepopulate.value("override_cost").toDouble() > 0) _overriddenUnitPrice = true; if(purchasepopulate.value("poitem_order_id") != -1) { _ordered->setEnabled(FALSE); _dueDate->setEnabled(FALSE); _soLit->setText(purchasepopulate.value("demand_type").toString()); _so->setText(purchasepopulate.value("order_number").toString()); // _soLine->setText(purchasepopulate.value("orderline_number").toString()); } else _tab->setTabEnabled(_tab->indexOf(_demandTab), FALSE); if (purchasepopulate.value("poitem_itemsite_id").toInt() == -1) { _nonInventoryItem->setChecked(TRUE); _expcat->setId(purchasepopulate.value("poitem_expcat_id").toInt()); sPopulateItemSourceInfo(-1); _vendorItemNumber->setText(purchasepopulate.value("poitem_vend_item_number").toString()); _vendorDescrip->setText(purchasepopulate.value("poitem_vend_item_descrip").toString()); _vendorUOM->setText(purchasepopulate.value("poitem_vend_uom").toString()); _uom->setText(purchasepopulate.value("poitem_vend_uom").toString()); } else { _inventoryItem->setChecked(TRUE); _item->setItemsiteid(purchasepopulate.value("poitem_itemsite_id").toInt()); sPopulateItemSourceInfo(_item->id()); if (_metrics->boolean("RevControl")) { _bomRevision->setId(purchasepopulate.value("poitem_bom_rev_id").toInt()); _booRevision->setId(purchasepopulate.value("poitem_boo_rev_id").toInt()); _bomRevision->setEnabled(purchasepopulate.value("poitem_status").toString() == "U" && _privileges->boolean("UseInactiveRevisions")); _booRevision->setEnabled(purchasepopulate.value("poitem_status").toString() == "U" && _privileges->boolean("UseInactiveRevisions")); } } _itemsrcid = purchasepopulate.value("poitem_itemsrc_id").toInt(); _vendorItemNumber->setText(purchasepopulate.value("poitem_vend_item_number").toString()); _vendorDescrip->setText(purchasepopulate.value("poitem_vend_item_descrip").toString()); _vendorUOM->setText(purchasepopulate.value("poitem_vend_uom").toString()); _uom->setText(purchasepopulate.value("poitem_vend_uom").toString()); _invVendorUOMRatio->setDouble(purchasepopulate.value("poitem_invvenduomratio").toDouble()); _invVendUOMRatio = purchasepopulate.value("poitem_invvenduomratio").toDouble(); _manufName->setText(purchasepopulate.value("poitem_manuf_name").toString()); if (_manufName->id() < 0) { _manufName->append(_manufName->count(), purchasepopulate.value("poitem_manuf_name").toString()); _manufName->setText(purchasepopulate.value("poitem_manuf_name").toString()); } _manufItemNumber->setText(purchasepopulate.value("poitem_manuf_item_number").toString()); _manufItemDescrip->setText(purchasepopulate.value("poitem_manuf_item_descrip").toString()); if (_itemsrcid != -1) { _vendorUOM->setEnabled(FALSE); _manufName->setEnabled(FALSE); _manufItemNumber->setEnabled(FALSE); _manufItemDescrip->setEnabled(FALSE); if(_vendorItemNumber->text().isEmpty()) _vendorItemNumber->setText(purchasepopulate.value("itemsrc_vend_item_number").toString()); if(_vendorDescrip->toPlainText().isEmpty()) _vendorDescrip->setText(purchasepopulate.value("itemsrc_vend_item_descrip").toString()); _minOrderQty->setDouble(purchasepopulate.value("itemsrc_minordqty").toDouble()); _orderQtyMult->setDouble(purchasepopulate.value("itemsrc_multordqty").toDouble()); _minimumOrder = purchasepopulate.value("itemsrc_minordqty").toDouble(); _orderMultiple = purchasepopulate.value("itemsrc_multordqty").toDouble(); if(_manufName->currentText().isEmpty()) _manufName->setText(purchasepopulate.value("itemsrc_manuf_name").toString()); if(_manufItemNumber->text().isEmpty()) _manufItemNumber->setText(purchasepopulate.value("itemsrc_manuf_item_number").toString()); if(_manufItemDescrip->toPlainText().isEmpty()) _manufItemDescrip->setText(purchasepopulate.value("itemsrc_manuf_item_descrip").toString()); } purchasepopulate.prepare( "SELECT DISTINCT char_id, char_name," " COALESCE(b.charass_value, (SELECT c.charass_value FROM charass c WHERE ((c.charass_target_type='I') AND (c.charass_target_id=:item_id) AND (c.charass_default) AND (c.charass_char_id=char_id)) LIMIT 1)) AS charass_value" " FROM charass a, char " " LEFT OUTER JOIN charass b" " ON (b.charass_target_type='PI'" " AND b.charass_target_id=:poitem_id" " AND b.charass_char_id=char_id) " " WHERE ( (a.charass_char_id=char_id)" " AND (a.charass_target_type='I')" " AND (a.charass_target_id=:item_id) ) " " ORDER BY char_name;" ); purchasepopulate.bindValue(":item_id", _item->id()); purchasepopulate.bindValue(":poitem_id", _poitemid); purchasepopulate.exec(); int row = 0; QModelIndex idx; while(purchasepopulate.next()) { _itemchar->insertRow(_itemchar->rowCount()); idx = _itemchar->index(row, 0); _itemchar->setData(idx, purchasepopulate.value("char_name"), Qt::DisplayRole); _itemchar->setData(idx, purchasepopulate.value("char_id"), Qt::UserRole); idx = _itemchar->index(row, 1); _itemchar->setData(idx, purchasepopulate.value("charass_value"), Qt::DisplayRole); _itemchar->setData(idx, _item->id(), Xt::IdRole); _itemchar->setData(idx, _item->id(), Qt::UserRole); row++; } _comments->setId(_poitemid); } }
enum SetResponse purchaseOrderItem::set(const ParameterList &pParams) { XSqlQuery purchaseet; XDialog::set(pParams); QVariant param; bool valid; bool haveQty = FALSE; bool haveDate = FALSE; param = pParams.value("vend_id", &valid); if (valid) _vendid = param.toInt(); param = pParams.value("warehous_id", &valid); if (valid) _preferredWarehouseid = param.toInt(); param = pParams.value("dropship", &valid); if (valid) _dropship = param.toBool(); param = pParams.value("parentWo", &valid); if (valid) _parentwo = param.toInt(); param = pParams.value("parentSo", &valid); if (valid) _parentso = param.toInt(); if (_metrics->boolean("CopyPRtoPOItem")) { param = pParams.value("pr_releasenote", &valid); if(valid) _notes->setText(param.toString()); } param = pParams.value("pohead_id", &valid); if (valid) { _poheadid = param.toInt(); purchaseet.prepare( "SELECT pohead_taxzone_id, pohead_number, pohead_orderdate, pohead_status, " // pohead_taxzone_id added " vend_id, vend_restrictpurch, pohead_curr_id " "FROM pohead, vendinfo " "WHERE ( (pohead_vend_id=vend_id)" " AND (pohead_id=:pohead_id) );" ); purchaseet.bindValue(":pohead_id", param.toInt()); purchaseet.exec(); if (purchaseet.first()) { _poNumber->setText(purchaseet.value("pohead_number").toString()); _poStatus = purchaseet.value("pohead_status").toString(); _unitPrice->setEffective(purchaseet.value("pohead_orderdate").toDate()); _unitPrice->setId(purchaseet.value("pohead_curr_id").toInt()); _taxzoneid=purchaseet.value("pohead_taxzone_id").toInt(); // added to pick up tax zone id. _tax->setEffective(purchaseet.value("pohead_orderdate").toDate()); _tax->setId(purchaseet.value("pohead_curr_id").toInt()); if (purchaseet.value("vend_restrictpurch").toBool()) { _item->setQuery( QString( "SELECT DISTINCT item_id, item_number, item_descrip1, item_descrip2," " (item_descrip1 || ' ' || item_descrip2) AS itemdescrip," " uom_name, item_type, item_config, item_active, item_upccode " "FROM item, itemsite, itemsrc, uom " "WHERE ( (itemsite_item_id=item_id)" " AND (itemsrc_item_id=item_id)" " AND (item_inv_uom_id=uom_id)" " AND (itemsite_active)" " AND (item_active)" " AND (itemsrc_active)" " AND (itemsrc_vend_id=%1) ) " "ORDER BY item_number" ) .arg(purchaseet.value("vend_id").toInt()) ); _item->setValidationQuery( QString( "SELECT DISTINCT item_id, item_number, item_descrip1, item_descrip2," " (item_descrip1 || ' ' || item_descrip2) AS itemdescrip," " uom_name, item_type, item_config, item_active, item_upccode " "FROM item, itemsite, itemsrc, uom " "WHERE ( (itemsite_item_id=item_id)" " AND (itemsrc_item_id=item_id)" " AND (item_inv_uom_id=uom_id)" " AND (itemsite_active)" " AND (item_active)" " AND (itemsrc_active)" " AND (itemsrc_vend_id=%1) " " AND (itemsite_item_id=:item_id) ) ") .arg(purchaseet.value("vend_id").toInt()) ); } else { _item->setType(ItemLineEdit::cGeneralPurchased | ItemLineEdit::cGeneralManufactured | ItemLineEdit::cTooling | ItemLineEdit::cActive); _item->setDefaultType(ItemLineEdit::cGeneralPurchased | ItemLineEdit::cActive); } } else { systemError(this, tr("A System Error occurred at %1::%2.") .arg(__FILE__) .arg(__LINE__) ); return UndefinedError; } } param = pParams.value("poitem_id", &valid); if (valid) { _poitemid = param.toInt(); purchaseet.prepare( "SELECT pohead_number, pohead_id " "FROM pohead, poitem " "WHERE ( (pohead_id=poitem_pohead_id) " " AND (poitem_id=:poitem_id) );" ); purchaseet.bindValue(":poitem_id", param.toInt()); purchaseet.exec(); if (purchaseet.first()) { _poNumber->setText(purchaseet.value("pohead_number").toString()); _poheadid = purchaseet.value("pohead_id").toInt(); } populate(); sCalculateTax(); } // connect here and not in the .ui to avoid timing issues at initialization connect(_unitPrice, SIGNAL(valueChanged()), this, SLOT(sPopulateExtPrice())); param = pParams.value("mode", &valid); if (valid) { if (param.toString() == "new") { _mode = cNew; _save->setEnabled(false); purchaseet.exec("SELECT NEXTVAL('poitem_poitem_id_seq') AS poitem_id;"); if (purchaseet.first()) _poitemid = purchaseet.value("poitem_id").toInt(); else { systemError(this, tr("A System Error occurred at %1::%2.") .arg(__FILE__) .arg(__LINE__) ); return UndefinedError; } if(_parentwo != -1) { purchaseet.prepare("SELECT wo_number" " FROM womatl JOIN wo ON (wo_id=womatl_wo_id)" " WHERE (womatl_id=:parentwo); "); purchaseet.bindValue(":parentwo", _parentwo); purchaseet.exec(); if(purchaseet.first()) { _so->setText(purchaseet.value("wo_number").toString()); _soLine->setText(""); } } if(_parentso != -1) { purchaseet.prepare( "INSERT INTO charass" " (charass_target_type, charass_target_id," " charass_char_id, charass_value) " "SELECT 'PI', :orderid, charass_char_id, charass_value" " FROM charass" " WHERE ((charass_target_type='SI')" " AND (charass_target_id=:soitem_id));"); purchaseet.bindValue(":orderid", _poitemid); purchaseet.bindValue(":soitem_id", _parentso); purchaseet.exec(); } purchaseet.prepare( "SELECT (COALESCE(MAX(poitem_linenumber), 0) + 1) AS _linenumber " "FROM poitem " "WHERE (poitem_pohead_id=:pohead_id);" ); purchaseet.bindValue(":pohead_id", _poheadid); purchaseet.exec(); if (purchaseet.first()) _lineNumber->setText(purchaseet.value("_linenumber").toString()); else { systemError(this, tr("A System Error occurred at %1::%2.") .arg(__FILE__) .arg(__LINE__) ); return UndefinedError; } _bomRevision->setEnabled(_privileges->boolean("UseInactiveRevisions")); _booRevision->setEnabled(_privileges->boolean("UseInactiveRevisions")); _comments->setId(_poitemid); _tab->setTabEnabled(_tab->indexOf(_demandTab), FALSE); } else if (param.toString() == "edit") { _mode = cEdit; _typeGroup->setEnabled(FALSE); } else if (param.toString() == "view") { _mode = cView; _typeGroup->setEnabled(FALSE); _vendorItemNumber->setEnabled(FALSE); _vendorItemNumberList->setEnabled(FALSE); _vendorDescrip->setEnabled(FALSE); _warehouse->setEnabled(FALSE); _dueDate->setEnabled(FALSE); _ordered->setEnabled(FALSE); _unitPrice->setEnabled(FALSE); _freight->setEnabled(FALSE); _notes->setReadOnly(TRUE); _comments->setReadOnly(TRUE); _project->setEnabled(FALSE); _taxtype->setEnabled(FALSE); _taxRecoverable->setEnabled(FALSE); _bomRevision->setEnabled(FALSE); _booRevision->setEnabled(FALSE); _close->setText(tr("&Close")); _save->hide(); } } param = pParams.value("itemsite_id", &valid); if (valid) { _item->setItemsiteid(param.toInt()); _item->setEnabled(FALSE); _warehouse->setEnabled(FALSE); } param = pParams.value("itemsrc_id", &valid); if (valid) sPopulateItemSourceInfo(param.toInt()); param = pParams.value("qty", &valid); if (valid) { _ordered->setDouble((param.toDouble()/_invVendUOMRatio)); if (_item->isValid()) sDeterminePrice(); haveQty = TRUE; } param = pParams.value("dueDate", &valid); if (valid) { _dueDate->setDate(param.toDate()); haveDate = TRUE; } param = pParams.value("prj_id", &valid); if (valid) _project->setId(param.toInt()); if(_parentso != -1) { purchaseet.prepare("SELECT cohead_number, coitem_linenumber, coitem_prcost" " FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)" " WHERE (coitem_id=:parentso); "); purchaseet.bindValue(":parentso", _parentso); purchaseet.exec(); if(purchaseet.first()) { _so->setText(purchaseet.value("cohead_number").toString()); _soLine->setText(purchaseet.value("coitem_linenumber").toString()); if(purchaseet.value("coitem_prcost").toDouble() > 0) { _overriddenUnitPrice = true; _unitPrice->setLocalValue(purchaseet.value("coitem_prcost").toDouble()); sPopulateExtPrice(); } } } param = pParams.value("captive", &valid); if (valid) _captive = true; return NoError; }
void purchaseOrderItem::sPopulateItemInfo(int pItemid) { XSqlQuery item; if (pItemid != -1 && _mode == cNew) { item.prepare("SELECT stdCost(item_id) AS stdcost, " " getItemTaxType(item_id, pohead_taxzone_id) AS taxtype_id, " " item_tax_recoverable, COALESCE(item_maxcost, 0.0) AS maxcost " "FROM item, pohead " "WHERE ( (item_id=:item_id) " " AND (pohead_id=:pohead_id) );"); item.bindValue(":item_id", pItemid); item.bindValue(":pohead_id", _poheadid); item.exec(); if (item.first()) { // Reset order qty cache _orderQtyCache = -1; if(_metrics->boolean("RequireStdCostForPOItem") && item.value("stdcost").toDouble() == 0.0) { QMessageBox::critical( this, tr("Selected Item Missing Cost"), tr("<p>The selected item has no Std. Costing information. " "Please see your controller to correct this situation " "before continuing.")); _item->setId(-1); return; } _taxtype->setId(item.value("taxtype_id").toInt()); _taxRecoverable->setChecked(item.value("item_tax_recoverable").toBool()); _maxCost = item.value("maxcost").toDouble(); sPopulateItemsiteInfo(); sPopulateItemChar(); item.prepare("SELECT itemsrc_id " "FROM itemsrc, pohead " "WHERE ( (itemsrc_vend_id=pohead_vend_id)" " AND (itemsrc_item_id=:item_id)" " AND (:effective BETWEEN itemsrc_effective AND (itemsrc_expires - 1))" " AND (itemsrc_active)" " AND (pohead_id=:pohead_id) );" ); item.bindValue(":item_id", pItemid); item.bindValue(":pohead_id", _poheadid); item.bindValue(":effective", _unitPrice->effective()); item.exec(); if (item.size() == 1) { item.first(); if (item.value("itemsrc_id").toInt() != _itemsrcid) sPopulateItemSourceInfo(item.value("itemsrc_id").toInt()); } else if (item.size() > 1) { bool isCurrent = false; while (item.next()) { if (item.value("itemsrc_id").toInt() == _itemsrcid) isCurrent = true; } if (!isCurrent) { _vendorItemNumber->clear(); sVendorItemNumberList(); } } else { _itemsrcid = -1; _vendorItemNumber->clear(); _vendorDescrip->clear(); _vendorUOM->setText(_item->uom()); _uom->setText(_item->uom()); _minOrderQty->clear(); _orderQtyMult->clear(); _invVendorUOMRatio->setDouble(1.0); _earliestDate->setDate(omfgThis->dbDate()); _manufName->setId(-1); _manufItemNumber->clear(); _manufItemDescrip->clear(); _invVendUOMRatio = 1; _minimumOrder = 0; _orderMultiple = 0; } } } }
void purchaseOrderItem::populate() { XSqlQuery purchasepopulate; MetaSQLQuery mql = mqlLoad("purchaseOrderItems", "detail"); ParameterList params; params.append("poitem_id", _poitemid); params.append("sonum", tr("Sales Order #")), params.append("wonum", tr("Work Order #")), purchasepopulate = mql.toQuery(params); if (ErrorReporter::error(QtCriticalMsg, this, tr("Error Retrieving Purchase Order Item Information"), purchasepopulate, __FILE__, __LINE__)) { return; } if (purchasepopulate.first()) { _poNumber->setText(purchasepopulate.value("pohead_number").toString()); _lineNumber->setText(purchasepopulate.value("poitem_linenumber").toString()); _taxzoneid=purchasepopulate.value("pohead_taxzone_id").toInt(); // added to pick up tax zone id. _dueDate->setDate(purchasepopulate.value("poitem_duedate").toDate()); _ordered->setDouble(purchasepopulate.value("poitem_qty_ordered").toDouble()); _orderQtyCache = _ordered->toDouble(); _received->setDouble(purchasepopulate.value("poitem_qty_received").toDouble()); _unitPrice->set(purchasepopulate.value("poitem_unitprice").toDouble(), purchasepopulate.value("pohead_curr_id").toInt(), purchasepopulate.value("pohead_orderdate").toDate(), false); _freight->setLocalValue(purchasepopulate.value("poitem_freight").toDouble()); _extendedPrice->setLocalValue(purchasepopulate.value("extended_price").toDouble()); _taxtype->setId(purchasepopulate.value("poitem_taxtype_id").toInt()); _taxRecoverable->setChecked(purchasepopulate.value("poitem_tax_recoverable").toBool()); _notes->setText(purchasepopulate.value("poitem_comments").toString()); _project->setId(purchasepopulate.value("poitem_prj_id").toInt()); if(purchasepopulate.value("override_cost").toDouble() > 0) _overriddenUnitPrice = true; if(purchasepopulate.value("poitem_order_id") != -1) { _ordered->setEnabled(false); _dueDate->setEnabled(false); _soLit->setText(purchasepopulate.value("demand_type").toString()); _so->setText(purchasepopulate.value("order_number").toString()); // _soLine->setText(purchasepopulate.value("orderline_number").toString()); } else _tab->setTabEnabled(_tab->indexOf(_demandTab), false); if (purchasepopulate.value("poitem_itemsite_id").toInt() == -1) { _nonInventoryItem->setChecked(true); _expcat->setId(purchasepopulate.value("poitem_expcat_id").toInt()); sPopulateItemSourceInfo(-1); _vendorItemNumber->setText(purchasepopulate.value("poitem_vend_item_number").toString()); _vendorDescrip->setText(purchasepopulate.value("poitem_vend_item_descrip").toString()); _vendorUOM->setText(purchasepopulate.value("poitem_vend_uom").toString()); _uom->setText(purchasepopulate.value("poitem_vend_uom").toString()); } else { _inventoryItem->setChecked(true); _item->setItemsiteid(purchasepopulate.value("poitem_itemsite_id").toInt()); sPopulateItemSourceInfo(purchasepopulate.value("poitem_itemsrc_id").toInt()); if (_metrics->boolean("RevControl")) { _bomRevision->setId(purchasepopulate.value("poitem_bom_rev_id").toInt()); _booRevision->setId(purchasepopulate.value("poitem_boo_rev_id").toInt()); _bomRevision->setEnabled(purchasepopulate.value("poitem_status").toString() == "U" && _privileges->boolean("UseInactiveRevisions")); _booRevision->setEnabled(purchasepopulate.value("poitem_status").toString() == "U" && _privileges->boolean("UseInactiveRevisions")); } } _itemsrcid = purchasepopulate.value("poitem_itemsrc_id").toInt(); _contrctNumber->setText(purchasepopulate.value("contrct_number").toString()); _vendorItemNumber->setText(purchasepopulate.value("poitem_vend_item_number").toString()); _vendorDescrip->setText(purchasepopulate.value("poitem_vend_item_descrip").toString()); _vendorUOM->setText(purchasepopulate.value("poitem_vend_uom").toString()); _uom->setText(purchasepopulate.value("poitem_vend_uom").toString()); _invVendorUOMRatio->setDouble(purchasepopulate.value("poitem_invvenduomratio").toDouble()); _invVendUOMRatio = purchasepopulate.value("poitem_invvenduomratio").toDouble(); _manufName->setText(purchasepopulate.value("poitem_manuf_name").toString()); if (_manufName->id() < 0) { _manufName->append(_manufName->count(), purchasepopulate.value("poitem_manuf_name").toString()); _manufName->setText(purchasepopulate.value("poitem_manuf_name").toString()); } _manufItemNumber->setText(purchasepopulate.value("poitem_manuf_item_number").toString()); _manufItemDescrip->setText(purchasepopulate.value("poitem_manuf_item_descrip").toString()); if (_itemsrcid != -1) { _vendorUOM->setEnabled(false); _manufName->setEnabled(false); _manufItemNumber->setEnabled(false); _manufItemDescrip->setEnabled(false); if(_vendorItemNumber->text().isEmpty()) _vendorItemNumber->setText(purchasepopulate.value("itemsrc_vend_item_number").toString()); if(_vendorDescrip->toPlainText().isEmpty()) _vendorDescrip->setText(purchasepopulate.value("itemsrc_vend_item_descrip").toString()); _minOrderQty->setDouble(purchasepopulate.value("itemsrc_minordqty").toDouble()); _orderQtyMult->setDouble(purchasepopulate.value("itemsrc_multordqty").toDouble()); _minimumOrder = purchasepopulate.value("itemsrc_minordqty").toDouble(); _orderMultiple = purchasepopulate.value("itemsrc_multordqty").toDouble(); if(_manufName->currentText().isEmpty()) _manufName->setText(purchasepopulate.value("itemsrc_manuf_name").toString()); if(_manufItemNumber->text().isEmpty()) _manufItemNumber->setText(purchasepopulate.value("itemsrc_manuf_item_number").toString()); if(_manufItemDescrip->toPlainText().isEmpty()) _manufItemDescrip->setText(purchasepopulate.value("itemsrc_manuf_item_descrip").toString()); } sPopulateItemChar(); _comments->setId(_poitemid); } }