Beispiel #1
0
enum SetResponse purchaseRequest::set(ParameterList &pParams)
{
  QVariant param;
  bool     valid;
  int      prid = -1;

  param = pParams.value("itemsite_id", &valid);
  if (valid)
  {
    _item->setItemsiteid(param.toInt());
    _item->setEnabled(FALSE);
    _warehouse->setEnabled(FALSE);
  }

  param = pParams.value("qty", &valid);
  if (valid)
    _qty->setText(formatQty(param.toDouble()));

  param = pParams.value("dueDate", &valid);
  if (valid)
    _dueDate->setDate(param.toDate());

  param = pParams.value("planord_id", &valid);
  if (valid)
    _planordid = param.toInt();

  param = pParams.value("mode", &valid);
  if (valid)
  {
    if (param.toString() == "new")
    {
      _mode = cNew;

      populateNumber();
    }
    else if (param.toString() == "view")
    {
      _mode = cView;

      _number->setEnabled(FALSE);
      _item->setReadOnly(TRUE);
      _warehouse->setEnabled(FALSE);
      _qty->setEnabled(FALSE);
      _dueDate->setEnabled(FALSE);
      _notes->setEnabled(FALSE);
      _project->setEnabled(FALSE);
      _create->hide();

      q.prepare( "SELECT pr_itemsite_id,"
                 "       pr_number,"
                 "       formatQty(wo_qtyreq) AS ordered,"
                 "       pr_duedate,"
                 "       pr_prj_id "
                 "FROM pr "
                 "WHERE (pr_id=:pr_id);" );
      q.bindValue(":pr_id", prid);
      if (q.first())
      {
        _number->setText(q.value("pr_number").toString());
        _item->setItemsiteid(q.value("pr_itemsite_id").toInt());
        _qty->setText(q.value("ordered").toString());
        _dueDate->setDate(q.value("pr_duedate").toDate());
        _project->setId(q.value("pr_prj_id").toInt());
      }
    }
    else if (param.toString() == "release")
    {
      _mode = cRelease;
      _captive = TRUE;

      _number->setEnabled(FALSE);
      _item->setReadOnly(TRUE);
      _warehouse->setEnabled(FALSE);
      _qty->setEnabled(FALSE);
      _dueDate->setEnabled(FALSE);

      q.prepare( "SELECT planord_itemsite_id, planord_duedate,"
                 "       formatQty(planord_qty) AS qty "
                 "FROM planord "
                 "WHERE (planord_id=:planord_id);" );
      q.bindValue(":planord_id", _planordid);
      q.exec();
      if (q.first())
      {
        _item->setItemsiteid(q.value("planord_itemsite_id").toInt());
        _qty->setText(q.value("qty").toString());
        _dueDate->setDate(q.value("planord_duedate").toDate());

        populateNumber();
      }

      _create->setFocus();
    }
  }

  return NoError;
}
Beispiel #2
0
void purchaseRequest::sCreate()
{
  if (!_number->text().length())
  {
    QMessageBox::information( this, tr("Invalid Purchase Request Number"),
                              tr("You must enter a valid Purchase Request number before creating this Purchase Request")  );
    _number->setFocus();
    return;
  }

  if (!(_item->isValid()))
  {
    QMessageBox::information( this, tr("No Item Number Selected"),
                              tr("You must enter or select a valid Item number before creating this Purchase Request")  );
    return;
  }

  if (_qty->toDouble() == 0.0)
  {
    QMessageBox::information( this, tr("Invalid Quantity Ordered"),
                              tr( "You have entered an invalid Qty. Ordered.\n"
                                  "Please correct before creating this Purchase Request."  ) );
    _qty->setFocus();
    return;
  }

  if (!_dueDate->isValid())
  {
    QMessageBox::information( this, tr("Invalid Due Date Entered"),
                              tr( "You have entered an invalid Due Date.\n"
                                  "Please correct before creating this Purchase Request."  ) );
    _dueDate->setFocus();
    return;
  }

  q.prepare( "SELECT itemsite_id "
             "FROM itemsite "
             "WHERE ( (itemsite_item_id=:item_id)"
             " AND (itemsite_warehous_id=:warehous_id) );" );
  q.bindValue(":item_id", _item->id());
  q.bindValue(":warehous_id", _warehouse->id());
  q.exec();
  if (!q.first())
  {
    QMessageBox::warning(this, tr("Invalid Site"),
        tr("The selected Site for this Purchase Request is not\n"
           "a \"Supplied At\" Site. You must select a different\n"
           "Site before creating the Purchase Request.") );
    return;
  }

  int prid = -1;
  int itemsiteid = q.value("itemsite_id").toInt();

  if (_mode == cNew)
  {
    q.prepare( "SELECT createPr( :orderNumber, :itemsite_id, :qty,"
               "                 :dueDate, :notes ) AS prid;" );
    q.bindValue(":orderNumber", _number->text().toInt());
    q.bindValue(":itemsite_id", itemsiteid);
    q.bindValue(":qty", _qty->toDouble());
    q.bindValue(":dueDate", _dueDate->date());
    q.bindValue(":notes", _notes->text());
    q.exec();
    if (!q.first())
    {
      systemError(this, tr("A System Error occurred at %1::%2.")
                        .arg(__FILE__)
                        .arg(__LINE__) );
      return;
    }
    else
      prid = q.value("prid").toInt();
  }
  else if (_mode == cRelease)
  {
    q.prepare("SELECT createPr(:orderNumber, 'F', :planord_id) AS prid;");
    q.bindValue(":orderNumber", _number->text().toInt());
    q.bindValue(":planord_id", _planordid);
    q.exec();
    if (q.first())
    {
      prid = q.value("prid").toInt();

      q.prepare("SELECT releasePlannedOrder(:planord_id, FALSE) AS result;");
      q.bindValue(":planord_id", _planordid);
      q.exec();
    }
  }

  if(-1 != prid)
  {
    q.prepare("UPDATE pr SET pr_prj_id=:prj_id WHERE (pr_id=:pr_id);");
    q.bindValue(":pr_id", prid);
    q.bindValue(":prj_id", _project->id());
    q.exec();
  }

  if (_captive)
    done(prid);
  else
  {
    populateNumber();
    _item->setId(-1);
    _qty->clear();
    _dueDate->setNull();
    _notes->clear();

    _item->setFocus();
  }
}
Beispiel #3
0
enum SetResponse voucher::set(const ParameterList &pParams)
{
  QVariant param;
  bool     valid;

  param = pParams.value("mode", &valid);
  if (valid)
  {
    if (param.toString() == "new")
    {
      _mode = cNew;

      q.exec("SELECT NEXTVAL('vohead_vohead_id_seq') AS vohead_id");
      if (q.first())
        _voheadid = q.value("vohead_id").toInt();
      else
      {
        systemError(this, tr("A System Error occurred at %1::%2.")
                          .arg(__FILE__)
                          .arg(__LINE__) );
        return UndefinedError;
      }

      if (_metrics->value("VoucherNumberGeneration") == "A")
      {
        populateNumber();
        _poNumber->setFocus();
      }
      else
        _voucherNumber->setFocus();

      q.prepare("INSERT INTO vohead (vohead_id,   vohead_number, vohead_posted)"
		"            VALUES (:vohead_id, :vohead_number, false);" );
      q.bindValue(":vohead_id",     _voheadid);
      q.bindValue(":vohead_number", _voucherNumber->text());
      q.exec();
      if (q.lastError().type() != QSqlError::None)
      {
	systemError(this, q.lastError().databaseText(), __FILE__, __LINE__);
	return UndefinedError;
      }
    }
    else if (param.toString() == "edit")
    {
      _mode = cEdit;

      _voucherNumber->setEnabled(FALSE);
      _poNumber->setEnabled(FALSE);
      _poList->hide();

      _save->setFocus();
    }
    else if (param.toString() == "view")
    {
      _mode = cView;

      _poNumber->setType(0); // allow any potype when viewing
 
      _voucherNumber->setEnabled(FALSE);
      _poNumber->setEnabled(FALSE);
      _poList->hide();
      _amountToDistribute->setEnabled(FALSE);
      _distributionDate->setEnabled(FALSE);
      _invoiceDate->setEnabled(FALSE);
      _dueDate->setEnabled(FALSE);
      _invoiceNum->setEnabled(FALSE);
      _reference->setEnabled(FALSE);
      _poitem->setEnabled(FALSE);
      _distributions->setEnabled(FALSE);
      _miscDistrib->setEnabled(FALSE);
      _new->setEnabled(FALSE);
      _terms->setEnabled(FALSE);
      _flagFor1099->setEnabled(FALSE);
      _distributeall->setEnabled(FALSE);
      _close->setText(tr("&Close"));
      _save->hide();

      _close->setFocus();
      disconnect(_poNumber, SIGNAL(valid(bool)), _distributeall, SLOT(setEnabled(bool)));
    }
  }

  param = pParams.value("vohead_id", &valid);
  if (valid)
  {
    _voheadid = param.toInt();
    populate();
  }

  return NoError;
}