function enter()
{
    extract($_POST);
    $qry = new dbSelect("config", "trh", grp(m("where", "readonly='f'")));
    $qry->run();
    while ($row = $qry->fetch_array()) {
        if (!isset(${$row["name"]})) {
            ${$row["name"]} = array("desc" => $row["description"], "value" => $row["value"], "type" => $row["type"]);
        }
    }
    $display = array("General Settings" => array("INTERVAL", "MANAGEUSER"), "SMTP Settings" => array("SMTP_SERVER", "SMTP_USER", "SMTP_PASS", "SMTP_FROM"), "POP3 Settings" => array("POP3_SERVER", "POP3_USER", "POP3_PASS"));
    $cat = false;
    $OUT = "\n\t<h3>Transactioning Configuration</h3>\n\t<form method='post' action='" . SELF . "'>\n\t<input type='hidden' name='key' value='write' />\n\t<table " . TMPL_tblDflts . " width='400'>";
    $pc = false;
    foreach ($display as $cat => $cnames) {
        if ($cat != $pc) {
            if ($pc != false) {
                $OUT .= TBL_BR;
            }
            $OUT .= "\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>{$cat}</th>\n\t\t\t</tr>";
        }
        $i = 0;
        foreach ($cnames as $vname) {
            if (!isset($vname)) {
                $vname = "";
            }
            $OUT .= "\n\t\t\t<input type='hidden' name='{$vname}[desc]' value='" . ${$vname}["desc"] . "' />\n\t\t\t<input type='hidden' name='{$vname}[type]' value='" . ${$vname}["type"] . "' />\n\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t<td>" . ${$vname}["desc"] . "</td>\n\t\t\t\t<td>";
            switch (${$vname}["type"]) {
                case "yn":
                    $OUT .= "\n\t\t\t\t\t<select name='{$vname}[value]'>\n\t\t\t\t\t\t<option value='y' " . (${$vname}["value"] != "n") . ">Yes</option>\n\t\t\t\t\t\t<option value='n' " . (${$vname}["value"] == "n") . ">Yes</option>\n\t\t\t\t\t</select>";
                    break;
                case "passwd":
                    $OUT .= "\n\t\t\t\t\t<input type='password' name='{$vname}[value]' value='" . ${$vname}["value"] . "' />";
                    break;
                case "ulist":
                    $uq = qryUsers();
                    $OUT .= db_mksel($uq, "{${'vname'}}[value]", ${'vname'}["value"], "#userid", "#username");
                    break;
                case "str":
                default:
                    $OUT .= "\n\t\t\t\t\t<input type='text' name='{$vname}[value]' value='" . ${$vname}["value"] . "' />";
                    break;
            }
            $OUT .= "\n\t\t\t\t</td>\n\t\t\t</tr>";
        }
    }
    $OUT .= "\n\t<tr>\n\t\t<td colspan='2' align='right'><input type='submit' value='Save' /></td>\n\t</tr>\n\t</table>\n\t</form>";
    return $OUT;
}
/**
 * handles a new purchase response
 *
 * @param string $key
 * @param clsMailMsg $oMSG
 * @param array $config
 * @return bool
 */
function response_order($key, $oMSG, $config)
{
    if (($stds = msg_std($oMSG)) === false) {
        return false;
    }
    list($compname, $ipaddr, $bustel, $fromwho, $email) = $stds;
    /* other side key */
    if (($yourkey = getfrommmsg(REGEX_YOURKEY, $oMSG)) === false) {
        return false;
    }
    /* purchase id in my database */
    if (($purid = getfrommmsg(REGEX_PURID, $oMSG)) === false) {
        return false;
    }
    /* purchase accepted/invoices/denied */
    if (($purstatus = getfrommmsg(REGEX_PURSTATUS, $oMSG)) === false) {
        return false;
    }
    /* validate keys */
    if (($keyinfo = trhKeyPair($key, $yourkey)) === false) {
        return false;
    }
    $userinfo = qryUsers($keyinfo["userid"]);
    require_lib("validate");
    $v = new validate();
    if (!$v->isOk($purid, "num", 1, 20, "")) {
        return false;
    }
    $sql = "SELECT * FROM cubit.purchases WHERE purid = '{$purid}'";
    if (!($purRslt = db_exec($sql))) {
        return false;
    }
    if (pg_num_rows($purRslt) < 1) {
        return false;
    }
    $pur = pg_fetch_array($purRslt);
    if ($purstatus == "d") {
        print "Denying purchase: {$purid}\n";
        if ($pur['received'] == "y") {
            return false;
        }
        $sql = "SELECT * FROM cubit.pur_items  WHERE purid = '{$purid}'";
        if (!($stktRslt = db_exec($sql))) {
            return false;
        }
        while ($stkt = pg_fetch_array($stktRslt)) {
            print "\tRemoving Item: {$stkt['stkid']}\n";
            $sql = "UPDATE cubit.stock SET ordered = (ordered - '{$stkt['qty']}')  WHERE stkid = '{$stkt['stkid']}'";
            if (!db_exec($sql)) {
                return false;
            }
            $sql = "INSERT INTO cubit.pur_canc_items (purid, whid, stkid, qty, ddate, div, qpack, upack, ppack, svat, rqty, tqty, unitcost, amt, iqty, vatcode, description, account)\n\t\t\t\t\tVALUES ('{$stkt['purid']}', '{$stkt['whid']}', '{$stkt['stkid']}', '{$stkt['qty']}', '{$stkt['ddate']}', '{$stkt['div']}', '{$stkt['qpack']}', '{$stkt['upack']}', '{$stkt['ppack']}', '{$stkt['svat']}', '{$stkt['rqty']}', '{$stkt['tqty']}', '{$stkt['unitcost']}', '{$stkt['amt']}', '{$stkt['iqty']}', '{$stkt['vatcode']}', '{$stkt['description']}', '{$stkt['account']}')";
            if (!db_exec($sql)) {
                return false;
            }
        }
        $sql = "DELETE FROM cubit.purchases WHERE purid='{$purid}'";
        if (!db_exec($sql)) {
            return false;
        }
        $sql = "INSERT INTO cubit.cancelled_purch(purid, deptid, supid, supaddr, terms, pdate, ddate, remarks, received, refno, vatinc, prd, ordernum, part, div, purnum, edit, supname, supno, shipchrg, subtot, total, balance, vat, supinv, apprv, appname, rvat, rshipchrg, rsubtot, rtotal, jobid, jobnum, toggle, cash, shipping, invcd, rshipping, noted, returned, iamount, ivat, delvat, username) VALUES('{$pur['purid']}', '{$pur['deptid']}', '{$pur['supid']}', '{$pur['supaddr']}', '{$pur['terms']}', '{$pur['pdate']}', '{$pur['ddate']}', '{$pur['remarks']}', '{$pur['received']}', '{$pur['refno']}', '{$pur['vatinc']}', '{$pur['prd']}', '{$pur['ordernum']}', '{$pur['part']}', '{$pur['div']}', '{$pur['purnum']}', '{$pur['edit']}', '{$pur['supname']}', '{$pur['supno']}', '{$pur['shipchrg']}', '{$pur['subtot']}', '{$pur['total']}', '{$pur['balance']}', '{$pur['vat']}', '{$pur['supinv']}', '{$pur['apprv']}', '{$pur['appname']}', '{$pur['rvat']}', '{$pur['rshipchrg']}', '{$pur['rsubtot']}', '{$pur['rtotal']}', '{$pur['jobid']}', '{$pur['jobnum']}', '{$pur['toggle']}', '{$pur['cash']}', '{$pur['shipping']}', '{$pur['invcd']}', '{$pur['rshipping']}', '{$pur['noted']}', '{$pur['returned']}', '{$pur['iamount']}', '{$pur['ivat']}', '{$pur['delvat']}', '{$userinfo['username']}')";
        if (!db_exec($sql)) {
            return false;
        }
        $msg = "Purchase nr. {$pur['purnum']} denied.";
        print "Purchase denied\n";
    } else {
        if ($purstatus == "a") {
            $msg = "Purchase nr. {$pur['purnum']} accepted. You should receive further information from supplier.";
        } else {
            if ($purstatus == "i") {
                $msg = "Purchase nr. {$pur['purnum']} accepted and invoiced. You should receive further information/an invoice from supplier.";
            }
        }
    }
    print "Sending msg: {$msg} to user: {$userinfo['username']}\n";
    msgSend($userinfo["username"], $msg);
}