void purchaseOrderItem::sDeterminePrice() { if ((_orderQtyCache != -1) && (_orderQtyCache != _ordered->toDouble())) { if (QMessageBox::question(this, tr("Update Price?"), tr("<p>The Item qty. has changed. Do you want to update the Price?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape) == QMessageBox::No) { _orderQtyCache = _ordered->toDouble(); sPopulateExtPrice(); return; } } if ( (!_overriddenUnitPrice) && (_itemsrcid != -1) && (_ordered->toDouble() != 0.0) && (_orderQtyCache != _ordered->toDouble())) { q.prepare( "SELECT currToCurr(itemsrcp_curr_id, :curr_id, itemsrcp_price, :effective) " "AS new_itemsrcp_price " "FROM itemsrcp " "WHERE ( (itemsrcp_itemsrc_id=:itemsrc_id)" " AND (itemsrcp_qtybreak <= :qty) ) " "ORDER BY itemsrcp_qtybreak DESC " "LIMIT 1;" ); q.bindValue(":itemsrc_id", _itemsrcid); q.bindValue(":qty", _ordered->toDouble()); q.bindValue(":curr_id", _unitPrice->id()); q.bindValue(":effective", _unitPrice->effective()); q.exec(); if (q.first()) _unitPrice->setLocalValue(q.value("new_itemsrcp_price").toDouble()); else _unitPrice->clear(); } if (_ordered->toDouble() != 0.0) _orderQtyCache = _ordered->toDouble(); sPopulateExtPrice(); }
void purchaseOrderItem::sDeterminePrice() { XSqlQuery purchaseDeterminePrice; if ((_orderQtyCache != -1) && (_orderQtyCache != _ordered->toDouble())) { if (QMessageBox::question(this, tr("Update Price?"), tr("<p>The Item qty. has changed. Do you want to update the Price?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape) == QMessageBox::No) { _orderQtyCache = _ordered->toDouble(); sPopulateExtPrice(); return; } } if ( (!_overriddenUnitPrice) && (_itemsrcid != -1) && (_ordered->toDouble() != 0.0) && (_orderQtyCache != _ordered->toDouble())) { purchaseDeterminePrice.prepare( "SELECT itemsrcPrice(:itemsrc_id, :warehous_id, :dropship," " :qty, :curr_id, :effective) AS new_itemsrc_price;"); purchaseDeterminePrice.bindValue(":itemsrc_id", _itemsrcid); purchaseDeterminePrice.bindValue(":warehous_id", _warehouse->id()); purchaseDeterminePrice.bindValue(":dropship", _dropship); purchaseDeterminePrice.bindValue(":qty", _ordered->toDouble()); purchaseDeterminePrice.bindValue(":curr_id", _unitPrice->id()); purchaseDeterminePrice.bindValue(":effective", _unitPrice->effective()); purchaseDeterminePrice.exec(); if (purchaseDeterminePrice.first()) _unitPrice->setLocalValue(purchaseDeterminePrice.value("new_itemsrc_price").toDouble()); else _unitPrice->clear(); } if (_ordered->toDouble() != 0.0) _orderQtyCache = _ordered->toDouble(); sPopulateExtPrice(); _save->setEnabled(true); }
void purchaseOrderItem::sDeterminePrice() { if ( (!_overriddenUnitPrice) && (_itemsrcid != -1) && (_ordered->toDouble() != 0.0) ) { q.prepare( "SELECT currToCurr(itemsrcp_curr_id, :curr_id, itemsrcp_price, :effective) " "AS new_itemsrcp_price " "FROM itemsrcp " "WHERE ( (itemsrcp_itemsrc_id=:itemsrc_id)" " AND (itemsrcp_qtybreak <= :qty) ) " "ORDER BY itemsrcp_qtybreak DESC " "LIMIT 1;" ); q.bindValue(":itemsrc_id", _itemsrcid); q.bindValue(":qty", _ordered->toDouble()); q.bindValue(":curr_id", _unitPrice->id()); q.bindValue(":effective", _unitPrice->effective()); q.exec(); if (q.first()) _unitPrice->setLocalValue(q.value("new_itemsrcp_price").toDouble()); else _unitPrice->clear(); } sPopulateExtPrice(); }
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; }
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; }