コード例 #1
0
function display()
{
    $sql = "SELECT * FROM cubit.stock ORDER BY stkcod ASC";
    $stock_rslt = db_exec($sql) or errDie("Unable to retrieve stock.");
    $stock_out = "";
    while ($stock_data = pg_fetch_array($stock_rslt)) {
        // Retrieve units on order
        $sql = "SELECT sum(qty) FROM cubit.sorders_items WHERE stkid='{$stock_data['stkid']}'";
        $order_rslt = db_exec($sql) or errDie("Unable to retrieve orders.");
        $order_qty = pg_fetch_result($order_rslt, 0);
        if (empty($stock_data["minlvl"])) {
            continue;
        }
        if (empty($order_qty)) {
            $order_qty = 0;
        }
        $units = $stock_data["units"] - $order_qty;
        $required = abs($units - $stock_data["minlvl"]);
        // We're not required to purchase this item
        if ($units > $stock_data["minlvl"]) {
            continue;
        }
        $stock_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$stock_data['stkcod']}</td>\n\t\t\t\t<td>{$stock_data['stkdes']}</td>\n\t\t\t\t<td align='center'>" . sprint3($stock_data['units']) . "</td>\n\t\t\t\t<td align='center'>" . sprint3($order_qty) . "</td>\n\t\t\t\t<td align='center'>" . sprint3($stock_data['minlvl']) . "</td>\n\t\t\t\t<td align='center'><b>" . sprint3($required) . "</b></td>\n\t\t\t\t<td><a href='purchase-new.php'>Purchase</a></td>\n\t\t\t</tr>";
    }
    if (empty($stock_out)) {
        $stock_out = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='7'>No items required for purchase.</td>\n\t\t\t</tr>";
    }
    $OUTPUT = "\n\t\t<center>\n\t\t<h3>Required Purchases</h3>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Stock Code</th>\n\t\t\t\t<th>Stock Description</th>\n\t\t\t\t<th>Current Units</th>\n\t\t\t\t<th>Units on Order</th>\n\t\t\t\t<th>Minimum Level</th>\n\t\t\t\t<th>Minimum Required</th>\n\t\t\t\t<th>Options</th>\n\t\t\t</tr>\n\t\t\t{$stock_out}\n\t\t</table>\n\t\t</center>";
    return $OUTPUT;
}
コード例 #2
0
function adjust_display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["page"] = 1;
    extract($fields, EXTR_SKIP);
    $sql = "SELECT stock.stkid, bar, stkcod, stkdes, catname, csprice,\n\t\t\t\t(qty-units) AS adjust_qty\n\t\t\tFROM cubit.stock_take\n\t\t\t\tLEFT JOIN cubit.stock ON stock.stkid=stock_take.stkid\n\t\t\tWHERE adjusted='0' AND page='{$page}'\n\t\t\tORDER BY stkcod ASC";
    $adjust_rslt = db_exec($sql) or errDie("Unable to retrieve adjustments.");
    $adjust_out = "";
    while ($adjust_data = pg_fetch_array($adjust_rslt)) {
        if ($adjust_data["adjust_qty"] == 0) {
            continue;
        }
        $value = $adjust_data["csprice"] * $adjust_data["adjust_qty"];
        $adjust_out .= "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>{$adjust_data['bar']}</td>\n\t\t\t<td>{$adjust_data['catname']}</td>\n\t\t\t<td>{$adjust_data['stkcod']}</td>\n\t\t\t<td>{$adjust_data['stkdes']}</td>\n\t\t\t<td align='center'>" . sprint3($adjust_data['adjust_qty']) . "</td>\n\t\t\t<td align='right'>" . sprint($value) . "</th>\n\t\t\t<td>\n\t\t\t\t<input type='hidden' name='adjust_qty[{$adjust_data['stkid']}]'\n\t\t\t\tvalue='{$adjust_data['adjust_qty']}' />\n\t\t\t\t<input type='submit' name='update[{$adjust_data['stkid']}]'\n\t\t\t\tvalue='Adjust' />\n\t\t\t</td>\n\t\t</tr>";
    }
    if (empty($adjust_out)) {
        $adjust_out = "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td colspan='7'>\n\t\t\t\t<li>No results found for this page.</li>\n\t\t\t</td>\n\t\t</tr>";
    }
    $sql = "SELECT max(page) FROM cubit.stock_take";
    $mp_rslt = db_exec($sql) or errDie("Unable to retrieve total pages.");
    $max_page = pg_fetch_result($mp_rslt, 0);
    if ($page < $max_page) {
        $adjust_btn = "\n\t\t\t<a href='" . SELF . "?key=adjust_display&page=" . ($page + 1) . "'>\n\t\t\t\tNext &raquo\n\t\t\t</a>";
    } else {
        $adjust_btn = "";
    }
    $OUTPUT = "\n\t<center>\n\t<h3>Stock Take - Adjustments</h3>\n\t<form method='post' action='" . SELF . "'>\n\t<table " . TMPL_tblDflts . ">\n\t\t<tr>\n\t\t\t<th colspan='2'>Page</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>\n\t\t\t\t<input type='text' name='page' value='{$page}' size='3'\n\t\t\t\tstyle='font-weight: bold; text-align: center' />\n\t\t\t</td>\n\t\t\t<td><input type='submit' value='OK' /></td>\n\t\t</tr>\n\t</table>\n\t</form>\n\t<form method='post' action='" . SELF . "'>\n\t<input type='hidden' name='key' value='adjust_update' />\n\t<input type='hidden' name='page' value='{$page}' />\n\t<table " . TMPL_tblDflts . ">\n\t\t<tr>\n\t\t\t<th>Barcode</th>\n\t\t\t<th>Category</th>\n\t\t\t<th>Stock Code</th>\n\t\t\t<th>Stock Description</th>\n\t\t\t<th>Adjustment</th>\n\t\t\t<th>Value</th>\n\t\t\t<th>&nbsp;</th>\n\t\t</tr>\n\t\t{$adjust_out}\n\t</table>\n\t<input type='submit' name='button[page_complete]' value='Adjust Page' />\n\t<br />\n\t{$adjust_btn}\n\t</center>";
    return $OUTPUT;
}
コード例 #3
0
function manuOut()
{
    extract($_REQUEST);
    $fields = array();
    $fields["qty"] = 1;
    $fields["tdate_year"] = date("Y");
    $fields["tdate_month"] = date("m");
    $fields["tdate_day"] = date("d");
    extract($fields, EXTR_SKIP);
    $requirements_met = true;
    // Retrieve main stock item
    $sql = "SELECT * FROM cubit.stock WHERE stkid='{$m_stock_id}'";
    $m_stock_rslt = db_exec($sql) or errDie("Unable to retrieve main stock item.");
    $m_stock_data = pg_fetch_array($m_stock_rslt);
    // Retrieve recipe
    $sql = "SELECT * FROM cubit.recipies WHERE m_stock_id='{$m_stock_id}' ORDER BY id DESC";
    $recipe_rslt = db_exec($sql) or errDie("Unable to retrieve recipe.");
    $s_stock_out = "";
    while ($recipe_data = pg_fetch_array($recipe_rslt)) {
        // Retrieve stock item
        $sql = "SELECT * FROM cubit.stock WHERE stkid='{$recipe_data['s_stock_id']}'";
        $s_stock_rslt = db_exec($sql) or errDie("Unable to retrieve recipe.");
        $s_stock_data = pg_fetch_array($s_stock_rslt);
        $qty_item = $recipe_data["qty"] * $qty;
        // Do we have enough stock items
        if ($qty_item > $s_stock_data["units"]) {
            $qty_required = "<span class='required'>" . ($qty_item - $s_stock_data["units"]) . "</span>";
            $options = "\n\t\t\t\t<table cellpadding='1' cellspacing='0'>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Edit Recipe</td>\n\t\t\t\t\t\t<td>Purchase</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>";
            $requirements_met = false;
        } else {
            $qty_required = 0;
            $options = "";
        }
        $s_stock_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$s_stock_data['stkcod']}</td>\n\t\t\t\t<td align='center'>" . sprint3($qty_item) . "</td>\n\t\t\t\t<td align='center'>{$qty_required}</td>\n\t\t\t</tr>";
    }
    if ($qty) {
        if ($requirements_met) {
            $datefield = "\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='4'>Transaction Date</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='4' align='center'>" . mkDateSelect("tdate", $tdate_year, $tdate_month, $tdate_day) . "</td>\n\t\t\t\t</tr>";
            $manubtn = "<input type='submit' value='Manufacture &raquo' style='font-size: 14pt; font-weight: bold; width: 100%' />";
        } else {
            $datefield = "\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='4'>Transaction Date</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='4' align='center'>\n\t\t\t\t\t\t" . mkDateSelect("tdate", $tdate_year, $tdate_month, $tdate_day) . "\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            $manubtn = "\n\t\t\t\t<li class='err'>\n\t\t\t\t\tUnable to manufacture not<br />\n\t\t\t\t\tenough stock available.<br />\n\t\t\t\t\t<a href='purchase-new.php'>New Purchase</a><br />\n\t\t\t\t\t<a href='manu_recipe.php?m_stock_id={$m_stock_id}'>Edit Recipe</a>\n\t\t\t\t</li>";
        }
    } else {
        $datefield = "";
        $manubtn = "";
    }
    $OUTPUT = "\n\t\t<center>\n\t\t<h3>Manufacture</h3>\n\t\t<form method='post' action='" . SELF . "'>\n\t\t\t<input type='hidden' name='m_stock_id' value='{$m_stock_id}' />\n\t\t\t<input type='hidden' name='key' value='{$key}' />\n\t\t\t<input type='hidden' name='tdate_year' value='{$tdate_year}' />\n\t\t\t<input type='hidden' name='tdate_month' value='{$tdate_month}' />\n\t\t\t<input type='hidden' name='tdate_day' value='{$tdate_day}' />\n\t\t\t<li class='err' style='width: 50%'>\n\t\t\t\tPlease remember to click update after selecting the quantity to be\n\t\t\t\tmanufactured!\n\t\t\t</li>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>New Stock Item</th>\n\t\t\t\t<th>Qty</th>\n\t\t\t\t<th colspan='2'>&nbsp;</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><b>{$m_stock_data['stkcod']}</b></td>\n\t\t\t\t<td><input type='text' name='qty' value='{$qty}' size='3' style='text-align: center; width: 100%;' /></td>\n\t\t\t\t<td colspan='2'><input type='submit' value='Update &raquo' style='width: 100%;' /></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Stock Item</th>\n\t\t\t\t<th>Qty</th>\n\t\t\t\t<th>Required</th>\n\t\t\t</tr>\n\t\t\t{$s_stock_out}\n\t\t</form>\n\t\t<form method='post' action='" . SELF . "'>\n\t\t\t<input type='hidden' name='m_stock_id' value='{$m_stock_id}' />\n\t\t\t<input type='hidden' name='opt' value='manufacture' />\n\t\t\t<input type='hidden' name='qty' value='{$qty}' />\n\t\t\t{$datefield}\n\t\t\t<tr>\n\t\t\t\t<th colspan='4' align='center'>{$manubtn}</th>\n\t\t\t</tr>\n\t\t</form>\n\t\t</table>\n\t\t</form>\n\t\t</center>";
    return $OUTPUT;
}
コード例 #4
0
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = "01";
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    $fields["prd"] = "daily";
    $fields["increase"] = 0;
    $fields["decrease"] = 0;
    extract($fields, EXTR_SKIP);
    $from_date = "{$from_year}-{$from_month}-{$from_day}";
    $to_date = "{$to_year}-{$to_month}-{$to_day}";
    $sql = "SELECT stkid, stkcod, stkdes, minlvl, maxlvl, units FROM cubit.stock";
    $stock_rslt = db_exec($sql) or errDie("Unable to retrieve stock.");
    $stock_out = "";
    $tot_avail = 0;
    while ($stock_data = pg_fetch_array($stock_rslt)) {
        $tmp_min = $suggested_min = averageSalesQty($stock_data["stkid"], $from_date, $to_date, $prd);
        $tmp_max = $suggested_max = maxSalesQty($stock_data["stkid"], $prd);
        $suggested_min += $tmp_min / 100 * $increase;
        $suggested_min -= $tmp_min / 100 * $decrease;
        $suggested_max += $tmp_max / 100 * $increase;
        $suggested_max -= $tmp_max / 100 * $decrease;
        $stock_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$stock_data['stkcod']}</td>\n\t\t\t\t<td>{$stock_data['stkdes']}</td>\n\t\t\t\t<td align='center'><b>{$stock_data['minlvl']}</b></td>\n\t\t\t\t<td align='center'><b>{$stock_data['maxlvl']}</b></td>\n\t\t\t\t<td align='center'>\n\t\t\t\t\t<b>{$suggested_min}</b>\n\t\t\t\t</td>\n\t\t\t\t<td align='center'>\n\t\t\t\t\t<b>" . sprint3($suggested_max) . "</b>\n\t\t\t\t</td>\n\t\t\t\t<td align='center'><b>" . sprint3($stock_data['units']) . "</b></td>\n\t\t\t</tr>";
        if ($stock_data['units'] > 0) {
            $tot_avail += $stock_data['units'];
        }
    }
    $stock_out .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='6'><b>Total: (Positive amounts only)</b></td>\n\t\t\t\t\t\t<td align='center'><b>" . sprint3($tot_avail) . "</b></td>\n\t\t\t\t\t</tr>\n\t\t\t\t";
    $prds = array("daily", "weekly", "monthly");
    $prd_sel = "<select name='prd'>";
    foreach ($prds as $prd_val) {
        if ($prd_val == $prd) {
            $sel = "selected='selected'";
        } else {
            $sel = "";
        }
        $prd_sel .= "<option value='{$prd_val}' {$sel}>" . ucfirst($prd_val) . "</option>";
    }
    $OUTPUT = "\n\t\t<center>\n\t\t<h3>Minimum and Maximum Stock Levels</h3>\n\t\t<form method='POST' action='" . SELF . "'>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th colspan='4'>Date Range</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\n\t\t\t\t<td>&nbsp; <b> To </b> &nbsp;</td>\n\t\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\n\t\t\t\t<td rowspan='2'>\n\t\t\t\t\t<input type='submit' value='Calculate' style='height: 100%; font-weight: bold' />\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='3' align='center'>{$prd_sel}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='4' align='center'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Increase</th>\n\t\t\t\t\t\t\t<th>Decrease</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td width='50%' align='center'>\n\t\t\t\t\t\t\t\t<input type='text' name='increase' value='{$increase}' size='3' />%\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td width='50%' align='center'>\n\t\t\t\t\t\t\t\t<input type='text' name='decrease' value='{$decrease}' size='3' />%\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Stock Code</th>\n\t\t\t\t<th>Stock Description</th>\n\t\t\t\t<th>Current Minimum</th>\n\t\t\t\t<th>Current Maximum</th>\n\t\t\t\t<th>Suggested Minimum</th>\n\t\t\t\t<th>Suggested Maximum</th>\n\t\t\t\t<th>Currently On Hand</th>\n\t\t\t</tr>\n\t\t\t{$stock_out}\n\t\t</table>\n\t\t</center>";
    return $OUTPUT;
}
コード例 #5
0
function details($_GET)
{
    $showvat = TRUE;
    # get vars
    extract($_GET);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($purid, "num", 1, 20, "Invalid Order number.");
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get purchase info
    db_connect();
    $sql = "SELECT * FROM purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $purRslt = db_exec($sql) or errDie("Unable to get Order information");
    if (pg_numrows($purRslt) < 1) {
        return "<i class='err'>Order Not Found</i>";
    }
    $pur = pg_fetch_array($purRslt);
    $get_codes = "SELECT * FROM suppstock WHERE suppid = '{$pur['supid']}' ORDER BY stkid";
    $run_codes = db_exec($get_codes) or errDie("Unable to get supplier stock code information");
    if (pg_numrows($run_codes) > 0) {
        while ($codarr = pg_fetch_array($run_codes)) {
            if (strlen($codarr['stkcod']) > 0) {
                $stockcodes[$codarr['stkid']]['stkcod'] = $codarr['stkcod'];
            }
            if (strlen($codarr['stkdes']) > 0) {
                $stockcodes[$codarr['stkid']]['stkdes'] = $codarr['stkdes'];
            }
        }
    }
    /* --- Start Products Display --- */
    # Products layout
    $products = "\r\n\t\t<table cellpadding='5' cellspacing='0' border='1' width='100%' bordercolor='#000000'>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>STORE</td>\r\n\t\t\t\t<td>ITEM NUMBER</td>\r\n\t\t\t\t<td>DESCRIPTION</td>\r\n\t\t\t\t<td>QTY OUTSTANDING</td>\r\n\t\t\t\t<td>UNIT PRICE</td>\r\n\t\t\t\t<td>DISCOUNT</td>\r\n\t\t\t\t<td>DELIVERY DATE</th>\r\n\t\t\t\t<td>AMOUNT</td>\r\n\t\t\t<tr>";
    # get selected stock in this purchase
    db_connect();
    $sql = "SELECT * FROM pur_items  WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        if (isset($stockcodes[$stk['stkid']]['stkcod'])) {
            $stk['stkcod'] = $stockcodes[$stk['stkid']]['stkcod'];
        }
        if (isset($stockcodes[$stk['stkid']]['stkdes'])) {
            $stk['stkdes'] = $stockcodes[$stk['stkid']]['stkdes'];
        }
        # format date
        list($dyear, $dmon, $dday) = explode("-", $stkd['ddate']);
        db_conn('cubit');
        $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'";
        $Ri = db_exec($Sl);
        $vd = pg_fetch_array($Ri);
        if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
            $showvat = FALSE;
        }
        if ($stkd['whid'] == "0") {
            $desc = $stkd['description'];
        } else {
            $desc = $stk['stkdes'];
        }
        # put in product
        $products .= "\r\n\t\t\t<tr>\r\n\t\t\t\t<td>{$wh['whname']}</td>\r\n\t\t\t\t<td>{$stk['stkcod']}</td>\r\n\t\t\t\t<td>{$desc}</td>\r\n\t\t\t\t<td>" . sprint3($stkd['qty']) . "</td>\r\n\t\t\t\t<td nowrap>" . CUR . " " . sprint($stkd['unitcost']) . "</td>\r\n\t\t\t\t<td>{$stkd['udiscount']}</td>\r\n\t\t\t\t<td>{$dday}-{$dmon}-{$dyear}</td>\r\n\t\t\t\t<td nowrap>" . CUR . " {$stkd['amt']}</td>\r\n\t\t\t</tr>";
    }
    $products .= "</table>";
    /*
    # Get supplier
    db_connect();
    $sql = "SELECT supname,supno FROM suppliers WHERE supid = '$pur[supid]' AND div = '".USER_DIV."'";
    $supRslt = db_exec($sql);
    if(pg_numrows($supRslt) < 1){
    	$sup['supname'] = "<li class=err>Supplier not found";
    	$sup['supno'] = "";
    }else{
    	$sup = pg_fetch_array($supRslt);
    }
    */
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$pur['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<i class='err'>Not Found</i>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    /* --- Start Some calculations --- */
    # Get subtotal
    $SUBTOT = sprint($pur['subtot']);
    # Get Total
    $TOTAL = sprint($pur['total']);
    # Get vat
    $VAT = sprint($pur['vat']);
    /* --- End Some calculations --- */
    # format date
    list($pyear, $pmon, $pday) = explode("-", $pur['pdate']);
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    /* -- Final Layout -- */
    $details = "\r\n\t\t<center>\r\n\t\t<h3>Order Details</h3>\r\n\t\t<table cellpadding='0' cellspacing='4' border=0 width=750>\r\n\t\t\t<tr>\r\n\t\t\t\t<td valign='top'>\r\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border=1>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td colspan='2'> Supplier Details </td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Department</td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Supplier</td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$pur['supname']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Account number</td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$pur['supno']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td valign='top'>Supplier Address</td>\r\n\t\t\t\t\t\t\t<td valign='center'>" . nl2br($pur['supaddr']) . "</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td valign='top' width='30%'>\r\n\t\t\t\t\t" . COMP_NAME . "<br>\r\n\t\t\t\t\t" . COMP_ADDRESS . "<br>\r\n\t\t\t\t\t" . COMP_PADDR . "<br>\r\n\t\t\t\t\t" . COMP_TEL . "<br>\r\n\t\t\t\t\t" . COMP_FAX . "<br>\r\n\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\r\n\t\t\t\t\tVAT No. " . COMP_VATNO . "<br>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td valign='top' align='right'>\r\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border=1>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td colspan='2'> Order Details </td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Purchase No.</td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$pur['purnum']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Order No.</td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$pur['ordernum']}&nbsp;</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Terms</td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$pur['terms']} Days</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Date</td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$pday}-{$pmon}-{$pyear}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\r\n\t\t\t\t\t\t\t<td valign='center' nowrap>" . CUR . " {$pur['shipchrg']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr><td><br></td></tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td colspan='3'>{$products}</td>\r\n\t\t\t</tr>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td colspan='2'>\r\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1'>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>{$pur['remarks']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td align='right'>\r\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border=1 width=60%>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\r\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['subtot']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\r\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['shipchrg']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>VAT {$vat14}</td>\r\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['vat']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>GRAND TOTAL</td>\r\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['total']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t\t</form>\r\n\t\t</center>";
    $OUTPUT = $details;
    require "tmpl-print.php";
}
コード例 #6
0
function printStk($_POST)
{
    # get vars
    extract($_POST);
    //	print "$from_year-$from_month-$from_day -- $to_year-$to_month-$to_day";
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($whid, "num", 1, 50, "Invalid Warehouse.");
    $v->isOk($from_day, "num", 1, 2, "Invalid from Date day.");
    $v->isOk($from_month, "num", 1, 2, "Invalid from Date month.");
    $v->isOk($from_year, "num", 1, 4, "Invalid from Date Year.");
    $v->isOk($to_day, "num", 1, 2, "Invalid to Date day.");
    $v->isOk($to_month, "num", 1, 2, "Invalid to Date month.");
    $v->isOk($to_year, "num", 1, 4, "Invalid to Date Year.");
    # mix dates
    $fromdate = $from_year . "-" . $from_month . "-" . $from_day;
    $todate = $to_year . "-" . $to_month . "-" . $to_day;
    if (!checkdate($from_month, $from_day, $from_year)) {
        $v->isOk($fromdate, "num", 1, 1, "Invalid from date.");
    }
    if (!checkdate($to_month, $to_day, $to_year)) {
        $v->isOk($todate, "num", 1, 1, "Invalid to date.");
    }
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class='err'>-" . $e["msg"] . "</li>";
        }
        return $confirm;
    }
    # Get Stock
    db_connect();
    $searchs = "SELECT * FROM stock WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
    $stkRslt = db_exec($searchs) or errDie("Unable to retrieve stocks from database.");
    if (pg_numrows($stkRslt) < 1) {
        return "\n\t\t\t<li class='err'> There are no stock items found.</li>\n\t\t\t<p>\n\t\t\t<table " . TMPL_tblDflts . " width='15%'>\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Quick Links</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><a href='sales-reports.php'>Sales Reports</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t</table>";
    }
    db_conn("exten");
    # Get warehouse
    $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
    $whRslt = db_exec($sql);
    $wh = pg_fetch_array($whRslt);
    $totprof = 0;
    $totqty = 0;
    $totpqty = 0;
    $totcsprice = 0;
    $items = array();
    $movement = array();
    $totinc = 0;
    $totdec = 0;
    while ($stk = pg_fetch_array($stkRslt)) {
        # Get all relevant records
        db_connect();
        $sql = "SELECT sum(qty) as qty, sum(csprice) as csprice, sum(csamt) as csamt FROM stockrec WHERE edate >= '{$fromdate}' AND edate <= '{$todate}' AND stkid = '{$stk['stkid']}' AND trantype = 'invoice' AND div = '" . USER_DIV . "'";
        $recRslt = db_exec($sql) or errDie("Unable to access databse.", SELF);
        $rec = pg_fetch_array($recRslt);
        $sql = "SELECT sum(qty) as qty, sum(csprice) as csprice, sum(csamt) as csamt FROM stockrec WHERE edate >= '{$fromdate}' AND edate <= '{$todate}' AND stkid = '{$stk['stkid']}' AND trantype = 'dec' AND div = '" . USER_DIV . "'";
        $recRslt = db_exec($sql) or errDie("Unable to access databse.", SELF);
        $dec = pg_fetch_array($recRslt);
        # Get all relevant records
        db_connect();
        $sql = "SELECT sum(qty) as qty, sum(csprice) as csprice, sum(csamt) as csamt FROM stockrec WHERE edate >= '{$fromdate}' AND edate <= '{$todate}' AND stkid = '{$stk['stkid']}' AND trantype = 'note' AND div = '" . USER_DIV . "'";
        $recRslt = db_exec($sql) or errDie("Unable to access databse.", SELF);
        $nrec = pg_fetch_array($recRslt);
        # Get all relevant records
        db_connect();
        $sql = "SELECT sum(qty) as qty, sum(csprice) as csprice, sum(csamt) as csamt FROM stockrec WHERE edate >= '{$fromdate}' AND edate <= '{$todate}' AND stkid = '{$stk['stkid']}' AND trantype = 'purchase' AND div = '" . USER_DIV . "'";
        $precRslt = db_exec($sql) or errDie("Unable to access databse.", SELF);
        $prec = pg_fetch_array($precRslt);
        $sql = "SELECT sum(qty) as qty, sum(csprice) as csprice, sum(csamt) as csamt FROM stockrec WHERE edate >= '{$fromdate}' AND edate <= '{$todate}' AND stkid = '{$stk['stkid']}' AND trantype = 'inc' AND div = '" . USER_DIV . "'";
        $precRslt = db_exec($sql) or errDie("Unable to access databse.", SELF);
        $inc = pg_fetch_array($precRslt);
        $dec['qty'] += 0;
        $inc['qty'] += 0;
        $totinc += $inc['qty'];
        $totdec += $dec['qty'];
        $rec['csprice'] += $dec['csprice'];
        $rec['csamt'] += $dec['csamt'];
        # less credit notes
        $rec['qty'] -= $nrec['qty'];
        $rec['csprice'] -= $nrec['csprice'];
        $rec['csamt'] -= $nrec['csamt'];
        # zeros
        $rec['qty'] += 0;
        $rec['csprice'] += 0;
        $rec['csamt'] += 0;
        $prec['csprice'] += $inc['csprice'];
        $prec['csamt'] += $inc['csamt'];
        # zeros
        $prec['qty'] += 0;
        $prec['csprice'] += 0;
        $prec['csamt'] += 0;
        # Calculate profit
        $prof = $rec['csprice'] - $rec['csamt'];
        $totprof += $prof;
        $totcsprice += $rec['csprice'];
        $totqty += $rec['qty'];
        $totpqty += $prec['qty'];
        # Limit to 30 chars
        $stk['stkdes'] = extlib_rstr($stk['stkdes'], 30);
        $item['stkcod'] = $stk['stkcod'];
        $item['stkdes'] = $stk['stkdes'];
        $item['pqty'] = $prec['qty'];
        $item['qty'] = $rec['qty'];
        $item['inc'] = $inc['qty'];
        $item['dec'] = $dec['qty'];
        $item['csprice'] = sprint($rec['csprice']);
        $item['profit'] = sprint($prof);
        $items[] = $item;
        if (isset($r_type)) {
            if ($prec['qty'] != 0) {
                #calculate the ratio
                $ratio = $rec['qty'] / $prec['qty'] * 100;
                $ratio = round($ratio, 1);
            } else {
                $ratio = "0";
            }
            #make array for movement tracking
            $move['stkdes'] = $stk['stkdes'];
            $move['pqty'] = $prec['qty'];
            $move['qty'] = $rec['qty'];
            $move['ratio'] = $ratio;
            $movement[] = $move;
        }
    }
    # bubble sorting
    $sortarr =& $items;
    // where $out = array name to sort
    for ($j = 0; $j < count($sortarr); $j++) {
        for ($i = 0; $i < count($sortarr) - 1; $i++) {
            if ($sortarr[$i]['qty'] < $sortarr[$i + 1]['qty']) {
                $buf = $sortarr[$i];
                $sortarr[$i] = $sortarr[$i + 1];
                $sortarr[$i + 1] = $buf;
            }
        }
    }
    if (isset($r_type)) {
        # bubble sorting for movement
        $sortarr2 =& $movement;
        // where $out = array name to sort
        for ($j = 0; $j < count($sortarr2); $j++) {
            for ($i = 0; $i < count($sortarr2) - 1; $i++) {
                if (isset($r_type) and $r_type == 'fast') {
                    if ($sortarr2[$i]['qty'] < $sortarr2[$i + 1]['qty']) {
                        $buf = $sortarr2[$i];
                        $sortarr2[$i] = $sortarr2[$i + 1];
                        $sortarr2[$i + 1] = $buf;
                    }
                } else {
                    if ($sortarr2[$i]['qty'] > $sortarr2[$i + 1]['qty']) {
                        $buf = $sortarr2[$i];
                        $sortarr2[$i] = $sortarr2[$i + 1];
                        $sortarr2[$i + 1] = $buf;
                    }
                }
            }
        }
        if (isset($r_type) and $r_type == 'fast') {
            $moveheader = "Fast Moving Stock";
        } else {
            $moveheader = "Slow Moving Stock";
        }
    }
    $totprof = sprint($totprof);
    $totcsprice = sprint($totcsprice);
    // Layout
    $report = "\n\t\t<h3>Stock Movement Report</h3>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Code</th>\n\t\t\t\t<th>Description</th>\n\t\t\t\t<th>Purchased</th>\n\t\t\t\t<th>Sold</th>\n\t\t\t\t<th>Increase</th>\n\t\t\t\t<th>Decrease</th>\n\t\t\t\t<th>Total Selling Price</th>\n\t\t\t\t<th>Gross Profit</th>\n\t\t\t</tr>";
    foreach ($items as $key => $item) {
        $report .= "\n\t\t\t<tr>\n\t\t\t\t<td>{$item['stkcod']}</td>\n\t\t\t\t<td>{$item['stkdes']}</td>\n\t\t\t\t<td align='right'>" . sprint3($item['pqty']) . "</td>\n\t\t\t\t<td align='right'>" . sprint3($item['qty']) . "</td>\n\t\t\t\t<td align='right'>" . sprint3($item['inc']) . "</td>\n\t\t\t\t<td align='right'>" . sprint3($item['dec']) . "</td>\n\t\t\t\t<td align='right'>" . CUR . " {$item['csprice']}</td>\n\t\t\t\t<td align='right'>" . CUR . " {$item['profit']}</td>\n\t\t\t</tr>";
    }
    $report .= "\n\t\t<tr><td><br></td></tr>\n\t\t<tr>\n\t\t\t<td colspan='2'><b>Totals</b></td>\n\t\t\t<td align='right'>" . sprint3($totpqty) . "</td>\n\t\t\t<td align='right'>" . sprint3($totqty) . "</td>\n\t\t\t<td align='right'>" . sprint3($totinc) . "</td>\n\t\t\t<td align='right'>" . sprint3($totdec) . "</td>\n\t\t\t<td align='right'>" . CUR . " {$totcsprice}</td>\n\t\t\t<td align='right'>" . CUR . " {$totprof}</td>\n\t\t</tr>";
    if (isset($r_type)) {
        $report .= "\n\t\t<tr><td colspan='8'><br></td></tr>\n\t\t<tr><th colspan='8'>{$moveheader}</th></tr>\n\t\t<tr>\n\t\t\t<th>Stock</th>\n\t\t\t<th>Available</th>\n\t\t\t<th>Decrease</th>\n\t\t\t<th colspan='2'>Ratio</th>\n\t\t</tr>";
        foreach ($movement as $key => $move) {
            $report .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$move['stkdes']}</td>\n\t\t\t\t\t<td align='right'>" . sprint3($move['pqty']) . "</td>\n\t\t\t\t\t<td align='right'>" . sprint3($move['qty']) . "</td>\n\t\t\t\t\t<td align='right' colspan='2'>{$move['ratio']} %</td>\n\t\t\t\t</tr>";
        }
    }
    $report .= "</table>";
    include "temp.xls.php";
    Stream("Report", $report);
    return $report;
}
コード例 #7
0
function details($_POST, $error = "")
{
    extract($_POST);
    # validate input
    include "libs/validate.lib.php";
    $v = new validate();
    if (isset($sordid)) {
        $v->isOk($sordid, "num", 1, 20, "Invalid sales order number.");
    }
    if (isset($deptid)) {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
    }
    if (isset($letters)) {
        $v->isOk($letters, "string", 0, 5, "Invalid First 3 Letters.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>{$e['msg']}</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    if (!isset($sordid)) {
        $sordid = create_dummy($deptid);
        $stkerr = "0,0";
    }
    if (!isset($proforma)) {
        $proforma = "";
    }
    if (!isset($done)) {
        $done = "";
    }
    # Get Sales Order info
    db_connect();
    $sql = "SELECT * FROM sorders WHERE sordid = '{$sordid}' AND div = '" . USER_DIV . "'";
    $sordRslt = db_exec($sql) or errDie("Unable to get Sales Order information");
    if (pg_numrows($sordRslt) < 1) {
        return "<li class='err'>Sales Order Not Found</li>";
    }
    $sord = pg_fetch_array($sordRslt);
    # check if Sales Order has been printed
    if ($sord['accepted'] == "y") {
        $error = "<li class='err'> Error : Sales Order number <b>{$sordid}</b> has already been printed.";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$sord['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected customer info
    db_connect();
    $sql = "SELECT * FROM customers WHERE cusnum = '{$sord['cusnum']}' AND div = '" . USER_DIV . "'";
    $custRslt = db_exec($sql) or errDie("Unable to view customer");
    if (pg_numrows($custRslt) < 1) {
        db_connect();
        if ($deptid == "0") {
            $searchdept = "";
        } else {
            $searchdept = "deptid = '{$sord['deptid']}' AND ";
        }
        # Query server for customer info
        $sql = "SELECT cusnum, cusname, surname FROM customers WHERE {$searchdept} location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND div = '" . USER_DIV . "' ORDER BY surname";
        $custRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($custRslt) < 1) {
            $err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
            return view_err($_POST, $err);
        } else {
            $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
            $customers .= "<option value='-S' selected>Select Customer</option>";
            while ($cust = pg_fetch_array($custRslt)) {
                $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']}</option>";
            }
            $customers .= "</select>";
        }
        # take care of the unset vars
        $cust['addr1'] = "";
        $cust['cusnum'] = "";
        $cust['vatnum'] = "";
        $cust['accno'] = "";
    } else {
        $cust = pg_fetch_array($custRslt);
        # moarn if customer account has been blocked
        if ($cust['blocked'] == 'yes') {
            return "<li class='err'>Error : Selected customer account has been blocked.</li>";
        }
        $customers = "<input type='hidden' name='cusnum' value='{$cust['cusnum']}'>{$cust['cusname']}  {$cust['surname']}";
        $cusnum = $cust['cusnum'];
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    //	$whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    $whs = "<select name='whidss[]'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            if (!user_in_store_team($wh["whid"], USER_ID)) {
                continue;
            }
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # get sales people
    db_conn("exten");
    $sql = "SELECT * FROM salespeople WHERE div = '" . USER_DIV . "' ORDER BY salesp ASC";
    $salespRslt = db_exec($sql) or errDie("Unable to get sales people.");
    if (pg_numrows($salespRslt) < 1) {
        return "<li class='err'> There are no Sales People found in Cubit.</li>";
    } else {
        $salesps = "<select name='salespn'>";
        while ($salesp = pg_fetch_array($salespRslt)) {
            if ($salesp['salesp'] == $sord['salespn']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $salesps .= "<option value='{$salesp['salesp']}' {$sel}>{$salesp['salesp']}</option>";
        }
        $salesps .= "</select>";
    }
    # days drop downs
    $days = array("0" => "0", "7" => "7", "14" => "14", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $sord['terms']);
    # Keep the charge vat option stable
    if ($sord['chrgvat'] == "inc") {
        $chin = "checked=yes";
        $chex = "";
        $chno = "";
    } elseif ($sord['chrgvat'] == "exc") {
        $chin = "";
        $chex = "checked=yes";
        $chno = "";
    } else {
        $chin = "";
        $chex = "";
        $chno = "checked=yes";
    }
    if ($sord["display_costs"] == "yes") {
        $dc_sel["yes"] = "checked";
        $dc_sel["no"] = "";
    } else {
        $dc_sel["yes"] = "";
        $dc_sel["no"] = "checked";
    }
    # format date
    list($sord_year, $sord_month, $sord_day) = explode("-", $sord['odate']);
    list($ddate_year, $ddate_month, $ddate_day) = explode("-", $sord["ddate"]);
    /* --- End Drop Downs --- */
    // get the ID of the first warehouse
    db_conn("exten");
    $sql = "SELECT whid FROM warehouses ORDER BY whid ASC LIMIT 1";
    $rslt = db_exec($sql) or errDie("Error reading warehouses (FWH).");
    if (pg_num_rows($rslt) > 0) {
        $FIRST_WH = pg_fetch_result($rslt, 0, 0);
    } else {
        $FIRST_WH = "-S";
    }
    /* --- Start Products Display --- */
    # select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>VAT CODE</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t</tr>";
    # get selected stock in this Sales Order
    db_connect();
    $sql = "SELECT * FROM sorders_items  WHERE sordid = '{$sordid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $stkd['account'] += 0;
        if ($stkd['account'] != 0) {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            $Accounts = "\n\t\t\t\t<select name='accounts[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
            if (isset($useaccdrop) and $useaccdrop == "yes") {
                db_connect();
                $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                if (pg_numrows($run_acc) > 0) {
                    while ($acc = pg_fetch_array($run_acc)) {
                        if ($acc['accid'] == $stkd['account']) {
                            $Accounts .= "<option value='{$acc['accid']}' selected>{$acc['accname']}</option>";
                        } else {
                            $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                        }
                    }
                    $Accounts .= "</select>";
                }
            } else {
                db_conn('core');
                $Sl = "SELECT accid, topacc, accnum, accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                while ($ad = pg_fetch_array($Ri)) {
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    if ($ad['accid'] == $stkd['account']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Accounts .= "<option value='{$ad['accid']}' {$sel}>{$ad['accname']}</option>";
                }
                $Accounts .= "</select>";
            }
            $sernos = "";
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'>";
            $stkd['unitcost'] = sprint($stkd['unitcost']);
            $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'>";
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            $stkd['amt'] = sprint($stkd['amt']);
            # Put in product
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t{$Accounts}\n\t\t\t\t\t\t<input type='hidden' name='whids[]' value='{$stkd['whid']}'>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$stkd['description']}'> {$sernos}</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='hidden' name='disc[]' value='{$stkd['disc']}'><input type='hidden' name='discp[]' value='{$stkd['discp']}'></td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$stkd['amt']}'> " . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
        } else {
            # keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            # get selected stock in this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            # get warehouse name
            db_conn("exten");
            $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
            $whRslt = db_exec($sql);
            $wh = pg_fetch_array($whRslt);
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[]'>";
            //<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            $stkd['unitcost'] = sprint($stkd['unitcost']);
            $stkd['amt'] = sprint($stkd['amt']);
            //			$sql = "SELECT * FROM manufact.jobcards WHERE recipe!='yes' AND completion!='1'";
            //			$job_rslt = db_exec($sql) or errDie("Unable to retrieve jobs.");
            //
            //			$job_sel = "<select name='job_id[]' style='width: 100%'>";
            //			while ($job_data = pg_fetch_array($job_rslt)) {
            //				if ($stkd["jobcard_id"] == $job_data["id"]) {
            //					$sel = "selected";
            //				} else {
            //					$sel = "";
            //				}
            //
            //				$job_sel .= "<option value='$job_data[id]' $sel>
            //					$job_data[id] $job_data[description]
            //				</option>";
            //			}
            //			$job_sel .= "</select>";
            //	<tr>
            //				<td bgcolor='#ff0000' width='10%'>
            //					$job_sel<br />
            //					<input type='submit' name='pur[]' value='Add To Purchase Resource Planning'>
            //				</td>
            //			</tr>
            // rowspan='2'
            # put in product
            $products .= "\n\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t<input type='hidden' name='amt[]' value='{$stkd['amt']}'>\n\t\t\t\t<input type='hidden' name='pqty[{$stk['stkid']}]' value='{$stkd['qty']}' />\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$stkd['whid']}'>{$wh['whname']}</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'></td>\n\t\t\t\t\t<td><input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'></td>\n\t\t\t\t\t<td><input type='text' size='4' name='disc[]' value='{$stkd['disc']}'> OR <input type='text' size='4' name='discp[]' value='{$stkd['discp']}' maxlength=5>%</td>\n\t\t\t\t\t<td>" . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
        }
    }
    # Look above(remprod keys)
    $keyy = $key;
    # look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    }
    #get negative stock setting
    $neg_setting = getCsetting("SORDER_NEG_STOCK");
    if (!isset($neg_setting) or strlen($neg_setting) < 1) {
        $neg_setting = "yes";
    }
    if ($neg_setting == "yes") {
        $search_neg_stock = "";
    } else {
        $search_neg_stock = " AND (units > 0) ";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S" && isset($cust['pricelist'])) {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # get price from price list if it is set
                if (isset($cust['pricelist'])) {
                    # get selected stock in this warehouse
                    db_conn("exten");
                    $sql = "SELECT price FROM plist_prices WHERE listid = '{$cust['pricelist']}' AND stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'";
                    $plRslt = db_exec($sql);
                    if (pg_numrows($plRslt) > 0) {
                        $pl = pg_fetch_array($plRslt);
                        $stk['selamt'] = $pl['price'];
                    }
                }
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class='err'>Warning :  Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                /* -- End Some Checks -- */
                # Calculate the Discount discount
                if ($discs[$key] < 1) {
                    if ($discps[$key] > 0) {
                        $discs[$key] = round($discps[$key] / 100 * $stk['selamt'], 2);
                    }
                } else {
                    $discps[$key] = round($discs[$key] * 100 / $stk['selamt'], 2);
                }
                # Calculate amount
                $amt[$key] = $qtyss[$key] * ($stk['selamt'] - $discs[$key]);
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($stk['vatcode'] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $amt[$key] = sprint($amt[$key]);
                $stk['selamt'] = sprint($stk['selamt']);
                # put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t\t<input type='hidden' name='whids[]' value='{$whid}'>\n\t\t\t\t\t<input type='hidden' name='stkids[]' value='{$stk['stkid']}'>\n\t\t\t\t\t<input type='hidden' name='amt[]' value='{$amt[$key]}'>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t\t\t<td><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='8' name='unitcost[]' value='{$stk['selamt']}'></td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='text' size='4' name='disc[]' value='{$discs[$key]}'>\n\t\t\t\t\t\t\tOR\n\t\t\t\t\t\t\t<input type='text' size='4' name='discp[]' value='{$discps[$key]}' maxlength=5>%\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td nowrap>" . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } else {
                if (isset($accountss[$key]) && $accountss[$key] != "0" && isset($cust['pricelist'])) {
                    db_conn('core');
                    $Sl = "SELECT * FROM accounts WHERE accid='{$accountss[$key]}'";
                    $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                    if (pg_num_rows($Ri) < 1) {
                        return "invalid.";
                    }
                    $ad = pg_fetch_array($Ri);
                    # Calculate amount
                    $amt[$key] = sprint($qtyss[$key] * $unitcosts[$key]);
                    # Input qty if not serialised
                    $qtyin = "<input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'>";
                    # Check permissions
                    $unitcosts[$key] = sprint($unitcosts[$key]);
                    $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$unitcosts[$key]}'>";
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vatcodess[$key] == $vd['id']) {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    $amt[$key] = sprint($amt[$key]);
                    # Put in selected warehouse and stock
                    $products .= "\n\t\t\t\t\t<input type='hidden' name='accounts[]' value='{$accountss[$key]}'>\n\t\t\t\t\t<input type='hidden' name='whids[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='stkids[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='disc[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='discp[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='amt[]' value='{$amt[$key]}'>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='2'>{$ad['accname']}</td>\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$descriptionss[$key]}'></td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td nowrap> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                    $keyy++;
                } else {
                    # skip if not selected
                    if ($whid == "-S") {
                        continue;
                    }
                    if (!isset($addnon)) {
                        if (isset($filter_store) and $filter_store != "0") {
                            # get warehouse name
                            db_conn("exten");
                            $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                            $whRslt = db_exec($sql);
                            $wh = pg_fetch_array($whRslt);
                        }
                        # get stock on this warehouse
                        db_connect();
                        if (isset($ria) and $ria != "") {
                            $len = strlen($ria);
                            if ($ria == "Show All") {
                                $Wh = "";
                                $ria = "";
                            } else {
                                $Wh = "AND (lower(stkdes) LIKE lower('%{$ria}%')) OR (lower(stkcod) LIKE lower('%{$ria}%'))";
                                $ria = "";
                            }
                        } else {
                            $Wh = "AND FALSE";
                            $ria = "";
                        }
                        $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
                        if (isset($check_setting) and $check_setting == "yes") {
                            if (isset($filter_class) and $filter_class != "0") {
                                $Wh .= " AND prdcls = '{$filter_class}'";
                            }
                            if (isset($filter_cat) and $filter_cat != "0") {
                                $Wh .= " AND catid = '{$filter_cat}'";
                            }
                        }
                        if (isset($filter_store) and $filter_store != "0") {
                            $Wh .= " AND whid = '{$filter_store}'";
                        }
                        $sql = "SELECT * FROM stock WHERE blocked = 'n' {$search_neg_stock} AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
                        $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                        if (pg_numrows($stkRslt) < 1) {
                            $error .= "<li class='err'>There are no stock items in the selected store.</li>";
                            continue;
                        }
                        if ($sel_frm == "stkcod") {
                            $cods = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
                            $cods .= "<option value='-S' disabled selected>Select Number</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $cods .= "</select> ";
                            $descs = "";
                        } else {
                            $descs = "<select style='width:250px' name='stkidss[]' onChange='javascript:document.form.submit();'>";
                            $descs .= "<option value='-S' disabled selected>Select Description</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $descs .= "</select> ";
                            $cods = "";
                        }
                        db_conn('cubit');
                        $Sl = "SELECT * FROM vatcodes ORDER BY code";
                        $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                        $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                        while ($vd = pg_fetch_array($Ri)) {
                            if ($vd['del'] == "Yes") {
                                $sel = "selected";
                            } else {
                                $sel = "";
                            }
                            $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                        }
                        $Vatcodes .= "</select>";
                        # put in drop down and warehouse
                        $products .= "\n\t\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t\t<input type='hidden' name='whidss[]' value='{$filter_store}'>\n\t\t\t\t\t\t<input type='hidden' name='amts[]' value='0.00'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t<td>{$cods}<input type='hidden' name='vatcodess' value='0'></td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]'  value='1'></td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t" . CUR . " <input type='text' size='4' name='discs[]' value='0'>\n\t\t\t\t\t\t\t\tOR\n\t\t\t\t\t\t\t\t<input type='text' size='4' name='discps[]' value='0' maxlength='5'>%\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t</tr>";
                    } else {
                        $Accounts = "\n\t\t\t\t\t\t<select name='accountss[]'>\n\t\t\t\t\t\t\t<option value='0'>Select Account</option>";
                        $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
                        if (isset($useaccdrop) and $useaccdrop == "yes") {
                            db_connect();
                            $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                            $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                            if (pg_numrows($run_acc) > 0) {
                                while ($acc = pg_fetch_array($run_acc)) {
                                    $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                                }
                                $Accounts .= "</select>";
                            }
                        } else {
                            db_conn('core');
                            $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                            $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                            while ($ad = pg_fetch_array($Ri)) {
                                if (isb($ad['accid'])) {
                                    continue;
                                }
                                $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                            }
                            $Accounts .= "</select>";
                        }
                        db_conn('cubit');
                        $Sl = "SELECT * FROM vatcodes ORDER BY code";
                        $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                        $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                        while ($vd = pg_fetch_array($Ri)) {
                            if ($vd['del'] == "Yes") {
                                $sel = "selected";
                            } else {
                                $sel = "";
                            }
                            $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                        }
                        $Vatcodes .= "</select>";
                        $products .= "\n\t\t\t\t\t\t<input type='hidden' name='whidss[]' value='{$FIRST_WH}'>\n\t\t\t\t\t\t<inpu type='hidden' name='stkidss[]' value=''>\n\t\t\t\t\t\t<input type='hidden' name='discs[]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='discps[]' value='0' >\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'>{$Accounts}</td>\n\t\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t</tr>";
                    }
                }
            }
        }
    } else {
        if (!isset($addnon)) {
            if (isset($filter_store) and $filter_store != "0") {
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
            }
            # get stock on this warehouse
            db_connect();
            if (isset($ria) and $ria != "") {
                $len = strlen($ria);
                if ($ria == "Show All") {
                    $Wh = "";
                    $ria = "";
                } else {
                    $Wh = "AND (lower(stkdes) LIKE lower('%{$ria}%')) OR (lower(stkcod) LIKE lower('%{$ria}%'))";
                    $ria = "";
                }
            } else {
                $Wh = "AND FALSE";
                $ria = "";
            }
            $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
            if (isset($check_setting) and $check_setting == "yes") {
                if (isset($filter_class) and $filter_class != "0") {
                    $Wh .= " AND prdcls = '{$filter_class}'";
                }
                if (isset($filter_cat) and $filter_cat != "0") {
                    $Wh .= " AND catid = '{$filter_cat}'";
                }
            }
            if (isset($filter_store) and $filter_store != "0") {
                $Wh .= " AND whid = '{$filter_store}'";
            }
            $sql = "SELECT * FROM stock WHERE blocked = 'n' {$search_neg_stock} AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
            $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
            if (pg_numrows($stkRslt) < 1) {
                if (!isset($err)) {
                    $err = "";
                }
                $err .= "<li>There are no stock items in the selected warehouse.</li>";
            }
            $stks = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
            $stks .= "<option value='-S' disabled selected>Select Number</option>";
            $count = 0;
            while ($stk = pg_fetch_array($stkRslt)) {
                $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
            }
            $stks .= "</select> ";
            $products .= "\n\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t<input type='hidden' name='vatcodess[]' value=''>\n\t\t\t\t<input type='hidden' name='whidss[]' value='{$filter_store}'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='text' size='4' name='discs[]' value='0'>\n\t\t\t\t\t\tOR\n\t\t\t\t\t\t<input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>";
        } else {
            if (isset($addnon)) {
                $Accounts = "\n\t\t\t\t<select name='accountss[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
                $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
                if (isset($useaccdrop) and $useaccdrop == "yes") {
                    db_connect();
                    $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                    $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                    if (pg_numrows($run_acc) > 0) {
                        while ($acc = pg_fetch_array($run_acc)) {
                            $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                        }
                        $Accounts .= "</select>";
                    }
                } else {
                    db_conn('core');
                    $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                    $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                    while ($ad = pg_fetch_array($Ri)) {
                        if (isb($ad['accid'])) {
                            continue;
                        }
                        $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                    }
                    $Accounts .= "</select>";
                }
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vd['del'] == "Yes") {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $products .= "\n\t\t\t\t<inpu type='hidden' name='stkidss[]' value=''>\n\t\t\t\t<input type='hidden' name='whidss[]' value='{$FIRST_WH}'>\n\t\t\t\t<input type='hidden' name='discs[]' value='0'>\n\t\t\t\t<input type='hidden' name='discps[]' value='0' >\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}</td>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>";
            }
        }
    }
    // 	$products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Calculate subtotal
    $SUBTOT = sprint($sord['subtot']);
    # Calculate tradediscm
    if ($sord['traddisc'] > 0) {
        $traddiscm = sprint($sord['traddisc'] / 100 * ($SUBTOT + $sord['delchrg']));
    } else {
        $traddiscm = "0.00";
    }
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($sord['subtot']);
    $VAT = sprint($sord['vat']);
    $TOTAL = sprint($sord['total']);
    $sord['delchrg'] = sprint($sord['delchrg']);
    /* --- End Some calculations --- */
    /*--- Start checks --- */
    # check only if the customer is selected
    if (isset($cusnum) && $cusnum != "-S") {
        #check againg credit limit
        if ($cust['credlimit'] != 0 && $TOTAL + $cust['balance'] > $cust['credlimit']) {
            $error .= "<li class='err'>Warning : Customers Credit limit of <b>" . CUR . " {$cust['credlimit']}</b> has been exceeded:</li>";
        }
        $avcred = $cust['credlimit'] - $cust['balance'];
    } else {
        $avcred = "0.00";
    }
    /*--- Start checks --- */
    if (!isset($letters)) {
        $letters = "";
    }
    $sord['delvat'] += 0;
    if ($sord['delvat'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $sord['delvat'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "\n\t\t<select name='delvat'>\n\t\t\t<option value='0'>Select</option>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $sord['delvat']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    $psel1 = "";
    $psel2 = "";
    if (isset($proforma) and $proforma == "yes") {
        $psel1 = "checked=yes";
    } else {
        $psel2 = "checked=yes";
    }
    if ($proforma == "yes") {
        #generate a unique id IF it hasnt been done yet
        if (!isset($pinvnum) or $pinvnum == 0) {
            pglib_transaction("BEGIN") or errDie("Could not start database transaction");
            #get unique id
            $get_uni = "INSERT INTO unique_id (entry) VALUES ('value')";
            $run_uni = db_exec($get_uni) or errDie("Unable to get unique id");
            $pinvnum = pglib_lastid("unique_id", "id");
            $rem_sql = "DELETE FROM unique_id WHERE id = '{$pinvnum}'";
            $run_rem = db_exec($rem_sql) or errDie("Unable to remove unique id check");
            #further check to see if an invoice has this is should be done here...
            pglib_transaction("COMMIT") or errDie("Could not commit database transaction");
        }
        $getpinvnum = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Proforma Invoice Number</td>\n\t\t\t\t<td><input type='hidden' name='pinvnum' value='{$pinvnum}'>{$pinvnum}</td>\n\t\t\t</tr>";
    } else {
        $getpinvnum = "<input type='hidden' name='pinvnum' value='0'>";
    }
    // Which display method was selected
    if (isset($sel_frm) && $sel_frm == "stkdes") {
        $sel_frm_cod = "";
        $sel_frm_des = "checked";
    } else {
        $sel_frm_cod = "checked";
        $sel_frm_des = "";
    }
    // Retrieve VAT Setting
    $sql = "SELECT value FROM cubit.settings WHERE constant='VAT_INC'";
    $vatinc_rslt = db_exec($sql) or errDie("Unable to retrieve vat setting.");
    $vatinc = pg_fetch_result($vatinc_rslt, 0);
    if ($vatinc != "yes" && $vatinc != "no") {
        $vatinc = "no";
    }
    if ($vatinc == 'yes') {
        $chrgvat = "inc";
    } else {
        $chrgvat = "exc";
    }
    if (isset($diffwhBtn) or isset($addprodBtn) or isset($addnon) or isset($saveBtn) or isset($upBtn) or isset($doneBtn) or isset($donePrnt) or isset($ria)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $optional_filter_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
    if (isset($optional_filter_setting) and $optional_filter_setting == "yes") {
        db_connect();
        $catsql = "SELECT catid, cat, catcod FROM stockcat WHERE div = '" . USER_DIV . "' ORDER BY cat ASC";
        $catRslt = db_exec($catsql);
        if (pg_numrows($catRslt) < 1) {
            $cat_drop = "<input type='hidden' name='filter_cat' value='0'>";
        } else {
            $cat_drop = "<select name='filter_cat'>";
            $cat_drop .= "<option value='0'>All Categories</option>";
            while ($cat = pg_fetch_array($catRslt)) {
                if (isset($filter_cat) and $filter_cat == $cat['catid']) {
                    $cat_drop .= "<option value='{$cat['catid']}' selected>({$cat['catcod']}) {$cat['cat']}</option>";
                } else {
                    $cat_drop .= "<option value='{$cat['catid']}'>({$cat['catcod']}) {$cat['cat']}</option>";
                }
            }
            $cat_drop .= "</select>";
        }
        # Select classification
        $classsql = "SELECT * FROM stockclass WHERE div = '" . USER_DIV . "' ORDER BY classname ASC";
        $clasRslt = db_exec($classsql);
        if (pg_numrows($clasRslt) < 1) {
            $class_drop = "<input type='hidden' name='filter_class' value='0'>";
        } else {
            $class_drop = "<select name='filter_class' style='width: 167'>";
            $class_drop .= "<option value='0'>All Classifications</option>";
            while ($clas = pg_fetch_array($clasRslt)) {
                if (isset($filter_class) and $filter_class == $clas['clasid']) {
                    $class_drop .= "<option value='{$clas['clasid']}' selected>{$clas['classname']}</option>";
                } else {
                    $class_drop .= "<option value='{$clas['clasid']}'>{$clas['classname']}</option>";
                }
            }
            $class_drop .= "</select>";
        }
        $display_optional_filters = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Select Category</td>\n\t\t\t\t<td>{$cat_drop}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Select Classification</td>\n\t\t\t\t<td>{$class_drop}</td>\n\t\t\t</tr>";
    }
    db_conn("exten");
    $sql = "SELECT whid, whname, whno FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        $store_drop = "<input type='hidden' name='filter_store' value='0'>";
    } else {
        if (!isset($filter_store)) {
            # check if setting exists
            db_connect();
            $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
            $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
            if (pg_numrows($Rslt) > 0) {
                $set = pg_fetch_array($Rslt);
                $filter_store = $set['value'];
            }
        }
        $store_drop = "<select name='filter_store'>";
        $store_drop .= "<option value='0'>All Stores</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            if (isset($filter_store) and $filter_store == $wh['whid']) {
                $store_drop .= "<option value='{$wh['whid']}' selected>({$wh['whno']}) {$wh['whname']}</option>";
            } else {
                $store_drop .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
            }
        }
        $store_drop .= "</select>";
    }
    $cust_del_addr = $sord['del_addr'];
    $details = "\n\t\t<center>\n\t\t<h3>New Sales Order</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='sordid' value='{$sordid}'>\n\t\t\t<input type='hidden' name='letters' value='{$letters}'>\n\t\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t\t<input type='hidden' name='chrgvat' value='{$chrgvat}' />\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Account No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$cust['accno']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t\t\t<td valign='center'>{$customers}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t\t\t\t<td valign='center'>" . nl2br($cust['addr1']) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Current Delivery Address</td>\n\t\t\t\t\t\t\t<td valign='center'>" . nl2br($cust_del_addr) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Delivery Address</td>\n\t\t\t\t\t\t\t<td valign='center'>\n\t\t\t\t\t\t\t\t<input type='button' onClick=\"\n\t\t\t\t\t\t\t\t\tvar windowReference;\n\t\t\t\t\t\t\t\t\tfunction openPopup() {\n\t\t\t\t\t\t\t\t\t\twindowReference = window.open('sorder-new-deladdr.php?sordid={$sordid}','windowName','width=500,height=400,status=1');\n\t\t\t\t\t\t\t\t\t\tif (!windowReference.opener)\n\t\t\t\t\t\t\t\t\t\t\twindowReference.opener = self;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\topenPopup();\" value='Change Delivery Address'>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Customer Order number</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='10' name='cordno' value='{$sord['cordno']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Customer VAT Number</td>\n\t\t\t\t\t\t\t<td>{$cust['vatnum']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Select Using</td>\n\t\t\t\t\t\t\t<td>Stock Code<input type='radio' name='sel_frm' value='stkcod' onChange='javascript:document.form.submit();' {$sel_frm_cod}><br>Stock Description<input type='radio' name='sel_frm' value='stkdes' onChange='javascript:document.form.submit();' {$sel_frm_des}></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'>Additional Filters</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Select Store</td>\n\t\t\t\t\t\t\t<td>{$store_drop}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$display_optional_filters}\n\t\t\t\t\t\t<tr class='" . bg_class() . "' " . ass("Type the first letters of the stock code you are looking for.") . ">\n\t\t\t\t\t\t\t<td>Stock Filter</td>\n\t\t\t\t\t\t\t<td nowrap><input type='text' size='13' name='ria' value='{$ria}'> <input type='submit' value='Search'> <input type='submit' name='ria' value='Show All'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Sales Order Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Sales Order No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$sord['sordid']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Proforma Invoice</td>\n\t\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' name='proforma' value='yes' {$psel1} onChange='javascript:document.form.submit();'> No <input type='radio' name='proforma' value='no' {$psel2} onChange='javascript:document.form.submit();'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$getpinvnum}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Display Costs</td>\n\t\t\t\t\t\t\t<td>Yes <input type='radio' name='costs' value='yes' {$dc_sel['yes']}> No <input type='radio' name='costs' value='no' {$dc_sel['no']}></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Order No.</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='ordno' value='{$sord['ordno']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' size='7' name='chrgvat' value='inc' {$chin}> No<input type='radio' size='7' name='chrgvat' value='exc' {$chex}></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$termssel} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t\t<td valign='center'>{$salesps}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Sales Order Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("sord", $sord_year, $sord_month, $sord_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery/Due Date</td>\n\t\t\t\t\t\t\t<td valign='center'>\n\t\t\t\t\t\t\t\t" . mkDateSelect("ddate", $ddate_year, $ddate_month, $ddate_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Available Credit</td>\n\t\t\t\t\t\t\t<td>" . CUR . " " . sprint($avcred) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='traddisc' value='{$sord['traddisc']}'>%</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='7' name='delchrg' value='{$sord['delchrg']}'>{$Vatcodes}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'><table " . TMPL_tblDflts . ">{$products}</table></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<p>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td rowspan='2'>" . mkQuickLinks(ql("sorder-view.php", "View Sales Orders"), ql("customers-new.php", "New Customer")) . "\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<th width='25%'>Comments</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'><textarea name='comm' rows='4' cols='20'>{$sord['comm']}</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " <input type='hidden' name='SUBTOT' value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$sord['discount']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$sord['delivery']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><b>VAT {$vat14}</b>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2' align='center'><input name='addprodBtn' type='submit' value='Add Product'>| <input name='addnon' type='submit' value='Add Non stock Product'> | <input type='submit' name='saveBtn' value='Save'> | <input type='submit' name='upBtn' value='Update'>{$done}</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<a name='bottom'>\n\t\t</form>\n\t\t</center>\n\t\t{$jump_bot}";
    return $details;
}
コード例 #8
0
function details($_GET)
{
    # get vars
    extract($_GET);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($purid, "num", 1, 20, "Invalid Order number.");
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get Order info
    db_connect();
    $sql = "SELECT * FROM purch_int WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $purRslt = db_exec($sql) or errDie("Unable to get Order information");
    if (pg_numrows($purRslt) < 1) {
        return "<i class='err'>Order Not Found</i>";
    }
    $pur = pg_fetch_array($purRslt);
    /* --- Start Products Display --- */
    # select all products
    $products = "\n\t\t<table cellpadding='2' cellspacing='0' border='1' width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>WAREHOUSE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>DUTY</th>\n\t\t\t\t<th>AMT</th>\n\t\t\t\t<th>TOTAL COST AMT</th>\n\t\t\t<tr>";
    # get selected stock in this Order
    db_connect();
    $sql = "SELECT * FROM purint_items  WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # keep track of selected stock amounts
        $amts[$i] = $stkd['amt'];
        $i++;
        # get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        /* -- Calculations -- */
        # Calculate cost amount bought
        $totamt = $stkd['qty'] * $stkd['unitcost'];
        // Prevent division by zero
        if ($totamt && $pur["subtot"]) {
            # Calculate percentage from subtotal
            $perc = $totamt / $pur['subtot'] * 100;
        } else {
            $perc = 0;
        }
        # Get percentage from shipping charges
        $shipchrg = $perc / 100 * $pur['shipchrg'];
        # add shipping charges to amt
        $totamt = round($totamt + $shipchrg, 2);
        /* -- End Calculations --*/
        # put in product//<a href='#' onclick='openwindow(\"stock-amt-det.php?stkid=$stk[stkid]\")'></a>
        $products .= "\n\t\t\t<tr>\n\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t<td>{$stk['stkcod']}</td>\n\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t<td>" . sprint3($stkd['qty']) . "</td>\n\t\t\t\t<td nowrap>{$pur['curr']} " . sprint($stkd['cunitcost']) . " &nbsp;&nbsp;or &nbsp;&nbsp;R " . sprint($stkd['unitcost']) . "</td>\n\t\t\t\t<td nowrap>{$pur['curr']} {$stkd['duty']} &nbsp;&nbsp; or &nbsp;&nbsp;{$stkd['dutyp']}%</td>\n\t\t\t\t<td nowrap>{$pur['curr']} " . sprint($stkd["amt"]) . "</td>\n\t\t\t\t<td align='right' nowrap>{$pur['curr']} " . sprint($totamt) . "</td>\n\t\t\t</tr>";
    }
    $products .= "</table>";
    # Get supplier
    db_connect();
    $sql = "SELECT supname,supno FROM suppliers WHERE supid = '{$pur['supid']}' AND div = '" . USER_DIV . "'";
    $supRslt = db_exec($sql);
    if (pg_numrows($supRslt) < 1) {
        $sup['supname'] = "<li class='err'>Supplier not found.</li>";
        $sup['supno'] = "";
    } else {
        $sup = pg_fetch_array($supRslt);
    }
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$pur['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<i class='err'>Not Found</i>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # format date
    list($pyear, $pmon, $pday) = explode("-", $pur['pdate']);
    list($dyear, $dmon, $dday) = explode("-", $pur['ddate']);
    /* -- Final Layout -- */
    $details = "\n\t\t\t\t\t<center>\n\t\t\t\t\t<h3>International Order Details</h3>\n\t\t\t\t\t<table cellpadding='0' cellspacing='4' border='0' width='95%'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td valign='top'>\n\t\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th colspan='2'> Supplier Details </th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Supplier</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$sup['supname']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Account number</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$sup['supno']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td valign='top'>Supplier Address</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>" . nl2br($pur['supaddr']) . "</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='top'>\n\t\t\t\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t\t\t\t" . COMP_PADDR . "<br>\n\t\t\t\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\n\t\t\t\t\t\t\t\tVAT No. " . COMP_VATNO . "<br>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th colspan='2'> Order Details </th>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Order No.</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$pur['purnum']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$pur['terms']} Days</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Date</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$pday}-{$pmon}-{$pyear}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Foreign Currency</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$pur['curr']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Exchange rate</td>\n\t\t\t\t\t\t\t\t\t\t<td>" . CUR . " {$pur['xrate']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Tax</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$pur['curr']} {$pur['tax']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Shipping Charges</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$pur['curr']} {$pur['fshipchrg']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Delivery Date</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$dday}-{$dmon}-{$dyear}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='3'>{$products}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='2'></td>\n\t\t\t\t\t\t\t<td align='right'>\n\t\t\t\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' width='80%'>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$pur['curr']} {$pur['subtot']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Shipping Charges</td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$pur['curr']} {$pur['shipchrg']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<td>Tax </td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$pur['curr']} {$pur['tax']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>{$pur['curr']} {$pur['total']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t\t</form>\n\t\t\t\t\t</center>";
    $OUTPUT = $details;
    require "tmpl-print.php";
}
コード例 #9
0
function details($_POST, $error = "")
{
    # Get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    if (isset($invid)) {
        $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    } else {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
        $v->isOk($letters, "string", 0, 5, "Invalid First 3 Letters.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    if (isset($deptid)) {
        db_connect();
        # Query server for customer info
        $sql = "SELECT cusnum,cusname,surname FROM customers WHERE deptid = '{$deptid}' AND location = 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
        $custRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($custRslt) < 1) {
            $err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
            return view_err($_POST, $err);
        }
    }
    if (!isset($invid)) {
        $invid = create_dummy($deptid);
        $stkerr = "0,0";
    }
    if (!isset($done)) {
        $done = "";
    }
    # Get invoice info
    db_connect();
    $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($invRslt) < 1) {
        return "<li class='err'>Invoice Not Found</li>";
    }
    $inv = pg_fetch_array($invRslt);
    # Check if invoice has been printed
    if ($inv['printed'] == "y") {
        $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    $currs = getSymbol($inv['fcid']);
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$inv['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected Customer info
    db_connect();
    $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}'  AND location = 'int' AND div = '" . USER_DIV . "'";
    $custRslt = db_exec($sql) or errDie("Unable to view customer");
    if (pg_numrows($custRslt) < 1) {
        db_connect();
        # Query server for customer info
        $sql = "SELECT cusnum,cusname,surname FROM customers WHERE deptid = '{$inv['deptid']}' AND location = 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
        $custRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($custRslt) < 1) {
            $err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
            return view_err($_POST, $err);
        } else {
            $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
            $customers .= "<option value='-S' selected>Select Customer</option>";
            while ($cust = pg_fetch_array($custRslt)) {
                $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']}</option>";
            }
            $customers .= "</select>";
        }
        # Take care of the unset vars
        $cust['addr1'] = "";
        $cust['cusnum'] = "";
        $cust['vatnum'] = "";
        $cust['accno'] = "";
    } else {
        $cust = pg_fetch_array($custRslt);
        $sql = "SELECT cusnum, cusname, surname FROM customers WHERE deptid = '{$inv['deptid']}' AND location = 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
        $cusRslt = db_exec($sql) or errDie("Unable to view customers");
        # Moarn if customer account has been blocked
        if ($cust['blocked'] == 'yes') {
            $error .= "<li class='err'>Error : Selected customer account has been blocked.";
        }
        // $customers = "<input type=hidden name=cusnum value='$cust[cusnum]'>$cust[cusname]  $cust[surname]";
        $cusnum = $cust['cusnum'];
        $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
        // $customers .= "<option value='-S' selected>Select Customer</option>";
        while ($cus = pg_fetch_array($cusRslt)) {
            $sel = "";
            if ($cust['cusnum'] == $cus['cusnum']) {
                $sel = "selected";
            }
            $customers .= "<option value='{$cus['cusnum']}' {$sel}>{$cus['cusname']} {$cus['surname']}</option>";
        }
        $customers .= "</select>";
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    $whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # Get sales people
    db_conn("exten");
    $sql = "SELECT * FROM salespeople WHERE div = '" . USER_DIV . "' ORDER BY salesp ASC";
    $salespRslt = db_exec($sql) or errDie("Unable to get sales people.");
    if (pg_numrows($salespRslt) < 1) {
        return "<li class='err'> There are no Sales People found in Cubit.</li>";
    } else {
        $salesps = "<select name='salespn'>";
        while ($salesp = pg_fetch_array($salespRslt)) {
            if ($salesp['salesp'] == $inv['salespn']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $salesps .= "<option value='{$salesp['salesp']}' {$sel}>{$salesp['salesp']}</option>";
        }
        $salesps .= "</select>";
    }
    # Days drop downs
    $days = array("0" => "0", "7" => "7", "14" => "14", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $inv['terms']);
    # Keep the charge vat option stable
    if ($inv['chrgvat'] == "inc") {
        $chin = "checked=yes";
        $chex = "";
        $chno = "";
    } elseif ($inv['chrgvat'] == "exc") {
        $chin = "";
        $chex = "checked=yes";
        $chno = "";
    } else {
        $chin = "";
        $chex = "";
        $chno = "checked=yes";
    }
    # Format date
    list($o_year, $o_month, $o_day) = explode("-", $inv['odate']);
    /* --- End Drop Downs --- */
    /* --- Start Products Display --- */
    # Select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>VAT CODE</th>\n\t\t\t\t<th>SERIAL NO.</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th colspan='2'>UNIT PRICE</th>\n\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t<tr>";
    # get selected stock in this invoice
    db_connect();
    $sql = "SELECT * FROM inv_items  WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # Keep track of selected stock amounts
        $amts[$i] = $stkd['amt'];
        $i++;
        # Get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # Get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        # Serial number
        if ($stk['serd'] == 'yes' && $inv['serd'] == 'n') {
            $sers = ext_getavserials($stkd['stkid']);
            $sernos = "<select class='width : 15' name='sernos[]'>";
            foreach ($sers as $skey => $ser) {
                $sernos .= "<option value='{$ser['serno']}'>{$ser['serno']}</option>";
            }
            $sernos .= "</select>";
        } else {
            $sernos = "<input type='hidden' name='sernos[]' value='{$stkd['serno']}'>{$stkd['serno']}";
        }
        # Input qty if not serialised
        $qtyin = "<input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'>";
        if ($stk['serd'] == 'yes') {
            $qtyin = "<input type='hidden' size='3' name='qtys[]' value='{$stkd['qty']}'>{$stkd['qty']}";
        }
        # check permissions
        if (perm("invoice-unitcost-edit.php")) {
            $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stkd['funitcost']}'>";
            $cunitcost = "<input type='text' size='8' name='cunitcost[]' value='{$stkd['unitcost']}'>";
        } else {
            $viewcost = "<input type='hidden' size='8' name='unitcost[]' value='{$stkd['funitcost']}'>{$stkd['funitcost']}";
            $cunitcost = "<input type='hidden' size='8' name='cunitcost[]' value='{$stkd['unitcost']}'>{$stkd['unitcost']}";
        }
        db_conn('cubit');
        $Sl = "SELECT * FROM vatcodes ORDER BY code";
        $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
        $Vatcodes = "\n\t\t\t<select name='vatcodes[]'>\n\t\t\t\t<option value='0'>Select</option>";
        while ($vd = pg_fetch_array($Ri)) {
            if ($stkd['vatcode'] == $vd['id']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
        }
        $Vatcodes .= "</select>";
        # Put in product
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><input type='hidden' name='whids[]' value='{$stkd['whid']}'>{$wh['whname']}</td>\n\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'><a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t<td>{$sernos}</td>\n\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t<td>" . CUR . " {$viewcost}</td>\n\t\t\t\t<td>{$inv['currency']} {$cunitcost}</td>\n\t\t\t\t<td>{$inv['currency']}<input type='text' size='4' name='disc[]' value='{$stkd['disc']}'> OR <input type='text' size='4' name='discp[]' value='{$stkd['discp']}' maxlength='5'>%</td>\n\t\t\t\t<td><input type='hidden' name='amt[]' value='{$stkd['amt']}'> {$inv['currency']} {$stkd['amt']}</td>\n\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t</tr>";
        $key++;
    }
    # Look above(remprod keys)
    $keyy = $key;
    # Look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    } else {
        $SCROLL = "yes";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S" && isset($cust['pricelist'])) {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # Get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # Get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                if ($stk['serd'] == 'yes') {
                    $sers = ext_getavserials($stkidss[$key]);
                    $sernos = "<select class='width : 15'name='sernos[]' onChange='javascript:document.form.submit();'>";
                    foreach ($sers as $skey => $ser) {
                        $sernos .= "<option value='{$ser['serno']}'>{$ser['serno']}</option>";
                    }
                    $sernos .= "</select>";
                } else {
                    $sernos = "<input type='hidden' name='sernos[]' value=''>";
                }
                # Get price from price list if it is set
                if (isset($cust['pricelist'])) {
                    # get selected stock in this warehouse
                    db_conn("exten");
                    $sql = "SELECT price FROM plist_prices WHERE listid = '{$cust['pricelist']}' AND stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'";
                    $plRslt = db_exec($sql);
                    if (pg_numrows($plRslt) > 0) {
                        $pl = pg_fetch_array($plRslt);
                        $stk['selamt'] = $pl['price'];
                    }
                }
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class='err'>Warning :  Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                /* -- End Some Checks -- */
                # Calculate the Discount discount
                if ($discs[$key] < 1) {
                    if ($discps[$key] > 0) {
                        $discs[$key] = round($discps[$key] / 100 * $stk['selamt'], 2);
                    }
                } else {
                    $discps[$key] = round($discs[$key] * 100 / $stk['selamt'], 2);
                }
                # Calculate amount
                $amt[$key] = $qtyss[$key] * ($stk['selamt'] - $discs[$key]);
                $stk['cselamt'] = sprint($stk['selamt'] / $inv['xrate']);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'>";
                if ($stk['serd'] == 'yes') {
                    $qtyin = "<input type='hidden' size='3' name='qtys[]' value='{$qtyss[$key]}'>{$qtyss[$key]}";
                }
                //				$stk['cselamt'] = sprint ($stk['cselamt']);
                $stk['selamt'] = sprint($stk['selamt']);
                # Check permissions
                if (perm("invoice-unitcost-edit.php")) {
                    $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stk['selamt']}'>";
                    $cunitcost = "<input type='text' size='8' name='cunitcost[]' value='{$stk['cselamt']}'>";
                } else {
                    $viewcost = "<input type='hidden' size='8' name='unitcost[]' value='{$stk['selamt']}'>{$stk['selamt']}";
                    $cunitcost = "<input type='hidden' size='8' name='cunitcost[]' value='{$stk['cselamt']}'>{$stk['cselamt']}";
                }
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($stk['vatcode'] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $amt[$key] = sprint($amt[$key]);
                # Put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'><a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td>{$sernos}</td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$viewcost}</td>\n\t\t\t\t\t\t<td>{$inv['currency']} {$cunitcost}</td>\n\t\t\t\t\t\t<td>{$inv['currency']}  <input type='text' size='4' name='disc[]' value='{$discs[$key]}'> OR <input type='text' size='4' name='discp[]' value='{$discps[$key]}' maxlength='5'>%</td>\n\t\t\t\t\t\t<td><input type='hidden' name='amt[]' value='{$amt[$key]}'> {$inv['currency']} {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } else {
                if (!isset($diffwhBtn)) {
                    # skip if not selected
                    if ($whid == "-S") {
                        continue;
                    }
                    # get warehouse name
                    db_conn("exten");
                    $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                    $whRslt = db_exec($sql);
                    $wh = pg_fetch_array($whRslt);
                    if (isset($ria) && $ria != "") {
                        $len = strlen($ria);
                        $Wh = "AND lower(substr(stkcod,1,'{$len}'))=lower('{$ria}')";
                    } else {
                        $Wh = "";
                        $ria = "";
                    }
                    # get stock on this warehouse
                    db_connect();
                    $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
                    $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                    if (pg_numrows($stkRslt) < 1) {
                        $error .= "<li class='err'>There are no stock items in the selected warehouse.";
                        continue;
                    }
                    if (pg_numrows($stkRslt) == 1) {
                        $ex = "selected";
                    } else {
                        $ex = "";
                    }
                    $stks = "<select class='width : 15'name='stkidss[]' onChange='javascript:document.form.submit();'>";
                    $stks .= "<option value='-S' disabled selected>Select Number</option>";
                    $count = 0;
                    while ($stk = pg_fetch_array($stkRslt)) {
                        $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                    }
                    $stks .= "</select> ";
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vd['del'] == "Yes") {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    # put in drop down and warehouse
                    $products .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='vatcodess' value='0'></td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td><input type='hidden' size='3' name='qtyss[]'  value='1'>1</td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td>{$inv['currency']} <input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='amts[]' value='0.00'>{$inv['currency']} 0.00</td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t</tr>";
                }
            }
        }
    } else {
        if (!isset($diffwhBtn)) {
            # check if setting exists
            db_connect();
            $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
            $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
            if (pg_numrows($Rslt) > 0) {
                $set = pg_fetch_array($Rslt);
                $whid = $set['value'];
                if (isset($wtd)) {
                    $whid = $wtd;
                }
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                if (isset($ria) && $ria != "") {
                    $len = strlen($ria);
                    $Wh = "AND lower(substr(stkcod,1,'{$len}'))=lower('{$ria}')";
                } else {
                    $Wh = "";
                    $ria = "";
                }
                # get stock on this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                if (pg_numrows($stkRslt) < 1) {
                    if (!isset($err)) {
                        $err = "";
                    }
                    $err .= "<li>There are no stock items in the selected store.</li>";
                    //ontinue;
                }
                $stks = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
                $stks .= "<option value='-S' disabled selected>Select Number</option>";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $stks .= "</select> ";
                $products .= "\n\t\t\t\t\t<input type='hidden' name='vatcodess[]' value=''>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td><input type='hidden' size='3' name='qtyss[]' value='1'>1</td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td>{$inv['currency']} <input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t<td>{$inv['currency']} 0.00</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>";
            } else {
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$whs}</td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td>{$inv['currency']}<input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t<td>{$inv['currency']} 0.00</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>";
            }
        }
    }
    /* -- start Listeners -- */
    if (isset($diffwhBtn)) {
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$whs}</td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td>{$inv['currency']}<input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t<td>{$inv['currency']} 0.00</td>\n\t\t\t\t<td></td>\n\t\t\t</tr>";
    }
    /* -- End Listeners -- */
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    # Calculate tradediscm
    if ($inv['traddisc'] > 0) {
        $traddiscm = sprint($inv['traddisc'] / 100 * ($SUBTOT + $inv['delchrg']));
    } else {
        $traddiscm = "0.00";
    }
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    $VAT = sprint($inv['vat']);
    $TOTAL = sprint($inv['total']);
    $inv['delchrg'] = sprint($inv['delchrg']);
    /* --- End Some calculations --- */
    /*--- Start checks --- */
    # check only if the customer is selected
    if (isset($cusnum) && $cusnum != "-S") {
        db_connect();
        #check againg credit limit
        if ($TOTAL + $cust['balance'] > $cust['credlimit']) {
            $error .= "<li class='err'>Warning : Customers Credit limit of <b>{$inv['currency']} {$cust['credlimit']}</b> has been exceeded";
            # Check permissions
            if (!perm("invoice-limit-override.php")) {
                $done = "";
            }
        }
        $avcred = $cust['credlimit'] - $cust['balance'];
    } else {
        $avcred = "0.00";
    }
    /*--- Start checks --- */
    $inv['delvat'] += 0;
    if ($inv['delvat'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $inv['delvat'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "\n\t\t<select name='delvat'>\n\t\t\t<option value='0'>Select</option>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $inv['delvat']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    db_conn('cubit');
    $Sl = "SELECT * FROM settings WHERE constant='Delivery Note'";
    $Ri = db_exec($Sl) or errDie("Unable to get settings.");
    $data = pg_fetch_array($Ri);
    if ($data['value'] == "Yes") {
        $chp = "checked";
    } else {
        $chp = "";
    }
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    if (!isset($stkerr)) {
        $stkerr = "";
    }
    $avcred = sprint($avcred);
    /* -- Final Layout -- */
    $details = "\n\t\t<center>\n\t\t<h3>New International Invoice</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='invid' value='{$invid}'>\n\t\t\t<input type='hidden' name='letters' value='{$letters}'>\n\t\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign='top' width='50%'>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Account No.</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$cust['accno']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$customers}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t\t\t\t\t<td valign='center'>" . nl2br($cust['addr1']) . "</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Customer Order number</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='10' name='cordno' value='{$inv['cordno']}'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Customer Vat Number</td>\n\t\t\t\t\t\t\t\t<td>{$cust['vatnum']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th colspan='2'>Point of Sale</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Barcode</td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='13' name='bar' value=''></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "' " . ass("Type the first letters of the stock code you are looking for.") . ">\n\t\t\t\t\t\t\t\t<td>Stock Filter</td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='13' name='ria' value='{$ria}' onkeyup='javasript:predict()'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Print Delivery Note</td>\n\t\t\t\t\t\t\t\t<td><input type='checkbox' name='printdel' {$chp}></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td valign='top' align='right' width='50%'>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th colspan='2'> Invoice Details </th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Invoice No.</td>\n\t\t\t\t\t\t\t\t<td valign='center'>TI {$inv['invid']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Proforma Inv No.</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='docref' value='{$inv['docref']}'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Sales Order No.</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='ordno' value='{$inv['ordno']}'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Foreign Currency</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$currs['symbol']} - {$currs['name']} &nbsp;&nbsp;Exchange rate " . CUR . " <input type='text' size='7' name='xrate' value='{$inv['xrate']}'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' size='7' name='chrgvat' value='inc' {$chin}> No<input type='radio' size='7' name='chrgvat' value='exc' {$chex}></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$termssel} Days</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$salesps}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Invoice Date</td>\n\t\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("o", $o_year, $o_month, $o_day) . "</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Available Credit</td>\n\t\t\t\t\t\t\t\t<td>{$inv['currency']} {$avcred}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='traddisc' value='{$inv['traddisc']}'>%</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$inv['currency']}<input type='text' size='7' name='delchrg' value='{$inv['delchrg']}'>{$Vatcodes}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr><td colspan='2'>{$products}</td></tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<p>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th width='25%'>Quick Links</th>\n\t\t\t\t\t\t\t<th width='25%'>Comments</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='cust-credit-stockinv.php'>New Invoice</a></td>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'><textarea name='comm' rows='4' cols='20'>{$inv['comm']}</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><a href='invoice-view.php'>View Invoices</a></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right' valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='50%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} <input type='hidden' name='SUBTOT' value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['discount']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['delivery']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$VAT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input type='button' value='&laquo Back' onClick='javascript:history.back()'> | <input name='diffwhBtn' type='submit' value='Different Store'> | <input name='addprodBtn' type='submit' value='Add Product'> | <input type='submit' name='saveBtn' value='Save'> </td>\n\t\t\t\t<td>| <input type='submit' name='upBtn' value='Update'>{$done}</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<a name='bottom'>\n\t\t</form>\n\t\t</center>";
    return $details;
}
コード例 #10
0
function details($_GET)
{
    $showvat = TRUE;
    # get vars
    extract($_GET);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    db_connect();
    # Get invoice info
    $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($invRslt) < 1) {
        return "<i class='err'>Not Found</i>";
    }
    $inv = pg_fetch_array($invRslt);
    $td = $inv['odate'];
    # CHECK IF THIS DATE IS IN THE BLOCKED RANGE
    $blocked_date_from = getCSetting("BLOCKED_FROM");
    $blocked_date_to = getCSetting("BLOCKED_TO");
    if (strtotime($td) >= strtotime($blocked_date_from) and strtotime($td) <= strtotime($blocked_date_to) and !user_is_admin(USER_ID)) {
        return "<li class='err'>Period Range Is Blocked. Only an administrator can process entries within this period.</li>";
    }
    $sql = "SELECT stkid FROM inv_items WHERE invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'";
    $crslt = db_exec($sql);
    if (pg_numrows($crslt) < 1) {
        $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has no items.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # check if invoice has been printed
    if ($inv['printed'] == "y") {
        $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # check if invoice has been serialised
    if ($inv['serd'] == "n") {
        $error = "<li class='err'> Error : You must select serial numbers for some Items on Invoice No. <b>T {$invid}</b> before you can print it.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    cus_xrate_update($inv['fcid'], $inv['xrate']);
    # Begin Updates
    pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF);
    $invnum = divlastid('inv', USER_DIV);
    $Sl = "INSERT INTO ncsrec (oldnum, newnum, div) VALUES ('{$invid}', '{$invnum}', '" . USER_DIV . "')";
    $Rs = db_exec($Sl) or errDie("Unable to insert into db");
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$inv['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<i class='err'>Not Found</i>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    /* --- Start Products Display --- */
    # Products layout
    $commision = 0;
    $products = "";
    $disc = 0;
    # get selected stock in this invoice
    db_connect();
    $sql = "SELECT * FROM inv_items  WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $taxex = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'";
        $Ri = db_exec($Sl);
        if (pg_num_rows($Ri) < 1) {
            return "Please select the vatcode for all your stock.";
        }
        $vd = pg_fetch_array($Ri);
        $sp = "";
        # Check Tax Excempt
        if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") {
            $taxex += $stkd['amt'];
            $ex = "#";
        } else {
            $ex = "";
        }
        # all must be excempted
        if ($inv['chrgvat'] == 'nov') {
            $ex = "#";
        }
        # Keep track of discounts
        $disc += $stkd['disc'] * $stkd['qty'];
        # Insert stock record
        $sdate = date("Y-m-d");
        $csprice = sprint($stk['csprice'] * $stkd['qty']);
        # Get amount exluding vat if including and not exempted
        $VATP = TAX_VAT;
        $amtexvat = sprint($stkd['famt']);
        if ($inv['chrgvat'] == "inc" && $stk['exvat'] != 'yes') {
            $amtexvat = sprint($stkd['famt'] * 100 / (100 + $VATP));
        }
        db_connect();
        $sql = "\n\t\t\tINSERT INTO stockrec (\n\t\t\t\tedate, stkid, stkcod, stkdes, trantype, qty, csprice, csamt, \n\t\t\t\tdetails, div\n\t\t\t) VALUES (\n\t\t\t\t'{$td}', '{$stkd['stkid']}', '{$stk['stkcod']}', '{$stk['stkdes']}', 'invoice', '{$stkd['qty']}', '{$amtexvat}', '{$csprice}', \n\t\t\t\t'Stock sold - Invoice No. {$invnum}', '" . USER_DIV . "'\n\t\t\t)";
        $recRslt = db_exec($sql);
        # Sales rep commission
        $commision = $commision + coms($inv['salespn'], $stkd['amt'], $stk['com']);
        # Put in product
        $products .= "\n\t\t\t<tr valign='top'>\n\t\t\t\t<td>{$stk['stkcod']}</td>\n\t\t\t\t<td>{$ex} {$sp} {$stk['stkdes']}</td>\n\t\t\t\t<td>" . sprint3($stkd['qty']) . "</td>\n\t\t\t\t<td>{$inv['currency']} " . sprint($stkd['unitcost']) . "</td>\n\t\t\t\t<td>{$inv['currency']} {$stkd['disc']}</td>\n\t\t\t\t<td>{$inv['currency']} {$stkd['amt']}</td>\n\t\t\t</tr>";
    }
    /* --- Start Some calculations --- */
    # Subtotal
    $SUBTOT = sprint($inv['subtot']);
    # Calculate subtotal
    $VATP = TAX_VAT;
    $SUBTOTAL = sprint($inv['subtot']);
    $VAT = sprint($inv['vat']);
    $TOTAL = sprint($inv['total']);
    $inv['delchrg'] = sprint($inv['delchrg']);
    $FSUBTOT = sprint($inv['subtot'] * $inv['xrate']);
    $FVAT = sprint($inv['vat'] * $inv['xrate']);
    $FTOTAL = sprint($inv['total'] * $inv['xrate']);
    $fdelchrg = sprint($inv['delchrg'] * $inv['xrate']);
    $ftraddiscm = sprint($inv['discount'] * $inv['xrate']);
    com_invoice($inv['salespn'], $FTOTAL, $commision * $inv['xrate'], $invnum, $td);
    /* --- End Some calculations --- */
    /* - Start Hooks - */
    $vatacc = gethook("accnum", "salesacc", "name", "VAT", "int");
    /* - End Hooks - */
    # Todays date
    $date = date("d-m-Y");
    $sdate = date("Y-m-d");
    $refnum = getrefnum();
    /*$refnum*/
    /* --- Updates ---- */
    db_connect();
    $Sql = "UPDATE invoices SET printed ='y', done ='y', invnum='{$invnum}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $upRslt = db_exec($Sql) or errDie("Unable to update invoice information");
    # Record the payment on the statement
    $sql = "\n\t\tINSERT INTO stmnt (\n\t\t\tcusnum, invid, amount, date, type, div, allocation_date\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}','{$invnum}', '{$TOTAL}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "', '{$inv['odate']}'\n\t\t)";
    $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF);
    # Record the payment on the statement
    $sql = "\n\t\tINSERT INTO open_stmnt (\n\t\t\tcusnum, invid, amount, balance, date, type, div\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$invnum}', '{$TOTAL}', '{$TOTAL}', '{$inv['odate']}', 'Invoice', '" . USER_DIV . "'\n\t\t)";
    $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF);
    # Save invoice discount
    $sql = "\n\t\tINSERT INTO inv_discs (\n\t\t\tcusnum, invid, traddisc, itemdisc, inv_date, delchrg, div, \n\t\t\ttotal\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$invnum}', '{$ftraddiscm}', '{$disc}', '{$inv['odate']}', '{$fdelchrg}', '" . USER_DIV . "', \n\t\t\t({$FSUBTOT}+{$fdelchrg})\n\t\t)";
    $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF);
    # Update the customer (make balance more)
    $sql = "UPDATE customers SET balance = (balance + '{$FTOTAL}'), fbalance = (fbalance + '{$TOTAL}') WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF);
    # Make ledge record
    custledger($inv['cusnum'], $dept['incacc'], $td, $invnum, "Invoice No. {$invnum}", $FTOTAL, "d");
    db_connect();
    # get selected stock in this invoice
    $sql = "SELECT * FROM inv_items  WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $tcosamt = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        db_connect();
        # get selamt from selected stock
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        # cost amount
        $cosamt = round($stkd['qty'] * $stk['csprice'], 2);
        # update stock(alloc - qty)
        $sql = "UPDATE stock SET csamt = (csamt - '{$cosamt}'),units = (units - '{$stkd['qty']}'),alloc = (alloc - '{$stkd['qty']}')  WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF);
        ###################VAT CALCS#######################
        $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'";
        $Ri = db_exec($Sl);
        if (pg_num_rows($Ri) < 1) {
            return "Please select the vatcode for all your stock.";
        }
        $vd = pg_fetch_array($Ri);
        if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") {
            $excluding = "y";
        } else {
            $excluding = "";
        }
        if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
            $showvat = FALSE;
        }
        $vr = vatcalc($stkd['amt'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']);
        $vrs = explode("|", $vr);
        $ivat = $vrs[0];
        $iamount = $vrs[1];
        $iamount = $iamount * $inv['xrate'];
        $ivat = $ivat * $inv['xrate'];
        vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat);
        ####################################################
        if ($stk['serd'] == 'yes') {
            ext_invSer($stkd['serno'], $stkd['stkid'], "{$inv['cusname']} {$inv['surname']}", $invnum);
        }
        # stkid, stkcod, stkdes, trantype, edate, qty, csamt, details
        $sdate = date("Y-m-d");
        stockrec($stk['stkid'], $stk['stkcod'], $stk['stkdes'], 'ct', $td, $stkd['qty'], $cosamt, "Sold to Customer : {$inv['surname']} - Invoice No. {$invnum}");
        # get accounts
        db_conn("exten");
        $sql = "SELECT stkacc,cosacc FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        $stockacc = $wh['stkacc'];
        $cosacc = $wh['cosacc'];
        # dt(cos) ct(stock)
        writetrans($cosacc, $stockacc, $td, $refnum, $cosamt, "Cost Of Sales for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}");
        $tcosamt += $cosamt;
    }
    ###################VAT CALCS#######################
    $inv['delvat'] += 0;
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'";
    $Ri = db_exec($Sl);
    if (pg_num_rows($Ri) < 1) {
        $Sl = "SELECT * FROM vatcodes";
        $Ri = db_exec($Sl);
    }
    $vd = pg_fetch_array($Ri);
    if ($vd['zero'] == "Yes") {
        $excluding = "y";
    } else {
        $excluding = "";
    }
    $vr = vatcalc($inv['delchrg'], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']);
    $vrs = explode("|", $vr);
    $ivat = $vrs[0];
    $iamount = $vrs[1];
    $iamount = $iamount * $inv['xrate'];
    $ivat = $ivat * $inv['xrate'];
    vatr($vd['id'], $inv['odate'], "OUTPUT", $vd['code'], $refnum, "VAT for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}", $iamount, $ivat);
    ####################################################
    /* - Start Transactoins - */
    # dt(debtors) ct(income/sales)
    writetrans($dept['debtacc'], $dept['incacc'], $td, $refnum, $FTOTAL - $FVAT, "Debtors Control for Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}");
    # dt(debtors) ct(vat account)
    writetrans($dept['debtacc'], $vatacc, $td, $refnum, $FVAT, "VAT Received on Invoice No.{$invnum} for Customer : {$inv['cusname']} {$inv['surname']}");
    db_connect();
    $sql = "\n\t\tINSERT INTO salesrec (\n\t\t\tedate, invid, invnum, debtacc, vat, total, typ, div\n\t\t) VALUES (\n\t\t\t'{$inv['odate']}', '{$invid}', '{$invnum}', '{$dept['debtacc']}', '{$FVAT}', '{$FTOTAL}', 'stk', '" . USER_DIV . "'\n\t\t)";
    $recRslt = db_exec($sql);
    db_conn('cubit');
    $Sl = "\n\t\tINSERT INTO sj (\n\t\t\tcid, name, des, date, exl, vat, inc, div\n\t\t) VALUES (\n\t\t\t'{$inv['cusnum']}', '{$inv['surname']}', 'International Invoice {$invnum}', '{$inv['odate']}', '" . sprint($FTOTAL - $FVAT) . "', \n\t\t\t'{$FVAT}', '" . sprint($FTOTAL) . "', '" . USER_DIV . "'\n\t\t)";
    $Ri = db_exec($Sl);
    # Commit updates
    pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF);
    /* - End Transactoins - */
    # vat explanation
    if ($inv['chrgvat'] == 'nov') {
        $expl = "VAT Exempt indicator";
    } else {
        $expl = "0% VAT indicator";
        $expl = "VAT Exempt indicator";
    }
    # Avoid little box, <table border=1> <-- ehhhemm !!
    if (strlen($inv['comm']) > 0) {
        $inv['comm'] = "\n\t\t\t<table border='1' cellspacing='0' bordercolor='#000000'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>" . nl2br($inv['comm']) . "</td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    }
    if ($inv['chrgvat'] == "inc") {
        $inv['chrgvat'] = "Inclusive";
    } elseif ($inv['chrgvat'] == "exc") {
        $inv['chrgvat'] = "Exclusive";
    } else {
        $inv['chrgvat'] = "No vat";
    }
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    $cc = "<script> sCostCenter('dt', 'Sales', '{$inv['odate']}', 'Invoice No.{$invnum} for Customer {$inv['cusname']} {$inv['surname']}', '" . ($FTOTAL - $FVAT) . "', 'Cost Of Sales for Invoice No.{$invnum}', '{$tcosamt}', ''); </script>";
    /* -- Final Layout -- */
    $details = "\n\t\t<center>\n\t\t{$cc}\n\t\t<h2>Tax Invoice</h2>\n\t\t<table cellpadding='0' cellspacing='4' border='0' width='750'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td>{$inv['surname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td>" . nl2br($inv['cusaddr']) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td>(VAT No. {$inv['cusvatno']})</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' width='30%'>\n\t\t\t\t\t" . COMP_NAME . "<br>\n\t\t\t\t\t" . COMP_ADDRESS . "<br>\n\t\t\t\t\t" . COMP_PADDR . "<br>\n\t\t\t\t\t" . COMP_TEL . "<br>\n\t\t\t\t\t" . COMP_FAX . "<br>\n\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\n\t\t\t\t\tVAT No. " . COMP_VATNO . "<br>\n\t\t\t\t</td>\n\t\t\t\t<td width='20%'>\n\t\t\t\t\t<img src='compinfo/getimg.php' width='230' height='47'>\n\t\t\t\t</td>\n\t\t\t\t<td valign='bottom' align='right' width='20%'>\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Invoice No.</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$invnum}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Proforma Inv No.</b></td>\n\t\t\t\t\t\t\t<td>{$inv['docref']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Order No.</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Terms</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['terms']} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Invoice Date</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['odate']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>VAT</b></td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['chrgvat']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'>\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='100%' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>ITEM NUMBER</b></td>\n\t\t\t\t\t\t\t<td width='45%'><b>DESCRIPTION</b></td>\n\t\t\t\t\t\t\t<td><b>QTY</b></td>\n\t\t\t\t\t\t\t<td><b>UNIT PRICE</b></td>\n\t\t\t\t\t\t\t<td><b>DISCOUNT</b></td>\n\t\t\t\t\t\t\t<td><b>AMOUNT</b></td>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t{$products}\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>{$inv['comm']}</td>\n\t\t\t\t<td>" . BNK_BANKDET . "</td>\n\t\t\t\t<td align='right' colspan='2'>\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='50%' bordercolor='#000000'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$SUBTOT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Trade Discount</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['discount']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>Delivery Charge</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['delivery']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$VAT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td><b>GRAND TOTAL<b></td>\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='2'>{$expl} = #</td>\n\t\t\t\t\t\t</tr>\n\t\t\t        </table>\n\t\t\t\t</td>\n\t\t\t\t<td><br></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</center>";
    $OUTPUT = $details;
    require "tmpl-print.php";
}
コード例 #11
0
function details($_GET)
{
    # get vars
    extract($_GET);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get invoice info
    db_connect();
    $sql = "SELECT * FROM sorders WHERE sordid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($invRslt) < 1) {
        return "<i class='err'>Not Found</i>";
    }
    $inv = pg_fetch_array($invRslt);
    /* --- Start some checks --- */
    # Check if stock was selected(yes = put done button)
    db_connect();
    $sql = "SELECT stkid FROM sorders_items WHERE sordid = '{$inv['sordid']}' AND div = '" . USER_DIV . "'";
    $crslt = db_exec($sql);
    if (pg_numrows($crslt) < 1) {
        $error = "<li class='err'> Error : Consignment number <b>{$invid}</b> has no items.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    /* --- End some checks --- */
    /* --- Start Products Display --- */
    # Products layout
    $products = "";
    $disc = 0;
    # get selected stock in this invoice
    db_connect();
    $sql = "SELECT * FROM sorders_items  WHERE sordid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # Get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # Get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        # Keep track of discounts
        $disc += $stkd['disc'];
        # Put in product
        $products .= "\r\n\t\t\t<tr valign=top>\r\n\t\t\t\t<td>{$stk['stkcod']}</td>\r\n\t\t\t\t<td>{$stk['stkdes']}</td>\r\n\t\t\t\t<td>" . sprint3($stkd['qty']) . "</td>\r\n\t\t\t\t<td>" . sprint($stkd['unitcost']) . "</td>\r\n\t\t\t\t<td>{$inv['currency']} {$stkd['amt']}</td>\r\n\t\t\t</tr>";
    }
    /* --- Start Some calculations --- */
    # subtotal
    $SUBTOT = sprint($inv['subtot']);
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    $VAT = sprint($inv['vat']);
    $TOTAL = sprint($inv['total']);
    /* --- End Some calculations --- */
    # todays date
    $date = date("d-m-Y");
    $sdate = date("Y-m-d");
    # Avoid little box
    if (strlen($inv['comm']) > 0) {
        $inv['comm'] = "\r\n\t\t\t<table border='1' cellspacing='0' bordercolor='#000000'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>" . nl2br($inv['comm']) . "</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>";
    }
    if ($inv['chrgvat'] == "yes") {
        $inv['chrgvat'] = "Inclusive";
    } elseif ($inv['chrgvat'] == "no") {
        $inv['chrgvat'] = "Exclusive";
    } else {
        $inv['chrgvat'] = "No vat";
    }
    /* -- Final Layout -- */
    $details = "\r\n\t\t<center>\r\n\t\t<h2>Sales Order</h2>\r\n\t\t<table cellpadding='0' cellspacing='4' border='0' width='770'>\r\n\t\t\t<tr>\r\n\t\t\t\t<td valign='top' width='30%'>\r\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>{$inv['surname']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>" . nl2br($inv['cusaddr']) . "</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td>(Vat No. {$inv['cusvatno']})</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td valign='top' width='30%'>\r\n\t\t\t\t\t" . COMP_NAME . "<br>\r\n\t\t\t\t\t" . COMP_ADDRESS . "<br>\r\n\t\t\t\t\t" . COMP_TEL . "<br>\r\n\t\t\t\t\t" . COMP_FAX . "<br>\r\n\t\t\t\t\tReg No. " . COMP_REGNO . "<br>\r\n\t                VAT No. " . COMP_VATNO . "<br>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td align='left' width='20%'><img src='compinfo/getimg.php' width='230' height='47'></td>\r\n\t\t\t\t<td valign='bottom' align='right' width='20%'>\r\n\t\t\t\t\t<table cellpadding='2' cellspacing='0' border='1' bordercolor='#000000'>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>Sales Order No.</b></td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$inv['sordid']}</td></tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>Order No.</b></td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</td></tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>Terms</b></td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$inv['terms']} Days</td></tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>Date</b></td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$inv['odate']}</td></tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>Vat</b></td>\r\n\t\t\t\t\t\t\t<td valign='center'>{$inv['chrgvat']}</td></tr>\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr><td><br></td></tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td colspan='4'>\r\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='100%' bordercolor='#000000'>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<th>ITEM NUMBER</th>\r\n\t\t\t\t\t\t\t<th width='45%'>DESCRIPTION</th>\r\n\t\t\t\t\t\t\t<th>QTY</th>\r\n\t\t\t\t\t\t\t<th>UNIT PRICE</th>\r\n\t\t\t\t\t\t\t<th>AMOUNT</th>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t{$products}\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>{$inv['comm']}</td>\r\n\t\t\t\t<td align='right' colspan='3'>\r\n\t\t\t\t\t<table cellpadding='5' cellspacing='0' border='1' width='50%' bordercolor='#000000'>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>SUBTOTAL</b></td>\r\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$SUBTOT}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>Trade Discount</b></td>\r\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['discount']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>Delivery Charge</b></td>\r\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$inv['delivery']}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<td><b>VAT @ {$VATP}%</b></td>\r\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$VAT}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<th><b>GRAND TOTAL<b></th>\r\n\t\t\t\t\t\t\t<td align='right'>{$inv['currency']} {$TOTAL}</td>\r\n\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t</table>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr><td><br></td></tr>\r\n\t\t</table>\r\n\t\t</center>";
    $OUTPUT = $details;
    require "tmpl-print.php";
}
コード例 #12
0
function report($_POST)
{
    extract($_POST);
    require_lib("validate");
    $v = new validate();
    //$v->isOk ($stkid, "num", 1, 50, "Invalid stock number.");
    $v->isOk($from_day, "num", 1, 2, "Invalid from Date day.");
    $v->isOk($from_month, "num", 1, 2, "Invalid from Date month.");
    $v->isOk($from_year, "num", 1, 4, "Invalid from Date Year.");
    $v->isOk($to_day, "num", 1, 2, "Invalid to Date day.");
    $v->isOk($to_month, "num", 1, 2, "Invalid to Date month.");
    $v->isOk($to_year, "num", 1, 4, "Invalid to Date Year.");
    $fromdate = $from_year . "-" . $from_month . "-" . $from_day;
    $todate = $to_year . "-" . $to_month . "-" . $to_day;
    if (!checkdate($from_month, $from_day, $from_year)) {
        $v->isOk($fromdate, "num", 1, 1, "Invalid from date.");
    }
    if (!checkdate($to_month, $to_day, $to_year)) {
        $v->isOk($todate, "num", 1, 1, "Invalid to date.");
    }
    if (!isset($stkids)) {
        $v->addError("", "Please select at least on stock item.");
    }
    if ($v->isError()) {
        return slct($v->genErrors());
    }
    $freport = "";
    if (in_array('all', $stkids)) {
        $stkids = $alls;
    }
    $ss = "";
    foreach ($stkids as $stkid) {
        $ss .= "<input type='hidden' name='stkids[]' value='{$stkid}'>";
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkid}'";
        $stkRslt = db_exec($sql) or errDie("Unable to access databse.", SELF);
        if (pg_numrows($stkRslt) < 1) {
            return "<li> Invalid Stock ID.</li>";
        } else {
            $stk = pg_fetch_array($stkRslt);
        }
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        db_connect();
        $sql = "SELECT * FROM stockrec WHERE edate >= '{$fromdate}' AND edate <= '{$todate}' AND stkid = '{$stkid}' AND (trantype = 'invoice' OR trantype='note') ORDER BY edate DESC";
        $recRslt = db_exec($sql) or errDie("Unable to access databse.", SELF);
        $records = "";
        $totprof = 0;
        $totprice = 0;
        $totqty = 0;
        while ($rec = pg_fetch_array($recRslt)) {
            $rec['edate'] = explode("-", $rec['edate']);
            $rec['edate'] = $rec['edate'][2] . "-" . $rec['edate'][1] . "-" . $rec['edate'][0];
            if ($rec['trantype'] == "note") {
                $rec['qty'] = -$rec['qty'];
                $rec['csprice'] = -$rec['csprice'];
                $rec['csamt'] = -$rec['csamt'];
            }
            $totqty += $rec['qty'];
            $prof = $rec['csprice'] - $rec['csamt'];
            $totprof += $prof;
            $totprice += $rec['csprice'];
            $records .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$rec['edate']}</td>\n\t\t\t\t<td>{$rec['details']}</td>\n\t\t\t\t<td>" . sprint3($rec['qty']) . "</td>\n\t\t\t\t<td>" . CUR . sprint($rec["csprice"]) . "</td>\n\t\t\t\t<td>" . CUR . sprint($prof) . "</td>\n\t\t\t</tr>";
        }
        $totprice = sprint($totprice);
        $totprof = sprint($totprof);
        $totqty = sprint3($totqty);
        $freport .= "\n\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th colspan='2'>Details</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Warehouse</td>\n\t\t\t\t\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Stock code</td>\n\t\t\t\t\t\t\t\t<td>{$stk['stkcod']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Stock description</td>\n\t\t\t\t\t\t\t\t<td>" . nl2br($stk['stkdes']) . "</pre></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Category</td>\n\t\t\t\t\t\t\t\t<td>{$stk['catname']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Category</td>\n\t\t\t\t\t\t\t\t<td>{$stk['classname']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Details</th>\n\t\t\t\t\t\t\t\t<th>Quantity</th>\n\t\t\t\t\t\t\t\t<th>Selling Price</th>\n\t\t\t\t\t\t\t\t<th>Gross Profit</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t{$records}\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td colspan='2'><b>Totals</b></td>\n\t\t\t\t\t\t\t\t<td>{$totqty}</td>\n\t\t\t\t\t\t\t\t<td>" . CUR . " {$totprice}</td>\n\t\t\t\t\t\t\t\t<td>" . CUR . " {$totprof}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t" . TBL_BR;
    }
    $report = "\n\t\t\t\t<h3>Stock Sales Report</h3>\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t{$freport}\n\t\t\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t\t\t<input type='hidden' name='key' value='export'>\n\t\t\t\t\t{$ss}\n\t\t\t\t\t<input type='hidden' name='fday' value='{$from_day}'>\n\t\t\t\t\t<input type='hidden' name='fmon' value='{$from_month}'>\n\t\t\t\t\t<input type='hidden' name='fyear' value='{$from_year}'>\n\t\t\t\t\t<input type='hidden' name='today' value='{$to_day}'>\n\t\t\t\t\t<input type='hidden' name='tomon' value='{$to_month}'>\n\t\t\t\t\t<input type='hidden' name='toyear' value='{$to_year}'>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2'><input type='submit' value='Export to Spreadsheet'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>" . mkQuickLinks(ql("stock-sales-rep.php", "Sales Report"));
    return $report;
}
コード例 #13
0
function write($_POST)
{
    # Get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($sordid, "num", 1, 20, "Invalid Sales Order number.");
    # display errors, if any
    $err = "";
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        return $err;
    }
    # Get Sales Order info
    db_connect();
    $sql = "SELECT * FROM sorders WHERE sordid = '{$sordid}' AND div = '" . USER_DIV . "'";
    $sordRslt = db_exec($sql) or errDie("Unable to get Sales Order information");
    if (pg_numrows($sordRslt) < 1) {
        return "<li class='err'>Sales Order Not Found</li>";
    }
    $sord = pg_fetch_array($sordRslt);
    /* - Start Copying - */
    pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF);
    db_connect();
    # Insert invoice to DB
    $sql = "\n\t\tINSERT INTO invoices (\n\t\t\tdeptid, cusnum, deptname, cusacc, cusname, surname, \n\t\t\tcusaddr, cusvatno, cordno, ordno, chrgvat, terms, \n\t\t\ttraddisc, salespn, odate, delchrg, subtot, vat, \n\t\t\tdiscount, delivery, total, balance, comm, printed, \n\t\t\tdone, serd, prd, div, docref, delvat\n\t\t) VALUES (\n\t\t\t'{$sord['deptid']}', '{$sord['cusnum']}', '{$sord['deptname']}', '{$sord['cusacc']}', '{$sord['cusname']}', '{$sord['surname']}', \n\t\t\t'{$sord['cusaddr']}', '{$sord['cusvatno']}', '{$sord['cordno']}', '{$sord['ordno']}', '{$sord['chrgvat']}', '{$sord['terms']}', \n\t\t\t'{$sord['traddisc']}', '{$sord['salespn']}', '{$sord['odate']}', '{$sord['delchrg']}', '{$sord['subtot']}', '{$sord['vat']}' , \n\t\t\t'{$sord['discount']}', '{$sord['delivery']}', '{$sord['total']}', '{$sord['total']}', '{$sord['comm']}', 'n', \n\t\t\t'y', 'n', '" . PRD_DB . "', '" . USER_DIV . "', '{$sord['pinvnum']}', '{$sord['delvat']}'\n\t\t)";
    $rslt = db_exec($sql) or errDie("Unable to insert invoice to Cubit.", SELF);
    # get next ordnum
    $invid = lastinvid();
    # get selected stock in this Sales Order
    db_connect();
    $sql = "SELECT *, qty - iqty AS rqty FROM sorders_items WHERE sordid = '{$sordid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $serd = "y";
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $sord_itemid = $stkd['id'];
        $iqty[$sord_itemid] = sprint3($iqty[$sord_itemid]);
        if (!isset($iqty[$sord_itemid]) or $iqty[$sord_itemid] <= 0 or strlen($iqty[$sord_itemid]) < 1) {
            continue;
        }
        if ($iqty[$sord_itemid] > $stkd['rqty']) {
            pglib_transaction("ROLLBACK") or errDie("Unable to complete transaction.");
            return details(array("sordid" => $sordid), "<li class='err'>Invalid Qty To Invoice.</li>");
        }
        # Insert one by one per quantity
        if (ext_isSerial("stock", "stkid", $stkd['stkid'])) {
            $stkd['amt'] = sprint($stkd['amt'] / $stkd['qty']);
            $serd = "n";
            for ($i = 0; $i < $stkd['qty']; $i++) {
                # insert invoice items
                $stkd['vatcode'] += 0;
                $stkd['account'] += 0;
                $sql = "\n\t\t\t\t\tINSERT INTO inv_items (\n\t\t\t\t\t\tinvid, whid, stkid, qty, unitcost, amt, \n\t\t\t\t\t\tdisc, discp, div, vatcode, description, account\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$invid}', '{$stkd['whid']}', '{$stkd['stkid']}', '1', '{$stkd['unitcost']}', '{$stkd['amt']}', \n\t\t\t\t\t\t'{$stkd['disc']}', '{$stkd['discp']}', '" . USER_DIV . "', '{$stkd['vatcode']}', '{$stkd['description']}', '{$stkd['account']}'\n\t\t\t\t\t)";
                $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF);
            }
        } else {
            $stkd['vatcode'] += 0;
            $stkd['account'] += 0;
            # insert invoice items
            $sql = "\n\t\t\t\tINSERT INTO inv_items (\n\t\t\t\t\tinvid, whid, stkid, qty, unitcost, amt, \n\t\t\t\t\tdisc, discp, div, vatcode, description, account\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$invid}', '{$stkd['whid']}', '{$stkd['stkid']}', '{$iqty[$sord_itemid]}', '{$stkd['unitcost']}', '{$stkd['amt']}', \n\t\t\t\t\t'{$stkd['disc']}', '{$stkd['discp']}', '" . USER_DIV . "', '{$stkd['vatcode']}', '{$stkd['description']}', '{$stkd['account']}'\n\t\t\t\t)";
            $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF);
            # update the sales order information
            $upd_sql = "UPDATE sorders_items SET iqty = iqty + '{$iqty[$sord_itemid]}' WHERE sordid = '{$stkd['sordid']}' AND id = '{$sord_itemid}'";
            $run_upd = db_exec($upd_sql) or errDie("Unable to update sales order information.");
        }
    }
    # get selected stock in this Sales Order
    db_connect();
    $sql = "SELECT * FROM sord_data  WHERE sordid = '{$sordid}' AND div = '" . USER_DIV . "'";
    $dataRslt = db_exec($sql);
    $data = pg_fetch_array($dataRslt);
    $sql = "INSERT INTO inv_data (invid, dept, customer, addr1, div) VALUES ('{$invid}', '{$data['dept']}', '{$data['customer']}', '{$data['addr1']}', '" . USER_DIV . "')";
    $rslt = db_exec($sql) or errDie("Unable to insert invoice data to Cubit.", SELF);
    # check if there is anything still left
    $get_check = "SELECT * FROM sorders_items WHERE sordid = '{$sordid}' AND (qty - iqty) > 0";
    $run_check = db_exec($get_check) or errDie("Unable to check sales order completed status.");
    if (pg_numrows($run_check) <= 0) {
        # set to accepted
        $sql = "UPDATE sorders SET accepted = 'y' WHERE sordid = '{$sordid}' AND div = '" . USER_DIV . "'";
        $rslt = db_exec($sql) or errDie("Unable to update quotes in Cubit.", SELF);
    }
    # set to not serialised
    $sql = "UPDATE invoices SET serd = '{$serd}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to update quotes in Cubit.", SELF);
    /* remove access data
    	$sql = "DELETE FROM sorders WHERE sordid = '$sordid' AND div = '".USER_DIV."'";
    	$rslt = db_exec($sql) or errDie("Unable to update Sales Orders on Cubit.",SELF);
    
    	$sql = "DELETE FROM sorders_items WHERE sordid = '$sordid' AND div = '".USER_DIV."'";
    	$rslt = db_exec($sql) or errDie("Unable to update Sales Orders in Cubit.",SELF);
    
    	$sql = "DELETE FROM sord_data WHERE sordid = '$sordid' AND div = '".USER_DIV."'";
    	$rslt = db_exec($sql) or errDie("Unable to update Sales Orders in Cubit.",SELF);
    	*/
    # End updates
    pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF);
    header("Location: cust-credit-stockinv.php?invid={$invid}&cont=true&letters=&done=");
    exit;
    /* - End Copying - */
    // Final Laytout
    $write = "\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Sales Order accepted</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Sales Order for customer <b>{$sord['cusname']} {$sord['surname']}</b> has been accepted</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<p>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Quick Links</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><a href='sorder-view.php'>View Sales Orders</a></td>\n\t\t\t</tr>\n\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t</table>";
    return $write;
}
コード例 #14
0
function details($_GET)
{
    $showvat = TRUE;
    extract($_GET);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($noteid, "num", 1, 20, "Invalid Credit note number.");
    $v->isOk($prd, "num", 1, 20, "Invalid period number.");
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>{$e['msg']}</li>";
        }
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get invoice info
    db_conn($prd);
    $sql = "SELECT * FROM inv_notes WHERE noteid = '{$noteid}' AND div = '" . USER_DIV . "'";
    $noteRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($noteRslt) < 1) {
        return "<i class='err'>Not Found</i>";
    }
    $note = pg_fetch_array($noteRslt);
    if ($note['branch'] != 0) {
        db_connect();
        #get branch
        $get_branch = "SELECT * FROM customer_branches WHERE id = '{$note['branch']}' LIMIT 1";
        $run_branch = db_exec($get_branch) or errDie("Unable to get branch information.");
        if (pg_numrows($run_branch) < 1) {
            $branchname = "";
        } else {
            $barr = pg_fetch_array($run_branch);
            $branchname = $barr['branch_name'] . "<br>";
        }
    } else {
        $branchname = "";
    }
    /* --- Start some checks --- */
    # check if stock was selected(yes = put done button)
    db_conn($prd);
    $sql = "SELECT stkid FROM inv_note_items WHERE noteid = '{$note['noteid']}' AND div = '" . USER_DIV . "'";
    $crslt = db_exec($sql);
    if (pg_numrows($crslt) < 1) {
        $error = "<li class='err'> Error : Credit note number <b>{$note['notenum']}</b> has no items.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    /* --- End some checks --- */
    /* --- Start Products Display --- */
    # Products layout
    $products = array();
    # Get selected stock in this invoice note
    db_conn($prd);
    $sql = "SELECT * FROM inv_note_items WHERE noteid = '{$noteid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $tcosamt = 0;
    $nsub = 0;
    $i = 0;
    $page = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        if ($i >= 25) {
            $page++;
            $i = 0;
        }
        # get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # get selected stock in this warehouse
        if ($stkd["stkid"] != "0") {
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            $tcosamt += sprint($stkd['qty'] * $stk['csprice'], 2);
        } else {
            $stk = array('stkcod' => "", 'stkdes' => $stkd['description'], 'exvat' => "");
        }
        db_conn('cubit');
        $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'";
        $Ri = db_exec($Sl);
        // 		if(pg_num_rows($Ri)>0) {
        // 			$stk['exvat']="yes";
        // 		} else {
        // 			$stk['exvat']="";
        // 		}
        $vd = pg_fetch_array($Ri);
        if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
            $showvat = FALSE;
        }
        // Check Tax Excempt
        db_conn("cubit");
        $sql = "SELECT zero FROM vatcodes WHERE id='{$stkd['vatcode']}'";
        $zRslt = db_exec($sql) or errDie("Unable to retrieve vat code from Cubit.");
        $vatex = pg_fetch_result($zRslt, 0);
        if ($vatex == "Yes") {
            $ex = "#";
        } else {
            $ex = "";
        }
        $selamt = sprint($stkd['amt'] / $stkd['qty']);
        $selamt2 = sprint($stkd['amt']);
        $nsub += $selamt2;
        # put in product
        $products[$page][] = "\n\t\t<tr valign='top'>\n\t\t\t<td style='border-right: 2px solid #000'>{$stk['stkcod']}&nbsp;</td>\n\t\t\t<td style='border-right: 2px solid #000'>{$ex} {$stk['stkdes']}&nbsp;</td>\n\t\t\t<td style='border-right: 2px solid #000'>" . sprint3($stkd['qty']) . "&nbsp;</td>\n\t\t\t<td style='border-right: 2px solid #000' align='right' nowrap>" . CUR . " {$selamt}&nbsp;</td>\n\t\t\t<td align='right' nowrap>" . CUR . " {$stkd['amt']}&nbsp;</td>\n\t\t</tr>";
        $i++;
    }
    $blank_lines = 25;
    foreach ($products as $key => $val) {
        $bl = $blank_lines - count($products[$key]);
        for ($i = 0; $i <= $bl; $i++) {
            $products[$key][] = "\n \t\t\t<tr>\n \t\t\t\t<td style='border-right: 2px solid #000'>&nbsp;</td>\n \t\t\t\t<td style='border-right: 2px solid #000'>&nbsp;</td>\n \t\t\t\t<td style='border-right: 2px solid #000'>&nbsp;</td>\n \t\t\t\t<td style='border-right: 2px solid #000'>&nbsp;</td>\n \t\t\t\t<td>&nbsp;</td>\n \t\t\t</tr>";
        }
    }
    # Avoid little box
    if (strlen($note['comm']) > 0) {
        $note['comm'] = "\n\t\t<table border=1 cellspacing='0' bordercolor='#000000'>\n\t\t\t<tr><td>" . nl2br($note['comm']) . "</td></tr>\n\t\t</table>";
    }
    # VAT perc
    $VATP = TAX_VAT;
    # format date
    $cc = "";
    if (isset($cccc)) {
        $cc = "<script> nCostCenter('ct', 'Credit Note', '{$note['odate']}', 'Credit Note No.{$note['notenum']} for Customer {$note['cusname']} {$note['surname']}', '" . ($note['total'] - $note['vat']) . "', 'Credit Note No.{$note['notenum']}', '{$tcosamt}', ''); </script>";
    }
    $nsub = sprint($nsub);
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    // Retrieve the company information
    db_conn("cubit");
    $sql = "SELECT * FROM compinfo";
    $comp_rslt = db_exec($sql) or errDie("Unable to retrieve company information from Cubit.");
    $comp_data = pg_fetch_array($comp_rslt);
    // Retrieve the banking information
    db_conn("cubit");
    $sql = "SELECT * FROM bankacct WHERE bankid='{$note['bankid']}' AND div='" . USER_DIV . "'";
    $bank_rslt = db_exec($sql) or errDie("Unable to retrieve bank information from Cubit.");
    $bank_data = pg_fetch_array($bank_rslt);
    // Retrieve customer information
    db_conn("cubit");
    $sql = "SELECT * FROM customers WHERE cusnum='{$note['cusnum']}'";
    $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer information from Cubit.");
    $cust_data = pg_fetch_array($cust_rslt);
    // Find out if we should display the sales person
    $Sl = "SELECT * FROM settings WHERE constant='SALES'";
    $Ri = db_exec($Sl) or errDie("Unable to get settings.");
    $data = pg_fetch_array($Ri);
    if ($data['value'] == "Yes") {
        $sp = "\n\t\t<tr>\n\t\t\t<td><b>Sales Person:</b> {$note['salespn']}</td>\n\t\t</tr>";
    } else {
        $sp = "";
    }
    $table_borders = "\n\t\tborder-top: 2px solid #000000;\n\t\tborder-left: 2px solid #000000;\n\t\tborder-right: 2px solid #000000;\n\t\tborder-bottom: none;\n\t";
    $nolr_borders = "\n\t\tborder-top: 2px solid #000;\n\t\tborder-left: none;\n\t\tborder-right: none;\n\t\tborder-bottom: none;\n\t";
    $details = "";
    for ($i = 0; $i <= $page; $i++) {
        // new page?
        if ($i > 1) {
            $details .= "<br style='page-break-after:always;'>";
        }
        $products_out = "";
        foreach ($products[$i] as $string) {
            $products_out .= $string;
        }
        if (!isset($reprint) || $reprint == "no") {
            $show_reprint = "";
        } else {
            $show_reprint = "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='3' align='right'><font size='3'><b>Reprint</b></font></td>\n\t\t\t\t</tr>";
        }
        $details .= "\n\t\t<center>\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table border='0' cellpadding='2' cellspacing='2' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align='left' rowspan='2'><img src='compinfo/getimg.php' width=230 height=47></td>\n\t\t\t\t\t<td align='left' rowspan='2'><font size='5'><b>" . COMP_NAME . "</b></font></td>\n\t\t\t\t\t<td align='right'><font size='5'><b>Tax Credit Note</b></font></td>\n\t\t\t\t</tr>\n\t\t\t\t{$show_reprint}\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td valign='top'>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr1']}&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr1']}&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr2']}&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr2']}&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr3']}&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['paddr3']}&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['addr4']}&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$comp_data['postcode']}&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>REG:</b> {$comp_data['regnum']}</b>&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>{$bank_data['bankname']}</b>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>VAT REG:</b> {$comp_data['vatnum']}&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch</b> {$bank_data['branchname']}&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Tel:</b> {$comp_data['tel']}&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Branch Code:</b> {$bank_data['branchcode']}&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Fax:</b> {$comp_data['fax']}&nbsp;</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Acc Num:</b> {$bank_data['accnum']}&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td><td valign='top'>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date</b></td>\n\t\t\t\t\t<td><b>Page Number</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>{$note['odate']}</td>\n\t\t\t\t\t<td>" . ($i + 1) . "</td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000'>&nbsp</td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000'>&nbsp</td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><b>Credit Note No:</b> {$note['notenum']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><b>Invoice No:</b> {$note['invnum']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><b>Sales Order No:</b> {$note['ordno']}</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align='center'><font size='4'><b>Credit Note To:</b></font></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>{$note['surname']}</b></td>\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Postal Address</b></td>\n\t\t\t\t\t<td width='33%'><b>Delivery Address</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cust_data["addr1"]) . "</td>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>" . nl2br($cust_data["paddr1"]) . "</td>\n\t\t\t\t\t<td>{$branchname}" . nl2br($note["cusaddr"]) . "</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td width='33%' style='border-right: 2px solid #000'><b>Customer VAT No:</b> {$note['cusvatno']}</td>\n\t\t\t\t\t<td width='33%'><b>Customer Order No:</b> {$note['cordno']}</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;'><b>Code</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;'><b>Description</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;'><b>Qty</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000; border-right: 2px solid #000;' align='right'><b>Unit Price</b></td>\n\t\t\t\t\t<td style='border-bottom: 2px solid #000' align='right'><b>Amount</b></td>\n\t\t\t\t</tr>\n\t\t\t\t{$products_out}\n\t\t\t</table>\n\t\t\t</td></tr>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='{$table_borders}'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><i>VAT Exempt Indicator: #</i></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$note['comm']}</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</table>\n\n\t\t<table cellpadding='0' cellspacing='0' width='85%' style='border: 2px solid #000000'>\n\t\t\t<tr><td>\n\t\t\t<table cellpadding='2' cellspacing='0' border='0' width='100%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Terms:</b> {$note['terms']} days</b></td>\n\t\t\t\t\t<td><b>Subtotal:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$note['subtot']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>&nbsp;</td>\n\t\t\t\t\t<td><b>Trade Discount:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$note['traddisc']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Received in good order by:</b>_____________________</td>\n\t\t\t\t\t<td><b>Delivery Charge</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$note['delchrg']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'>&nbsp;</td>\n\t\t\t\t\t<td><b>VAT {$vat14}:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$note['vat']}</b></td>\n\t\t\t\t<tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td style='border-right: 2px solid #000'><b>Date:</b>_____________________</td>\n\t\t\t\t\t<td><b>Total Incl VAT:</b></td>\n\t\t\t\t\t<td nowrap><b>" . CUR . " {$note['total']}</b></td>\n\t\t\t\t</tr>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</table>";
    }
    // Retrieve template settings from Cubit
    db_conn("cubit");
    $sql = "SELECT filename FROM template_settings WHERE template='invoices'";
    $tsRslt = db_exec($sql) or errDie("Unable to retrieve the template settings from Cubit.");
    $template = pg_fetch_result($tsRslt, 0);
    if ($template == "invoice-print.php") {
        $OUTPUT = $details;
        require "tmpl-print.php";
    } else {
        if (isset($cccc)) {
            $costcentr = "nCostCenter('ct', 'Credit Note', '{$note['odate']}', 'Credit Note No.{$note['notenum']} for Customer {$note['cusname']} {$note['surname']}', '" . ($note['total'] - $note['vat']) . "', 'Credit Note No.{$note['notenum']}', '{$tcosamt}', '');";
        } else {
            $costcentr = "";
        }
        if (!isset($reprint) || $reprint == "no") {
            $type = "invnote";
        } else {
            $type = "invnotereprint";
        }
        $OUTPUT = "<script>{$costcentr} move(\"{$template}?invid={$note['noteid']}&type={$type}&prd={$prd}\");</script>";
        require "template.php";
    }
}
コード例 #15
0
function export()
{
    # Set up table to display in
    $printStk = "\n\t\t<center>\n\t\t<h3>Available Stock</h3>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Store</th>\n\t\t\t\t<th>Category</th>\n\t\t\t\t<th>Stock Code</th>\n\t\t\t\t<th>Stock Description</th>\n\t\t\t\t<th>Product class</th>\n\t\t\t\t<th>Available units</th>\n\t\t\t\t<th>Cost Amount</th>\n\t\t\t\t<th>Minimun Level</th>\n\t\t\t\t<th>Maximum Level</th>\n\t\t\t\t<th>Selling Price</th>\n\t\t\t</tr>";
    # connect to database
    db_connect();
    # Query server
    $i = 0;
    $tot_avail = 0;
    $tot_cost = 0;
    $tot_sell = 0;
    $sql = "SELECT * FROM stock WHERE units > 0 AND div = '" . USER_DIV . "' ORDER BY stkdes ASC";
    $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
    if (pg_numrows($stkRslt) < 1) {
        return "\n\t\t\t<li>There are no available stock found in Cubit.\n\t\t\t<p>\n\t\t\t<table " . TMPL_tblDflts . " width='15%'>\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Quick Links</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><a href='main.php'>Main Menu</a></td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    }
    while ($stk = pg_fetch_array($stkRslt)) {
        $stk['units'] = $stk['units'] - $stk['alloc'];
        # alternate bgcolor
        # get warehouse
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        $printStk .= "\n\t\t\t<tr>\n\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t<td>{$stk['catname']}</td>\n\t\t\t\t<td>{$stk['stkcod']}</td>\n\t\t\t\t<td align='center'>{$stk['stkdes']}</td>\n\t\t\t\t<td>{$stk['prdcls']}</td>\n\t\t\t\t<td align='right'>" . sprint3($stk['units']) . "</td>\n\t\t\t\t<td align='right'>" . CUR . " " . sprint($stk['csamt']) . "</td>\n\t\t\t\t<td align='right'>{$stk['minlvl']}</td>\n\t\t\t\t<td align='right'>{$stk['maxlvl']}</td>\n\t\t\t\t<td align='left'>" . CUR . " " . sprint($stk['selamt'] * $stk['units']) . " (" . CUR . " {$stk['selamt']} each)</td>\n\t\t\t</tr>";
        #handle totals
        if ($stk['units'] > 0) {
            $tot_avail += $stk['units'];
        }
        if ($stk['csamt'] > 0) {
            $tot_cost += $stk['csamt'];
        }
        if ($stk['selamt'] > 0) {
            $tot_sell += $stk['selamt'] * $stk['units'];
        }
    }
    $printStk .= "\n\t\t<tr>\n\t\t\t<td colspan='5'>Totals:</td>\n\t\t\t<td align='right'>" . sprint3($tot_avail) . "</td>\n\t\t\t<td align='right'>" . CUR . " " . sprint($tot_cost) . "</td>\n\t\t\t<td colspan='2'></td>\n\t\t\t<td align='left'>" . CUR . " " . sprint($tot_sell) . "</td>\n\t\t</tr>\n\t\t</table>";
    $OUTPUT = $printStk;
    include "xls/temp.xls.php";
    Stream("Report", $OUTPUT);
    return $printStk;
}
コード例 #16
0
function display()
{
    extract($_REQUEST);
    define("LIMIT", 100);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = date("d") - 1;
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    $fields["search_by"] = "stkcod";
    $fields["search"] = "";
    $fields["offset"] = 0;
    extract($fields, EXTR_SKIP);
    if ($from_day == 0) {
        $from_day = "01";
    }
    $from_date = "{$from_year}-{$from_month}-{$from_day}";
    $to_date = "{$to_year}-{$to_month}-{$to_day}";
    $search_ar = array("stkcod" => "Stock Code", "stkdes" => "Stock Description", "id" => "Journal Number", "details" => "Journal Description");
    $search_sel = "<select name='search_by' style='width: 100%'>";
    foreach ($search_ar as $db_name => $out_name) {
        if ($search_by == $db_name) {
            $sel = "selected='selected'";
        } else {
            $sel = "";
        }
        $search_sel .= "<option value='{$db_name}' {$sel}>{$out_name}</option>";
    }
    $search_sel .= "</select>";
    $union = array();
    $first = 1;
    for ($i = 1; $i <= 13; $i++) {
        $union[] = "\n\t\t\tSELECT id, edate, stkcod, stkdes, details, qty, csamt, {$i} AS prd\n\t\t\tFROM \"{$i}\".stkledger\n\t\t\tWHERE {$search_by} ILIKE '{$search}%' AND trantype!='bal'\n\t\t\t\tAND edate BETWEEN '{$from_date}' AND '{$to_date}'";
    }
    $sql = implode(" UNION ", $union);
    $count_rslt = db_exec($sql) or errDie("Unable to retrieve count.");
    $count = pg_num_rows($count_rslt);
    $sql .= " ORDER BY edate, id ASC OFFSET {$offset} LIMIT " . LIMIT;
    $ledger_rslt = db_exec($sql) or errDie("Unable to retrieve stock ledger.");
    $ledger_out = "";
    $total_csamt = 0;
    $total_qty = 0;
    $min_prd = 0;
    while ($ledger_data = pg_fetch_array($ledger_rslt)) {
        if ($ledger_data["prd"] < $min_prd || $min_prd == 0) {
            $min_prd = $ledger_data["prd"];
        }
        $ledger_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$ledger_data['id']}</td>\n\t\t\t\t<td>{$ledger_data['edate']}</td>\n\t\t\t\t<td>({$ledger_data['stkcod']}) {$ledger_data['stkdes']}</td>\n\t\t\t\t<td>{$ledger_data['details']}</td>\n\t\t\t\t<td>" . sprint3($ledger_data['qty']) . "</td>\n\t\t\t\t<td>" . sprint($ledger_data["csamt"]) . "</td>\n\t\t\t</tr>";
        $total_qty += $ledger_data["qty"];
        $total_csamt += $ledger_data["csamt"];
    }
    if ($min_prd > 0) {
        $sql = "\n\t\t\tSELECT id, edate, stkcod, stkdes, details, qty, csamt, {$i} AS prd\n\t\t\tFROM \"{$i}\".stkledger\n\t\t\tWHERE {$search_by} ILIKE '{$search}%'\n\t\t\t\tAND edate BETWEEN '{$from_date}' AND '{$to_date}' AND trantype='bal'";
        $bal_rslt = db_exec($sql) or errDie("Unable to retrieve stock ledger.");
        $bal_out = "";
        while ($bal_data = pg_fetch_array($bal_rslt)) {
            $bal_out .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$ledger_data['id']}</td>\n\t\t\t\t\t<td>{$ledger_data['edate']}</td>\n\t\t\t\t\t<td>{$ledger_data['stkcod']} {$ledger_data['stkdes']}</td>\n\t\t\t\t\t<td>{$details}</td>\n\t\t\t\t\t<td>" . sprint3($qty) . "</td>\n\t\t\t\t\t<td>" . sprint($csamt) . "</td>\n\t\t\t\t</tr>";
        }
    }
    if (empty($ledger_out)) {
        $ledger_out = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='7'><li>No results found</li></td>\n\t\t\t</tr>";
    }
    $next_offset = $offset + LIMIT;
    $prev_offset = $offset - LIMIT;
    $get_ar = array();
    foreach ($fields as $key => $value) {
        if ($key == "offset") {
            continue;
        }
        $get_ar[] = "{$key}={${$key}}";
    }
    $get_vars = implode("&", $get_ar);
    $prev_ancor = $prev_offset >= 0 ? "<a href='" . SELF . "?offset={$prev_offset}&{$get_vars}'>&laquo; Previous</a>" : "";
    $next_ancor = $next_offset < $count ? "<a href='" . SELF . "?offset={$next_offset}&{$get_vars}'>Next &raquo;</a>" : "";
    $OUTPUT = "\n\t\t<center>\n\t\t<h3>Stock - Transaction Detail Report</h3>\n\t\t<form method='post' action='" . SELF . "'>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th colspan='3'>Date Range</th>\n\t\t\t\t<td rowspan='4'>\n\t\t\t\t\t<input type='submit' value='Search' style='text-weight: bold; height: 100%' />\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\n\t\t\t\t<td>&nbsp <b>To</b> &nbsp;</td>\n\t\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th colspan='3'>Search</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='2'>{$search_sel}</td>\n\t\t\t\t<td><input type='text' name='search' value='{$search}' style='width: 100%' /></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='7' align='center'>\n\t\t\t\t\t{$prev_ancor}\n\t\t\t\t\t{$next_ancor}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Journal No.</th>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Stock</th>\n\t\t\t\t<th>Journal Description</th>\n\t\t\t\t<th>Qty</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t</tr>\n\t\t\t{$ledger_out}\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='4'>Total</td>\n\t\t\t\t<td><b>" . sprint3($total_qty) . "</b></td>\n\t\t\t\t<td><b>" . sprint($total_csamt) . "</b></td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='7' align='center'>\n\t\t\t\t\t{$prev_ancor}\n\t\t\t\t\t{$next_ancor}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</center>";
    return $OUTPUT;
}
コード例 #17
0
function details($_POST, $error = "")
{
    # get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    if (isset($quoid)) {
        $v->isOk($quoid, "num", 1, 20, "Invalid quote number.");
    }
    if (isset($deptid)) {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>{$e['msg']}</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    if (!isset($quoid)) {
        //		$quoid = create_dummy(2);
        $quoid = create_dummy($deptid);
        $stkerr = "0,0";
    }
    if (!isset($done)) {
        $done = "";
    }
    # Get quote info
    db_connect();
    $sql = "SELECT * FROM pos_quotes WHERE quoid = '{$quoid}' AND div = '" . USER_DIV . "'";
    $quoRslt = db_exec($sql) or errDie("Unable to get quote information");
    if (pg_numrows($quoRslt) < 1) {
        return "<li class='err'>Quote Not Found</li>";
    }
    $quo = pg_fetch_array($quoRslt);
    $cusname = $quo["cusname"];
    $cusaddr = $quo["cusaddr"];
    $telno = $quo["telno"];
    $lead = $quo["lead"];
    if (strlen($quo['ncdate']) < 1) {
        $ncdate_year = date("Y");
        $ncdate_month = date("m", mktime(0, 0, 0, date("m"), date("d") + 5, date("Y")));
        $ncdate_day = date("d", mktime(0, 0, 0, date("m"), date("d") + 5, date("Y")));
    } else {
        $darr = explode("-", $quo['ncdate']);
        $ncdate_year = $darr['0'];
        $ncdate_month = $darr['1'];
        $ncdate_day = $darr['2'];
    }
    # check if quote has been printed
    if ($quo['accepted'] == "y") {
        $error = "<li class='err'> Error : Quote number <b>{$quoid}</b> has already been printed.</li>";
        return $error;
    }
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$quo['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected customer info
    db_connect();
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    $whs = "<select name='whidss[%%KEY%%]' onChange='javascript:document.form.submit();'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # get sales people
    db_conn("exten");
    $sql = "SELECT * FROM salespeople WHERE div = '" . USER_DIV . "' ORDER BY salesp ASC";
    $salespRslt = db_exec($sql) or errDie("Unable to get sales people.");
    if (pg_numrows($salespRslt) < 1) {
        return "<li class='err'> There are no Sales People found in Cubit.</li>";
    } else {
        $salesps = "<select name='salespn'>";
        while ($salesp = pg_fetch_array($salespRslt)) {
            if ($salesp['salesp'] == $quo['salespn']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $salesps .= "<option value='{$salesp['salesp']}' {$sel}>{$salesp['salesp']}</option>";
        }
        $salesps .= "</select>";
    }
    # days drop downs
    $days = array("0" => "0", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $quo['terms']);
    # Keep the charge vat option stable
    if ($quo['chrgvat'] == "inc") {
        $chin = "checked=yes";
        $chex = "";
        $chno = "";
    } elseif ($quo['chrgvat'] == "exc") {
        $chin = "";
        $chex = "checked=yes";
        $chno = "";
    } else {
        $chin = "";
        $chex = "";
        $chno = "checked=yes";
    }
    # format date
    list($pquote_year, $pquote_month, $pquote_day) = explode("-", $quo['odate']);
    /* --- End Drop Downs --- */
    // get the ID of the first warehouse, just when selecting from nons-product to new stock-product
    db_conn("exten");
    $sql = "SELECT whid FROM warehouses ORDER BY whid ASC LIMIT 1";
    $rslt = db_exec($sql) or errDie("Error reading warehouses (FWH).");
    if (pg_num_rows($rslt) > 0) {
        $FIRST_WH = pg_fetch_result($rslt, 0, 0);
    } else {
        $FIRST_WH = "-S";
    }
    /* --- Start Products Display --- */
    # select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>VAT CODE</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t<tr>";
    # get selected stock in this quote
    db_connect();
    $sql = "SELECT * FROM pos_quote_items  WHERE quoid = '{$quoid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    $ai = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $stkd['account'] += 0;
        if ($stkd['account'] != 0) {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            db_conn('core');
            $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
            $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
            $Accounts = "\n\t\t\t\t<select name='accounts[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            while ($ad = pg_fetch_array($Ri)) {
                if (isb($ad['accid'])) {
                    continue;
                }
                if ($ad['accid'] == $stkd['account']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Accounts .= "<option value='{$ad['accid']}' {$sel}>{$ad['accname']}</option>";
            }
            $Accounts .= "</select>";
            $sernos = "";
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[{$ai}]' value='{$stkd['qty']}'>";
            $viewcost = "<input type='text' size='8' name='unitcost[{$ai}]' value='{$stkd['unitcost']}'>";
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            # Put in product
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whids[{$ai}]' value='{$stkd['whid']}'></td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[{$ai}]' value='{$stkd['stkid']}'>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptions[{$ai}]' value='{$stkd['description']}'> {$sernos}</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='hidden' name='disc[{$ai}]' value='{$stkd['disc']}'><input type='hidden' name='discp[{$ai}]' value='{$stkd['discp']}'></td>\n\t\t\t\t\t<td><input type='hidden' name='amt[{$ai}]' value='{$stkd['amt']}'> " . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
            ++$ai;
        } else {
            # keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            # get selected stock in this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            # get warehouse name
            db_conn("exten");
            $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
            $whRslt = db_exec($sql);
            $wh = pg_fetch_array($whRslt);
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            //if($stk['serd'] == 'yes')
            //	continue;
            # put in product
            $products .= "\n\t\t\t\t<input type='hidden' name='amt[{$ai}]' value='{$stkd['amt']}'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='whids[{$ai}]' value='{$stkd['whid']}'>{$wh['whname']}</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[{$ai}]' value='{$stkd['stkid']}'><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtys[{$ai}]' value='{$stkd['qty']}'></td>\n\t\t\t\t\t<td><input type='hidden' size='8' name='unitcost[{$ai}]' value='{$stkd['unitcost']}'>{$stkd['unitcost']}</td>\n\t\t\t\t\t<td><input type='text' size='4' name='disc[{$ai}]' value='{$stkd['disc']}'> OR <input type='text' size='4' name='discp[{$ai}]' value='{$stkd['discp']}' maxlength=5>%</td>\n\t\t\t\t\t<td>" . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
            ++$ai;
        }
    }
    # Look above(remprod keys)
    $keyy = $key;
    # look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (!empty($stkidss[$key]) && $stkidss[$key] != "-S") {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class='err'>Warning :  Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                /* -- End Some Checks -- */
                # Calculate the Discount discount
                if ($discs[$key] < 1) {
                    if ($discps[$key] > 0) {
                        $discs[$key] = round($discps[$key] / 100 * $stk['selamt'], 2);
                    }
                } else {
                    $discps[$key] = round($discs[$key] * 100 / $stk['selamt'], 2);
                }
                # Calculate amount
                $amt[$key] = $qtyss[$key] * ($stk['selamt'] - $discs[$key]);
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($stk['vatcode'] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $amt[$key] = sprint($amt[$key]);
                $stk["selamt"] = sprint($stk["selamt"]);
                # put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<input type='hidden' size='8' name='unitcost[{$ai}]'  value='{$stk['selamt']}'>\n\t\t\t\t\t<input type='hidden' name='accounts[{$ai}]' value=0>\n\t\t\t\t\t<input type='hidden' name='amt[{$ai}]' value='{$amt[$key]}'>\n\t\t\t\t\t<input type='hidden' name='descriptions[{$ai}]' value=''>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whids[{$ai}]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='stkids[{$ai}]' value='{$stk['stkid']}'><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtys[{$ai}]' value='{$qtyss[$key]}'></td>\n\t\t\t\t\t\t<td>{$stk['selamt']}</td>\n\t\t\t\t\t\t<td><input type='text' size='4' name='disc[{$ai}]' value='{$discs[$key]}'> OR <input type='text' size='4' name='discp[{$ai}]' value='{$discps[$key]}' maxlength='5'>%</td>\n\t\t\t\t\t\t<td>" . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
                ++$ai;
            } elseif (isset($accountss[$key]) && $accountss[$key] != "0") {
                db_conn('core');
                $Sl = "SELECT * FROM accounts WHERE accid='{$accountss[$key]}'";
                $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                if (pg_num_rows($Ri) < 1) {
                    return "invalid.";
                }
                $ad = pg_fetch_array($Ri);
                # Calculate amount
                $amt[$key] = sprint($qtyss[$key] * $unitcosts[$key]);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtys[{$ai}]' value='{$qtyss[$key]}'>";
                # Check permissions
                $viewcost = "<input type='text' size='8' name='unitcost[{$ai}]' value='{$unitcosts[$key]}'>";
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vatcodess[$key] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                # Put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='2'>{$ad['accname']}<input type='hidden' name='accounts[{$ai}]' value='{$accountss[$key]}'><input type='hidden' name='whids[{$ai}]' value='0'></td>\n\t\t\t\t\t\t<td>{$Vatcodes}<input type='hidden' name='stkids[{$ai}]' value='0'></td>\n\t\t\t\t\t\t<td><input type='text' size='20' name='descriptions[{$ai}]' value='{$descriptionss[$key]}'></td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='disc[{$ai}]' value='0'><input type='hidden' name='discp[{$ai}]' value='0'></td>\n\t\t\t\t\t\t<td><input type='hidden' name='amt[{$ai}]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
                ++$ai;
            } else {
                if ($whid == "-S") {
                    continue;
                }
                if (!isset($addnon)) {
                    if (isset($filter_store) and $filter_store != "0") {
                        # get warehouse name
                        db_conn("exten");
                        $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                        $whRslt = db_exec($sql);
                        $wh = pg_fetch_array($whRslt);
                    }
                    if (isset($des) and $des != "") {
                        $len = strlen($des);
                        if ($des == "Show All") {
                            $Wh = "";
                            $des = "";
                        } else {
                            $Wh = "AND (lower(substr(stkdes,1,'{$len}'))=lower('{$des}') OR lower(substr(stkcod,1,'{$len}'))=lower('{$des}'))";
                        }
                    } else {
                        $Wh = "AND FALSE";
                        $des = "";
                    }
                    $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
                    if (isset($check_setting) and $check_setting == "yes") {
                        if (isset($filter_class) and $filter_class != "0") {
                            $Wh .= " AND prdcls = '{$filter_class}'";
                        }
                        if (isset($filter_cat) and $filter_cat != "0") {
                            $Wh .= " AND catid = '{$filter_cat}'";
                        }
                    }
                    if (isset($filter_store) and $filter_store != "0") {
                        $Wh .= " AND whid = '{$filter_store}'";
                    }
                    # get stock on this warehouse
                    db_connect();
                    $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
                    $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                    if (pg_numrows($stkRslt) < 1) {
                        $error .= "<li class='err'>There are no stock items in the selected store.</li>";
                        continue;
                    }
                    if ($sel_frm == "stkcod") {
                        $cods = "<select class='width:15' name='stkidss[{$ai}]' onChange='javascript:document.form.submit();'>";
                        $cods .= "<option value='-S' disabled selected>Select Number</option>";
                        $count = 0;
                        while ($stk = pg_fetch_array($stkRslt)) {
                            //if($stk['serd'] == 'yes')
                            //	continue;
                            $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                        }
                        $cods .= "</select> ";
                        $descs = "";
                    } else {
                        $descs = "<select class='width:15' name='stkidss[{$ai}]' onChange='javascript:document.form.submit();'>";
                        $descs .= "<option value='-S' disabled selected>Select Description</option>";
                        $count = 0;
                        while ($stk = pg_fetch_array($stkRslt)) {
                            //if($stk['serd'] == 'yes')
                            //	continue;
                            $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                        }
                        $descs .= "</select> ";
                        $cods = "";
                    }
                    # put in drop down and warehouse
                    $products .= "\n\t\t\t\t\t\t<input type='hidden' name='accountss[{$ai}]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='descriptionss[{$ai}]' value=''>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' name='whidss[{$ai}]' value='{$filter_store}'></td>\n\t\t\t\t\t\t\t<td>{$cods}</td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[{$ai}]'  value='1'></td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td><input type='text' size='4' name='discs[{$ai}]' value='0'> OR <input type='text' size='4' name='discps[{$ai}]' value='0' maxlength=5>%</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='amts[{$ai}]' value='0.00'>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t</tr>";
                    ++$ai;
                } else {
                    db_conn('core');
                    $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                    $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                    $Accounts = "\n\t\t\t\t\t\t<select name='accountss[{$ai}]'>\n\t\t\t\t\t\t\t<option value='0'>Select Account</option>";
                    while ($ad = pg_fetch_array($Ri)) {
                        if (isb($ad['accid'])) {
                            continue;
                        }
                        $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                    }
                    $Accounts .= "</select>";
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[{$ai}]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vd['del'] == "Yes") {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    $products .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whidss[{$ai}]' value='{$FIRST_WH}'></td>\n\t\t\t\t\t\t\t<input type='hidden' name='stkidss[{$ai}]' value='-S'>\n\t\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[{$ai}]'></td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[{$ai}]' value='1'></td>\n\t\t\t\t\t\t\t<td><input type='text' name='unitcosts[{$ai}]' size=7></td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='discs[{$ai}]' value='0'><input type='hidden' name='discps[{$ai}]' value='0' ></td>\n\t\t\t\t\t\t</tr>";
                    ++$ai;
                }
            }
        }
    } else {
        if (isset($addprodBtn) || !isset($addnon)) {
            if (isset($filter_store) and $filter_store != "0") {
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
            }
            if (isset($des) and $des != "") {
                $len = strlen($des);
                if ($des == "Show All") {
                    $Wh = "";
                    $des = "";
                } else {
                    $Wh = "AND (lower(substr(stkdes,1,'{$len}'))=lower('{$des}') OR lower(substr(stkcod,1,'{$len}'))=lower('{$des}'))";
                }
            } else {
                $Wh = "AND FALSE";
                $des = "";
            }
            $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
            if (isset($check_setting) and $check_setting == "yes") {
                if (isset($filter_class) and $filter_class != "0") {
                    $Wh .= " AND prdcls = '{$filter_class}'";
                }
                if (isset($filter_cat) and $filter_cat != "0") {
                    $Wh .= " AND catid = '{$filter_cat}'";
                }
            }
            if (isset($filter_store) and $filter_store != "0") {
                $Wh .= " AND whid = '{$filter_store}'";
            }
            # get stock on this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
            $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
            if (pg_numrows($stkRslt) < 1) {
                if (!isset($err)) {
                    $err = "";
                }
                $err .= "<li>There are no stock items in the selected warehouse.</li>";
            }
            $stks = "\n\t\t\t\t<select name='stkidss[{$ai}]' onChange='javascript:document.form.submit();'>\n\t\t\t\t\t<option value='-S' disabled selected>Select Number</option>";
            $count = 0;
            while ($stk = pg_fetch_array($stkRslt)) {
                //if($stk['serd'] == 'yes')
                //	continue;
                $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
            }
            $stks .= "</select> ";
            $products .= "\n\t\t\t\t<input type='hidden' name='descriptionss[{$ai}]' value=''>\n\t\t\t\t<input type='hidden' name='vatcodess[{$ai}]' value=''>\n\t\t\t\t<input type='hidden' name='accountss[{$ai}]' value='0'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='whidss[{$ai}]' value='{$filter_store}'></td>\n\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[{$ai}]' value='1'></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><input type='text' size='4' name='discs[{$ai}]' value='0'> OR <input type='text' size='4' name='discps[{$ai}]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t</tr>";
            ++$ai;
        } else {
            if (isset($addnon)) {
                db_conn('core');
                $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                $Accounts = "\n\t\t\t\t<select name='accountss[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
                while ($ad = pg_fetch_array($Ri)) {
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                }
                $Accounts .= "</select>";
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t<select name='vatcodess[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vd['del'] == "Yes") {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whidss[{$ai}]' value='{$FIRST_WH}'></td>\n\t\t\t\t\t<input type='hidden' name='stkidss[{$ai}]' value='-S'>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[{$ai}]'></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[{$ai}]' value='1'></td>\n\t\t\t\t\t<td><input type='text' name='unitcosts[{$ai}]' size='7'></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td><input type='hidden' name='discs[{$ai}]' value='0'><input type='hidden' name='discps[{$ai}]' value='0'></td>\n\t\t\t\t</tr>";
                ++$ai;
            }
        }
    }
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Calculate subtotal
    $SUBTOT = sprint($quo['subtot']);
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($quo['subtot']);
    $VAT = sprint($quo['vat']);
    $TOTAL = sprint($quo['total']);
    /* --- End Some calculations --- */
    /*--- Start checks --- */
    # check only if the customer is selected
    if (isset($cusnum) && $cusnum != "-S") {
        db_connect();
        # check credit limit (inclide unpaid quotes)
        $sql = "SELECT sum(balance) FROM invoices WHERE cusnum = '{$cusnum}' AND printed = 'y' AND balance <> 0 AND div = '" . USER_DIV . "'";
        $rslt = db_exec($sql);
        $bal = pg_fetch_array($rslt);
        $credbal = $bal['sum'];
        #check againg credit limit
        if ($TOTAL + $credbal > $cust['credlimit']) {
            $error .= "<li class='err'>Warning : Customers Credit limit of <b>" . CUR . " {$cust['credlimit']}</b> has been exceeded</li>";
        }
        $avcred = $cust['credlimit'] - $credbal;
    } else {
        $avcred = "0.00";
    }
    $quo['delvat'] += 0;
    if ($quo['delvat'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $quo['delvat'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "\n\t\t<select name='delvat'>\n\t\t\t<option value='0'>Select</option>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $quo['delvat']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    /*--- Start checks --- */
    #attempt to get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$quo['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptid'] = "<li class='err'>Department not Found.</li>";
        $dept['deptid'] = "0";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    if (!isset($dept['deptid'])) {
        # Query server for depts
        db_conn("exten");
        $sql = "SELECT * FROM departments WHERE div = '" . USER_DIV . "' ORDER BY deptname ASC";
        $deptRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($deptRslt) < 1) {
            return "<li class='err'>There are no Departments found in Cubit.</li>";
        } else {
            $depts = "<select id='deptid_sel' onChange='updateDept(this);'>";
            $depts .= "<option value='0'>-- SELECT DEPARTMENT --</option>";
            while ($dept = pg_fetch_array($deptRslt)) {
                $depts .= "<option value='{$dept['deptid']}'>{$dept['deptname']}</option>";
            }
            $depts .= "</select>";
        }
        $deptshow = $depts;
        $deptid = 0;
    } else {
        db_conn("exten");
        $sql = "SELECT * FROM departments WHERE deptid='{$dept['deptid']}'";
        $deptRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($deptRslt) > 0) {
            $dept = pg_fetch_array($deptRslt);
            $deptshow = $dept["deptname"];
        } else {
            errDie("Invalid department selected.");
        }
        db_conn("cubit");
        $sql = "UPDATE pos_quotes SET deptid='{$dept['deptid']}' WHERE quoid='{$quoid}' AND deptid<>'{$dept['deptid']}'";
        $rslt = db_exec($sql) or errDie("Error updating department id.");
    }
    // Which display method was selected
    if (isset($sel_frm) && $sel_frm == "stkdes") {
        $sel_frm_cod = "";
        $sel_frm_des = "checked";
    } else {
        $sel_frm_cod = "checked";
        $sel_frm_des = "";
    }
    $sel = "";
    if (isset($lead) and strlen($lead) > 0) {
        $sel = "checked=yes";
    }
    if (!isset($old_customer_select)) {
        $old_customer_select = "";
    }
    #get customers
    $get_cust = "SELECT cusnum, surname, vatnum, paddr1 FROM customers WHERE blocked = 'no' AND location = 'loc' ORDER BY cusname";
    $run_cust = db_exec($get_cust) or errDie("Unable to get customer information.");
    if (pg_numrows($run_cust) < 1) {
        $cust_drop = "<input type='hidden' name='customer_select' value=''>No Customers Found.";
    } else {
        $cust_drop = "<select name='customer_select' onChange=\"document.form.submit();\">";
        $cust_drop .= "<option value=''>Select Customer Or Enter Details</option>";
        while ($carr = pg_fetch_array($run_cust)) {
            if (isset($customer_select) and $customer_select == $carr['cusnum']) {
                $cust_drop .= "<option value='{$carr['cusnum']}' selected>{$carr['surname']}</option>";
                if ($old_customer_select != $customer_select) {
                    $cusname = $carr['surname'];
                    $cusaddr = $carr['paddr1'];
                    $telno = $carr['vatnum'];
                }
            } else {
                $cust_drop .= "<option value='{$carr['cusnum']}'>{$carr['surname']}</option>";
            }
        }
        $cust_drop .= "</select>";
    }
    if (isset($addprodBtn) or isset($addnon) or isset($saveBtn) or isset($upBtn) or isset($doneBtn) or isset($des)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $optional_filter_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
    if (isset($optional_filter_setting) and $optional_filter_setting == "yes") {
        db_connect();
        $catsql = "SELECT catid, cat, catcod FROM stockcat WHERE div = '" . USER_DIV . "' ORDER BY cat ASC";
        $catRslt = db_exec($catsql);
        if (pg_numrows($catRslt) < 1) {
            $cat_drop = "<input type='hidden' name='filter_cat' value='0'>";
        } else {
            $cat_drop = "<select name='filter_cat'>";
            $cat_drop .= "<option value='0'>All Categories</option>";
            while ($cat = pg_fetch_array($catRslt)) {
                if (isset($filter_cat) and $filter_cat == $cat['catid']) {
                    $cat_drop .= "<option value='{$cat['catid']}' selected>({$cat['catcod']}) {$cat['cat']}</option>";
                } else {
                    $cat_drop .= "<option value='{$cat['catid']}'>({$cat['catcod']}) {$cat['cat']}</option>";
                }
            }
            $cat_drop .= "</select>";
        }
        # Select classification
        $classsql = "SELECT * FROM stockclass WHERE div = '" . USER_DIV . "' ORDER BY classname ASC";
        $clasRslt = db_exec($classsql);
        if (pg_numrows($clasRslt) < 1) {
            $class_drop = "<input type='hidden' name='filter_class' value='0'>";
        } else {
            $class_drop = "<select name='filter_class' style='width: 167'>";
            $class_drop .= "<option value='0'>All Classifications</option>";
            while ($clas = pg_fetch_array($clasRslt)) {
                if (isset($filter_class) and $filter_class == $clas['clasid']) {
                    $class_drop .= "<option value='{$clas['clasid']}' selected>{$clas['classname']}</option>";
                } else {
                    $class_drop .= "<option value='{$clas['clasid']}'>{$clas['classname']}</option>";
                }
            }
            $class_drop .= "</select>";
        }
        $display_optional_filters = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Select Category</td>\n\t\t\t\t<td>{$cat_drop}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Select Classification</td>\n\t\t\t\t<td>{$class_drop}</td>\n\t\t\t</tr>";
    }
    db_conn("exten");
    $sql = "SELECT whid, whname, whno FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        $store_drop = "<input type='hidden' name='filter_store' value='0'>";
    } else {
        if (!isset($filter_store)) {
            # check if setting exists
            db_connect();
            $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
            $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
            if (pg_numrows($Rslt) > 0) {
                $set = pg_fetch_array($Rslt);
                $filter_store = $set['value'];
            }
        }
        $store_drop = "<select name='filter_store'>";
        $store_drop .= "<option value='0'>All Stores</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            if (isset($filter_store) and $filter_store == $wh['whid']) {
                $store_drop .= "<option value='{$wh['whid']}' selected>({$wh['whno']}) {$wh['whname']}</option>";
            } else {
                $store_drop .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
            }
        }
        $store_drop .= "</select>";
    }
    $details = "\n\t\t<center>\n\t\t<h3>New POS Quote</h3>\n\t\t<script>\n\t\t\tfunction updateDept(seldept) {\n\t\t\t\tsel = seldept.options[seldept.selectedIndex];\n\t\t\t\tdocument.form.deptid.value = sel.value;\n\t\t\t\tgetObject('deptshow').innerHTML = sel.text;\n\t\t\t}\n\t\t</script>\n\t\t<form action='" . SELF . "' method='POST' id='quofrm' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='old_customer_select' value='{$customer_select}'>\n\t\t\t<input type='hidden' name='quoid' value='{$quoid}'>\n\t\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t\t<input type='hidden' name='deptid' value='{$dept['deptid']}'>\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Select Customer</td>\n\t\t\t\t\t\t\t<td>{$cust_drop}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t<td valign='center'><div id='deptshow'>{$deptshow}</div></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' name='cusname' value='{$cusname}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t\t\t\t<td valign='center'><textarea name='cusaddr'>" . htmlspecialchars($cusaddr) . "</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Contact Number</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' name='telno' value='{$telno}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Next Contact Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("ncdate", $ncdate_year, $ncdate_month, $ncdate_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Add As Lead</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='checkbox' name='lead' {$sel} value='yes'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Select Using</td>\n\t\t\t\t\t\t\t<td>Stock Code<input type='radio' name='sel_frm' value='stkcod' onChange='javascript:document.form.submit();' {$sel_frm_cod}><br>Stock Description<input type='radio' name='sel_frm' value='stkdes' onChange='javascript:document.form.submit();' {$sel_frm_des}></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'>Additional Filters</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Select Store</td>\n\t\t\t\t\t\t\t<td>{$store_drop}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$display_optional_filters}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Stock Filter</td>\n\t\t\t\t\t\t\t<td><input type='text' size='13' name='des' value='{$des}'> <input type='submit' value='Search'> <input type='submit' name='des' value='Show All'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> POS Quote Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>POS Quote No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$quo['quoid']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Order No.</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='ordno' value='{$quo['ordno']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' size='7' name='chrgvat' value='inc' {$chin}> No<input type='radio' size='7' name='chrgvat' value='exc' {$chex}> No Vat<input type='radio' size='7' name='chrgvat' value='nov' {$chno}></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$termssel} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t\t<td valign='center'>{$salesps}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Quote Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("pquote", $pquote_year, $pquote_month, $pquote_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='traddisc' value='{$quo['traddisc']}'>%</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='7' name='delchrg' value='{$quo['delchrg']}'>{$Vatcodes}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<p>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th width='25%'>Quick Links</th>\n\t\t\t\t\t\t\t<th width='25%'>Comments</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='pos-quote-new.php'>New POS Quote</a></td>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'><textarea name='comm' rows='4' cols='20'>{$quo['comm']}</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><a href='pos-quote-view.php'>View POS Quotes</a></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><a href='main.php'>Main Menu</a></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " <input type=hidden name=SUBTOT value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$quo['discount']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$quo['delivery']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input name='addprodBtn' type='submit' value='Add Product'>| <input name='addnon' type='submit' value='Add Non stock Product'> | <input type='submit' name='saveBtn' value='Save'></td>\n\t\t\t\t<td> | <input type='submit' name='upBtn' value='Update'>{$done}</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<a name='bottom'>\n\t\t</form>\n\t\t</center>\n\t\t{$jump_bot}";
    return $details;
}
コード例 #18
0
function write($_POST)
{
    # Get vars
    extract($_POST);
    if (!isset($cusnum)) {
        return details($_POST, "<li class='err'>Please select customer/department first.</li>");
    }
    $delvat += 0;
    db_conn('cubit');
    if (isset($printsales)) {
        $Sl = "SELECT * FROM settings WHERE constant='SALES'";
        $Ri = db_exec($Sl) or errDie("Unable to get settings.");
        if (pg_num_rows($Ri) < 1) {
            $Sl = "INSERT INTO settings (constant,value,div) VALUES ('SALES','Yes','" . USER_DIV . "')";
            $Ri = db_exec($Sl);
        } else {
            $Sl = "UPDATE settings SET value='Yes' WHERE constant='SALES' AND div='" . USER_DIV . "'";
            $Ri = db_exec($Sl);
        }
    } else {
        $Sl = "UPDATE settings SET value='No' WHERE constant='SALES' AND div='" . USER_DIV . "'";
        $Ri = db_exec($Sl);
    }
    if (isset($printdel)) {
        $Sl = "SELECT * FROM settings WHERE constant='Delivery Note'";
        $Ri = db_exec($Sl) or errDie("Unable to get settings.");
        if (pg_num_rows($Ri) < 1) {
            $Sl = "INSERT INTO settings (constant,value,div) VALUES ('Delivery Note','Yes','" . USER_DIV . "')";
            $Ri = db_exec($Sl);
        } else {
            $Sl = "UPDATE settings SET value='Yes' WHERE constant='Delivery Note' AND div='" . USER_DIV . "'";
            $Ri = db_exec($Sl);
        }
    } else {
        $Sl = "UPDATE settings SET value='No' WHERE constant='Delivery Note' AND div='" . USER_DIV . "'";
        $Ri = db_exec($Sl);
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($cusnum, "num", 1, 20, "Invalid Customer, Please select a customer.");
    $v->isOk($branch, "num", 1, 20, "Invalid Branch, Please select a branch.");
    $v->isOk($invid, "num", 1, 20, "Invalid Invoice Number.");
    $v->isOk($cordno, "string", 0, 20, "Invalid Customer Order Number.");
    if (!isset($ria)) {
        $ria = "";
    }
    $v->isOk($ria, "string", 0, 20, "Invalid stock code(fist letters).");
    $v->isOk($comm, "string", 0, 1024, "Invalid Comments.");
    $v->isOk($docref, "string", 0, 20, "Invalid Document Reference No.");
    $v->isOk($ordno, "string", 0, 20, "Invalid sales order number.");
    $v->isOk($chrgvat, "string", 1, 4, "Invalid charge vat option.");
    $v->isOk($terms, "num", 1, 20, "Invalid terms.");
    $v->isOk($salespn, "string", 1, 255, "Invalid sales person.");
    $v->isOk($inv_date_day, "num", 1, 2, "Invalid Invoice Date day.");
    $v->isOk($inv_date_month, "num", 1, 2, "Invalid Invoice Date month.");
    $v->isOk($inv_date_year, "num", 1, 5, "Invalid Invoice Date year.");
    $odate = $inv_date_year . "-" . $inv_date_month . "-" . $inv_date_day;
    if (!checkdate($inv_date_month, $inv_date_day, $inv_date_year)) {
        $v->isOk($odate, "num", 1, 1, "Invalid Invoice Date.");
    }
    $v->isOk($traddisc, "float", 0, 20, "Invalid Trade Discount.");
    if ($traddisc > 100) {
        $v->isOk($traddisc, "float", 0, 0, "Error : Trade Discount cannot be more than 100 %.");
    }
    $v->isOk($delchrg, "float", 0, 20, "Invalid Delivery Charge.");
    $v->isOk($SUBTOT, "float", 0, 20, "Invalid Delivery Charge.");
    # used to generate errors
    $error = "asa@";
    # check if duplicate serial number selected, remove blanks
    if (isset($sernos)) {
        $tmp_sernos = $sernos;
        // only check for uniqueness among items not selected for removal
        foreach ($sernos as $k => $serno_val) {
            if (isset($remprod) && in_array($k, $remprod)) {
                unset($tmp_sernos[$k]);
            }
        }
        if (!ext_isUnique(ext_remBlnk($tmp_sernos))) {
            $v->isOk($error, "num", 0, 0, "Error : Serial Numbers must be unique per line item.");
        }
    }
    # check is serai no was selected
    if (isset($stkids)) {
        foreach ($stkids as $keys => $stkid) {
            # check if serial is selected
            if (ext_isSerial("stock", "stkid", $stkid) && !isset($sernos[$keys])) {
                $v->isOk($error, "num", 0, 0, "Error : Missing serial number for product number : <b>" . ($keys + 1) . "</b>");
            } elseif (ext_isSerial("stock", "stkid", $stkid) && !(strlen($sernos[$keys]) > 0)) {
                $v->isOk($error, "num", 0, 0, "Error : Missing serial number for product number : <b>" . ($keys + 1) . "</b>");
            }
        }
    }
    if (!isset($qtys) && isset($qtemp)) {
        $qtys[] = $qtemp;
    } elseif (isset($qtys) && isset($qtemp)) {
        //array_unshift ($qtys,$qtemp);
        $qtys[] = $qtemp;
    }
    # check quantities
    if (isset($qtys)) {
        foreach ($qtys as $keys => $qty) {
            $discp[$keys] += 0;
            $disc[$keys] += 0;
            $qtys[$keys] = sprint3($qtys[$keys]);
            $qty = sprint3($qty);
            //			if (strlen (substr($qty,strpos($qty,"."))) > 4)
            //				$qty =
            //			print substr($qty,strpos($qty,"."))."<br>";
            $v->isOk($qty, "float", 1, 15, "Invalid Quantity for product number : <b>" . ($keys + 1) . "</b>");
            $v->isOk($disc[$keys], "float", 0, 20, "Invalid Discount for product number : <b>" . ($keys + 1) . "</b>.");
            if ($disc[$keys] > $unitcost[$keys]) {
                $v->isOk($disc[$keys], "float", 0, 0, "Error : Discount for product number : <b>" . ($keys + 1) . "</b> is more than the unitcost.");
            }
            $v->isOk($discp[$keys], "float", 0, 20, "Invalid Discount Percentage for product number : <b>" . ($keys + 1) . "</b>.");
            if ($discp[$keys] > 100) {
                $v->isOk($discp[$keys], "float", 0, 0, "Error : Discount for product number : <b>" . ($keys + 1) . "</b> is more than 100 %.");
            }
            $v->isOk($unitcost[$keys], "float", 1, 20, "Invalid Unit Price for product number : <b>" . ($keys + 1) . "</b>.");
            if ($qty <= 0) {
                $v->isOk($qty, "float", 0, 0, "Error : Item Quantity must be more than zero. Product number : <b>" . ($keys + 1) . "</b>");
            }
        }
    }
    # check whids
    if (isset($whids)) {
        foreach ($whids as $keys => $whid) {
            $v->isOk($whid, "num", 1, 10, "Invalid Store number, please enter all details.");
        }
    }
    # check stkids
    if (isset($stkids)) {
        foreach ($stkids as $keys => $stkid) {
            $v->isOk($stkid, "num", 1, 10, "Invalid Stock number, please enter all details.");
        }
    }
    # check amt
    if (isset($amt)) {
        foreach ($amt as $keys => $amount) {
            $v->isOk($amount, "float", 1, 20, "Invalid Amount, please enter all details.");
        }
    }
    # display errors, if any
    $err = "";
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        return details($_POST, $err);
    }
    # Get invoice info
    db_connect();
    $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($invRslt) < 1) {
        return "<li>- Invoice Not Found</li>";
    }
    $inv = pg_fetch_array($invRslt);
    $inv['traddisc'] = $traddisc;
    $inv['chrgvat'] = $chrgvat;
    if ($cusnum != $inv['cusnum'] or $branch != $inv['branch']) {
        $get_addr = "SELECT branch_descrip FROM customer_branches WHERE id = '{$branch}' AND div = '" . USER_DIV . "' LIMIT 1";
        $run_addr = db_exec($get_addr);
        if (pg_numrows($run_addr) < 1) {
            #no branch addres ? since we NEED to update the address, add the customer's here
            $get_cadd = "SELECT del_addr1 FROM customers WHERE cusnum = '{$cusnum}' LIMIT 1";
            $run_cadd = db_exec($get_cadd) or errDie("Unable to get customer delivery address");
            if (pg_numrows($run_cadd) < 1) {
                #no customer ??
                return details($_POST, "<li class='err'>Invalid customer selected.</li>");
            } else {
                $carr = pg_fetch_array($run_cadd);
                $update_addr = "UPDATE invoices SET del_addr  = '{$carr['del_addr1']}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
                $run_update = db_exec($update_addr) or errDie("Unable to update invoice information");
            }
        } else {
            $arr = pg_fetch_array($run_addr);
            $cust['addr1'] = $arr['branch_descrip'];
            if ($inv['del_addr'] != $arr['branch_descrip']) {
                $update_addr = "UPDATE invoices SET del_addr  = '{$arr['branch_descrip']}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
                $run_update = db_exec($update_addr) or errDie("Unable to update invoice information");
            }
        }
    }
    # check if invoice has been printed
    if ($inv['printed'] == "y") {
        $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # Get selected customer info
    db_connect();
    $sql = "SELECT * FROM customers WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'";
    $custRslt = db_exec($sql) or errDie("Unable to get customer information");
    if (pg_numrows($custRslt) < 1) {
        $sql = "SELECT * FROM inv_data WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
        $custRslt = db_exec($sql) or errDie("Unable to get customer information data");
        $cust = pg_fetch_array($custRslt);
        $cust['cusname'] = $cust['customer'];
        $cust['surname'] = "";
        $cust['addr1'] = "";
    } else {
        $cust = pg_fetch_array($custRslt);
        $inv['deptid'] = $cust['deptid'];
        # If customer was just selected, get the following
        if ($inv['cusnum'] == 0) {
            $traddisc = $cust['traddisc'];
            $terms = $cust['credterm'];
        }
    }
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$inv['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<i class='err'>Not Found</i>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # fix those nasty zeros
    $traddisc += 0;
    $delchrg += 0;
    $vatamount = 0;
    $showvat = TRUE;
    # insert invoice to DB
    db_connect();
    # begin updating
    pglib_transaction("BEGIN") or errDie("Unable to start a database transaction.", SELF);
    # get selected stock in this invoice
    $sql = "SELECT * FROM inv_items  WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stktRslt = db_exec($sql);
    while ($stkt = pg_fetch_array($stktRslt)) {
        # update stock(alloc + qty)
        $sql = "UPDATE stock SET alloc = (alloc - '{$stkt['qty']}')  WHERE stkid = '{$stkt['stkid']}' AND div = '" . USER_DIV . "'";
        $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF);
        if (strlen($stkt['serno']) > 0) {
            ext_unresvSer($stkt['serno'], $stkt['stkid']);
        }
    }
    # remove old items
    $sql = "DELETE FROM inv_items WHERE invid='{$invid}' AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to update invoice items in Cubit.", SELF);
    /* -- End remove old items -- */
    $newvat = 0;
    $taxex = 0;
    if (isset($qtys)) {
        foreach ($qtys as $keys => $value) {
            /* set the serial ss field for serials selected from list */
            if ($sernos_ss[$keys] == "*_*_*CUBIT_SERIAL_SELECT_BOX*_*_*") {
                $sernos_ss[$keys] = $sernos[$keys];
            }
            if (isset($remprod) && in_array($keys, $remprod)) {
                $amt[$keys] = 0;
                if ($sernos[$keys] == $sernos_ss[$keys] && $sernos_ss[$keys] != "") {
                    $chr = substr($sernos[$keys], strlen($sernos[$keys]) - 1, 1);
                    $tab = "ss{$chr}";
                    /* mark barcoded item as unavailable */
                    $sql = "UPDATE " . $tab . " SET active='yes' WHERE code = '{$sernos[$keys]}' AND div = '" . USER_DIV . "'";
                    db_exec($sql);
                }
            } elseif (isset($accounts[$keys]) && $accounts[$keys] != 0) {
                $accounts[$keys] += 0;
                # Get selamt from selected stock
                db_conn('core');
                $Sl = "SELECT * FROM accounts WHERE accid='{$accounts[$keys]}'";
                $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                $ad = pg_fetch_array($Ri);
                # Calculate amount
                $amt[$keys] = $qtys[$keys] * $unitcost[$keys];
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes WHERE id='{$vatcodes[$keys]}'";
                $Ri = db_exec($Sl);
                if (pg_num_rows($Ri) < 1) {
                    return details($_POST, "<li class='err'>Please select the vatcode for all your items.</li>");
                }
                $vd = pg_fetch_array($Ri);
                if ($vd['zero'] == "Yes") {
                    $excluding = "y";
                } else {
                    $excluding = "";
                }
                if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
                    $showvat = FALSE;
                }
                $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']);
                $vrs = explode("|", $vr);
                $ivat = $vrs[0];
                $iamount = $vrs[1];
                $vatamount += $ivat;
                # Check Tax Excempt
                if ($vd['zero'] == "Yes") {
                    $taxex += $amt[$keys];
                    $exvat = "y";
                } else {
                    $exvat = "n";
                }
                //$newvat+=vatcalc($amt[$keys],$chrgvat,$exvat,$traddisc);
                $vatcodes[$keys] += 0;
                $accounts[$keys] += 0;
                $descriptions[$keys] = remval($descriptions[$keys]);
                $wtd = $whids[$keys];
                # insert invoice items
                $sql = "\n\t\t\t\t\tINSERT INTO inv_items (\n\t\t\t\t\t\tinvid, whid, stkid, qty, unitcost, amt, \n\t\t\t\t\t\tdisc, discp, serno, div, vatcode, description, \n\t\t\t\t\t\taccount, del, dem1, dem2\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$invid}', '{$whids[$keys]}', '{$stkids[$keys]}', '{$qtys[$keys]}', '{$unitcost[$keys]}', '{$amt[$keys]}', \n\t\t\t\t\t\t'{$disc[$keys]}', '{$discp[$keys]}', '', '" . USER_DIV . "', '{$vatcodes[$keys]}', '{$descriptions[$keys]}',\n\t\t\t\t\t\t'{$accounts[$keys]}', '0', '0','0'\n\t\t\t\t\t)";
                $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF);
            } else {
                # Get selamt from selected stock
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # Calculate the Discount discount
                if ($disc[$keys] < 1) {
                    if ($discp[$keys] > 0) {
                        $disc[$keys] = $discp[$keys] / 100 * $unitcost[$keys];
                    }
                } else {
                    $discp[$keys] = $disc[$keys] * 100 / $unitcost[$keys];
                }
                # Calculate amount
                $amt[$keys] = $qtys[$keys] * ($unitcost[$keys] - $disc[$keys]);
                $Sl = "SELECT * FROM vatcodes WHERE id='{$vatcodes[$keys]}'";
                $Ri = db_exec($Sl);
                if (pg_num_rows($Ri) < 1) {
                    return details($_POST, "<li class='err'>Please select the vatcode for all your items.</li>");
                }
                $vd = pg_fetch_array($Ri);
                if ($vd['zero'] == "Yes") {
                    $excluding = "y";
                } else {
                    $excluding = "";
                }
                if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
                    $showvat = FALSE;
                }
                $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']);
                $vrs = explode("|", $vr);
                $ivat = $vrs[0];
                $iamount = $vrs[1];
                $vatamount += $ivat;
                # Check Tax Excempt
                if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") {
                    $taxex += $amt[$keys];
                    $exvat = "y";
                } else {
                    $exvat = "n";
                }
                //$newvat+=vatcalc($amt[$keys],$chrgvat,$exvat,$traddisc);
                $dem1[$keys] += 0;
                $dem2[$keys] += 0;
                $wtd = $whids[$keys];
                # insert invoice items
                $sql = "\n\t\t\t\t\tINSERT INTO inv_items (\n\t\t\t\t\t\tinvid, whid, stkid, qty, unitcost, amt, \n\t\t\t\t\t\tdisc, discp, ss, serno, div, \n\t\t\t\t\t\tvatcode, del, dem1, dem2\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$invid}', '{$whids[$keys]}', '{$stkids[$keys]}', '{$qtys[$keys]}', '{$unitcost[$keys]}', '{$amt[$keys]}', \n\t\t\t\t\t\t'{$disc[$keys]}', '{$discp[$keys]}', '{$sernos_ss[$keys]}', '{$sernos[$keys]}', '" . USER_DIV . "', \n\t\t\t\t\t\t'{$vatcodes[$keys]}', '0', '{$dem1[$keys]}', '{$dem2[$keys]}'\n\t\t\t\t\t)";
                $rslt = db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF);
                if (strlen($sernos[$keys]) > 0) {
                    ext_resvSer($sernos[$keys], $stk['stkid']);
                }
                # update stock(alloc + qty)
                $sql = "UPDATE stock SET alloc = (alloc + '{$qtys[$keys]}') WHERE stkid = '{$stkids[$keys]}' AND div = '" . USER_DIV . "'";
                $rslt = db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF);
            }
            # everything is set place done button
            $_POST["done"] = "\n\t\t\t\t| <input name='doneBtn' type='submit' value='Process'>";
            //if ($cust["email"] != "") {
            $_POST["done"] .= "\n\t\t\t\t| <input name='emailBtn' type='submit' value='Process and Email to Customer'>";
            //}
        }
    } else {
        $_POST["done"] = "";
    }
    //$newvat+=vatcalc($delchrg,$chrgvat,"no",$traddisc);
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes WHERE id='{$delvat}'";
    $Ri = db_exec($Sl);
    $vd = pg_fetch_array($Ri);
    // 		if(pg_num_rows($Ri)>0) {
    // 			$taxex += $delchrg;
    // 		}
    if ($vd['zero'] == "Yes") {
        $excluding = "y";
    } else {
        $excluding = "";
    }
    if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
        $showvat = FALSE;
    }
    $_POST['showvat'] = $showvat;
    $vr = vatcalc($delchrg, $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']);
    $vrs = explode("|", $vr);
    $ivat = $vrs[0];
    $iamount = $vrs[1];
    $vatamount += $ivat;
    /* --- ----------- Clac --------------------- */
    ##----------------------NEW----------------------
    $sub = 0.0;
    if (isset($amt)) {
        $sub = sprint(array_sum($amt));
    }
    $VATP = TAX_VAT;
    #get traddisc setting ...
    $traddisc_setting = getCSetting("SET_INV_TRADDISC");
    if ($chrgvat == "exc") {
        $taxex = sprint($taxex - $taxex * $traddisc / 100);
        $subtotal = sprint($sub + $delchrg);
        if ($traddisc_setting == "include") {
            $tradvar = $subtotal;
        } else {
            $tradvar = $sub;
        }
        $traddiscmt = sprint($tradvar * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        $VAT = $vatamount;
        $SUBTOT = $sub;
        $TOTAL = sprint($subtotal + $VAT);
        $delexvat = sprint($delchrg);
    } elseif ($chrgvat == "inc") {
        $ot = $taxex;
        $taxex = sprint($taxex - $taxex * $traddisc / 100);
        $subtotal = sprint($sub + $delchrg);
        if ($traddisc_setting == "include") {
            $tradvar = $subtotal;
        } else {
            $tradvar = $sub;
        }
        $traddiscmt = sprint($tradvar * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        $VAT = $vatamount;
        $SUBTOT = sprint($sub);
        $TOTAL = sprint($subtotal);
        $delexvat = sprint($delchrg);
        $traddiscmt = sprint($traddiscmt);
    } else {
        $subtotal = sprint($sub + $delchrg);
        if ($traddisc_setting == "include") {
            $tradvar = $subtotal;
        } else {
            $tradvar = $sub;
        }
        $traddiscmt = sprint($tradvar * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        $VAT = sprint(0);
        $SUBTOT = $sub;
        $TOTAL = $subtotal;
        $delexvat = sprint($delchrg);
    }
    /* --- ----------- Clac --------------------- */
    ##----------------------END----------------------
    /* --- ----------- Clac ---------------------
    ----------------------OLD----------------------
    		# calculate subtot
    		$SUBTOT = 0.00;
    		if(isset($amt))
    			$SUBTOT = array_sum($amt);
    
    		$SUBTOT -= $taxex;
    
    		# duplicate
    		$SUBTOTAL = $SUBTOT;
    
    		$VATP = TAX_VAT;
    		if($chrgvat == "exc"){
    			$SUBTOTAL = $SUBTOTAL;
    			$delexvat= ($delchrg);
    		}elseif($chrgvat == "inc"){
    			$SUBTOTAL = sprint(($SUBTOTAL * 100)/(100 + $VATP));
    			$delexvat = sprint(($delchrg * 100)/($VATP + 100));
    		}else{
    			$SUBTOTAL = ($SUBTOTAL);
    			$delexvat = ($delchrg);
    		}
    
    		$SUBTOT = $SUBTOTAL;
    		$EXVATTOT = $SUBTOT;
    		$EXVATTOT += $delexvat;
    
    		# Minus trade discount from taxex
    		if($traddisc > 0){
    			$traddiscmtt = (($traddisc/100) * $taxex);
    		}else{
    			$traddiscmtt = 0;
    		}
    		$taxext = ($taxex - $traddiscmtt);
    
    		if($traddisc > 0) {
    			$traddiscmt = ($EXVATTOT * ($traddisc/100));
    		}else{
    			$traddiscmt = 0;
    		}
    		$EXVATTOT -= $traddiscmt;
    		// $EXVATTOT -= $taxex;
    
    		$traddiscmt = sprint($traddiscmt  + $traddiscmtt);
    
    		if($chrgvat != "nov"){
    			$VAT = sprint($EXVATTOT * ($VATP/100));
    		}else{
    			$VAT = 0;
    		}
    
    		$TOTAL = sprint($EXVATTOT + $VAT + $taxext);
    		$SUBTOT += $taxex;
    */
    #override address
    if ($branch != 0) {
        $get_addr = "SELECT branch_descrip FROM customer_branches WHERE id = '{$branch}' AND div = '" . USER_DIV . "' LIMIT 1";
        $run_addr = db_exec($get_addr);
        if (pg_numrows($run_addr) < 1) {
            #address missing ... do nothing
        } else {
            $arr = pg_fetch_array($run_addr);
            $cust['addr1'] = $arr['branch_descrip'];
        }
    }
    // Delivery Date
    $deldate = "{$del_date_year}-{$del_date_month}-{$del_date_day}";
    /* --- ----------- Clac --------------------- */
    if (!isset($bankid)) {
        $bankid = cust_bank_id($cusnum);
    }
    # insert invoice to DB
    $sql = "\n\t\tUPDATE invoices \n\t\tSET delvat='{$delvat}', cusnum = '{$cusnum}', deptid = '{$dept['deptid']}', deptname = '{$dept['deptname']}', \n\t\t\tcusacc = '{$cust['accno']}', cusname = '{$cust['cusname']}', surname = '{$cust['surname']}', cusaddr = '{$cust['addr1']}', \n\t\t\tcusvatno = '{$cust['vatnum']}', cordno = '{$cordno}', ordno = '{$ordno}', docref = '{$docref}', chrgvat = '{$chrgvat}', \n\t\t\tterms = '{$terms}', salespn = '{$salespn}', odate = '{$odate}', traddisc = '{$traddisc}', delchrg = '{$delchrg}', \n\t\t\tsubtot = '{$SUBTOT}', vat = '{$VAT}', total = '{$TOTAL}', balance = '{$TOTAL}', comm = '{$comm}', serd = 'y', \n\t\t\tdiscount='{$traddiscmt}', delivery='{$delexvat}', branch = '{$branch}', deldate = '{$deldate}', bankid = '{$bankid}' \n\t\tWHERE invid = '{$invid}'";
    $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF);
    # remove old data
    $sql = "DELETE FROM inv_data WHERE invid='{$invid}'  AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to update invoice data in Cubit.", SELF);
    # pu in new data
    $sql = "INSERT INTO inv_data(invid, dept, customer, addr1, div) VALUES('{$invid}', '{$dept['deptname']}', '{$cust['cusname']} {$cust['surname']}', '{$cust['addr1']}', '" . USER_DIV . "')";
    $rslt = db_exec($sql) or errDie("Unable to insert invoice data to Cubit.", SELF);
    if (strlen($bar) > 0) {
        /* check if there a stock item with global barcode matching input barcode */
        $sql = "SELECT * FROM stock WHERE bar='{$bar}' AND div = '" . USER_DIV . "'";
        $barRslt = db_exec($sql);
        if (pg_num_rows($barRslt) <= 0) {
            /* fetch last character of barcode */
            $chr = substr($bar, strlen($bar) - 1, 1);
            /* invalid barcode */
            if (!is_numeric($chr)) {
                return details($_POST, "The code you selected is invalid");
            }
            /* which barcode table to scan for stock id */
            $tab = "ss{$chr}";
            $stid = barext_dbget($tab, 'code', $bar, 'stock');
            $stab = "serial{$chr}";
            $sstid = serext_dbget($stab, 'serno', $bar, 'stkid');
            /* non-existing barcode, check for serial number */
            if ($stid <= 0) {
                if ($sstid <= 0) {
                    return details($_POST, "<li class='err'>The serial number/bar code you selected is not in the system or is not available.</li>");
                }
                if (serext_dbnum($stab, 'serno', $bar, 'stkid') > 1) {
                    return details($_POST, "<li class='err'>Duplicate serial numbers found, please scan barcode or select stock item.</li>");
                }
                /* mark barcoded item as unavailable */
                $sql = "UPDATE " . $stab . " SET rsvd='y' WHERE serno='{$bar}'";
                db_exec($sql);
                $serno_bar = "{$bar}";
                $stid = $sstid;
            } else {
                if ($sstid > 0) {
                    return details($_POST, "<li class='err'>A serial and barcode with same value, please scan other value or select product manually.</li>");
                }
                /* mark barcoded item as unavailable */
                $sql = "UPDATE " . $tab . " SET active='no' WHERE code='{$bar}' AND div='" . USER_DIV . "'";
                db_exec($sql);
                $serno_bar = "{$bar}";
            }
            /* fetch stock row for selected item */
            $sql = "SELECT * FROM stock WHERE stkid = '{$stid}' AND div = '" . USER_DIV . "'";
            $barRslt = db_exec($sql);
        } else {
            $serno_bar = "";
        }
        $s = pg_fetch_array($barRslt);
        /* allocate stock item */
        $sql = "UPDATE stock SET alloc = (alloc + '1') WHERE stkid = '{$s['stkid']}' AND div = '" . USER_DIV . "'";
        db_exec($sql) or errDie("Unable to update stock to Cubit.", SELF);
        $sql = "\n\t\t\tINSERT INTO inv_items (\n\t\t\t\tinvid, whid, stkid, qty, unitcost, amt, disc, discp, ss, serno, \n\t\t\t\tdiv, vatcode\n\t\t\t) VALUES (\n\t\t\t\t'{$invid}', '{$s['whid']}', '{$s['stkid']}', '1', '{$s['selamt']}', '{$s['selamt']}', '0', '0', '{$bar}', '{$serno_bar}', \n\t\t\t\t'" . USER_DIV . "', (SELECT id FROM cubit.vatcodes LIMIT 1)\n\t\t\t)";
        db_exec($sql) or errDie("Unable to insert invoice items to Cubit.", SELF);
    }
    pglib_transaction("COMMIT") or errDie("Unable to commit a database transaction.", SELF);
    /* --- Start button Listeners --- */
    if (isset($doneBtn) || isset($emailBtn)) {
        # Check if stock was selected(yes = put done button)
        db_connect();
        $sql = "SELECT stkid FROM inv_items WHERE invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'";
        $crslt = db_exec($sql);
        if (pg_numrows($crslt) < 1) {
            $error = "<li class='err'> Error : Invoice number has no items.";
            return details($_POST, $error);
        }
        # Insert quote to DB
        $sql = "UPDATE invoices SET done = 'y' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
        $rslt = db_exec($sql) or errDie("Unable to update invoice status in Cubit.", SELF);
        $Sl = "SELECT * FROM settings WHERE constant='Delivery Note'";
        $Ri = db_exec($Sl) or errDie("Unable to get settings.");
        $data = pg_fetch_array($Ri);
        if (isset($emailBtn)) {
            $email = "email=true";
        } else {
            $email = "";
        }
        if ($data['value'] == "Yes") {
            //		move('cust-credit-stockinv.php');
            //move('cust-credit-stockinv-newsetting.php');
            $OUTPUT = "\n\t\t\t\t<script>\n\t\t\t\t\tnhprinter('invoice-delnote.php?invid={$invid}','Delivery Note');\n\t\t\t\t\tprinter('invoice-print.php?invid={$invid}&type=inv&salespn={$salespn}&{$email}');\n\t\t\t\t\tmove('settings/cust-credit-stockinv-newsetting.php?vol=yes');\n\t\t\t\t</script>";
        } else {
            //		move('cust-credit-stockinv.php');
            //move('cust-credit-stockinv-newsetting.php');
            $OUTPUT = "\n\t\t\t\t<script>\n\t\t\t\t\tprinter('invoice-print.php?invid={$invid}&type=inv&{$email}');\n\t\t\t\t\tmove('settings/cust-credit-stockinv-newsetting.php?vol=yes');\n\t\t\t\t</script>";
        }
        # Print the invoice
        require "template.php";
    } elseif (isset($saveBtn)) {
        // Final Laytout
        $write = "\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th>New Invoice Saved</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Invoice for customer <b>{$cust['cusname']} {$cust['surname']}</b> has been saved. To view it go to 'View incomplete invoices'</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<p>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Quick Links</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><a href='invoice-view.php'>View Invoices</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t</table>";
        return $write;
    } else {
        if (isset($wtd)) {
            $_POST['wtd'] = $wtd;
        }
        if (strlen($ria) > 0) {
            $_POST['ria'] = $ria;
        }
        return details($_POST);
    }
    /* --- End button Listeners --- */
}
コード例 #19
0
function details($_POST, $error = "")
{
    # Get vars
    extract($_POST);
    $v = new validate();
    if (isset($invid)) {
        $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    } else {
        $client = "";
        $vatnum = "";
        $cordno = "";
        $deptid = 2;
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    // Initial values
    if (!isset($invid)) {
        $invid = create_dummy($deptid);
        $stkerr = "0,0";
        $cusnum = 0;
    }
    # Get invoice info
    db_connect();
    $sql = "SELECT * FROM pinvoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($invRslt) < 1) {
        return "<li class='err'>Invoice Not Found</li>";
    }
    $inv = pg_fetch_array($invRslt);
    if (!isset($vatnum)) {
        $vatnum = $inv['vatnum'];
    }
    if (!isset($cordno)) {
        $cordno = $inv['cordno'];
    }
    # check if invoice has been printed
    if ($inv['printed'] == "y") {
        $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed.";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    // get the ID of the first warehouse
    db_conn("exten");
    $sql = "SELECT whid FROM warehouses ORDER BY whid ASC LIMIT 1";
    $rslt = db_exec($sql) or errDie("Error reading warehouses (FWH).");
    if (pg_num_rows($rslt) > 0) {
        $FIRST_WH = pg_fetch_result($rslt, 0, 0);
    } else {
        $FIRST_WH = "-S";
    }
    # Get selected Customer info
    db_connect();
    $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}' AND location != 'int' AND div = '" . USER_DIV . "'";
    $custRslt = db_exec($sql) or errDie("Unable to view customer");
    if (pg_numrows($custRslt) < 1) {
        db_connect();
        # Query server for customer info   AND lower(surname) LIKE lower('$letters%')
        $sql = "SELECT cusnum,cusname,surname FROM customers WHERE location != 'int' AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
        $custRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($custRslt) < 1) {
            $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
            $customers .= "<option value='0' selected>Select Customer</option>";
            while ($cust = pg_fetch_array($custRslt)) {
                $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']}</option>";
            }
            $customers .= "</select>";
        } else {
            $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
            $customers .= "<option value='0' selected>Select Customer</option>";
            while ($cust = pg_fetch_array($custRslt)) {
                $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']}</option>";
            }
            $customers .= "</select>";
        }
        # Take care of the unset vars
        $cust['addr1'] = "";
        $cust['cusnum'] = "";
        $cust['vatnum'] = "";
        $cust['accno'] = "";
        $cust["bustel"] = $inv["telno"];
        $cust["tel"] = "";
        $cust["cellno"] = "";
    } else {
        $cust = pg_fetch_array($custRslt);
        $sql = "SELECT cusnum, cusname, surname FROM customers WHERE deptid = '{$inv['deptid']}' AND location != 'int' AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
        $cusRslt = db_exec($sql) or errDie("Unable to view customers");
        # Moarn if customer account has been blocked   AND lower(surname) LIKE lower('$letters%')
        if ($cust['blocked'] == 'yes') {
            $error .= "<li class=err>Error : Selected customer account has been blocked.";
        }
        // $customers = "<input type=hidden name=cusnum value='$cust[cusnum]'>$cust[cusname]  $cust[surname]";
        $cusnum = $cust['cusnum'];
        $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
        $customers .= "<option value='0' selected>Select Customer</option>";
        // $customers .= "<option value='-S' selected>Select Customer</option>";
        while ($cus = pg_fetch_array($cusRslt)) {
            $sel = "";
            if ($cust['cusnum'] == $cus['cusnum']) {
                $sel = "selected";
            }
            $customers .= "<option value='{$cus['cusnum']}' {$sel}>{$cus['cusname']} {$cus['surname']}</option>";
        }
        $customers .= "</select>";
    }
    /* after first customer selection, set telno to customer's (if any) */
    if (isset($prev_cusnum) && $prev_cusnum != $cusnum) {
        if (trim($cust["bustel"]) != "") {
            $inv["telno"] = $cust["bustel"];
        } else {
            if (trim($cust["tel"]) != "") {
                $inv["telno"] = $cust["tel"];
            } else {
                $inv["telno"] = $cust["cellno"];
            }
        }
        $cust['sales_rep'] += 0;
        db_conn('exten');
        #also set the sales person ...
        $get_salespn = "SELECT salesp FROM salespeople WHERE salespid = '{$cust['sales_rep']}' LIMIT 1";
        $run_salespn = db_exec($get_salespn) or errDie("Unable to get sales person information.");
        if (pg_numrows($run_salespn) > 0) {
            #found !
            $inv['salespn'] = pg_fetch_result($run_salespn, 0, 0);
        } else {
            $inv['salespn'] = "0";
        }
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    //old
    //	$whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    //fixes broken store change function ...
    $whs = "<select name='whidss[]'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # get sales people
    db_conn("exten");
    $sql = "SELECT * FROM salespeople WHERE div = '" . USER_DIV . "' ORDER BY salesp ASC";
    $salespRslt = db_exec($sql) or errDie("Unable to get sales people.");
    if (pg_numrows($salespRslt) < 1) {
        return "<li class='err'> There are no Sales People found in Cubit.</li>";
    } else {
        $salesps = "<select name='salespn'>";
        while ($salesp = pg_fetch_array($salespRslt)) {
            if ($salesp['salesp'] == $inv['salespn']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $salesps .= "<option value='{$salesp['salesp']}' {$sel}>{$salesp['salesp']}</option>";
        }
        $salesps .= "</select>";
    }
    # Keep the charge vat option stable
    if ($inv['chrgvat'] == "inc") {
        $chin = "checked=yes";
        $chex = "";
        $chno = "";
    } elseif ($inv['chrgvat'] == "exc") {
        $chin = "";
        $chex = "checked=yes";
        $chno = "";
    } else {
        $chin = "";
        $chex = "";
        $chno = "checked=yes";
    }
    /* we came as a correction from receive payment page */
    if (isset($_POST["key"]) && $_POST["key"] == "recvpayment_write") {
        $inv["odate"] == $_POST["date"];
        $inv["pcc"] = $_POST["pcc"];
        $inv["pcheque"] = $_POST["pcheque"];
        $inv["pcash"] = $_POST["pcash"];
    } else {
        list($pinv_year, $pinv_month, $pinv_day) = explode("-", $inv['odate']);
    }
    /* --- End Drop Downs --- */
    /* --- Start Products Display --- */
    # select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>VAT CODE</th>\n\t\t\t\t<th>SERIAL NO.</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t<tr>";
    # get selected stock in this invoice
    db_connect();
    $sql = "SELECT * FROM pinv_items  WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $line_count = pg_num_rows($stkdRslt);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $stkd['account'] += 0;
        if ($stkd['account'] != 0) {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            $Accounts = "\n\t\t\t\t<select name='accounts[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
            if (isset($useaccdrop) and $useaccdrop == "yes") {
                db_connect();
                $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                if (pg_numrows($run_acc) > 0) {
                    while ($acc = pg_fetch_array($run_acc)) {
                        if ($acc['accid'] == $stkd['account']) {
                            $Accounts .= "<option value='{$acc['accid']}' selected>{$acc['accname']}</option>";
                        } else {
                            $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                        }
                    }
                    $Accounts .= "</select>";
                }
            } else {
                db_conn('core');
                $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                while ($ad = pg_fetch_array($Ri)) {
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    if ($ad['accid'] == $stkd['account']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Accounts .= "<option value='{$ad['accid']}' {$sel}>{$ad['accname']}</option>";
                }
                $Accounts .= "</select>";
            }
            $sernos = "\n\t\t\t\t<input type='hidden' name='sernos[]' value='{$stkd['serno']}'>\n\t\t\t\t<input type='hidden' name='sernos_ss[]' value='{$stkd['serno']}'>";
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'>";
            $viewcost = "<input type='text' size='8' name='unitcost[]' value='" . sprint($stkd["unitcost"]) . "'>";
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "<select name='vatcodes[]'>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            # Put in product
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t{$Accounts}\n\t\t\t\t\t\t<input type='hidden' name='whids[]' value='{$stkd['whid']}'>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>{$Vatcodes}</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$stkd['description']}'> {$sernos}</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='hidden' name='disc[]' value='{$stkd['disc']}'>\n\t\t\t\t\t\t<input type='hidden' name='discp[]' value='{$stkd['discp']}'>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><input type='hidden' name='amt[]' value='" . sprint($stkd["amt"]) . "'> " . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='checkbox' name='remprod[]' value='{$key}'>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            $key++;
        } else {
            # keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            # get selected stock in this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            # get warehouse name
            db_conn("exten");
            $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
            $whRslt = db_exec($sql);
            $wh = pg_fetch_array($whRslt);
            if ($stk['units'] <= $stk['minlvl']) {
                $error .= "<li class='err'>{$stk['stkcod']} is below minimum level, please notify stock controller.</li>";
            }
            # Serial number
            if ($stk['serd'] == 'yes' && ($inv['serd'] == 'n' || $stkd["serno"] == "")) {
                $sers = ext_getavserials($stkd['stkid']);
                $sernos = "<select name='sernos[]'>";
                foreach ($sers as $skey => $ser) {
                    $sernos .= "<option value='{$ser['serno']}'>{$ser['serno']}</option>";
                }
                $sernos .= "</select>\n\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value='*_*_*CUBIT_SERIAL_SELECT_BOX*_*_*' />";
            } else {
                $sernos = "\n\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value='{$stkd['ss']}' />\n\t\t\t\t\t<input type='hidden' name='sernos[]' value='{$stkd['serno']}'>{$stkd['ss']}";
            }
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'>";
            if ($stk['serd'] == 'yes') {
                $qtyin = "<input type='hidden' size='3' name='qtys[]' value='{$stkd['qty']}'>{$stkd['qty']}";
            }
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "<select name='vatcodes[]'>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            # check permissions
            if (perm("invoice-unitcost-edit.php")) {
                $viewcost = "<input type='text' size='8' name='unitcost[]' value='" . sprint($stkd["unitcost"]) . "'>";
            } else {
                $viewcost = "<input type='hidden' size='8' name='unitcost[]' value='" . sprint($stkd["unitcost"]) . "'>" . sprint($stkd["unitcost"]);
            }
            # put in product
            $products .= "\n\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$stkd['whid']}'>{$wh['whname']}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>\n\t\t\t\t\t\t<a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td>{$sernos}</td>\n\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='text' size='4' name='disc[]' value='{$stkd['disc']}'><b> OR </b>\n\t\t\t\t\t\t<input type='text' size='4' name='discp[]' value='{$stkd['discp']}' maxlength='5'>%\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><input type='hidden' name='amt[]' value='" . sprint($stkd["amt"]) . "'> " . CUR . sprint($stkd["amt"]) . "</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='checkbox' name='remprod[]' value='{$key}'>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            $key++;
        }
    }
    # Look above(remprod keys)
    $keyy = $key;
    # Look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    } else {
        $SCROLL = "yes";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S" && strlen($stkidss[$key]) > 0) {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whid, whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                if ($stk['serd'] == 'yes') {
                    $sers = ext_getavserials($stkidss[$key]);
                    $sernos = "<select name='sernos[]' onChange='javascript:document.form.submit();'>";
                    foreach ($sers as $skey => $ser) {
                        $sernos .= "<option value='{$ser['serno']}'>{$ser['serno']}</option>";
                    }
                    $sernos .= "</select>\n\t\t\t\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value='*_*_*CUBIT_SERIAL_SELECT_BOX*_*_*' />";
                } else {
                    $sernos = "\n\t\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value=''>\n\t\t\t\t\t\t<input type='hidden' name='sernos[]' value=''>";
                }
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class='err'>Warning :  Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                /* -- End Some Checks -- */
                # Calculate the Discount discount
                if ($discs[$key] < 1) {
                    if ($discps[$key] > 0) {
                        $discs[$key] = round($discps[$key] / 100 * $stk['selamt'], 2);
                    }
                } else {
                    $discps[$key] = round($discs[$key] * 100 / $stk['selamt'], 2);
                }
                # Calculate amount
                $amt[$key] = $qtyss[$key] * ($stk['selamt'] - $discs[$key]);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'>";
                if ($stk['serd'] == 'yes') {
                    $qtyin = "<input type='hidden' size='3' name='qtys[]' value='{$qtyss[$key]}'>{$qtyss[$key]}";
                }
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "<select name='vatcodes[]'>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($stk['vatcode'] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                if (perm("invoice-unitcost-edit.php")) {
                    $viewcost = "<input type='text' size='8' name='unitcost[]' value='" . sprint($stk["selamt"]) . "'>";
                } else {
                    $viewcost = "<input type='hidden' size='8' name='unitcost[]' value='" . sprint($stk["selamt"]) . "'>" . sprint($stk["selamt"]);
                }
                # put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$wh['whid']}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='hidden' name='stkids[]' value='{$stk['stkid']}'>\n\t\t\t\t\t\t\t<a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td>{$sernos}</td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='text' size='4' name='disc[]' value='{$discs[$key]}'><b> OR </b>\n\t\t\t\t\t\t\t<input type='text' size='4' name='discp[]' value='{$discps[$key]}' maxlength='5'>%\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td><input type='hidden' name='amt[]' value='" . sprint($amt[$key]) . "'> " . CUR . sprint($amt[$key]) . "</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $line_count = 1;
                $keyy++;
            } else {
                if (isset($accountss[$key]) && $accountss[$key] != "0") {
                    db_conn('core');
                    $Sl = "SELECT * FROM accounts WHERE accid='{$accountss[$key]}'";
                    $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                    if (pg_num_rows($Ri) < 1) {
                        return "invalid.";
                    }
                    $ad = pg_fetch_array($Ri);
                    # Calculate amount
                    $amt[$key] = sprint($qtyss[$key] * $unitcosts[$key]);
                    # Input qty if not serialised
                    //$qtyin = "<input type=text size=3 name=qtemp value='$qtyss[$key]'>";
                    $qtyin = "<input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'>";
                    # Check permissions
                    $viewcost = "<input type='text' size='8' name='unitcost[]' value='" . sprint($unitcosts[$key]) . "'>";
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "<select name='vatcodes[]'>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vatcodess[$key] == $vd['id']) {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    # Put in selected warehouse and stock
                    $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t\t{$ad['accname']}<input type='hidden' name='accounts[]' value='{$accountss[$key]}'>\n\t\t\t\t\t\t\t<input type='hidden' name='whids[]' value='0'>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>{$Vatcodes}<input type='hidden' name='stkids[]' value='0'></td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$descriptionss[$key]}'></td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='hidden' name='disc[]' value='0'>\n\t\t\t\t\t\t\t<input type='hidden' name='discp[]' value='0'>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td><input type='hidden' name='amt[]' value='" . sprint($amt[$key]) . "'> " . CUR . sprint($amt[$key]) . "</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                    $keyy++;
                } else {
                    # skip if not selected
                    if ($whid == "-S") {
                        continue;
                    }
                    if (!isset($addnon)) {
                        if (isset($filter_store) and $filter_store != "0") {
                            # get warehouse name
                            db_conn("exten");
                            $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                            $whRslt = db_exec($sql);
                            $wh = pg_fetch_array($whRslt);
                        }
                        if (isset($des) and $des != "") {
                            $len = strlen($des);
                            if ($des == "Show All") {
                                $Wh = "";
                                $des = "";
                            } else {
                                $Wh = "AND (lower(stkdes) LIKE lower('%{$des}%')) OR (lower(stkcod) LIKE lower('%{$des}%'))";
                            }
                        } else {
                            $Wh = "AND FALSE";
                            $des = "";
                        }
                        $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
                        if (isset($check_setting) and $check_setting == "yes") {
                            if (isset($filter_class) and $filter_class != "0") {
                                $Wh .= " AND prdcls = '{$filter_class}'";
                            }
                            if (isset($filter_cat) and $filter_cat != "0") {
                                $Wh .= " AND catid = '{$filter_cat}'";
                            }
                        }
                        if (isset($filter_store) and $filter_store != "0") {
                            $Wh .= " AND whid = '{$filter_store}'";
                        }
                        # get stock on this warehouse
                        db_connect();
                        $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY {$sel_frm} ASC";
                        $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                        if (pg_numrows($stkRslt) < 1) {
                            $error .= "<li class='err'>There are no stock items in the selected warehouse.";
                            continue;
                        }
                        if (isset($sel_frm) && $sel_frm == "stkdes") {
                            $descs = "<select style='width:250px' name='stkidss[]' onChange=\"document.form.des.value=''; javascript:document.form.submit();\">";
                            $descs .= "<option value='-S' disabled selected>Select Description</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                // Check if this stock item has been blocked
                                if (stock_is_blocked($stk["stkid"])) {
                                    continue;
                                }
                                $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $descs .= "</select> ";
                            $cods = "";
                        } else {
                            $cods = "<select style='width:250px' name='stkidss[]' onChange=\"document.form.des.value=''; javascript:document.form.submit();\">";
                            //						$cods .= "<option value='-S' disabled selected>Select Number</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                // Check if this stock item has been blocked
                                if (stock_is_blocked($stk["stkid"])) {
                                    continue;
                                }
                                $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $cods .= "</select> ";
                            $descs = "";
                        }
                        # put in drop down and warehouse
                        $products .= "\n\t\t\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$filter_store}'></td>\n\t\t\t\t\t\t\t\t<td>{$cods}</td>\n\t\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type='text' size='4' name='discs[] value='0'>\n\t\t\t\t\t\t\t\t\t<b> OR </b>\n\t\t\t\t\t\t\t\t\t<input type='text' size='4' name='discps[] value='0' maxlength='5'>%\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td><input type='hidden' name='amts[]' value='0.00'>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t</tr>";
                    } else {
                        $Accounts = "\n\t\t\t\t\t\t\t<select name='accountss[]' onChange='javascript:document.form.submit();'>\n\t\t\t\t\t\t\t\t<option value='0'>Select Account</option>";
                        $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
                        if (isset($useaccdrop) and $useaccdrop == "yes") {
                            db_connect();
                            $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                            $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                            if (pg_numrows($run_acc) > 0) {
                                while ($acc = pg_fetch_array($run_acc)) {
                                    $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                                }
                                $Accounts .= "</select>";
                            }
                        } else {
                            db_conn('core');
                            $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                            $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                            while ($ad = pg_fetch_array($Ri)) {
                                if (isb($ad['accid'])) {
                                    continue;
                                }
                                $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                            }
                            $Accounts .= "</select>";
                        }
                        db_conn('cubit');
                        $Sl = "SELECT * FROM vatcodes ORDER BY code";
                        $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                        $Vatcodes = "<select name='vatcodess[]'>";
                        while ($vd = pg_fetch_array($Ri)) {
                            if ($vd['del'] == "Yes") {
                                $sel = "selected";
                            } else {
                                $sel = "";
                            }
                            $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                        }
                        $Vatcodes .= "</select>";
                        $products .= "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t\t\t\t{$Accounts}\n\t\t\t\t\t\t\t\t\t<input type='hidden' name='whidss[]' value='{$FIRST_WH}'>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<input type='hidden' name='stkidss[]' value=''>\n\t\t\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<input type='hidden' name='discs[]' value='0'>\n\t\t\t\t\t\t\t\t\t<input type='hidden' name='discps[]' value='0' >\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>";
                    }
                }
            }
        }
    } else {
        if (!isset($addnon) && !isset($upBtn)) {
            if (isset($filter_store) and $filter_store != "0") {
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
            }
            if (isset($des) and $des != "") {
                $len = strlen($des);
                if ($des == "Show All") {
                    $Wh = "";
                    $des = "";
                } else {
                    $Wh = "AND (lower(stkdes) LIKE lower('%{$des}%')) OR (lower(stkcod) LIKE lower('%{$des}%'))";
                }
            } else {
                $Wh = "AND FALSE";
                $des = "";
            }
            $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
            if (isset($check_setting) and $check_setting == "yes") {
                if (isset($filter_class) and $filter_class != "0") {
                    $Wh .= " AND prdcls = '{$filter_class}'";
                }
                if (isset($filter_cat) and $filter_cat != "0") {
                    $Wh .= " AND catid = '{$filter_cat}'";
                }
            }
            if (isset($filter_store) and $filter_store != "0") {
                $Wh .= " AND whid = '{$filter_store}'";
            }
            # get stock on this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
            $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
            if (pg_numrows($stkRslt) < 1) {
                if (!isset($err)) {
                    $err = "";
                }
                $err .= "<li>There are no stock items in the selected store.";
            }
            if (pg_numrows($stkRslt) == 1) {
                $reload = TRUE;
                $send_override = "<input type='hidden' name='stkidss[]' value='" . pg_fetch_result($stkRslt, 0, 0) . "'>";
            } else {
                $reload = FALSE;
                $send_override = "";
            }
            if (isset($sel_frm) && $sel_frm == "stkdes") {
                $descs = "<select style='width:250px' name='stkidss[]' onChange=\"document.form.des.value=''; javascript:document.form.submit();\">";
                $descs .= "<option value='-S' disabled selected>Select Description</option>";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    // Check if this stock item has been blocked
                    if (stock_is_blocked($stk["stkid"])) {
                        continue;
                    }
                    $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $descs .= "</select> ";
                $stks = "";
            } else {
                $stks = "<select style='width:250px' name='stkidss[]' onChange=\"document.form.des.value=''; javascript:document.form.submit();\">";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    // Check if this stock item has been blocked
                    if (stock_is_blocked($stk["stkid"])) {
                        continue;
                    }
                    $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $stks .= "</select> ";
                $descs = "";
            }
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t<input type='hidden' name='vatcodess[]' value=''>\n\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$filter_store}'></td>\n\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='text' size='4' name='discs[]' value='0'><b> OR </b>\n\t\t\t\t\t\t<input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td><td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>";
        } else {
            if (isset($addnon)) {
                $Accounts = "\n\t\t\t\t<select name='accountss[]' onChange='javascript:document.form.submit();'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
                $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
                if (isset($useaccdrop) and $useaccdrop == "yes") {
                    db_connect();
                    $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                    $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                    if (pg_numrows($run_acc) > 0) {
                        while ($acc = pg_fetch_array($run_acc)) {
                            $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                        }
                        $Accounts .= "</select>";
                    }
                } else {
                    db_conn('core');
                    $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                    $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                    while ($ad = pg_fetch_array($Ri)) {
                        if (isb($ad['accid'])) {
                            continue;
                        }
                        $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                    }
                    $Accounts .= "</select>";
                }
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "<select name='vatcodess[]'>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vd['del'] == "Yes") {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                //				<input type=hidden name='stkidss[]' value=''>
                $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t{$Accounts}\n\t\t\t\t\t\t<input type='hidden' name='whidss[]' value='{$FIRST_WH}'>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='hidden' name='discs[]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='discps[]' value='0' >\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
    }
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    $SUBTOT = sprint($inv['subtot']);
    # Calculate tradediscm
    if ($inv['traddisc'] > 0) {
        $traddiscm = sprint($inv['traddisc'] / 100 * ($SUBTOT + $inv['delchrg']));
    } else {
        $traddiscm = "0.00";
    }
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    $VAT = sprint($inv['vat']);
    $TOTAL = sprint($inv['total']);
    $inv['delchrg'] = sprint($inv['delchrg']);
    if (!isset($done)) {
        $done = "";
    }
    /* --- End Some calculations --- */
    if ($inv['terms'] == 1) {
        $tc1 = "";
        $tc2 = "checked";
    } else {
        $tc1 = "checked";
        $tc2 = "";
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM settings WHERE constant='PSALES'";
    $Ri = db_exec($Sl) or errDie("Unable to get settings.");
    $data = pg_fetch_array($Ri);
    if ($data['value'] == "Yes") {
        $sc = "checked";
    } else {
        $sc = "";
    }
    $sales = "<td>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<td>{$salesps}</td>\n\t\t\t\t<td>Print</td>\n\t\t\t\t<td><input type='checkbox' name='printsales' {$sc}></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</td>";
    # Query server for depts
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE div = '" . USER_DIV . "' ORDER BY deptname ASC";
    $deptRslt = db_exec($sql) or errDie("Unable to view customers");
    if (pg_numrows($deptRslt) < 1) {
        return "<li class='err'>There are no Departments found in Cubit.</li>";
    } else {
        $depts = "<select name='deptid'>";
        while ($dept = pg_fetch_array($deptRslt)) {
            if ($dept['deptid'] == $inv['deptid']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $depts .= "<option value='{$dept['deptid']}' {$sel}>{$dept['deptname']}</option>";
        }
        $depts .= "</select>";
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM users WHERE username='******'";
    $Ri = db_exec($Sl);
    $data = pg_fetch_array($Ri);
    if ($data['help'] != "S") {
        $save = " | <input type='submit' name='saveBtn' value='Save'>";
    } else {
        $save = "";
    }
    if ($inv['rounding'] > 0) {
        $due = sprint($inv['total'] - $inv['rounding']);
        $rd = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Rounding</td>\n\t\t\t\t<td align='right'>R {$inv['rounding']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<th>Amount Due</th>\n\t\t\t\t<td align='right'>R {$due}</td>\n\t\t\t</tr>";
    } else {
        $rd = "";
    }
    $inv['delvat'] += 0;
    if ($inv['delvat'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $inv['delvat'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "<select name='delvat'>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $inv['delvat']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    if (strlen($client) < 1) {
        $client = $inv['cusname'];
    }
    if ($inv['cusnum'] == 0) {
        $cd = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Customer</td>\n\t\t\t\t<td valign='center'><input type='text' size='20' name='client' value='{$client}'></td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>VAT Number</td>\n\t\t\t\t<td valign='center'><input type='text' size='20' name='vatnum' value='{$vatnum}'></td>\n\t\t\t</tr>";
        $pc = "<input type='hidden' name='pcredit' value='0'>";
    } else {
        $cd = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t<td valign='center'>" . nl2br($cust['addr1']) . "</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Customer VAT Number</td>\n\t\t\t\t<td>{$cust['vatnum']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Customer Balance</td>\n\t\t\t\t<td nowrap='t'>\n\t\t\t\t\t" . CUR . " {$cust['balance']}\n\t\t\t\t\t<a href='javascript: printer(\"cust-stmnt.php?cusnum={$cusnum}&print=t\");'>Print Statement</a>\n\t\t\t\t</td>\n\t\t\t</tr>";
        $pc = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Amount On Credit</td>\n\t\t\t\t<td nowrap='t'>\n\t\t\t\t\t<input size='12' type='text' name='pcredit' id='pcredit' value='{$inv['pcredit']}' onchange='ptot_update();'>\n\t\t\t\t\t<input type='button' value='&laquo Total' onclick='paytotal(\"pcredit\");' />\n\t\t\t\t</td>\n\t\t\t</tr>";
        if ($line_count > 0) {
            $recvpay = "";
        } else {
            $recvpay = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='2' align='center'><input type='submit' name='recvpay' id='recvpay' onclick='return ptot_recvpay();' value='Receive Payment: " . CUR . " " . sprint($inv["pcc"] + $inv["pcheque"] + $inv["pcash"]) . "' /></td>\n\t\t\t</tr>";
        }
    }
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    if (!isset($des)) {
        $des = "";
    }
    if (isset($sel_frm) && $sel_frm == "stkdes") {
        $sel_frm_cod = "";
        $sel_frm_des = "checked";
    } else {
        $sel_frm_cod = "checked";
        $sel_frm_des = "";
    }
    if (!isset($recvpay)) {
        $recvpay = "";
    }
    if (empty($inv["comm"])) {
        db_conn("cubit");
        $sql = "SELECT value FROM settings WHERE constant='DEFAULT_POS_COMMENTS'";
        $rslt = db_exec($sql) or errDie("Unable to retrieve default comments from Cubit.");
        $inv["comm"] = base64_decode(pg_fetch_result($rslt, 0));
    }
    if (!isset($reload)) {
        $reload = FALSE;
        $send_override = "";
        $details_end = "";
    } elseif ($reload == FALSE) {
        $details_end = "";
    }
    if ($reload) {
        $details_end = "\n\t\t\t{$send_override}\n\t\t\t<script>\n\t\t\t\tonLoad=document.form.submit();\n\t\t\t</script>";
    }
    if (isset($addprodBtn) or isset($addnon) or isset($saveBtn) or isset($upBtn) or isset($des)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $optional_filter_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
    if (isset($optional_filter_setting) and $optional_filter_setting == "yes") {
        db_connect();
        $catsql = "SELECT catid, cat, catcod FROM stockcat WHERE div = '" . USER_DIV . "' ORDER BY cat ASC";
        $catRslt = db_exec($catsql);
        if (pg_numrows($catRslt) < 1) {
            $cat_drop = "<input type='hidden' name='filter_cat' value='0'>";
        } else {
            $cat_drop = "<select name='filter_cat'>";
            $cat_drop .= "<option value='0'>All Categories</option>";
            while ($cat = pg_fetch_array($catRslt)) {
                if (isset($filter_cat) and $filter_cat == $cat['catid']) {
                    $cat_drop .= "<option value='{$cat['catid']}' selected>({$cat['catcod']}) {$cat['cat']}</option>";
                } else {
                    $cat_drop .= "<option value='{$cat['catid']}'>({$cat['catcod']}) {$cat['cat']}</option>";
                }
            }
            $cat_drop .= "</select>";
        }
        # Select classification
        $classsql = "SELECT * FROM stockclass WHERE div = '" . USER_DIV . "' ORDER BY classname ASC";
        $clasRslt = db_exec($classsql);
        if (pg_numrows($clasRslt) < 1) {
            $class_drop = "<input type='hidden' name='filter_class' value='0'>";
        } else {
            $class_drop = "<select name='filter_class' style='width: 167'>";
            $class_drop .= "<option value='0'>All Classifications</option>";
            while ($clas = pg_fetch_array($clasRslt)) {
                if (isset($filter_class) and $filter_class == $clas['clasid']) {
                    $class_drop .= "<option value='{$clas['clasid']}' selected>{$clas['classname']}</option>";
                } else {
                    $class_drop .= "<option value='{$clas['clasid']}'>{$clas['classname']}</option>";
                }
            }
            $class_drop .= "</select>";
        }
        $display_optional_filters = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Select Category</td>\n\t\t\t\t<td>{$cat_drop}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Select Classification</td>\n\t\t\t\t<td>{$class_drop}</td>\n\t\t\t</tr>";
    }
    db_conn("exten");
    $sql = "SELECT whid, whname, whno FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        $store_drop = "<input type='hidden' name='filter_store' value='0'>";
    } else {
        if (!isset($filter_store)) {
            # check if setting exists
            db_connect();
            $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
            $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
            if (pg_numrows($Rslt) > 0) {
                $set = pg_fetch_array($Rslt);
                $whid = $set['value'];
            }
        }
        $store_drop = "<select name='filter_store'>";
        $store_drop .= "<option value='0'>All Stores</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            if (isset($filter_store) and $filter_store == $wh['whid']) {
                $store_drop .= "<option value='{$wh['whid']}' selected>({$wh['whno']}) {$wh['whname']}</option>";
            } else {
                $store_drop .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
            }
        }
        $store_drop .= "</select>";
    }
    /* -- Final Layout -- */
    $details = "\n\t\t<script language=\"JavaScript\"><!--\n\t\t\tvar windowReference;\n\n\t\t\tfunction openRFPopup() {\n\t\t\t\twindowReference = window.open('rfid_batch.php?invid={$invid}','windowName','height=500,width=700,toolbar=no,menubar=no,scrollbars=no');\n\t\t\t\tif (!windowReference.opener)\n\t\t\t\t\twindowReference.opener = self;\n\t\t\t\t}\n\t\t//--></script>\n\n\t<center>\n\t<h3>New Point of Sale Invoice</h3>\n\t<form method='POST' name='formName'>\n\t\t<input type='hidden' name='key' value='update' />\n\t\t<input type='hidden' name='invid' value='{$invid}' />\n\t\t<input type='hidden' name='SCROLL' value='yes'>\n\t</form>\n\t<script>\n\t\tfunction ptot_recvpay() {\n\t\t\tif (ptot_amt() > 0) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\talert('Enter amounts received by customer above.');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tfunction pfld_num(fn) {\n\t\t\ti = getObject(fn).value;\n\t\t\tif (i) {\n\t\t\t\treturn parseFloat(i);\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t\tfunction ptot_amt(nocredit) {\n\t\t\ti = pfld_num('pcash');\n\t\t\ti += pfld_num('pcc');\n\t\t\ti += pfld_num('pcheque');\n\t\t\tif (!nocredit && getObject('pcredit')) {\n\t\t\t\ti += pfld_num('pcredit');\n\t\t\t}\n\t\t\treturn i.toFixed(2);\n\t\t}\n\t\tfunction ptot_update() {\n\t\t\tgetObject('ptot').innerHTML = '" . CUR . " ' + ptot_amt();\n\t\t\tif (o = getObject('recvpay')) {\n\t\t\t\to.value = 'Receive Payment: " . CUR . " ' + ptot_amt(true);\n\t\t\t}\n\t\t}\n\t\tfunction paytotal(id) {\n\t\t\tgetObject('pcash').value = '0.00';\n\t\t\tgetObject('pcc').value = '0.00';\n\t\t\tgetObject('pcheque').value = '0.00';\n\t\t\tif (getObject('pcredit')) getObject('pcredit').value = '0.00';\n\t\t\tgetObject(id).value = getObject('itotal').value;\n\t\t\tptot_update();\n\t\t}\n\t</script>\n\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t<input type='hidden' name='key' value='update'>\n\t\t<input type='hidden' name='invid' value='{$invid}'>\n\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t<input type='hidden' id='itotal' value='{$TOTAL}' />\n\t\t<input type='hidden' name='prev_cusnum' value='{$cusnum}' />\n\t\t<input type='hidden' name='SCROLL' value='yes'>\n\t<table " . TMPL_tblDflts . " width='95%'>\n \t\t<tr>\n \t\t\t<td valign='top'>\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t<td valign='center'>{$depts}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t\t<td valign='center'>{$customers}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t{$cd}\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Customer Telephone Number</td>\n\t\t\t\t\t\t<td valign='center'><input type='text' size='20' name='telno' value='{$inv['telno']}'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Customer Order number</td>\n\t\t\t\t\t\t<td valign='center'><input type='text' size='10' name='cordno' value='{$cordno}'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='2'>Point of Sale</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Barcode</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='text' size='13' name='bar' value=''>\n\t\t\t\t\t\t\t<input type='button' onClick='javascript:openRFPopup();' value='RFID Batch'>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='2'>Options</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Select Using</td>\n\t\t\t\t\t\t<td>Stock Code<input type='radio' name='sel_frm' value='stkcod' onChange='javascript:document.form.submit();' {$sel_frm_cod}> Stock Description<input type='radio' name='sel_frm' value='stkdes' onChange='javascript:document.form.submit();' {$sel_frm_des}></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='2'>Additional Filters</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Select Store</td>\n\t\t\t\t\t\t<td>{$store_drop}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t{$display_optional_filters}\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Stock Filter</td>\n\t\t\t\t\t\t<td><input type='text' size='13' name='des' value='{$des}'> <input type='submit' value='Search'> <input type='submit' name='des' value='Show All'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</td>\n\t\t\t<td valign='top' align='right'>\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='2'>Invoice Details</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Invoice No.</td>\n\t\t\t\t\t\t<td valign='center'>{$inv['invid']}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Sales Order No.</td>\n\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='ordno' value='{$inv['ordno']}'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Invoice Date</td>\n\t\t\t\t\t\t<td valign='center' nowrap='t'>" . mkDateSelect("pinv", $pinv_year, $pinv_month, $pinv_day) . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td nowrap='t'>VAT Inclusive</td>\n\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' size='7' name='chrgvat' value='inc' {$chin}> No<input type='radio' size='7' name='chrgvat' value='exc' {$chex}></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t{$sales}\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='traddisc' value='{$inv['traddisc']}'>%</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t<td valign='center'><input type='text' size='7' name='delchrg' value='{$inv['delchrg']}'>{$Vatcodes}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='2'>Payment Details </th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>User</td>\n\t\t\t\t\t\t<td><input type='hidden' name='user' value='" . USER_NAME . "'>" . USER_NAME . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td nowrap='t'>Amount Paid Cash</td>\n\t\t\t\t\t\t<td nowrap='t'>\n\t\t\t\t\t\t\t<input size='12' type='text' name='pcash' id='pcash' value='{$inv['pcash']}' onchange='ptot_update();'>\n\t\t\t\t\t\t\t<input type='button' value='&laquo Total' onclick='paytotal(\"pcash\");' />\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td nowrap='t'>Amount Paid Cheque</td>\n\t\t\t\t\t\t<td nowrap='t'>\n\t\t\t\t\t\t\t<input size='12' type='text' name='pcheque' id='pcheque' value='{$inv['pcheque']}' onchange='ptot_update();'>\n\t\t\t\t\t\t\t<input type='button' value='&laquo Total' onclick='paytotal(\"pcheque\");' />\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td nowrap='t'>Amount Paid Credit Card</td>\n\t\t\t\t\t\t<td nowrap='t'>\n\t\t\t\t\t\t\t<input size='12' type='text' name='pcc' id='pcc' value='{$inv['pcc']}' onchange='ptot_update();'>\n\t\t\t\t\t\t\t<input type='button' value='&laquo Total' onclick='paytotal(\"pcc\");' />\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t{$recvpay}\n\t\t\t\t\t{$pc}\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td nowrap='t'>Total Covered</td>\n\t\t\t\t\t\t<td nowrap='t' id='ptot'>" . CUR . " " . sprint($inv["pcash"] + $inv["pcheque"] + $inv["pcc"] + $inv["pcredit"]) . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr><td><br></td></tr>\n\t\t<tr>\n\t\t\t<td colspan='2'>{$products}</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td width='70%' valign='top'>\n\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td rowspan='2'>" . mkQuickLinks(ql("pos-invoice-new.php", "New POS Invoice"), ql("pos-invoice-list.php", "View POS Invoices"), ql("customers-new.php", "New Customer")) . "\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<th width='30%'>Comments</th>\n\t\t\t\t\t\t<td rowspan='5' valign='top' width='40%'>{$error}</td></tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td rowspan='4' align='center' valign='top'><textarea name='comm' rows='4' cols='20'>{$inv['comm']}</textarea></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</td>\n\t\t\t<td align='right' valign='top' width='30%'>\n\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t<td align='right'>" . CUR . " <input type='hidden' name='SUBTOT' value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t<td align='right'>" . CUR . " {$inv['discount']}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t<td align='right'>" . CUR . " {$inv['delivery']}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t<td align='right'>" . CUR . " {$VAT}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t<td align='right'>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t{$rd}\n\t\t\t\t</table>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td align='right'>\n\t\t\t\t<input name='addprodBtn' type='submit' value='Add Product'> | \n\t\t\t\t<input name='addnon' type='submit' value='Add Non stock Product'>\n\t\t\t\t{$save}\n\t\t\t</td>\n\t\t\t<td> | <input type='submit' name='upBtn' value='Update'>{$done}</td>\n\t\t</tr>\n\t</table>\n\t<a name='bottom'>\n\t{$details_end}\n\t</form>\n\t</center>\n\t{$jump_bot}";
    return $details;
}
コード例 #20
0
function details($_POST, $error = "")
{
    # Get vars
    extract($_POST);
    if (isset($noduty)) {
        $exd = "<input type='hidden' name='noduty' value='yes'>";
    } else {
        $exd = "";
    }
    # Validate input
    require_lib("validate");
    $v = new validate();
    if (isset($purid)) {
        $v->isOk($purid, "num", 1, 20, "Invalid Order number.");
    } else {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
        $v->isOk($letters, "string", 0, 5, "Invalid First 3 Letters.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    if (!isset($purid)) {
        $purid = create_dummy($deptid);
    }
    # Get Order info
    db_connect();
    $sql = "SELECT * FROM purch_int WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $purRslt = db_exec($sql) or errDie("Unable to get Order information");
    if (pg_numrows($purRslt) < 1) {
        return "<li class='err'>Order Not Found</li>";
    }
    $pur = pg_fetch_array($purRslt);
    # check if Order has been printed
    if ($pur['received'] == "y") {
        $error = "<li class='err'> Error : Order number <b>{$purid}</b> has already been received.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$pur['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    $deptid = $pur['deptid'];
    $supid = $pur['supid'];
    # Get selected supplier info
    db_connect();
    $sql = "SELECT * FROM suppliers WHERE supid = '{$pur['supid']}' AND div = '" . USER_DIV . "'";
    $supRslt = db_exec($sql) or errDie("Unable to view Supplier");
    if (pg_numrows($supRslt) < 1) {
        db_connect();
        if ($inv['deptid'] == 0) {
            $searchdept = "";
        } else {
            $searchdept = "deptid = '{$deptid}' AND ";
        }
        # Query server for supplier info
        $sql = "SELECT * FROM suppliers WHERE {$searchdept} location = 'int' AND lower(supname) LIKE lower('{$letters}%') AND div = '" . USER_DIV . "' ORDER BY supname ASC";
        $supRslt = db_exec($sql) or errDie("Unable to view suppliers");
        if (pg_numrows($supRslt) < 1) {
            $err = "<li class='err'>No Supplier names starting with <b>{$letters}</b> in database.</li>";
            return view_err($_POST, $err);
        } else {
            $suppliers = "<select name='supid' onChange='javascript:document.form.submit();'>";
            $suppliers .= "<option value='-S' selected>Select Supplier</option>";
            while ($sup = pg_fetch_array($supRslt)) {
                $suppliers .= "<option value='{$sup['supid']}'>{$sup['supname']}</option>";
            }
            $suppliers .= "</select>";
        }
        # take care of the uset vars
        $supaddr = "";
        $accno = "";
        $fcid = $pur['fcid'];
    } else {
        db_connect();
        # Query server for supplier info
        $sql = "SELECT * FROM suppliers WHERE deptid = '{$deptid}' AND location = 'int' AND lower(supname) LIKE lower('{$letters}%') AND div = '" . USER_DIV . "' ORDER BY supname ASC";
        $supRslt = db_exec($sql) or errDie("Unable to view suppliers");
        if (pg_numrows($supRslt) < 1) {
            $err = "<li class='err'>No Supplier names starting with <b>{$letters}</b> in database.</li>";
            return view_err($_POST, $err);
        } else {
            $suppliers = "<select name='supid' onChange='javascript:document.form.submit();'>";
            $sel = "";
            $fcid = $pur['fcid'];
            while ($sup = pg_fetch_array($supRslt)) {
                if ($sup['supid'] == $supid) {
                    $sel = "selected";
                    $supaddr = "{$sup['supaddr']}";
                    $accno = $sup['supno'];
                    $fcid = $sup['fcid'];
                    $listid = $sup['listid'];
                } else {
                    $sel = "";
                    $supaddr = "";
                    $accno = "";
                }
                $suppliers .= "<option value='{$sup['supid']}' {$sel}>{$sup['supname']}</option>";
            }
            $suppliers .= "</select>";
        }
    }
    # this is a quick fix for pricelist product avaibility
    $listids = array();
    if (isset($listid) && $listid > 0) {
        # Get jobs stkids
        db_conn("exten");
        $sql = "SELECT stkid FROM splist_prices WHERE listid = '{$listid}' AND div = '" . USER_DIV . "'";
        $lstkRslt = db_exec($sql);
        while ($lstk = pg_fetch_array($lstkRslt)) {
            $listids[] = $lstk['stkid'];
        }
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    $whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # Days drop downs
    $days = array("0" => "0", "7" => "7", "14" => "14", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $pur['terms']);
    # Currency
    $currs = getSymbol($fcid);
    $curr = $currs['symbol'];
    $currsel = "{$currs['symbol']} - {$currs['descrip']}";
    # Format date
    list($ipur_year, $ipur_month, $ipur_day) = explode("-", $pur['pdate']);
    list($del_year, $del_month, $del_day) = explode("-", $pur['ddate']);
    /* --- End Drop Downs --- */
    /* --- Start Products Display --- */
    if (isset($noduty)) {
        $dd = "";
    } else {
        $dd = "<th colspan='2'>DUTY</th>";
    }
    # Select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th colspan=2>UNIT PRICE</th>\n\t\t\t\t{$dd}\n\t\t\t\t<th>LINE TOTAL</th>\n\t\t\t\t<th>COST PER UNIT</th>\n\t\t\t\t<th>DEL</th>\n\t\t\t<tr>";
    # Get selected stock in this Order
    db_connect();
    $sql = "SELECT * FROM purint_items  WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # keep track of selected stock amounts
        $amts[$i] = $stkd['amt'];
        $i++;
        # Get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # Get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        /* -- Calculations -- */
        # Calculate cost amount bought
        $totamt = $stkd['qty'] * $stkd['cunitcost'];
        $unittot = $totamt;
        # Calculate percentage from subtotal
        if ($pur['subtot'] != 0) {
            $perc = ($totamt + $stkd['duty']) / $pur['subtot'] * 100;
        } else {
            $perc = 0;
        }
        # Get percentage from shipping charges
        $shipchrg = sprint($perc / 100 * $pur['shipchrg']);
        # Add shipping charges to amt
        $totamt = sprint($totamt + $shipchrg + $stkd['duty']);
        $unittot = sprint($unittot + $stkd["duty"]);
        $lineamt = sprint($totamt / $stkd["qty"]);
        $unitamt = sprint($unittot / $stkd['qty']);
        /* -- End Calculations --*/
        $stkd['amt'] = sprint($stkd['amt']);
        if (isset($noduty)) {
            $dd = "\n\t\t\t\t<input type='hidden' name='duty[]' value='{$stkd['duty']}'>\n\t\t\t\t<input type='hidden' name='dutyp[]' value='{$stkd['dutyp']}'>";
        } else {
            $dd = "\n\t\t\t\t<td nowrap>{$pur['curr']} <input type='text' size='6' name='duty[]' value='{$stkd['duty']}'> or </td>\n\t\t\t\t<td><input type='text' size='3' name='dutyp[]' value='{$stkd['dutyp']}'>%</td>";
        }
        # Put in product
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><input type='hidden' name='whids[]' value='{$stkd['whid']}'>{$wh['whname']}</td>\n\t\t\t\t<td>\n\t\t\t\t\t<input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>\n\t\t\t\t\t<a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a>\n\t\t\t\t</td>\n\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'></td>\n\t\t\t\t<td nowrap>{$pur['curr']} <input type='text' size='6' name='cunitcost[]' value='{$stkd['cunitcost']}'><b> OR </b></td>\n\t\t\t\t<td nowrap>" . CUR . " <input type='text' size='6' name='unitcost[]' value='{$stkd['unitcost']}'></td>\n\t\t\t\t{$dd}\n\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$stkd['amt']}'> {$pur['curr']} {$lineamt}</td>\n\t\t\t\t<td align='right' nowrap>{$pur['curr']} {$unitamt}</td>\n\t\t\t\t<td>\n\t\t\t\t\t<input type='checkbox' name='remprod[]' value='{$key}'>\n\t\t\t\t\t<input type='hidden' name='SCROLL' value='yes'>\n\t\t\t\t</td>\n\t\t\t</tr>";
        $key++;
    }
    # Look above(remprod keys)
    $keyy = $key;
    # look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    }
    if ($pur['xrate'] == 0) {
        $pur['xrate'] = 1;
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S") {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # Get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # Calculate amount
                $amt[$key] = sprint($qtyss[$key] * $stk['lcsprice'] / $pur['xrate']);
                $cunitcost[$key] = sprint($pur['xrate'] * $stk['lcsprice']);
                if (isset($noduty)) {
                    $dd = "\n\t\t\t\t\t\t<input type='hidden' name='duty[]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='dutyp[]' value='0'>";
                } else {
                    $dd = "\n\t\t\t\t\t\t<td>{$pur['curr']} <input type='text' size='6' name='duty[]' value='0'> or </td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='dutyp[]' value='0'>%</td>";
                }
                # put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='hidden' name='stkids[]' value='{$stk['stkid']}'>\n\t\t\t\t\t\t\t<a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'></td>\n\t\t\t\t\t\t<td nowrap>{$pur['curr']} <input type='text' size='6' name='cunitcost[]' value='{$stkd['cunitcost']}'> or </td>\n\t\t\t\t\t\t<td nowrap>" . CUR . " <input type='text' size='6' name='unitcost[]'  value='{$stk['lcsprice']}'></td>\n\t\t\t\t\t\t{$dd}\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$key]}'> {$pur['curr']} {$amt[$key]}</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='checkbox' name='remprod[]' value='{$keyy}'>\n\t\t\t\t\t\t\t<input type='hidden' name='SCROLL' value='yes'>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } else {
                if (!isset($diffwhBtn)) {
                    # Skip if not selected
                    if ($whid == "-S") {
                        continue;
                    }
                    # Get warehouse name
                    db_conn("exten");
                    $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                    $whRslt = db_exec($sql);
                    $wh = pg_fetch_array($whRslt);
                    # Get stock on this warehouse
                    db_connect();
                    $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                    $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                    if (pg_numrows($stkRslt) < 1) {
                        $error .= "<li class='err'>There are no stock items in the selected warehouse.</li>";
                        continue;
                    }
                    $stks = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
                    $stks .= "<option value='-S' disabled selected>Select Item Number</option>";
                    $count = 0;
                    while ($stk = pg_fetch_array($stkRslt)) {
                        $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                    }
                    $stks .= "</select> ";
                    if (isset($noduty)) {
                        $dd = "";
                    } else {
                        $dd = "<td>&nbsp</td><td>&nbsp;</td>";
                    }
                    # Put in drop down and warehouse
                    $products .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t{$dd}\n\t\t\t\t\t\t\t<td nowrap><input type='hidden' name='amts[]' value='0.00'>{$pur['curr']} 0.00</td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t</tr>";
                }
            }
        }
    } else {
        if (!isset($diffwhBtn)) {
            # check if setting exists
            db_connect();
            $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
            $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
            if (pg_numrows($Rslt) > 0) {
                $set = pg_fetch_array($Rslt);
                $whid = $set['value'];
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # get stock on this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                if (pg_numrows($stkRslt) < 1) {
                    if (!isset($err)) {
                        $err = "";
                    }
                    $err .= "<li>There are no stock items in the selected warehouse.</li>";
                }
                $stks = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
                $stks .= "<option value='-S' disabled selected>Select Item Number</option>";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $stks .= "</select> ";
                if (isset($noduty)) {
                    $dd = "";
                } else {
                    $dd = "<td>{$pur['curr']} 0.00</td><td></td>";
                }
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t{$dd}\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t</tr>";
            } else {
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$whs}</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>{$pur['curr']} 0.00</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t</tr>";
            }
        }
    }
    /* -- start Listeners -- */
    if (isset($diffwhBtn)) {
        # take todays date
        list($year, $mon, $day) = explode("-", $pur['pdate']);
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$whs}</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>{$pur['curr']} 0.00</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t</tr>";
    }
    /* -- End Listeners -- */
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Get subtotal
    $SUBTOT = sprint($pur['subtot']);
    # Get Total
    $TOTAL = sprint($pur['total']);
    $pur['tax'] = sprint($pur['tax']);
    $pur['shipchrg'] = sprint($pur['shipchrg']);
    /* --- End Some calculations --- */
    $pur['jobnum'] += 0;
    if ($pur['jobnum'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $pur['jobnum'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "\n\t\t<select name='delvat'>\n\t\t\t<option value='0'>Select</option>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $pur['jobnum']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    if (isset($diffwhBtn) or isset($upBtn) or isset($doneBtn) or isset($donePrnt)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $details = "\n\t\t<center>\n\t\t<h3>New International Order</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='purid' value='{$purid}'>\n\t\t\t<input type='hidden' name='deptid' value='{$deptid}'>\n\t\t\t<input type='hidden' name='letters' value='{$letters}'>\n\t\t\t{$exd}\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Supplier Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Supplier</td>\n\t\t\t\t\t\t\t<td valign='center'>{$suppliers}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Supplier</td>\n\t\t\t\t\t\t\t<td valign='center'>{$accno}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Supplier Address</td>\n\t\t\t\t\t\t\t<td valign='center'>" . nl2br($supaddr) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Order Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Purchase No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['purnum']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$termssel} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("ipur", $ipur_year, $ipur_month, $ipur_day) . " </td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Foreign Currency</td>\n\t\t\t\t\t\t\t<td valign='center'>{$currsel} &nbsp;&nbsp;Exchange rate " . CUR . " <input type='text' size='7' name='xrate' value='{$pur['xrate']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Tax</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['curr']} <input type='text' size='7' name='tax' value='{$pur['tax']}'>{$Vatcodes}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Shipping Charges</td>\n\t\t\t\t\t\t\t<td valign='center' nowrap>{$pur['curr']} <input type='text' size='7' name='shipchrg' value='{$pur['fshipchrg']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Date</td>\n\t\t\t\t\t\t\t<td valign=center>" . mkDateSelect("del", $del_year, $del_month, $del_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<p>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th width='25%'>Quick Links</th>\n\t\t\t\t\t\t\t<th width='25%'>Remarks</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='purch-int-view.php'>View International Orders</a></td>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'><textarea name='remarks' rows='4' cols='20'>{$pur['remarks']}</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>{$pur['curr']} <input type='hidden' name='subtot' value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Shipping Charges</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>{$pur['curr']} {$pur['shipchrg']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Tax </td>\n\t\t\t\t\t\t\t<td align='right' nowrap>{$pur['curr']} {$pur['tax']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right' nowrap>{$pur['curr']} <input type='hidden' name='total' value='{$TOTAL}'>{$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input type='button' value='&laquo Back' onClick='javascript:history.back()'> | <input name='diffwhBtn' type='submit' value='Different Store'> |</td>\n\t\t\t\t<td nowrap><input type='submit' name='upBtn' value='Update'>{$done}</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<a name='bottom'>\n\t\t</form>\n\t\t</center>\n\t\t{$jump_bot}";
    return $details;
}
コード例 #21
0
function details($_POST, $error = "")
{
    extract($_POST);
    # validate input
    include "libs/validate.lib.php";
    $v = new validate();
    if (isset($quoid)) {
        $v->isOk($quoid, "num", 1, 20, "Invalid quote number.");
    }
    if (isset($deptid)) {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
    }
    if (isset($letters)) {
        $v->isOk($letters, "string", 0, 5, "Invalid First 3 Letters.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>{$e['msg']}</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    if (!isset($deptid)) {
        $deptid = 0;
    } else {
        if (isset($quoid)) {
            db_conn("cubit");
            $sql = "UPDATE quotes SET deptid='{$deptid}' WHERE quoid='{$quoid}' AND deptid<>'{$deptid}'";
            db_exec($sql) or errDie("Error updating invoice department.");
        }
    }
    if (!isset($quoid)) {
        $quoid = create_dummy($deptid);
    }
    if (!isset($stkerr)) {
        $stkerr = "0,0";
    }
    if (!isset($done)) {
        $done = "";
    }
    if (!isset($sel_frm)) {
        $sel_frm = "stkcod";
    }
    # Get quote info
    db_connect();
    $sql = "SELECT * FROM quotes WHERE quoid = '{$quoid}' AND div = '" . USER_DIV . "'";
    $quoRslt = db_exec($sql) or errDie("Unable to get quote information");
    if (pg_numrows($quoRslt) < 1) {
        return "<li class='err'>Quote Not Found</li>";
    }
    $quo = pg_fetch_array($quoRslt);
    # check if quote has been printed
    if ($quo['accepted'] == "y") {
        $error = "<li class='err'> Error : Quote number <b>{$quoid}</b> has already been printed.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    if (!isset($lead)) {
        $lead = $quo["lead"];
    }
    //manual error handling
    if (!isset($quo['ncdate'])) {
        $quo['ncdate'] = "";
    }
    if (strlen($quo['ncdate']) < 1) {
        $ncdate_year = date("Y");
        $ncdate_month = date("m", mktime(0, 0, 0, date("m"), date("d") + 5, date("Y")));
        $ncdate_day = date("d", mktime(0, 0, 0, date("m"), date("d") + 5, date("Y")));
    } else {
        $darr = explode("-", $quo['ncdate']);
        $ncdate_year = $darr['0'];
        $ncdate_month = $darr['1'];
        $ncdate_day = $darr['2'];
    }
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$quo['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected customer info
    if (isset($letters)) {
        db_connect();
        $sql = "SELECT * FROM customers WHERE cusnum = '{$quo['cusnum']}' AND div = '" . USER_DIV . "'";
        $custRslt = db_exec($sql) or errDie("Unable to view customer");
        if (pg_numrows($custRslt) < 1) {
            db_connect();
            if ($inv['deptid'] == 0) {
                $searchdept = "";
            } else {
                $searchdept = "deptid = '{$quo['deptid']}' AND ";
            }
            # Query server for customer info
            $sql = "SELECT cusnum,cusname,surname FROM customers WHERE {$searchdept} location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND div = '" . USER_DIV . "' ORDER BY surname";
            $custRslt = db_exec($sql) or errDie("Unable to view customers");
            if (pg_numrows($custRslt) < 1) {
                $ajax_err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
                //return view_err($_POST, $err);
            } else {
                $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
                $customers .= "<option value='-S' selected>Select Customer</option>";
                while ($cust = pg_fetch_array($custRslt)) {
                    $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']}</option>";
                }
                $customers .= "</select>";
            }
            # take care of the unset vars
            $cust['addr1'] = "";
            $cust['cusnum'] = "";
            $cust['vatnum'] = "";
            $cust['accno'] = "";
        } else {
            $cust = pg_fetch_array($custRslt);
            # moarn if customer account has been blocked
            if ($cust['blocked'] == 'yes') {
                return "<li class='err'>Error : Selected customer account has been blocked.</li>";
            }
            $customers = "<input type='hidden' name=cusnum value='{$cust['cusnum']}'>{$cust['cusname']}  {$cust['surname']}";
            $cusnum = $cust['cusnum'];
        }
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    //no good ... breaks the search feature because it doesnt send search with
    // onChange='javascript:document.form.submit();'
    $whs = "<select name='whidss[]'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            if (!user_in_store_team($wh["whid"], USER_ID)) {
                continue;
            }
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # get sales people
    db_conn("exten");
    $sql = "SELECT * FROM salespeople WHERE div = '" . USER_DIV . "' ORDER BY salesp ASC";
    $salespRslt = db_exec($sql) or errDie("Unable to get sales people.");
    if (pg_numrows($salespRslt) < 1) {
        return "<li class='err'> There are no Sales People found in Cubit.</li>";
    } else {
        $salesps = "<select name='salespn'>";
        while ($salesp = pg_fetch_array($salespRslt)) {
            if ($salesp['salesp'] == $quo['salespn']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $salesps .= "<option value='{$salesp['salesp']}' {$sel}>{$salesp['salesp']}</option>";
        }
        $salesps .= "</select>";
    }
    # days drop downs
    $days = array("0" => "0", "7" => "7", "14" => "14", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $quo['terms']);
    # Keep the charge vat option stable
    if ($quo['chrgvat'] == "inc") {
        $chin = "checked=yes";
        $chex = "";
        $chno = "";
    } elseif ($quo['chrgvat'] == "exc") {
        $chin = "";
        $chex = "checked=yes";
        $chno = "";
    } else {
        $chin = "";
        $chex = "";
        $chno = "checked=yes";
    }
    # format date
    list($quote_year, $quote_month, $quote_day) = explode("-", $quo['odate']);
    //	list($followon_year, $followon_month, $followon_day) = explode("-", $quo['ncdate']);
    /* --- End Drop Downs --- */
    // get the ID of the first warehouse
    db_conn("exten");
    $sql = "SELECT whid FROM warehouses ORDER BY whid ASC LIMIT 1";
    $rslt = db_exec($sql) or errDie("Error reading warehouses (FWH).");
    if (pg_num_rows($rslt) > 0) {
        $FIRST_WH = pg_fetch_result($rslt, 0, 0);
    } else {
        $FIRST_WH = "-S";
    }
    /* --- Start Products Display --- */
    # select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>VAT CODE</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t<tr>";
    # get selected stock in this quote
    db_connect();
    $sql = "SELECT * FROM quote_items  WHERE quoid = '{$quoid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $stkd['account'] += 0;
        if ($stkd['account'] != 0) {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            db_conn('core');
            $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
            $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
            $Accounts = "\n\t\t\t\t<select name='accounts[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            while ($ad = pg_fetch_array($Ri)) {
                if (isb($ad['accid'])) {
                    continue;
                }
                if ($ad['accid'] == $stkd['account']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Accounts .= "<option value='{$ad['accid']}' {$sel}>{$ad['accname']}</option>";
            }
            $Accounts .= "</select>";
            $sernos = "";
            $stkd['unitcost'] = sprint($stkd['unitcost']);
            $stkd['amt'] = sprint($stkd['amt']);
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'>";
            $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'>";
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            //print "fo";
            # Put in product
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whids[]' value='{$stkd['whid']}'></td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$stkd['description']}'> {$sernos}</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='hidden' name='disc[]' value='{$stkd['disc']}'><input type='hidden' name='discp[]' value='{$stkd['discp']}'></td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$stkd['amt']}'> " . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
        } else {
            # keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            # get selected stock in this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            # get warehouse name
            db_conn("exten");
            $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
            $whRslt = db_exec($sql);
            $wh = pg_fetch_array($whRslt);
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            $stkd['unitcost'] = sprint($stkd['unitcost']);
            $stkd['amt'] = sprint($stkd['amt']);
            # put in product
            $products .= "\n\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$stkd['whid']}'>{$wh['whname']}</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'></td>\n\t\t\t\t\t<td><input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'></td>\n\t\t\t\t\t<td><input type='text' size='4' name='disc[]' value='{$stkd['disc']}'> OR <input type='text' size='4' name='discp[]' value='{$stkd['discp']}' maxlength=5>%</td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$stkd['amt']}'> " . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
        }
    }
    # Look above(remprod keys)
    $keyy = $key;
    # look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S" && isset($cust['pricelist'])) {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$stk['whid']}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # get price from price list if it is set
                if (isset($cust['pricelist'])) {
                    # get selected stock in this warehouse
                    db_conn("exten");
                    $sql = "SELECT price FROM plist_prices WHERE listid = '{$cust['pricelist']}' AND stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'";
                    $plRslt = db_exec($sql);
                    if (pg_numrows($plRslt) > 0) {
                        $pl = pg_fetch_array($plRslt);
                        $stk['selamt'] = $pl['price'];
                    }
                }
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class='err'>Warning :  Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                /* -- End Some Checks -- */
                # Calculate the Discount discount
                if ($discs[$key] < 1) {
                    if ($discps[$key] > 0) {
                        $discs[$key] = round($discps[$key] / 100 * $stk['selamt'], 2);
                    }
                } else {
                    $discps[$key] = round($discs[$key] * 100 / $stk['selamt'], 2);
                }
                # Calculate amount
                $amt[$key] = $qtyss[$key] * ($stk['selamt'] - $discs[$key]);
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($stk['vatcode'] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $stk['selamt'] = sprint($stk['selamt']);
                $amt[$key] = sprint($amt[$key]);
                # put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='8' name='unitcost[]'  value='{$stk['selamt']}'></td>\n\t\t\t\t\t\t<td><input type='text' size='4' name='disc[]' value='{$discs[$key]}'> OR <input type='text' size='4' name='discp[]' value='{$discps[$key]}' maxlength='5'>%</td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } elseif (isset($accountss[$key]) && $accountss[$key] != "0" && isset($cust['pricelist'])) {
                db_conn('core');
                $Sl = "SELECT * FROM accounts WHERE accid='{$accountss[$key]}'";
                $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                if (pg_num_rows($Ri) < 1) {
                    return "invalid.";
                }
                $ad = pg_fetch_array($Ri);
                # Calculate amount
                $amt[$key] = sprint($qtyss[$key] * $unitcosts[$key]);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'>";
                $unitcosts[$key] = sprint($unitcosts[$key]);
                $amt[$key] = sprint($amt[$key]);
                # Check permissions
                $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$unitcosts[$key]}'>";
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vatcodess[$key] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                # Put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='2'>{$ad['accname']}<input type='hidden' name='accounts[]' value='{$accountss[$key]}'><input type='hidden' name='whids[]' value='0'></td>\n\t\t\t\t\t\t<td>{$Vatcodes}<input type='hidden' name='stkids[]' value='0'></td>\n\t\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$descriptionss[$key]}'></td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='disc[]' value='0'><input type='hidden' name='discp[]' value='0'></td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } else {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                if (!isset($addnon)) {
                    if (isset($filter_store) and $filter_store != "0") {
                        # get warehouse name
                        db_conn("exten");
                        $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                        $whRslt = db_exec($sql);
                        $wh = pg_fetch_array($whRslt);
                    }
                    if (isset($des) and $des != "") {
                        $len = strlen($des);
                        if ($des == "Show All") {
                            $Wh = "";
                            $des = "";
                        } else {
                            $Wh = "AND (lower(substr(stkdes,1,'{$len}'))=lower('{$des}') OR lower(substr(stkcod,1,'{$len}'))=lower('{$des}'))";
                        }
                    } else {
                        $Wh = "AND FALSE";
                        $des = "";
                    }
                    $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
                    if (isset($check_setting) and $check_setting == "yes") {
                        if (isset($filter_class) and $filter_class != "0") {
                            $Wh .= " AND prdcls = '{$filter_class}'";
                        }
                        if (isset($filter_cat) and $filter_cat != "0") {
                            $Wh .= " AND catid = '{$filter_cat}'";
                        }
                    }
                    if (isset($filter_store) and $filter_store != "0") {
                        $Wh .= " AND whid = '{$filter_store}'";
                    }
                    # get stock on this warehouse
                    db_connect();
                    $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
                    $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                    if (pg_numrows($stkRslt) < 1) {
                        $error .= "<li class='err'>There are no stock items in the selected store.</li>";
                        continue;
                    }
                    if ($sel_frm == "stkcod") {
                        $cods = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
                        $cods .= "<option value='-S' disabled selected>Select Number</option>";
                        $count = 0;
                        while ($stk = pg_fetch_array($stkRslt)) {
                            $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                        }
                        $cods .= "</select> ";
                        $descs = "";
                    } else {
                        $descs = "<select style='width:250px' name='stkidss[]' onChange='javascript:document.form.submit();'>";
                        $descs .= "<option value='-S' disabled selected>Select Description</option>";
                        $count = 0;
                        while ($stk = pg_fetch_array($stkRslt)) {
                            $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                        }
                        $descs .= "</select> ";
                        $cods = "";
                    }
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vd['del'] == "Yes") {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    # put in drop down and warehouse
                    $products .= "\n\t\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$filter_store}'></td>\n\t\t\t\t\t\t\t<td>{$cods}<input type='hidden' name='vatcodess' value='0'></td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]'  value='1'></td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td><input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='amts[]' value='0.00'>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t</tr>";
                } else {
                    db_conn('core');
                    $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                    $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                    $Accounts = "\n\t\t\t\t\t\t<select name='accountss[]'>\n\t\t\t\t\t\t\t<option value='0'>Select Account</option>";
                    while ($ad = pg_fetch_array($Ri)) {
                        if (isb($ad['accid'])) {
                            continue;
                        }
                        $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                    }
                    $Accounts .= "</select>";
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vd['del'] == "Yes") {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    $products .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whidss[]' value='{$FIRST_WH}'></td>\n\t\t\t\t\t\t\t<inpu type='hidden' name='stkidss[]' value=''>\n\t\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='discs[]' value='0'><input type='hidden' name='discps[]' value='0' ></td>\n\t\t\t\t\t\t</tr>";
                }
            }
        }
    } else {
        if (!isset($addnon) && !isset($upBtn)) {
            if (isset($filter_store) and $filter_store != "0") {
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
            }
            if (isset($des) and $des != "") {
                $len = strlen($des);
                if ($des == "Show All") {
                    $Wh = "";
                    $des = "";
                } else {
                    $Wh = "AND (lower(substr(stkdes,1,'{$len}'))=lower('{$des}') OR lower(substr(stkcod,1,'{$len}'))=lower('{$des}'))";
                }
            } else {
                $Wh = "AND FALSE";
                $des = "";
            }
            $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
            if (isset($check_setting) and $check_setting == "yes") {
                if (isset($filter_class) and $filter_class != "0") {
                    $Wh .= " AND prdcls = '{$filter_class}'";
                }
                if (isset($filter_cat) and $filter_cat != "0") {
                    $Wh .= " AND catid = '{$filter_cat}'";
                }
            }
            if (isset($filter_store) and $filter_store != "0") {
                $Wh .= " AND whid = '{$filter_store}'";
            }
            # get stock on this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY stkcod ASC";
            $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
            if (pg_numrows($stkRslt) < 1) {
                if (!isset($err)) {
                    $err = "";
                }
                $err .= "<li>There are no stock items in the selected warehouse.</li>";
            }
            $stks = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
            $stks .= "<option value='-S' disabled selected>Select Number</option>";
            $count = 0;
            while ($stk = pg_fetch_array($stkRslt)) {
                $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
            }
            $stks .= "</select> ";
            $products .= "\n\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t<input type='hidden' name='vatcodess[]' value=''>\n\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$filter_store}'></td>\n\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td> </td>\n\t\t\t\t\t<td><input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t</tr>";
        } else {
            if (isset($addnon)) {
                db_conn('core');
                $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                $Accounts = "\n\t\t\t\t<select name='accountss[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
                while ($ad = pg_fetch_array($Ri)) {
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                }
                $Accounts .= "</select>";
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vd['del'] == "Yes") {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whidss[]' value='{$FIRST_WH}'></td>\n\t\t\t\t\t<inpu type='hidden' name='stkidss[]' value=''>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td><input type='hidden' name='discs[]' value='0'><input type='hidden' name='discps[]' value='0'></td>\n\t\t\t\t</tr>";
            }
        }
    }
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Calculate subtotal
    $SUBTOT = sprint($quo['subtot']);
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($quo['subtot']);
    $VAT = sprint($quo['vat']);
    $TOTAL = sprint($quo['total']);
    /* --- End Some calculations --- */
    /*--- Start checks --- */
    # check only if the customer is selected
    if (isset($cusnum) && $cusnum != "-S") {
        #check againg credit limit
        if ($cust['credlimit'] != 0 && $TOTAL + $cust['balance'] > $cust['credlimit']) {
            $error .= "<li class='err'>Warning : Customers Credit limit of <b>" . CUR . " {$cust['credlimit']}</b> has been exceeded</li>";
        }
        $avcred = $cust['credlimit'] - $cust['balance'];
    } else {
        $avcred = "0.00";
    }
    $quo['delvat'] += 0;
    if ($quo['delvat'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $quo['delvat'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "\n\t\t<select name='delvat'>\n\t\t\t<option value='0'>Select</option>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $quo['delvat']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    // Which display method was selected
    if (isset($sel_frm) && $sel_frm == "stkdes") {
        $sel_frm_cod = "";
        $sel_frm_des = "checked";
    } else {
        $sel_frm_cod = "checked";
        $sel_frm_des = "";
    }
    $sel = "";
    if (isset($lead) and strlen($lead) > 0) {
        $sel = "checked=yes";
    }
    /*--- Start checks --- */
    /* -- Final Layout --No VAT<input type=radio size=7 name=chrgvat value='nov' $chno> */
    $details_begin = "\n\t\t<center>\n\t\t<h3>New Quote</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='quoid' value='{$quoid}'>\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<div id='cust_selection'>";
    if (empty($ajax_err) && (isset($cusnum) || AJAX)) {
        if (isset($cusnum)) {
            $OTS_OPT = onthespot_encode(SELF, "cust_selection", "deptid={$quo['deptid']}&letters={$letters}&cusnum={$cusnum}&quoid={$quoid}");
            $custedit = "\n\t\t\t\t<td nowrap>\n\t\t\t\t\t<a href='javascript: popupSized(\"cust-edit.php?cusnum={$cusnum}&onthespot={$OTS_OPT}\", \"edit_cust\", 700, 630);'>Edit Customer Details</a>\n\t\t\t\t</td>";
        } else {
            $custedit = "";
        }
        $optional_filter_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
        if (isset($optional_filter_setting) and $optional_filter_setting == "yes") {
            db_connect();
            $catsql = "SELECT catid, cat, catcod FROM stockcat WHERE div = '" . USER_DIV . "' ORDER BY cat ASC";
            $catRslt = db_exec($catsql);
            if (pg_numrows($catRslt) < 1) {
                $cat_drop = "<input type='hidden' name='filter_cat' value='0'>";
            } else {
                $cat_drop = "<select name='filter_cat'>";
                $cat_drop .= "<option value='0'>All Categories</option>";
                while ($cat = pg_fetch_array($catRslt)) {
                    if (isset($filter_cat) and $filter_cat == $cat['catid']) {
                        $cat_drop .= "<option value='{$cat['catid']}' selected>({$cat['catcod']}) {$cat['cat']}</option>";
                    } else {
                        $cat_drop .= "<option value='{$cat['catid']}'>({$cat['catcod']}) {$cat['cat']}</option>";
                    }
                }
                $cat_drop .= "</select>";
            }
            # Select classification
            $classsql = "SELECT * FROM stockclass WHERE div = '" . USER_DIV . "' ORDER BY classname ASC";
            $clasRslt = db_exec($classsql);
            if (pg_numrows($clasRslt) < 1) {
                $class_drop = "<input type='hidden' name='filter_class' value='0'>";
            } else {
                $class_drop = "<select name='filter_class' style='width: 167'>";
                $class_drop .= "<option value='0'>All Classifications</option>";
                while ($clas = pg_fetch_array($clasRslt)) {
                    if (isset($filter_class) and $filter_class == $clas['clasid']) {
                        $class_drop .= "<option value='{$clas['clasid']}' selected>{$clas['classname']}</option>";
                    } else {
                        $class_drop .= "<option value='{$clas['clasid']}'>{$clas['classname']}</option>";
                    }
                }
                $class_drop .= "</select>";
            }
            $display_optional_filters = "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Category</td>\n\t\t\t\t\t<td>{$cat_drop}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Classification</td>\n\t\t\t\t\t<td>{$class_drop}</td>\n\t\t\t\t</tr>";
        }
        db_conn("exten");
        $sql = "SELECT whid, whname, whno FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
        $whRslt = db_exec($sql);
        if (pg_numrows($whRslt) < 1) {
            $store_drop = "<input type='hidden' name='filter_store' value='0'>";
        } else {
            if (!isset($filter_store)) {
                # check if setting exists
                db_connect();
                $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
                $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
                if (pg_numrows($Rslt) > 0) {
                    $set = pg_fetch_array($Rslt);
                    $filter_store = $set['value'];
                }
            }
            $store_drop = "<select name='filter_store'>";
            $store_drop .= "<option value='0'>All Stores</option>";
            while ($wh = pg_fetch_array($whRslt)) {
                if (isset($filter_store) and $filter_store == $wh['whid']) {
                    $store_drop .= "<option value='{$wh['whid']}' selected>({$wh['whno']}) {$wh['whname']}</option>";
                } else {
                    $store_drop .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
                }
            }
            $store_drop .= "</select>";
        }
        $ajaxOut = "\n\t\t\t<input type='hidden' name='letters' value='{$letters}'>\n\t\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Account No.</td>\n\t\t\t\t\t<td valign='center'>{$cust['accno']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t<td valign='center'>{$customers}</td>\n\t\t\t\t\t{$custedit}\n\t\t\t\t\t<td><input type='button' onClick=\"javascript:document.location=('pos-quote-new.php')\" value='Quote Non Customer'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t\t<td valign='center'>" . nl2br($cust['addr1']) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer Req number</td>\n\t\t\t\t\t<td valign='center'><input type='text' size='10' name='cordno' value='{$quo['cordno']}'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer VAT Number</td>\n\t\t\t\t\t<td>{$cust['vatnum']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Next Contact Date</td>\n\t\t\t\t\t<td valign='center'>" . mkDateSelect("ncdate", $ncdate_year, $ncdate_month, $ncdate_day) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Add As Lead</td>\n\t\t\t\t\t<td valign='center'><input type='checkbox' name='lead' {$sel} value='yes'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Using</td>\n\t\t\t\t\t<td>Stock Code<input type='radio' name='sel_frm' value='stkcod' onChange='javascript:document.form.submit();' {$sel_frm_cod}><br>Stock Description<input type='radio' name='sel_frm' value='stkdes' onChange='javascript:document.form.submit();' {$sel_frm_des}></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Additional Filters</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Store</td>\n\t\t\t\t\t<td>{$store_drop}</td>\n\t\t\t\t</tr>\n\t\t\t\t{$display_optional_filters}\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Stock Filter</td>\n\t\t\t\t\t<td><input type='text' size='13' name='des' value='{$des}'> <input type='submit' value='Search'> <input type='submit' name='des' value='Show All'></td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    } else {
        db_conn("exten");
        $sql = "SELECT * FROM departments WHERE div = '" . USER_DIV . "' ORDER BY deptname ASC";
        $deptRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($deptRslt) < 1) {
            return "<li class='err'>There are no Departments found in Cubit.</li>";
        } else {
            $depts = "<select id='deptid'>";
            $depts .= "<option value='0'>All Departments</option>";
            while ($dept = pg_fetch_array($deptRslt)) {
                $depts .= "<option value='{$dept['deptid']}'>{$dept['deptname']}</option>";
            }
            $depts .= "</select>";
        }
        if (!isset($ajax_err)) {
            $ajax_err = "";
        }
        $ajaxOut = "\n\t\t\t<script>\n\t\t\t\tfunction updateCustSelection() {\n\t\t\t\t\tdeptid = getObject('deptid').value;\n\t\t\t\t\tletters = getObject('letters').value;\n\t\t\t\t\tajaxRequest('" . SELF . "', 'cust_selection', AJAX_SET, 'letters='+letters+'&deptid='+deptid+'&quoid={$quoid}');\n\t\t\t\t}\n\t\t\t</script>\n\t\t\t{$ajax_err}\n\t\t\t<table " . TMPL_tblDflts . " width='400'>\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>New Quote</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>" . REQ . "Select Department</td>\n\t\t\t\t<td valign='center'>{$depts}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>First Letters of customer</td>\n\t\t\t\t<td valign='center'><input type='text' size='5' id='letters' maxlength='5'></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t<td valign='center'><input type='button' value='Update &raquo' onClick='updateCustSelection();'></td>\n\t\t\t</tr>\n\t\t</table>";
    }
    $avcred = sprint($avcred);
    if (isset($addprodBtn) or isset($addnon) or isset($saveBtn) or isset($upBtn) or isset($doneBtn) or isset($donePrnt) or isset($des)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $details_end = "\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Quote Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Quote No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$quo['quoid']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Order No.</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='ordno' value='{$quo['ordno']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' size='7' name='chrgvat' value='inc' {$chin}> No<input type='radio' size='7' name='chrgvat' value='exc' {$chex}> </td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$termssel} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t\t<td valign='center'>{$salesps}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Quote Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("quote", $quote_year, $quote_month, $quote_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Available Credit</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$avcred}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='traddisc' value='{$quo['traddisc']}'>%</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='7' name='delchrg' value='{$quo['delchrg']}'>{$Vatcodes}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td rowspan='2'>" . mkQuickLinks(ql("quote-view.php", "View Quotes"), ql("customers-new.php", "New Customer")) . "\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<th width='25%'>Comments</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'>\n\t\t\t\t\t\t\t\t<textarea name='comm' rows='4' cols='20'>{$quo['comm']}</textarea>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " <input type='hidden' name='SUBTOT' value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$quo['discount']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$quo['delivery']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='center' colspan='2' nowrap><input name='addprodBtn' type='submit' value='Add Product'> | <input name='addnon' type='submit' value='Add Non stock Product'> | <input type='submit' name='saveBtn' value='Save'> | <input type='submit' name='upBtn' value='Update'>{$done}</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<a name='bottom'>\n\t\t</form>\n\t\t</center>\n\t\t{$jump_bot}";
    if (AJAX) {
        return $ajaxOut;
    } else {
        return "{$details_begin}{$ajaxOut}{$details_end}";
    }
}
コード例 #22
0
function details($_GET)
{
    # get vars
    extract($_GET);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($purid, "num", 1, 20, "Invalid purchase number.");
    $v->isOk($prd, "num", 1, 20, "Invalid period Database number.");
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get purchase info
    db_conn($prd);
    $sql = "SELECT * FROM purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $purRslt = db_exec($sql) or errDie("Unable to get purchase information");
    if (pg_numrows($purRslt) < 1) {
        return "<i class='err'>Purchase Not Found </i>";
    }
    $pur = pg_fetch_array($purRslt);
    db_connect();
    $get_codes = "SELECT * FROM suppstock WHERE suppid = '{$pur['supid']}' ORDER BY stkid";
    $run_codes = db_exec($get_codes) or errDie("Unable to get supplier stock code information");
    if (pg_numrows($run_codes) > 0) {
        while ($codarr = pg_fetch_array($run_codes)) {
            if (strlen($codarr['stkcod']) > 0) {
                $stockcodes[$codarr['stkid']]['stkcod'] = $codarr['stkcod'];
            }
            if (strlen($codarr['stkdes']) > 0) {
                $stockcodes[$codarr['stkid']]['stkdes'] = $codarr['stkdes'];
            }
        }
    }
    /* --- Start Products Display --- */
    # Products layout
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>DISCOUNT</th>\n\t\t\t\t<th>DELIVERY DATE</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t<tr>";
    # get selected stock in this purchase
    db_conn($prd);
    $sql = "SELECT * FROM pur_items  WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        if (isset($stockcodes[$stk['stkid']]['stkcod'])) {
            $stk['stkcod'] = $stockcodes[$stk['stkid']]['stkcod'];
        }
        if (isset($stockcodes[$stk['stkid']]['stkdes'])) {
            $stk['stkdes'] = $stockcodes[$stk['stkid']]['stkdes'];
        }
        # format date
        list($dyear, $dmon, $dday) = explode("-", $stkd['ddate']);
        if ($stkd['account'] > 0) {
            $stk['stkdes'] = $stkd['description'];
            $stk['stkid'] = "";
            $stk['stkcod'] = "";
        }
        # put in product
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t<td>{$stk['stkcod']}</td>\n\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t<td align='right'>" . sprint3($stkd['qty']) . "</td>\n\t\t\t\t<td align='right' nowrap>" . CUR . " " . sprint($stkd['unitcost']) . "</td>\n\t\t\t\t<td align='right'>{$stkd['udiscount']}</td>\n\t\t\t\t<td align='center'>{$dday}-{$dmon}-{$dyear}</td>\n\t\t\t\t<td align='right' nowrap>" . CUR . " {$stkd['amt']}</td>\n\t\t\t</tr>";
    }
    $products .= "</table>";
    /*
    # Get supplier
    db_connect();
    $sql = "SELECT supname,supno FROM suppliers WHERE supid = '$pur[supid]' AND div = '".USER_DIV."'";
    $supRslt = db_exec($sql);
    if(pg_numrows($supRslt) < 1){
    	$sup['supname'] = "<li class=err>Supplier not found";
    }else{
    	$sup = pg_fetch_array($supRslt);
    }
    */
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$pur['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<i class='err'>Not Found</i>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    /* --- Start Some calculations --- */
    # Get subtotal
    $SUBTOT = sprint($pur['subtot']);
    # Get Total
    $TOTAL = sprint($pur['total']);
    # Get vat
    $VAT = sprint($pur['vat']);
    /* --- End Some calculations --- */
    # format date
    list($pyear, $pmon, $pday) = explode("-", $pur['pdate']);
    /* -- Final Layout -- */
    $details = "\n\t\t<center>\n\t\t<h3>Received Purchase Details</h3>\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Supplier Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Supplier</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['supname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Account number</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['supno']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Supplier Address</td>\n\t\t\t\t\t\t\t<td valign='center'>" . nl2br($pur['supaddr']) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Purchase Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Purchase No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['purnum']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Order No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['ordernum']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Approved By</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['appname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Approved Date</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['appdate']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Ref No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['refno']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Supplier Inv</td>\n\t\t\t\t\t\t\t<td>{$pur['supinv']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['terms']} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Date</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pday}-{$pmon}-{$pyear}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['vatinc']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\n\t\t\t\t\t\t\t<td valign='center' nowrap>" . CUR . " {$pur['shipchrg']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th width='50%'>Quick Links</th>\n\t\t\t\t\t\t\t<th width='45%'>Remarks</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='15%'><br></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='purchase-new.php'>New Purchase</a></td>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'>" . nl2br($pur['remarks']) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><a href='purchase-view-prd.php'>View Received Purchases</a></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['subtot']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['shipping']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT @ " . TAX_VAT . " %</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['vat']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$pur['total']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t</center>";
    return $details;
}
コード例 #23
0
function details($_POST, $error = "")
{
    extract($_POST);
    # validate input
    include "libs/validate.lib.php";
    $v = new validate();
    if (isset($calloutid)) {
        $v->isOk($calloutid, "num", 1, 20, "Invalid callout document number.");
    }
    if (isset($deptid)) {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
    }
    if (isset($letters)) {
        $v->isOk($letters, "string", 0, 5, "Invalid First 3 Letters.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>{$e['msg']}</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    if (!isset($deptid)) {
        $deptid = 0;
    } else {
        if (isset($calloutid)) {
            db_conn("cubit");
            $sql = "UPDATE callout_docs SET deptid='{$deptid}' WHERE calloutid='{$calloutid}' AND deptid<>'{$deptid}'";
            db_exec($sql) or errDie("Error updating invoice department.");
        }
    }
    if (!isset($calloutid)) {
        db_conn("exten");
        #only create dummy if needed resources are available ...
        $get_cpeople = "SELECT * FROM calloutpeople";
        $run_cpeople = db_exec($get_cpeople) or errDie("Unable to get call out person information");
        if (pg_numrows($run_cpeople) < 1) {
            return "\n\t\t\t\t<li class='err'>No Call out People Found. Please add at least one.</li>\n\t\t\t\t<br>\n\t\t\t\t<table border=0 cellpadding='2' cellspacing='1' width=15%>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Quick Links</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><a href='toms/calloutp-add.php'>Add Call Out Person</a></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><a href='main.php'>Main Menu</a></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>";
        }
        db_connect();
        $calloutid = create_dummy($deptid);
    }
    if (!isset($stkerr)) {
        $stkerr = "0,0";
    }
    if (!isset($done)) {
        $done = "";
    }
    # Get callout document info
    db_connect();
    $sql = "SELECT * FROM callout_docs WHERE calloutid = '{$calloutid}' AND div = '" . USER_DIV . "'";
    $docRslt = db_exec($sql) or errDie("Unable to get callout document information");
    if (pg_numrows($docRslt) < 1) {
        return "<li class='err'>Callout Document Not Found</li>";
    }
    $doc = pg_fetch_array($docRslt);
    # check if callout document has been printed
    if ($doc['accepted'] == "y") {
        $error = "<li class='err'> Error : Callout Document number <b>{$calloutid}</b> has already been printed.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$doc['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected customer info
    if (isset($letters)) {
        db_connect();
        $sql = "SELECT * FROM customers WHERE cusnum = '{$doc['cusnum']}' AND div = '" . USER_DIV . "'";
        $custRslt = db_exec($sql) or errDie("Unable to view customer");
        if (pg_numrows($custRslt) < 1) {
            db_connect();
            if ($inv['deptid'] == 0) {
                $searchdept = "";
            } else {
                $searchdept = "deptid = '{$doc['deptid']}' AND ";
            }
            # Query server for customer info
            $sql = "SELECT cusnum,cusname,surname FROM customers WHERE {$searchdept} location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND div = '" . USER_DIV . "' ORDER BY surname";
            $custRslt = db_exec($sql) or errDie("Unable to view customers");
            if (pg_numrows($custRslt) < 1) {
                $ajax_err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
                //return view_err($_POST, $err);
            } else {
                $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
                $customers .= "<option value='-S' selected>Select Customer</option>";
                while ($cust = pg_fetch_array($custRslt)) {
                    $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']}</option>";
                }
                $customers .= "</select>";
            }
            # take care of the unset vars
            $cust['addr1'] = "";
            $cust['cusnum'] = "";
            $cust['accno'] = "";
        } else {
            $cust = pg_fetch_array($custRslt);
            # moarn if customer account has been blocked
            if ($cust['blocked'] == 'yes') {
                return "<li class='err'>Error : Selected customer account has been blocked.</li>";
            }
            $customers = "<input type='hidden' name='cusnum' value='{$cust['cusnum']}'>{$cust['cusname']}  {$cust['surname']}";
            $cusnum = $cust['cusnum'];
        }
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    $whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # get callout people
    db_conn("exten");
    $sql = "SELECT * FROM calloutpeople WHERE div = '" . USER_DIV . "' ORDER BY calloutp ASC";
    $run_sql = db_exec($sql) or errDie("Unable to get call out people from system.");
    if (pg_numrows($run_sql) < 1) {
        return "<li class='err'> There were no Call Out People found.</li>";
    } else {
        $calloutps = "<select name='calloutp'>";
        while ($arr = pg_fetch_array($run_sql)) {
            if ($doc['calloutp'] == $arr['calloutp']) {
                $calloutps .= "<option value='{$arr['calloutp']}' selected>{$arr['calloutp']}</option>";
            } else {
                $calloutps .= "<option value='{$arr['calloutp']}'>{$arr['calloutp']}</option>";
            }
        }
        $calloutps .= "</select>";
    }
    # days drop downs
    $days = array("0" => "0", "7" => "7", "14" => "14", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    # format date
    list($call_year, $call_month, $call_day) = explode("-", $doc['odate']);
    /* --- End Drop Downs --- */
    // get the ID of the first warehouse
    db_conn("exten");
    $sql = "SELECT whid FROM warehouses ORDER BY whid ASC LIMIT 1";
    $rslt = db_exec($sql) or errDie("Error reading warehouses (FWH).");
    if (pg_num_rows($rslt) > 0) {
        $FIRST_WH = pg_fetch_result($rslt, 0, 0);
    } else {
        $FIRST_WH = "-S";
    }
    /* --- Start Products Display --- */
    # select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>ITEM PRICE</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t<tr>";
    # get selected stock in this callout document
    db_connect();
    $sql = "SELECT * FROM cubit.callout_docs_items  WHERE calloutid = '{$calloutid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $stkd['account'] += 0;
        $stkd['unitcost'] = sprint($stkd['unitcost']);
        if ($stkd['account'] != 0) {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            db_conn('core');
            $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
            $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
            $Accounts = "\n\t\t\t\t<select name='accounts[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            while ($ad = pg_fetch_array($Ri)) {
                if (isb($ad['accid'])) {
                    continue;
                }
                if ($ad['accid'] == $stkd['account']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Accounts .= "<option value='{$ad['accid']}' {$sel}>{$ad['accname']}</option>";
            }
            $Accounts .= "</select>";
            $sernos = "";
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'>";
            $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'>";
            # Put in product
            $products .= "\n\t\t\t\t<input type='hidden' name='whids[]' value='{$stkd['whid']}'>\n\t\t\t\t<input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>\n\t\t\t\t<input type='hidden' name='SCROLL' value='yes'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$stkd['description']}'> {$sernos}</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'></td>\n\t\t\t\t</tr>";
            $key++;
        } else {
            # keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            # get warehouse name
            db_conn("exten");
            $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
            $whRslt = db_exec($sql);
            $wh = pg_fetch_array($whRslt);
            # get selected stock in this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            # put in product
            $products .= "\n\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t<input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>\n\t\t\t\t<input type='hidden' name='whids[]' value='{$stkd['whid']}'>\n\t\t\t\t<input type='hidden' name='SCROLL' value='yes'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t\t<td><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'></td>\n\t\t\t\t\t<td><input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'></td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'></td>\n\t\t\t\t</tr>";
            $key++;
        }
    }
    # Look above(remprod keys)
    $keyy = $key;
    # look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S" && isset($cust['pricelist'])) {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # get price from price list if it is set
                if (isset($cust['pricelist'])) {
                    # get selected stock in this warehouse
                    db_conn("exten");
                    $sql = "SELECT price FROM plist_prices WHERE listid = '{$cust['pricelist']}' AND stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'";
                    $plRslt = db_exec($sql);
                    if (pg_numrows($plRslt) > 0) {
                        $pl = pg_fetch_array($plRslt);
                        $stk['selamt'] = $pl['price'];
                    }
                }
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class=err>Warning :  Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                /* -- End Some Checks -- */
                # Calculate amount
                $amt[$key] = $qtyss[$key] * $stk['selamt'];
                $stk['selamt'] = sprint($stk['selamt']);
                # put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='8' name='unitcost[]'  value='{$stk['selamt']}'></td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } elseif (isset($accountss[$key]) && $accountss[$key] != "0" && isset($cust['pricelist'])) {
                db_conn('core');
                $Sl = "SELECT * FROM accounts WHERE accid='{$accountss[$key]}'";
                $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                if (pg_num_rows($Ri) < 1) {
                    return "invalid.";
                }
                $ad = pg_fetch_array($Ri);
                # Calculate amount
                $amt[$key] = sprint($qtyss[$key] * $unitcosts[$key]);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'>";
                # Check permissions
                $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$unitcosts[$key]}'>";
                # Put in selected warehouse and stock
                $products .= "\n\t \t\t\t\t<input type='hidden' name='accounts[]' value='{$accountss[$key]}'>\n\t \t\t\t\t<input type='hidden' name='whids[]' value='0'>\n\t \t\t\t\t<input type='hidden' name='stkids[]' value='0'>\n\t \t\t\t\t<input type='hidden' name='disc[]' value='0'>\n\t \t\t\t\t<input type='hidden' name='discp[]' value='0'>\n\t \t\t\t\t<tr class='" . bg_class() . "'>\n\t \t\t\t\t\t<td colspan='2'>{$ad['accname']}</td>\n\t \t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$descriptionss[$key]}'></td>\n\t \t\t\t\t\t<td>{$qtyin}</td>\n\t \t\t\t\t\t<td>{$viewcost}</td>\n\t \t\t\t\t\t<td><input type='hidden' name='amt[]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t \t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t \t\t\t\t</tr>";
                $keyy++;
            } else {
                if (!isset($diffwhBtn)) {
                    # skip if not selected
                    if ($whid == "-S") {
                        continue;
                    }
                    if (!isset($addnon)) {
                        # get warehouse name
                        db_conn("exten");
                        $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                        $whRslt = db_exec($sql);
                        $wh = pg_fetch_array($whRslt);
                        # get stock on this warehouse
                        db_connect();
                        $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND blocked = 'n' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                        $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                        if (pg_numrows($stkRslt) < 1) {
                            $error .= "<li class='err'>There are no stock items in the selected store.</li>";
                            continue;
                        }
                        if ($sel_frm == "stkcod") {
                            $cods = "\n\t\t\t\t\t\t\t\t<select class='width:15' name='stkidss[]' onChange='javascript:document.form.submit();'>\n\t\t\t\t\t\t\t\t\t<option value='-S' disabled selected>Select Number</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $cods .= "</select> ";
                            $descs = "";
                        } else {
                            $descs = "<select class='width:15' name='stkidss[]' onChange='javascript:document.form.submit();'>";
                            $descs .= "<option value='-S' disabled selected>Select Description</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $descs .= "</select> ";
                            $cods = "";
                        }
                        # put in drop down and warehouse
                        $products .= "\n\t\t\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t\t\t<td>{$cods}</td>\n\t\t\t\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]'  value='1'></td>\n\t\t\t\t\t\t\t\t<td><input type='hidden' name='amts[]' value='0.00'></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t</tr>";
                    }
                }
            }
        }
    } else {
        if (!(isset($diffwhBtn) || isset($addnon))) {
            # check if setting exists
            db_connect();
            $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
            $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
            if (pg_numrows($Rslt) > 0) {
                $set = pg_fetch_array($Rslt);
                $whid = $set['value'];
                if (isset($wtd) && $wtd != 0) {
                    $whid = $wtd;
                }
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # get stock on this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND blocked = 'n' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                if (pg_numrows($stkRslt) < 1) {
                    if (!isset($err)) {
                        $err = "";
                    }
                    $err .= "<li>There are no stock items in the selected warehouse.</li>";
                }
                $stks = "\n\t\t\t\t\t<select class='width:15' name='stkidss[]' onChange='javascript:document.form.submit();'>\n\t\t\t\t\t\t<option value='-S' disabled selected>Select Number</option>";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $stks .= "</select> ";
                $products .= "\n\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>";
            } else {
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$whs}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>";
            }
        } else {
            if (isset($addnon)) {
                db_conn('core');
                $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                $Accounts = "\n\t\t\t\t<select name='accountss[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
                while ($ad = pg_fetch_array($Ri)) {
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                }
                $Accounts .= "</select>";
                $products .= "\n\t\t\t\t<input type='hidden' name='whidss[]' value='{$FIRST_WH}'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t</tr>";
            }
        }
    }
    /* -- start Listeners -- */
    if (isset($diffwhBtn)) {
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$whs}</td>\n\t\t\t\t<td></td>\n\t\t\t\t<td></td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t<td></td>\n\t\t\t</tr>";
    }
    /* -- End Listeners -- */
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Calculate subtotal
    $SUBTOT = sprint($doc['subtot']);
    # Calculate subtotal
    $SUBTOT = sprint($doc['subtot']);
    /* --- End Some calculations --- */
    /*--- Start checks --- */
    // Which display method was selected
    if (isset($sel_frm) && $sel_frm == "stkdes") {
        $sel_frm_cod = "";
        $sel_frm_des = "checked";
    } else {
        $sel_frm_cod = "checked";
        $sel_frm_des = "";
    }
    /*--- Start checks --- */
    $details_begin = "\n\t\t<center>\n\t\t<h3>New CallOut </h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='calloutid' value='{$calloutid}'>\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n \t\t\t<tr>\n \t\t\t\t<td valign='top'>\n \t\t\t\t\t<div id='cust_selection'>";
    if (empty($ajax_err) && (isset($cusnum) || AJAX)) {
        if (isset($cusnum)) {
            $OTS_OPT = onthespot_encode(SELF, "cust_selection", "deptid={$doc['deptid']}&letters={$letters}&cusnum={$cusnum}&calloutid={$calloutid}");
            $custedit = "\n\t\t\t\t<td nowrap>\n\t\t\t\t\t<a href='javascript: popupSized(\"cust-edit.php?cusnum={$cusnum}&onthespot={$OTS_OPT}\", \"edit_cust\", 700, 630);'>\n\t\t\t\t\t\tEdit Customer Details\n\t\t\t\t\t</a>\n\t\t\t\t</td>";
        } else {
            $custedit = "";
        }
        $ajaxOut = "\n\t\t\t<input type='hidden' name='letters' value='{$letters}'>\n\t\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t<td valign='center'>{$customers}</td>\n\t\t\t\t\t{$custedit}\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t\t<td valign='center'>" . nl2br($cust['addr1']) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer VAT Number</td>\n\t\t\t\t\t<td>{$cust['vatnum']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Using</td>\n\t\t\t\t\t<td>Stock Code<input type='radio' name='sel_frm' value='stkcod' onChange='javascript:document.form.submit();' {$sel_frm_cod}><br>Stock Description<input type='radio' name='sel_frm' value='stkdes' onChange='javascript:document.form.submit();' {$sel_frm_des}></td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    } else {
        db_conn("exten");
        $sql = "SELECT * FROM departments WHERE div = '" . USER_DIV . "' ORDER BY deptname ASC";
        $deptRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($deptRslt) < 1) {
            return "<li class='err'>There are no Departments found in Cubit.";
        } else {
            $depts = "<select id='deptid'>";
            $depts .= "<option value='0'>All Departments</option>";
            while ($dept = pg_fetch_array($deptRslt)) {
                $depts .= "<option value='{$dept['deptid']}'>{$dept['deptname']}</option>";
            }
            $depts .= "</select>";
        }
        if (!isset($ajax_err)) {
            $ajax_err = "";
        }
        $ajaxOut = "\n\t\t\t<script>\n\t\t\t\tfunction updateCustSelection() {\n\t\t\t\t\tdeptid = getObject('deptid').value;\n\t\t\t\t\tletters = getObject('letters').value;\n\t\t\t\t\tajaxRequest('" . SELF . "', 'cust_selection', AJAX_SET, 'letters='+letters+'&deptid='+deptid+'&calloutid={$calloutid}');\n\t\t\t\t}\n\t\t\t</script>\n\n\t\t\t{$ajax_err}\n\t\t\t<table " . TMPL_tblDflts . " width='400'>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>New Callout Document</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>" . REQ . "Select Department</td>\n\t\t\t\t\t<td valign='center'>{$depts}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>First Letters of customer</td>\n\t\t\t\t\t<td valign='center'><input type='text' size='5' id='letters' maxlength='5'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td valign='center'><input type='button' value='Update &raquo' onClick='updateCustSelection();'></td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    }
    if (isset($diffwhBtn) or isset($addprodBtn) or isset($addnon) or isset($saveBtn) or isset($upBtn) or isset($doneBtn)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $details_end = "\n\t\t\t\t</div>\n\t\t\t</td>\n\t\t\t<td valign='top' align='right'>\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='2'>Callout Document Details</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Job Number</td>\n\t\t\t\t\t\t<td valign='center'>{$doc['calloutid']}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Call Out Person</td>\n\t\t\t\t\t\t<td valign='center'>{$calloutps}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Date Service Required</td>\n\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("call", $call_year, $call_month, $call_day) . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Call Out Rate</td>\n\t\t\t\t\t\t<td valign='center' nowrap>" . CUR . " <input type='text' name='def_travel' value='{$doc['def_travel']}'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>Labour Rate/Hour</td>\n\t\t\t\t\t\t<td valign='center' nowrap>" . CUR . " <input type='text' name='def_labour' value='{$doc['def_labour']}'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\t\t\t</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>&nbsp;</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td colspan='2'>{$products}</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td colspan='4'><textarea name='sign' cols='80' rows='2'>{$doc['sign']}</textarea></td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>\n\t\t\t<p>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th width='25%'>Quick Links</th>\n\t\t\t\t\t<th width='25%'>Description Of Callout</th>\n\t\t\t\t\t<th width='25%'>Comments</th>\n\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td class='" . bg_class() . "'><a href='callout-new.php'>New Callout Document</a></td>\n\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'><textarea name='calloutdescrip' rows='4' cols='20'>{$doc['calloutdescrip']}</textarea></td>\n\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'><textarea name='comm' rows='4' cols='20'>{$doc['comm']}</textarea></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><a href='callout-view.php'>View Callout Documents</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t</table>\n\t\t\t</td>\n\t\t\t<td align='right'></td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td align='right'>\n\t\t\t\t<input name='diffwhBtn' type='submit' value='Different Store'> |\n\t\t\t\t<input name='addprodBtn' type='submit' value='Add Product'> |\n\t\t\t\t<input name='addnon' type='submit' value='Add Non stock Product'> |\n\t\t\t\t<input type='submit' name='saveBtn' value='Save'></td><td> |\n\t\t\t\t<input type='submit' name='upBtn' value='Update'>{$done}\n\t\t\t</td>\n\t\t</tr>\n\t\t</table>\n\t\t<a name='bottom'>\n\t\t</form>\n\t\t</center>\n\t\t{$jump_bot}";
    if (AJAX) {
        return $ajaxOut;
    } else {
        return "{$details_begin}{$ajaxOut}{$details_end}";
    }
}
コード例 #24
0
function details($_POST, $error = "")
{
    # get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($purid, "num", 1, 20, "Invalid Purchase number.");
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get purchase info
    db_connect();
    $sql = "SELECT * FROM purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $purRslt = db_exec($sql) or errDie("Unable to get purchase information");
    if (pg_numrows($purRslt) < 1) {
        return "<li class='err'>Order Not Found</li>";
    }
    $pur = pg_fetch_array($purRslt);
    $get_codes = "SELECT * FROM suppstock WHERE suppid = '{$pur['supid']}' ORDER BY stkid";
    $run_codes = db_exec($get_codes) or errDie("Unable to get supplier stock code information");
    if (pg_numrows($run_codes) > 0) {
        while ($codarr = pg_fetch_array($run_codes)) {
            if (strlen($codarr['stkcod']) > 0) {
                $stockcodes[$codarr['stkid']]['stkcod'] = $codarr['stkcod'];
            }
            if (strlen($codarr['stkdes']) > 0) {
                $stockcodes[$codarr['stkid']]['stkdes'] = $codarr['stkdes'];
            }
        }
    }
    # check if purchase has been printed
    if ($pur['received'] == "y") {
        $error = "<li class='err'> Error : Order number <b>{$purid}</b> has already been received.";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # check if purchase has never been received
    db_connect();
    $sql = "SELECT * FROM pur_items  WHERE purid = '{$purid}' AND rqty <> 0 AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    if (pg_numrows($stkdRslt) > 0) {
        $error = "<li class='err'> Error : Order number <b>{$purid}</b> has been partly received.";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$pur['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    /*
    # Get selected supplier info
    db_connect();
    $sql = "SELECT * FROM suppliers WHERE supid = '$pur[supid]' AND div = '".USER_DIV."'";
    $supRslt = db_exec ($sql) or errDie ("Unable to view customer");
    if (pg_numrows ($supRslt) < 1) {
    	$sup['supname'] = "<li class=err> Supplier not Found.";
    	$sup['supaddr'] = "<br><br><br>";
    }else{
    	$sup = pg_fetch_array($supRslt);
    	$supaddr = $sup['supaddr'];
    }
    */
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    $whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Warehouses found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Warehouse</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # days drop downs
    $days = array("30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $pur['terms']);
    # format date
    list($pyear, $pmon, $pday) = explode("-", $pur['pdate']);
    /* --- End Drop Downs --- */
    /* --- Start Products Display --- */
    # select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>WAREHOUSE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>DELIVERY DATE</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t<tr>";
    # get selected stock in this purchase
    db_connect();
    $sql = "SELECT * FROM pur_items  WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # keep track of selected stock amounts
        $amts[$i] = $stkd['amt'];
        $i++;
        # get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        if (isset($stockcodes[$stk['stkid']]['stkcod'])) {
            $stk['stkcod'] = $stockcodes[$stk['stkid']]['stkcod'];
        }
        if (isset($stockcodes[$stk['stkid']]['stkdes'])) {
            $stk['stkdes'] = $stockcodes[$stk['stkid']]['stkdes'];
        }
        list($syear, $smon, $sday) = explode("-", $stkd['ddate']);
        # put in product
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t<td>" . sprint3($stkd['qty']) . "</td>\n\t\t\t\t<td>" . sprint($stkd['unitcost']) . "</td>\n\t\t\t\t<td>{$sday}-{$smon}-{$syear}</td>\n\t\t\t\t<td>" . CUR . " {$stkd['amt']}</td>\n\t\t\t</tr>";
        $key++;
    }
    # look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    }
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Get subtotal
    $SUBTOT = $pur['subtot'];
    # Get Total
    $TOTAL = $pur['total'];
    # Get vat
    $VAT = $pur['vat'];
    /* --- End Some calculations --- */
    /* -- Final Layout -- */
    $details = "\n\t\t<center>\n\t\t<h3>Order Cancel</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='purid' value='{$purid}'>\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr><th colspan='2'> Supplier Details </th></tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Supplier</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['supname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Supplier Address</td>\n\t\t\t\t\t\t\t<td valign='center'>" . nl2br($pur['supaddr']) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Order Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Purchase No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['purnum']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Ref No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['refno']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['terms']} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Date</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pday}-{$pmon}-{$pyear}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['vatinc']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " {$pur['shipchrg']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th width='40%'>Quick Links</th>\n\t\t\t\t\t\t\t<th width='45%'>Remarks</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='15%'><br></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='purchase-new.php'>New Order</a></td>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'>" . nl2br($pur['remarks']) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><a href='purchase-view.php'>View Orders</a></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$pur['subtot']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$pur['shipping']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT @ " . TAX_VAT . " %</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$pur['vat']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$pur['total']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input type='button' value='&laquo Back' onClick='javascript:history.back()'> | <input type='submit' name='upBtn' value='Write'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t</center>";
    return $details;
}
コード例 #25
0
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["below_perc"] = 100;
    $fields["above_perc"] = 0;
    $fields["between_from_perc"] = 0;
    $fields["between_to_perc"] = 100;
    $fields["frm_year"] = date("Y");
    $fields["frm_month"] = date("m");
    $fields["frm_day"] = "01";
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    $fields["catid"] = 0;
    $fields["clasid"] = 0;
    $fields["sel_perc"] = "above";
    $fields["cust_name"] = "[All]";
    $fields["sp_name"] = "[All]";
    $fields["button"] = "";
    $fields["sort_order"] = "";
    extract($fields, EXTR_SKIP);
    $from_date = "{$frm_year}-{$frm_month}-{$frm_day}";
    $to_date = "{$to_year}-{$to_month}-{$to_day}";
    // Create categories dropdown
    $sql = "SELECT catid, catcod, cat FROM cubit.stockcat ORDER BY cat ASC";
    $categories_rslt = db_exec($sql) or errDie("Unable to retrieve categories.");
    $categories_sel = "\n\t\t<select name='catid' style='width: 100%'>\n\t\t\t<option value='0'>[All]</option>";
    while ($categories_data = pg_fetch_array($categories_rslt)) {
        if ($categories_data["catid"] == $catid) {
            $sel = "selected='selected'";
        } else {
            $sel = "";
        }
        $categories_sel .= "<option value='{$categories_data['catid']}' {$sel}>({$categories_data['catcod']}) {$categories_data['cat']}</option>";
    }
    $categories_sel .= "</select>";
    // Create classifications dropdown
    $sql = "SELECT clasid, classname FROM cubit.stockclass ORDER BY classname ASC";
    $classifications_rslt = db_exec($sql) or errDie("Unable to retrieve classifications.");
    $classifications_sel = "\n\t\t<select name='clasid' style='width: 100%'>\n\t\t\t<option value='0'>[All]</option>";
    while ($classifications_data = pg_fetch_array($classifications_rslt)) {
        if ($classifications_data["clasid"] == $clasid) {
            $sel = "selected='selected'";
        } else {
            $sel = "";
        }
        $classifications_sel .= "<option value='{$classifications_data['clasid']}' {$sel}>{$classifications_data['classname']}</option>";
    }
    $classifications_sel .= "</select>";
    $sql = "SELECT surname FROM cubit.customers ORDER BY cusname ASC";
    $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customers.");
    $cust_sel = "\n\t\t<select name='cust_name' style='width: 100%'>\n\t\t\t<option value='[All]'>[All]</option>";
    while ($cust_data = pg_fetch_array($cust_rslt)) {
        if ($cust_name == $cust_data["surname"]) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $cust_sel .= "<option value='{$cust_data['surname']}' {$sel}>{$cust_data['surname']}</option>";
    }
    $cust_sel .= "</select>";
    $sql = "SELECT salesp FROM exten.salespeople ORDER BY salesp ASC";
    $sp_rslt = db_exec($sql) or errDie("Unable to retrieve sales people.");
    $sp_sel = "\n\t\t<select name='sp_name' style='width: 100%'>\n\t\t\t<option value='[All]'>[All]</option>";
    while ($sp_data = pg_fetch_array($sp_rslt)) {
        if ($sp_name == $sp_data["salesp"]) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $sp_sel .= "<option value='{$sp_data['salesp']}' {$sel}>{$sp_data['salesp']}</option>";
    }
    $sp_sel .= "</select>";
    $sql = "SELECT * FROM exten.warehouses ORDER BY whname";
    $wh_rslt = db_exec($sql) or errDie("Unable to retrieve stores information.");
    $stores_sel = "\n\t\t<select name='whid' style='width:100%'>\n\t\t\t<option value='[All]'>[All]</option>";
    while ($warr = pg_fetch_array($wh_rslt)) {
        if ($whid == $warr['whid']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $stores_sel .= "<option value='{$warr['whid']}' {$sel}>{$warr['whname']}</option>";
    }
    $stores_sel .= "</select>";
    $where_qry = array();
    if ($catid > 0) {
        $sql = "SELECT cat FROM cubit.stockcat WHERE catid='{$catid}'";
        $cat_rslt = db_exec($sql) or errDie("Unable to retrieve category.");
        $catname = pg_fetch_result($cat_rslt, 0);
        $where_qry[] = "catname='{$catname}'";
    }
    if ($clasid > 0) {
        $sql = "SELECT classname FROM cubit.stockclass WHERE clasid='{$clasid}'";
        $class_rslt = db_exec($sql) or errDie("Unable to retrieve classification.");
        $classname = pg_fetch_result($class_rslt, 0);
        $where_qry[] = "classname='{$classname}'";
    }
    if ($whid > 0) {
        $where_qry[] = "stock.whid='{$whid}'";
    }
    if (strlen($stock_sel) > 0) {
        $where_qry[] = "((stock.stkcod ILIKE '%{$stock_sel}%') OR (stock.stkdes ILIKE '%{$stock_sel}%'))";
    }
    $where_qry = implode(" AND ", $where_qry);
    if (!empty($where_qry)) {
        $where_qry = " AND {$where_qry}";
    }
    $sortcheck2 = "";
    $sortcheck3 = "";
    $sortcheck4 = "";
    $sortcheck5 = "";
    if (isset($sort_order) and strlen($sort_order) > 0) {
        switch ($sort_order) {
            case "date":
                $sortsql = "edate ASC";
                $sortcheck2 = "checked";
                break;
            case "stkcod":
                $sortsql = "stock.stkcod ASC";
                $sortcheck3 = "checked";
                break;
            case "details":
                $sortsql = "details ASC";
                $sortcheck4 = "checked";
                break;
            case "profit":
                $sortsql = "profit ASC";
                $sortcheck5 = "checked";
                break;
            default:
                $sortsql = "edate DESC, stockrec.oid DESC";
        }
    } else {
        $sortsql = "edate DESC, stockrec.oid DESC";
    }
    $sql = "\n\t\tSELECT stockrec.oid, edate, whname, stock.stkcod, stock.stkdes, catname, details,\n\t\t\tclassname, trantype, details, stockrec.csprice, qty, stockrec.csamt,\n\t\t\t(stockrec.csprice-stockrec.csamt) AS profit, stock.csprice AS scsprice\n\t\tFROM cubit.stockrec\n\t\t\tLEFT JOIN cubit.stock ON stockrec.stkid=stock.stkid\n\t\t\tLEFT JOIN exten.warehouses ON stock.whid=warehouses.whid\n\t\tWHERE (trantype='invoice' OR details ILIKE 'Credit Note%')\n\t\t\tAND edate BETWEEN '{$from_date}' AND '{$to_date}'\n\t\t\t{$where_qry}\n\t\tORDER BY {$sortsql}";
    $stockrec_rslt = db_exec($sql) or errDie("Unable to retrieve stock transactions.");
    $stock_total = 0;
    $profit_total = 0;
    $cost_total = 0;
    $qty_total = 0;
    $stockrec_out = "";
    $inv_vat = array();
    while ($stockrec_data = pg_fetch_array($stockrec_rslt)) {
        if ($stockrec_data["profit"] != 0 && $stockrec_data["csamt"] != 0) {
            $stockrec_data["profit_perc"] = $stockrec_data["profit"] / $stockrec_data["csamt"] * 100;
        } else {
            $stockrec_data["profit_perc"] = 0;
        }
        // Reduce risk of typing related injuries
        $profit_perc = $stockrec_data["profit_perc"];
        $cusname = $salespn = "";
        if (preg_match("/Invoice No. (.*)/", $stockrec_data["details"], $matches)) {
            if (is_numeric($matches[1])) {
                $sql = "SELECT surname, salespn, vat FROM cubit.invoices WHERE invnum='{$matches['1']}' UNION ";
                $union = array();
                for ($i = 1; $i <= 14; $i++) {
                    $union[] = "SELECT surname, salespn, vat FROM \"{$i}\".invoices WHERE invnum='{$matches['1']}'";
                }
                $sql = $sql . implode(" UNION ", $union);
                $inv_rslt = db_exec($sql) or errDie("Unable to retrieve info.");
                list($cusname, $salespn, $inv_vat[$matches[1]]) = pg_fetch_array($inv_rslt);
                if (empty($cusname) || empty($salespn)) {
                    $sql = "SELECT cusname, salespn, vat FROM cubit.nons_invoices WHERE invnum='{$matches['1']}'";
                    $inv_rslt = db_exec($sql) or errDie("Unable to retrieve info.");
                    list($cusname, $salespn, $inv_vat[$matches[1]]) = pg_fetch_array($inv_rslt);
                }
                if (empty($cusname) || empty($salespn)) {
                    $union = array();
                    for ($i = 1; $i <= 14; $i++) {
                        $union[] = "SELECT cusname, salespn, vat FROM \"{$i}\".pinvoices WHERE invnum='{$matches['1']}'";
                    }
                    $sql = implode(" UNION ", $union);
                    $inv_rslt = db_exec($sql) or errDie("Unable to retrieve info.");
                    list($cusname, $salespn, $inv_vat[$matches[1]]) = pg_fetch_array($inv_rslt);
                }
            }
        }
        if (preg_match("/Credit note No. (.*)/", $stockrec_data["details"], $matches)) {
            if (is_numeric($matches[1])) {
                $union = array();
                for ($i = 1; $i <= 14; $i++) {
                    $union[] = "SELECT surname, salespn FROM \"{$i}\".inv_notes WHERE notenum='{$matches['1']}'";
                }
                $sql = implode(" UNION ", $union);
                $inv_rslt = db_exec($sql) or errDie("Unable to retrieve info");
                list($cusname, $salespn) = pg_fetch_array($inv_rslt);
                $stockrec_data["csprice"] *= -1;
                $stockrec_data["csamt"] *= -1;
                $stockrec_data["profit"] *= -1;
                $stockrec_data["qty"] *= -1;
                $stockrec_data["profit_perc"] *= -1;
            }
        }
        if ($cust_name != "[All]" && $cust_name != $cusname) {
            continue;
        }
        if ($sp_name != "[All]" && $sp_name != $salespn) {
            continue;
        }
        if (is_numeric($profit_perc)) {
            if ($sel_perc == "above" && $profit_perc < floatval($above_perc)) {
                continue;
            } elseif ($sel_perc == "below" && $profit_perc > floatval($below_perc)) {
                continue;
            } elseif ($sel_perc == "between" && ($profit_perc < floatval($between_from_perc) || $profit_perc > floatval($between_to_perc))) {
                continue;
            }
        }
        $stockrec_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$stockrec_data['edate']}</td>\n\t\t\t\t<td>{$stockrec_data['whname']}</td>\n\t\t\t\t<td>{$stockrec_data['stkcod']}</td>\n\t\t\t\t<td>{$stockrec_data['stkdes']}</td>\n\t\t\t\t<td>{$stockrec_data['catname']}</td>\n\t\t\t\t<td>{$stockrec_data['classname']}</td>\n\t\t\t\t<td>{$cusname}</td>\n\t\t\t\t<td>{$salespn}</td>\n\t\t\t\t<td>{$stockrec_data['details']}</td>\n\t\t\t\t<td align='right'>" . sprint($stockrec_data["csprice"]) . "</td>\n\t\t\t\t<td align='right'>" . sprint($stockrec_data["csamt"]) . "</td>\n\t\t\t\t<td align='center'>" . sprint3($stockrec_data['qty']) . "</td>\n\t\t\t\t<td align='right'>" . sprint($stockrec_data["profit"]) . "</td>\n\t\t\t\t<td align='center'>" . sprint($stockrec_data["profit_perc"]) . "%</td>\n\t\t\t</tr>";
        $stock_total += $stockrec_data["csprice"];
        $cost_total += $stockrec_data["csamt"];
        $profit_total += $stockrec_data["profit"];
        $qty_total += $stockrec_data['qty'];
    }
    if (empty($stockrec_out)) {
        $stockrec_out = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='14'><li>No results found.</li></td>\n\t\t\t</tr>";
    }
    $checked = array();
    if ($sel_perc == "above") {
        $checked["above"] = "checked";
        $checked["below"] = "";
        $checked["between"] = "";
    } elseif ($sel_perc == "below") {
        $checked["above"] = "";
        $checked["below"] = "checked";
        $checked["between"] = "";
    } elseif ($sel_perc == "between") {
        $checked["above"] = "";
        $checked["below"] = "";
        $checked["between"] = "checked";
    }
    $OUTPUT = "";
    if (is_array($button)) {
        list($button) = array_keys($button);
    }
    $vat_total = 0;
    foreach ($inv_vat as $vat) {
        $vat_total += $vat;
    }
    if ($button != "excel") {
        $OUTPUT .= "\n\t\t\t<center>\n\t\t\t<h3>Stock Sales GP Report</h3>\n\t\t\t<form method='post' action='" . SELF . "'>\n\t\t\t<table cellpadding='0' cellspacing='0'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<th colspan='4'>Date Range</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>" . mkDateSelect("frm", $frm_year, $frm_month, $frm_day) . "</td>\n\t\t\t\t\t\t\t\t<td>&nbsp; <b>To</b> &nbsp;</td>\n\t\t\t\t\t\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th width='50%'>Category</th>\n\t\t\t\t\t\t\t\t<th width='50%'>Classification</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>{$categories_sel}</td>\n\t\t\t\t\t\t\t\t<td>{$classifications_sel}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>Customer</th>\n\t\t\t\t\t\t\t\t<th>Sales Person</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>{$cust_sel}</td>\n\t\t\t\t\t\t\t\t<td>{$sp_sel}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>Store</th>\n\t\t\t\t\t\t\t\t<th>Stock Filter</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td>{$stores_sel}</td>\n\t\t\t\t\t\t\t\t<td><input type='text' style='width:100%' name='stock_sel' value='{$stock_sel}'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th colspan='2'>Sorting</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td colspan='2' align='center'>\n\t\t\t\t\t\t\t\t\t<input type='radio' name='sort_order' value='date' {$sortcheck2}> Date \n\t\t\t\t\t\t\t\t\t<input type='radio' name='sort_order' value='stkcod' {$sortcheck3}> Stock Code \n\t\t\t\t\t\t\t\t\t<input type='radio' name='sort_order' value='details' {$sortcheck4}> Details \n\t\t\t\t\t\t\t\t\t<input type='radio' name='sort_order' value='profit' {$sortcheck5}> Profit \n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th colspan='2'>Display Stock GP</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><input type='radio' name='sel_perc' value='below' {$checked['below']} /></td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\tBelow\n\t\t\t\t\t\t\t\t\t<input type='text' name='below_perc' value='{$below_perc}'\n\t\t\t\t\t\t\t\t\tsize='3' style='text-align: center' /><b>%</b>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><input type='radio' name='sel_perc' value='above' {$checked['above']} /></td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\tAbove\n\t\t\t\t\t\t\t\t\t<input type='text' name='above_perc' value='{$above_perc}'\n\t\t\t\t\t\t\t\t\tsize='3' style='text-align: center' /><b>%</b>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><input type='radio' name='sel_perc'  value='between' {$checked['between']} /></td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\tBetween\n\t\t\t\t\t\t\t\t\t<input type='text' name='between_from_perc' value='{$between_from_perc}' size='3'\n\t\t\t\t\t\t\t\t\tstyle='text-align: center' /><b>%</b>\n\t\t\t\t\t\t\t\t\t&nbsp; And &nbsp;\n\t\t\t\t\t\t\t\t\t<input type='text' name='between_to_perc' value='{$between_to_perc}' size='3'\n\t\t\t\t\t\t\t\t\tstyle='text-align: center' /><b>%</b>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align='center'>\n\t\t\t\t\t\t<input type='submit' name='button[excel]' value='Export to Spreadsheet' />\n\t\t\t\t\t\t<input type='submit' value='Apply' style='font-weight: bold' />\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    }
    $OUTPUT .= "\n\t\t<br />\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Warehouse</th>\n\t\t\t\t<th>Stock Code</th>\n\t\t\t\t<th>Stock Description</th>\n\t\t\t\t<th>Stock Category</th>\n\t\t\t\t<th>Classification</th>\n\t\t\t\t<th>Customer</th>\n\t\t\t\t<th>Sales Person</th>\n\t\t\t\t<th>Details</th>\n\t\t\t\t<th>Selling Price</th>\n\t\t\t\t<th>Stock Cost</th>\n\t\t\t\t<th>Quantity</th>\n\t\t\t\t<th>Gross Profit</th>\n\t\t\t\t<th>Gross Profit %</th>\n\t\t\t</tr>\n\t\t\t{$stockrec_out}\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='9'>Total</td>\n\t\t\t\t<td align='right'>" . sprint($stock_total) . "</td>\n\t\t\t\t<td align='right'>" . sprint($cost_total) . "</td>\n\t\t\t\t<td align='right'>" . sprint3($qty_total) . "</td>\n\t\t\t\t<td align='right'>" . sprint($profit_total) . "</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t</tr>\n\t\t\t<!--<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='12'>Total VAT</td>\n\t\t\t\t<td align='right'>{$vat_total}</td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='12'><strong>GRAND TOTAL</strong></td>\n\t\t\t\t<td align='right'><b>" . sprint($profit_total - $vat_total) . "</b></td>\n\t\t\t\t<td>&nbsp;</td>\n\t\t\t</tr>-->\n\t\t</table>\n\t\t</center>";
    return $OUTPUT;
}
コード例 #26
0
function order($_POST, $errors = "")
{
    $Out = "";
    # get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($id, "num", 1, 10, "Invalid client No.");
    # display errors, if any
    if ($v->isError()) {
        $confirmCust = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirmCust .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirmCust .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirmCust;
    }
    pglib_transaction("BEGIN");
    $Sl = "SELECT stkcod,stkdes,units,alloc,bar FROM stock WHERE stkid='{$id}' AND div = '" . USER_DIV . "'";
    $Rs = db_exec($Sl) or errDie("Unable to view stock");
    if (pg_numrows($Rs) < 1) {
        return "Invalid Stock id.";
    }
    $St = pg_fetch_array($Rs);
    $Av = sprint3($St['units'] - $St['alloc']);
    $i = 0;
    $bars = "";
    for ($x = 0; $x <= 9; ++$x) {
        $Sl = "SELECT code FROM ss{$x} WHERE stock='{$id}' AND div = '" . USER_DIV . "' AND active = 'yes'";
        $Rs = db_exec($Sl) or errDie("Unable to retrieve barcodes from db");
        while ($Tp = pg_fetch_array($Rs)) {
            $i++;
            $bars .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$Tp['code']}</td>\n\t\t\t\t\t<td><a href='pos-rem.php?id={$Tp['code']}&rid={$id}'>Remove</a></td>\n\t\t\t\t</tr>";
        }
    }
    pglib_transaction("commit");
    $Wob = sprint3($Av - $i);
    if ($Wob > 0) {
        $in = "\n\t\t\t<tr>\n\t\t\t\t<th colspan=2>Barcodes</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Bar Code</td>\n\t\t\t\t<td><input type='text' size='20' name='me' value=''></td>\n\t\t\t</tr>";
        $rfidfrm = "\n\t\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t\t<input type='hidden' name='key' value='rfid'>\n\t\t\t\t<input type='hidden' name='id' value='{$id}'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='submit' value='Receive RFID Batch'></td>\n\t\t\t\t</tr>\n\t\t\t</form>";
    } else {
        $in = "<tr><th colspan='2'>Barcodes</th></tr>";
        $rfidfrm = "";
    }
    $but = "<tr><td valign='center'><input type='submit' value='Update >>>'></td></tr>";
    $account_dets = "\n\t\t{$errors}\n\t\t<h3>Bar Code Allocation</h3>\n\t\t<form method='POST' name='formName'>\n\t\t\t<input type='hidden' name='reload' value='window'>\n\t\t</form>\n\t\t<table " . TMPL_tblDflts . " width='500'>\n\t\t<tr>\n\t\t\t<th colspan='2'>Stock Details</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Code</td>\n\t\t\t<td> {$St['stkcod']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Description</td>\n\t\t\t<td> {$St['stkdes']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Available</td>\n\t\t\t<td> {$Av}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>With Barcode</td>\n\t\t\t<td> {$i}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Without Barcode</td>\n\t\t\t<td> {$Wob}</td>\n\t\t</tr>\n\t\t{$rfidfrm}\n\t\t<form action='" . SELF . "' method='post' name='form'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t<input type='hidden' name='id' value='{$id}'>\n\t\t\t{$but}\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>All Items of \"{$St['stkcod']}\" Share One Barcode</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td nowrap='t'>Items this Barcode:</td>\n\t\t\t\t<td><input type='text' name='sharecode' value='{$St['bar']}' /></td>\n\t\t\t\t<td class='err'>This setting will cause the barcodes listed below to be ignored.</td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td colspan='2' align='center'><h3>OR</h3></td>\n\t\t\t</tr>\n\t\t\t{$in}\n\t\t\t{$bars}\n\t\t\t{$but}\n\t\t</form>\n\t\t<table " . TMPL_tblDflts . " width='30%'>\n\t\t\t<tr><td><br><br></tr>\n\t\t\t<tr>\n\t\t\t\t<th>Quick Links</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><a href='stock-view.php'>View Stock</td>\n\t\t\t</tr>\n\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t</table>";
    return $account_dets;
}
コード例 #27
0
function confirm($stkid)
{
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($stkid, "num", 1, 50, "Invalid stock id.");
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class='err'>-" . $e["msg"] . "</li>";
        }
        return $confirm;
    }
    # Select Stock
    db_connect();
    $sql = "SELECT * FROM stock WHERE stkid = '{$stkid}' AND div = '" . USER_DIV . "'";
    $stkRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
    if (pg_numrows($stkRslt) < 1) {
        return "<li> Invalid Stock ID.";
    } else {
        $stk = pg_fetch_array($stkRslt);
    }
    # get stock vars
    extract($stk);
    if ($ordered > 0) {
        # get all done allocated invoices
        db_connect();
        $sql = "SELECT purid FROM purchases WHERE received = 'n' AND subtot > 0 AND div = '" . USER_DIV . "'";
        $purRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
        if (pg_numrows($purRslt) > 0) {
            $deliveries = "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2' align='center'><h3>Expected Deliveries</h3></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t<th>Number</th>\n\t\t\t\t\t</tr>";
            $i = 0;
            while ($pur = pg_fetch_array($purRslt)) {
                # get all items that are outstanding
                $sql = "SELECT ddate, qty FROM pur_items WHERE stkid = '{$stkid}' AND purid = '{$pur['purid']}' AND qty > 0 AND div = '" . USER_DIV . "'";
                $itRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
                while ($it = pg_fetch_array($itRslt)) {
                    # delivery date
                    $ddate = explode("-", $it['ddate']);
                    $ddate = $ddate[2] . "-" . $ddate[1] . "-" . $ddate[0];
                    $deliveries .= "\n\t\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t\t\t<td>{$ddate}</td>\n\t\t\t\t\t\t\t\t\t\t<td>" . sprint3($it['qty']) . " x {$suom}</td>\n\t\t\t\t\t\t\t\t\t</tr>";
                }
            }
        } else {
            $deliveries = "";
        }
        # get all done allocated invoices
        db_connect();
        $sql = "SELECT purid FROM purch_int WHERE received = 'n' AND subtot > 0 AND div = '" . USER_DIV . "'";
        $ipurRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
        if (pg_numrows($ipurRslt) > 0) {
            $intdeliveries = "\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td colspan='2' align='center'><h3>Expected International Deliveries</h3></td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t\t<th>Number</th>\n\t\t\t\t\t\t\t\t</tr>";
            $i = 0;
            while ($pur = pg_fetch_array($ipurRslt)) {
                # get all items that are outstanding
                $sql = "SELECT ddate, qty FROM purint_items WHERE stkid = '{$stkid}' AND purid = '{$pur['purid']}' AND qty > 0 AND div = '" . USER_DIV . "'";
                $itRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
                while ($it = pg_fetch_array($itRslt)) {
                    # delivery date
                    $ddate = explode("-", $it['ddate']);
                    $ddate = $ddate[2] . "-" . $ddate[1] . "-" . $ddate[0];
                    $intdeliveries .= "\n\t\t\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t\t\t\t<td>{$ddate}</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>" . sprint3($it['qty']) . " x {$suom}</td>\n\t\t\t\t\t\t\t\t\t\t</tr>";
                }
            }
        } else {
            $intdeliveries = "";
        }
    } else {
        $intdeliveries = "";
        $deliveries = "";
    }
    if ($units >= 0 && $alloc >= 0) {
        $avstk = $units - $alloc;
    } else {
        $avstk = $units + $alloc;
    }
    // Layout
    $confirm = "\n\t\t\t\t\t<center>\n\t\t\t\t\t<h3>Stock Details</h3>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='350'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th width='40%'>Field</th>\n\t\t\t\t\t\t\t<th width='60%'>Value</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Category</td>\n\t\t\t\t\t\t\t<td>{$catname}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Stock code</td>\n\t\t\t\t\t\t\t<td>{$stkcod}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Stock description</td>\n\t\t\t\t\t\t\t<td>" . nl2br($stkdes) . "</pre></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>On Hand</td>\n\t\t\t\t\t\t\t<td>" . sprint3($units) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Allocated</td>\n\t\t\t\t\t\t\t<td>" . sprint3($alloc) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Available</td>\n\t\t\t\t\t\t\t<td>" . sprint3($avstk) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>On Order</td>\n\t\t\t\t\t\t\t<td>" . sprint3($ordered) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Location</td>\n\t\t\t\t\t\t\t<td>Shelf : {$shelf} - Row : {$row}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Minimum level</td>\n\t\t\t\t\t\t\t<td>{$minlvl}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Maximum level</td>\n\t\t\t\t\t\t\t<td>{$maxlvl}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Selling price per selling unit</td>\n\t\t\t\t\t\t\t<td>" . CUR . " " . sprint($selamt) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$deliveries}\n\t\t\t\t\t\t<tr><td><br><br></td><tr>\n\t\t\t\t\t\t{$intdeliveries}\n\t\t\t\t\t</table>";
    # Select Stock
    db_connect();
    $sql = "SELECT * FROM stock WHERE stkid = '{$stkid}' AND div = '" . USER_DIV . "'";
    $stkRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
    if (pg_numrows($stkRslt) < 1) {
        return "<li> Invalid Stock ID.";
    } else {
        $stk = pg_fetch_array($stkRslt);
    }
    # get all done allocated invoices
    db_connect();
    $sql = "SELECT invid,cusnum FROM invoices WHERE printed = 'n' AND done = 'y' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
    $alloc = "";
    $i = 0;
    while ($inv = pg_fetch_array($invRslt)) {
        db_connect();
        $sql = "SELECT sum(qty) FROM inv_items WHERE stkid = '{$stkid}' AND invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'";
        $allRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
        $all = pg_fetch_array($allRslt);
        if ($all['sum'] > 0) {
            # Get selected customer info
            db_connect();
            $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'";
            $custRslt = db_exec($sql) or errDie("Unable to get customer information");
            if (pg_numrows($custRslt) < 1) {
                return details($_POST);
            }
            $cust = pg_fetch_array($custRslt);
            # get department
            db_conn("exten");
            $sql = "SELECT * FROM departments WHERE deptid = '{$cust['deptid']}' AND div = '" . USER_DIV . "'";
            $deptRslt = db_exec($sql);
            if (pg_numrows($deptRslt) < 1) {
                return details($_POST);
            } else {
                $dept = pg_fetch_array($deptRslt);
            }
            $alloc .= "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>{$dept['deptname']}</td>\n\t\t\t\t\t\t\t\t<td>{$cust['cusname']} {$cust['surname']}</td>\n\t\t\t\t\t\t\t\t<td>{$inv['invid']}</td>\n\t\t\t\t\t\t\t\t<td>{$all['sum']} x {$stk['suom']}</td>\n\t\t\t\t\t\t\t</tr>";
            $i++;
        }
    }
    if ($i < 1) {
        $alloc = "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='4'>No Invoices Allocated</td>\n\t\t\t\t\t\t</tr>";
    }
    # get all undone allocated invoices
    db_connect();
    $sql = "SELECT invid,cusnum FROM invoices WHERE printed = 'n' AND done != 'y' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
    $nalloc = "";
    $i = 0;
    while ($inv = pg_fetch_array($invRslt)) {
        db_connect();
        $sql = "SELECT sum(qty) FROM inv_items WHERE stkid = '{$stkid}' AND invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'";
        $allRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
        $all = pg_fetch_array($allRslt);
        if ($all['sum'] > 0) {
            # Get selected customer info
            db_connect();
            $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'";
            $custRslt = db_exec($sql) or errDie("Unable to get customer information");
            if (pg_numrows($custRslt) < 1) {
                return details($_POST);
            }
            $cust = pg_fetch_array($custRslt);
            # get department
            db_conn("exten");
            $sql = "SELECT * FROM departments WHERE deptid = '{$cust['deptid']}' AND div = '" . USER_DIV . "'";
            $deptRslt = db_exec($sql);
            if (pg_numrows($deptRslt) < 1) {
                return details($_POST);
            } else {
                $dept = pg_fetch_array($deptRslt);
            }
            $nalloc .= "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>{$dept['deptname']}</td>\n\t\t\t\t\t\t\t\t<td>{$cust['cusname']} {$cust['surname']}</td>\n\t\t\t\t\t\t\t\t<td>{$inv['invid']}</td>\n\t\t\t\t\t\t\t\t<td>{$all['sum']} x {$stk['suom']}</td>\n\t\t\t\t\t\t\t</tr>";
            $i++;
        }
    }
    if ($i < 1) {
        $nalloc = "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='4'>No Incomplete Invoices Allocated</td>\n\t\t\t\t\t\t</tr>";
    }
    # get all undone allocated invoices
    db_connect();
    $sql = "SELECT * FROM pinvoices WHERE printed = 'n' AND done != 'y' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
    $pall = "";
    $i = 0;
    while ($inv = pg_fetch_array($invRslt)) {
        db_connect();
        $sql = "SELECT sum(qty) FROM pinv_items WHERE stkid = '{$stkid}' AND invid = '{$inv['invid']}' AND div = '" . USER_DIV . "'";
        $allRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
        $all = pg_fetch_array($allRslt);
        if ($all['sum'] > 0) {
            # Get selected customer info
            # get department
            db_conn("exten");
            $sql = "SELECT * FROM departments WHERE deptid = '{$inv['deptid']}' AND div = '" . USER_DIV . "'";
            $deptRslt = db_exec($sql);
            if (pg_numrows($deptRslt) < 1) {
                return details($_POST);
            } else {
                $dept = pg_fetch_array($deptRslt);
            }
            $pall .= "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>{$dept['deptname']}</td>\n\t\t\t\t\t\t\t\t<td>{$inv['cusname']}</td>\n\t\t\t\t\t\t\t\t<td>{$inv['invid']}</td>\n\t\t\t\t\t\t\t\t<td>{$all['sum']} x {$stk['suom']}</td>\n\t\t\t\t\t\t\t</tr>";
            $i++;
        }
    }
    if ($i < 1) {
        $pall = "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='4'>No unprinted POS Invoices</td>\n\t\t\t\t\t</tr>";
    }
    # get all allocated quotes
    db_connect();
    $sql = "SELECT sordid,cusnum FROM sorders WHERE accepted = 'n' AND div = '" . USER_DIV . "'";
    $sordRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
    $sordalloc = "";
    $q = 0;
    while ($sord = pg_fetch_array($sordRslt)) {
        db_connect();
        $sql = "SELECT sum(qty) FROM sorders_items WHERE stkid = '{$stkid}' AND sordid = '{$sord['sordid']}' AND div = '" . USER_DIV . "'";
        $qallRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
        $all = pg_fetch_array($qallRslt);
        if ($all['sum'] > 0) {
            # Get selected customer info
            db_connect();
            $sql = "SELECT * FROM customers WHERE cusnum = '{$sord['cusnum']}' AND div = '" . USER_DIV . "'";
            $custRslt = db_exec($sql) or errDie("Unable to get customer information");
            if (pg_numrows($custRslt) < 1) {
                return details($_POST);
            }
            $cust = pg_fetch_array($custRslt);
            # get department
            db_conn("exten");
            $sql = "SELECT * FROM departments WHERE deptid = '{$cust['deptid']}' AND div = '" . USER_DIV . "'";
            $deptRslt = db_exec($sql);
            if (pg_numrows($deptRslt) < 1) {
                return details($_POST);
            } else {
                $dept = pg_fetch_array($deptRslt);
            }
            $sordalloc .= "\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t\t<td>{$dept['deptname']}</td>\n\t\t\t\t\t\t\t\t\t<td>{$cust['cusname']} {$cust['surname']}</td>\n\t\t\t\t\t\t\t\t\t<td>{$sord['sordid']}</td>\n\t\t\t\t\t\t\t\t\t<td>{$all['sum']} x {$stk['suom']}</td>\n\t\t\t\t\t\t\t\t</tr>";
            $q++;
        }
    }
    if ($q < 1) {
        $sordalloc = "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='4'>No Sales Orders Allocated</td>\n\t\t\t\t\t\t</tr>";
    }
    # get all incomplete consignment orders
    db_connect();
    $sql = "SELECT * FROM corders WHERE div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
    $call = "";
    $c = 0;
    while ($cord = pg_fetch_array($invRslt)) {
        db_connect();
        $sql = "SELECT sum(qty) FROM corders_items WHERE stkid = '{$stkid}' AND sordid = '{$cord['sordid']}' AND div = '" . USER_DIV . "'";
        $allRslt = db_exec($sql) or errDie("Unable to access database.", SELF);
        $all = pg_fetch_array($allRslt);
        if ($all['sum'] > 0) {
            # get department
            db_conn("exten");
            $sql = "SELECT * FROM departments WHERE deptid = '{$cord['deptid']}' AND div = '" . USER_DIV . "'";
            $deptRslt = db_exec($sql);
            if (pg_numrows($deptRslt) < 1) {
                //	return details($_POST);
                return "<li class='err'>Unable to get department information. (Consignment Orders)</li>";
            } else {
                $dept = pg_fetch_array($deptRslt);
            }
            $call .= "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>{$dept['deptname']}</td>\n\t\t\t\t\t\t\t\t<td>{$cord['surname']}</td>\n\t\t\t\t\t\t\t\t<td>{$cord['sordid']}</td>\n\t\t\t\t\t\t\t\t<td>{$all['sum']} x {$stk['suom']}</td>\n\t\t\t\t\t\t\t</tr>";
            $c++;
        }
    }
    if ($c < 1) {
        $call = "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='4'>No Consignment Orders</td>\n\t\t\t\t\t</tr>";
    }
    // Layout
    $confirm .= "\n\t\t\t\t\t<center>\n\t\t\t\t\t<h3>Stock Allocation</h3>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='4'><h4>Unprinted Invoices</h4></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Department</th>\n\t\t\t\t\t\t\t<th>Customer</th>\n\t\t\t\t\t\t\t<th>Invoice No.</th>\n\t\t\t\t\t\t\t<th>Quantity Allocated</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$alloc}\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='4'><h4>Unprinted POS Invoices</h4></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Department</th>\n\t\t\t\t\t\t\t<th>Customer</th>\n\t\t\t\t\t\t\t<th>Invoice No.</th>\n\t\t\t\t\t\t\t<th>Quantity Allocated</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$pall}\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='4'><h4>Incomplete Invoices</h4></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Department</th>\n\t\t\t\t\t\t\t<th>Customer</th>\n\t\t\t\t\t\t\t<th>Invoice No.</th>\n\t\t\t\t\t\t\t<th>Quantity Allocated</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$nalloc}\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='4'><h4>Sales Orders</h4></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Department</th>\n\t\t\t\t\t\t\t<th>Customer</th>\n\t\t\t\t\t\t\t<th>Sales Order No.</th>\n\t\t\t\t\t\t\t<th>Quantity Allocated</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$sordalloc}\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='4'><h4>Consignment Orders</h4></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Department</th>\n\t\t\t\t\t\t\t<th>Customer</th>\n\t\t\t\t\t\t\t<th>Consignment Order No.</th>\n\t\t\t\t\t\t\t<th>Quantity Allocated</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$call}\n\t\t\t\t\t</table>\n\t\t\t\t\t<p>\n\t\t\t\t\t<input type='button' value='[X] Close' onClick='javascript:window.close();'>";
    return $confirm;
}
コード例 #28
0
function confirm($_POST, $error = "")
{
    # get vars
    extract($_POST);
    #make sure the date vars are all cozy
    $p_day += 0;
    $p_month += 0;
    $p_year += 0;
    # Validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($purid, "num", 1, 20, "Invalid Purchase Number.");
    #check the date ...
    $v->isOk($p_day, "num", 1, 2, "Invalid Invoice Day.");
    $v->isOk($p_month, "num", 1, 2, "Invalid Invoice Month.");
    $v->isOk($p_year, "num", 1, 4, "Invalid Invoice Year.");
    $pdate = $p_year . "-" . $p_month . "-" . $p_day;
    if (!checkdate($p_month, $p_day, $p_year)) {
        $v->isOk($pdate, "num", 1, 1, "Invalid Invoice Date.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get purchase info
    db_connect();
    $sql = "SELECT * FROM purchases WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $purRslt = db_exec($sql) or errDie("Unable to get purchase information");
    if (pg_numrows($purRslt) < 1) {
        return "<li class='err'>Purchase Not Found</li>";
    }
    $pur = pg_fetch_array($purRslt);
    # check if purchase has been received
    if ($pur['invcd'] == "y") {
        $error = "<li class='err'> Error : purchase number <b>{$pur['purnum']}</b> has already been invoiced.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$pur['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected supplier info
    db_connect();
    $sql = "SELECT * FROM suppliers WHERE supid = '{$pur['supid']}' AND div = '" . USER_DIV . "'";
    $supRslt = db_exec($sql) or errDie("Unable to view customer");
    if (pg_numrows($supRslt) < 1) {
        $sup['supname'] = "<li class='err'> Supplier not Found.</li>";
        $sup['supaddr'] = "<br><br><br>";
    } else {
        $sup = pg_fetch_array($supRslt);
        $supaddr = $sup['supaddr'];
    }
    /* --- Start Drop Downs --- */
    # days drop downs
    $days = array("30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $pur['terms']);
    # format date
    //	list($pyear, $pmon, $pday) = explode("-", $pur['pdate']);
    /* --- End Drop Downs --- */
    $vatinc = $pur['vatinc'];
    /* --- Start Products Display --- */
    $VATP = TAX_VAT;
    # select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>DISCOUNT</th>\n\t\t\t\t<th>DELIVERY DATE</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t<tr>";
    # get selected stock in this purchase
    db_connect();
    $sql = "SELECT * FROM pur_items  WHERE purid = '{$purid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    $tot = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # get warehouse name
        db_conn("exten");
        $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
        $whRslt = db_exec($sql);
        $wh = pg_fetch_array($whRslt);
        # get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        list($syear, $smon, $sday) = explode("-", $stkd['ddate']);
        $i++;
        $qty[$stkd['id']] += 0;
        $amt[] = $stkd['amt'];
        # put in product
        $keys = $key;
        $amt[$keys] = $stkd['amt'];
        if ($stkd['udiscount'] > 0) {
            $discps = round($stkd['udiscount'] / 100 * $stkd['unitcost'], 2);
        } else {
            $discps = 0;
        }
        $amt[$keys] = sprint($qty[$stkd['id']] * ($stkd['unitcost'] - $discps));
        $stkd['amt'] = sprint(($stkd['unitcost'] - $discps) * $qty[$stkd['id']]);
        $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'";
        $Ri = db_exec($Sl);
        $vd = pg_fetch_array($Ri);
        $VATP = $vd['vat_amount'];
        if ($stk['exvat'] != 'yes' && $vd['zero'] != "Yes") {
            # If vat is not included
            if ($vatinc == "no") {
                $vat[$keys] = sprintf("%01.2f", $VATP / 100 * $amt[$keys]);
            } elseif ($vatinc == "yes") {
                $vat[$keys] = sprintf("%01.2f", $amt[$keys] / ($VATP + 100) * $VATP);
            } else {
                $vat[$keys] = 0;
            }
        } else {
            $vat[$keys] = 0;
        }
        if ($qty[$stkd['id']] > $stkd['iqty']) {
            return "You cannot invoice more than you ordered.";
        }
        $tot += $qty[$stkd['id']];
        if ($stkd['account'] > 0) {
            $stk['stkdes'] = $stkd['description'];
            $stk['stkid'] = 0;
            $stk['stkcod'] = "";
        }
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$wh['whname']}</td>\n\t\t\t\t<td><a href='#' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t<td><input type='hidden' name=qty[{$stkd['id']}] size='3' value='" . $qty[$stkd['id']] . "'>" . sprint3($qty[$stkd['id']]) . "</td>\n\t\t\t\t<td>{$stkd['unitcost']}</td>\n\t\t\t\t<td>{$stkd['udiscount']}</td>\n\t\t\t\t<td>{$sday}-{$smon}-{$syear}</td>\n\t\t\t\t<td>" . CUR . " {$stkd['amt']}</td>\n\t\t\t</tr>";
        $key++;
    }
    # Look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    }
    $products .= "</table>";
    /* --- End Products Display --- */
    if (isset($amt)) {
        $SUBTOT = array_sum($amt);
    } else {
        $SUBTOT = 0.0;
    }
    if ($tot == 0) {
        return "You cannot invoice zero items";
    }
    # If vat is not included (delchrg)
    $shipchrg = $pur['shipchrg'];
    if ($pur['iamount'] > 0) {
        $shipchrg = 0;
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes WHERE id='{$pur['delvat']}'";
    $Ri = db_exec($Sl);
    if (pg_num_rows($Ri) < 1) {
        $Sl = "SELECT * FROM vatcodes";
        $Ri = db_exec($Sl);
    }
    $vd = pg_fetch_array($Ri);
    $VATP = $vd['vat_amount'];
    if ($vd['zero'] != "Yes") {
        //$VATP = TAX_VAT;
        if ($vatinc == "no") {
            $svat = sprint($VATP / 100 * $shipchrg);
            $shipexvat = $shipchrg;
        } elseif ($vatinc == "yes") {
            $svat = sprint($shipchrg / ($VATP + 100) * $VATP);
            $shipexvat = $shipchrg - $svat;
        } else {
            $svat = 0;
            $shipexvat = $shipchrg;
        }
    } else {
        $svat = 0;
        $shipexvat = $shipchrg;
    }
    # If there vatable items
    if (isset($vat)) {
        $VAT = array_sum($vat);
    } else {
        $VAT = 0;
    }
    # Total
    $TOTAL = $SUBTOT + $shipexvat;
    # If vat is not included
    if ($vatinc == "no") {
        $TOTAL = sprint($TOTAL + $VAT + $svat);
    } else {
        $TOTAL = sprint($TOTAL + $svat);
        $SUBTOT -= $VAT;
    }
    $VAT += $svat;
    /* -- Final Layout -- */
    $details = "\n\t\t<center>\n\t\t<h3>Record Purchase Invoice</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='purid' value='{$purid}'>\n\t\t\t<input type='hidden' name='TOTAL' value='{$TOTAL}'>\n\t\t\t<input type='hidden' name='SUBTOT' value='{$SUBTOT}'>\n\t\t\t<input type='hidden' name='VAT' value='{$VAT}'>\n\t\t\t<input type='hidden' name='del' value='{$shipexvat}'>\n\t\t\t<input type='hidden' name='remarks' value='{$remarks}'>\n\t\t\t<input type='hidden' name='supinv' value='{$supinv}'>\n\t\t\t<input type='hidden' name='p_day' value='{$p_day}'>\n\t\t\t<input type='hidden' name='p_month' value='{$p_month}'>\n\t\t\t<input type='hidden' name='p_year' value='{$p_year}'>\n\t\t<table " . TMPL_tblDflts . " width=95%>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Supplier Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Supplier</td>\n\t\t\t\t\t\t\t<td valign='center'>{$sup['supname']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Account number</td>\n\t\t\t\t\t\t\t<td valign='center'>{$sup['supno']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td valign='top'>Supplier Address</td>\n\t\t\t\t\t\t\t<td valign='center'>" . nl2br($supaddr) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Purchase Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Purchase No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['purnum']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Supp Inv No.</td>\n\t\t\t\t\t\t\t<td valign='center'>{$supinv}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Ref No.</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' name='refno' size='10' value='{$pur['refno']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['terms']} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Date</td>\n\t\t\t\t\t\t\t<td valign='center'>{$p_day}-{$p_month}-{$p_year}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pur['vatinc']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " {$pur['shipchrg']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<p>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th width='25%'>Quick Links</th>\n\t\t\t\t\t\t\t<th width='25%'>Remarks</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='purchase-new.php'>New purchase</a></td>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'>" . nl2br($remarks) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><a href='purchase-view.php'>View purchases</a></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " " . sprint($SUBTOT) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charges</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$shipexvat}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT @ " . TAX_VAT . " %</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " " . sprint($VAT) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input type='submit' name='upBtn' value='Write'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t</center>";
    return $details;
}
コード例 #29
0
function details($_POST, $error = "")
{
    # Get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    if (isset($invid)) {
        $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    }
    if (isset($deptid)) {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
    }
    if (isset($letters)) {
        $v->isOk($letters, "string", 0, 5, "Invalid First 3 Letters.");
    }
    # display errors, if any
    if ($v->isError()) {
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>{$e['msg']}</li>";
        }
        $confirm .= "{$error}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    if (!isset($deptid)) {
        $deptid = 0;
    } else {
        if (isset($invid)) {
            db_conn("cubit");
            $sql = "UPDATE rec_invoices SET deptid='{$deptid}' WHERE invid='{$invid}' AND deptid<>'{$deptid}'";
            db_exec($sql) or errDie("Error updating invoice department.");
        }
    }
    if (!isset($invid)) {
        $invid = create_dummy($deptid);
        $stkerr = "0,0";
    }
    if (!isset($done)) {
        $done = "";
    }
    if (!isset($stkerr)) {
        $stkerr = "0,0";
    }
    # Get invoice info
    db_connect();
    $sql = "SELECT * FROM rec_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($invRslt) < 1) {
        return "<li class='err'>Invoice Not Found</li>";
    }
    $inv = pg_fetch_array($invRslt);
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$inv['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected Customer info
    if (isset($letters)) {
        db_connect();
        $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}' AND div = '" . USER_DIV . "'";
        $custRslt = db_exec($sql) or errDie("Unable to view customer");
        if (pg_numrows($custRslt) < 1) {
            db_connect();
            if ($inv['deptid'] == 0) {
                $searchdept = "";
            } else {
                $searchdept = "deptid = '{$inv['deptid']}' AND ";
            }
            # Query server for customer info
            $sql = "\n\t\t\t\tSELECT * FROM customers \n\t\t\t\tWHERE {$searchdept} location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' \n\t\t\t\tORDER BY surname";
            $custRslt = db_exec($sql) or errDie("Unable to view customers");
            if (pg_numrows($custRslt) < 1) {
                $ajax_err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
                //return view_err($_POST, $err);
            } else {
                $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
                $customers .= "<option value='-S' selected>Select Customer</option>";
                while ($cust = pg_fetch_array($custRslt)) {
                    $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']}</option>";
                }
                $customers .= "</select>";
            }
            # Take care of the unset vars
            $cust['addr1'] = "";
            $cust['cusnum'] = "";
            $cust['vatnum'] = "";
            $cust['accno'] = "";
        } else {
            $cust = pg_fetch_array($custRslt);
            $sql = "SELECT * FROM customers WHERE deptid = '{$inv['deptid']}' AND location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
            $cusRslt = db_exec($sql) or errDie("Unable to view customers");
            # Moarn if customer account has been blocked
            if ($cust['blocked'] == 'yes') {
                $error .= "<li class='err'>Error : Selected customer account has been blocked.</li>";
            }
            // $customers = "<input type=hidden name=cusnum value='$cust[cusnum]'>$cust[cusname]  $cust[surname]";
            $cusnum = $cust['cusnum'];
            $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
            // $customers .= "<option value='-S' selected>Select Customer</option>";
            while ($cus = pg_fetch_array($cusRslt)) {
                $sel = "";
                if ($cust['cusnum'] == $cus['cusnum']) {
                    $sel = "selected";
                }
                $customers .= "<option value='{$cus['cusnum']}' {$sel}>{$cus['cusname']} {$cus['surname']}</option>";
            }
            $customers .= "</select>";
        }
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    //	$whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    $whs = "<select name='whidss[]'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            if (!user_in_store_team($wh["whid"], USER_ID)) {
                continue;
            }
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    # Get sales people
    db_conn("exten");
    $sql = "SELECT * FROM salespeople WHERE div = '" . USER_DIV . "' ORDER BY salesp ASC";
    $salespRslt = db_exec($sql) or errDie("Unable to get sales people.");
    if (pg_numrows($salespRslt) < 1) {
        return "<li class='err'> There are no Sales People found in Cubit.</li>";
    } else {
        $salesps = "<select name='salespn'>";
        while ($salesp = pg_fetch_array($salespRslt)) {
            if ($salesp['salesp'] == $inv['salespn']) {
                $sel = "selected";
            } else {
                $sel = "";
            }
            $salesps .= "<option value='{$salesp['salesp']}' {$sel}>{$salesp['salesp']}</option>";
        }
        $salesps .= "</select>";
    }
    # Days drop downs
    $days = array("0" => "0", "7" => "7", "14" => "14", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $inv['terms']);
    # Keep the charge vat option stable
    if ($inv['chrgvat'] == "inc") {
        $chin = "checked=yes";
        $chex = "";
        $chno = "";
    } elseif ($inv['chrgvat'] == "exc") {
        $chin = "";
        $chex = "checked=yes";
        $chno = "";
    } else {
        $chin = "";
        $chex = "";
        $chno = "checked=yes";
    }
    # Format date
    list($rinv_year, $rinv_month, $rinv_day) = explode("-", $inv['odate']);
    /* --- End Drop Downs --- */
    // get the ID of the first warehouse
    db_conn("exten");
    $sql = "SELECT whid FROM warehouses ORDER BY whid ASC LIMIT 1";
    $rslt = db_exec($sql) or errDie("Error reading warehouses (FWH).");
    if (pg_num_rows($rslt) > 0) {
        $FIRST_WH = pg_fetch_result($rslt, 0, 0);
    } else {
        $FIRST_WH = "-S";
    }
    /* --- Start Products Display --- */
    # Select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>VAT CODE</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t<tr>";
    # get selected stock in this invoice
    db_connect();
    $sql = "SELECT * FROM recinv_items  WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $stkd['account'] += 0;
        if ($stkd['account'] != 0) {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            db_conn('core');
            $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
            $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
            $Accounts = "\n\t\t\t\t<select name='accounts[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            while ($ad = pg_fetch_array($Ri)) {
                if (isb($ad['accid'])) {
                    continue;
                }
                if ($ad['accid'] == $stkd['account']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Accounts .= "<option value='{$ad['accid']}' {$sel}>{$ad['accname']}</option>";
            }
            $Accounts .= "</select>";
            $sernos = "";
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'>";
            $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'>";
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            # Put in product
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whids[]' value='{$stkd['whid']}'></td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$stkd['description']}'> {$sernos}</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='hidden' name='disc[]' value='{$stkd['disc']}'><input type='hidden' name='discp[]' value='{$stkd['discp']}'></td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$stkd['amt']}'> " . CUR . " " . sprint($stkd['amt']) . "</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
        } else {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            # Get warehouse name
            db_conn("exten");
            $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
            $whRslt = db_exec($sql);
            $wh = pg_fetch_array($whRslt);
            # Get selected stock in this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            $sernos = "<input type='hidden' name='sernos[]' value='{$stkd['serno']}'>{$stkd['serno']}";
            # check permissions
            if (perm("invoice-unitcost-edit.php")) {
                $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stkd['unitcost']}'>";
            } else {
                $viewcost = "<input type='hidden' size='8' name='unitcost[]' value='{$stkd['unitcost']}'>{$stkd['unitcost']}";
            }
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            # Put in product
            $products .= "\n\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$stkd['whid']}'>{$wh['whname']}</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'><a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t{$sernos}\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$stkd['qty']}'></td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='text' size='4' name='disc[]' value='{$stkd['disc']}'> OR <input type='text' size='4' name='discp[]' value='{$stkd['discp']}' maxlength='5'>%</td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$stkd['amt']}'> " . CUR . " " . sprint($stkd['amt']) . "</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$key}'><input type='hidden' name='SCROLL' value='yes'></td>\n\t\t\t\t</tr>";
            $key++;
        }
    }
    # Look above(remprod keys)
    $keyy = $key;
    # Look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    } else {
        $SCROLL = "yes";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S" && isset($cust['pricelist'])) {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # Get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                # Get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                $sernos = "<input type='hidden' name='sernos[]' value=''>";
                # Get price from price list if it is set
                if (isset($cust['pricelist'])) {
                    # get selected stock in this warehouse
                    db_conn("exten");
                    $sql = "SELECT price FROM plist_prices WHERE listid = '{$cust['pricelist']}' AND stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'";
                    $plRslt = db_exec($sql);
                    if (pg_numrows($plRslt) > 0) {
                        $pl = pg_fetch_array($plRslt);
                        $stk['selamt'] = $pl['price'];
                    }
                }
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class='err'>Warning :  Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                /* -- End Some Checks -- */
                # Calculate the Discount discount
                if ($discs[$key] < 1) {
                    if ($discps[$key] > 0) {
                        $discs[$key] = round($discps[$key] / 100 * $stk['selamt'], 2);
                    }
                } else {
                    $discps[$key] = round($discs[$key] * 100 / $stk['selamt'], 2);
                }
                # Calculate amount
                $amt[$key] = $qtyss[$key] * ($stk['selamt'] - $discs[$key]);
                $stk['selamt'] = sprint($stk['selamt']);
                # Check permissions
                if (perm("invoice-unitcost-edit.php")) {
                    $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$stk['selamt']}'>";
                } else {
                    $viewcost = "<input type='hidden' size='8' name='unitcost[]' value='{$stk['selamt']}'>{$stk['selamt']}";
                }
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($stk['vatcode'] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $amt[$key] = sprint($amt[$key]);
                # Put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<input type='hidden' name='accounts[]' value='0'>\n\t\t\t\t\t<input type='hidden' name='descriptions[]' value=''>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whids[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stk['stkid']}'><a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t\t{$sernos}\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td><input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'></td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td><input type='text' size='4' name='disc[]' value='{$discs[$key]}'> OR <input type='text' size='4' name='discp[]' value='{$discps[$key]}' maxlength='5'>%</td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } elseif (isset($accountss[$key]) && $accountss[$key] != "0" && isset($cust['pricelist'])) {
                db_conn('core');
                $Sl = "SELECT * FROM accounts WHERE accid='{$accountss[$key]}'";
                $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                if (pg_num_rows($Ri) < 1) {
                    return "invalid.";
                }
                $ad = pg_fetch_array($Ri);
                # Calculate amount
                $amt[$key] = sprint($qtyss[$key] * $unitcosts[$key]);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtys[]' value='{$qtyss[$key]}'>";
                # Check permissions
                $viewcost = "<input type='text' size='8' name='unitcost[]' value='{$unitcosts[$key]}'>";
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vatcodess[$key] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                # Put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='2'>{$ad['accname']}<input type='hidden' name='accounts[]' value='{$accountss[$key]}'><input type='hidden' name='whids[]' value='0'></td>\n\t\t\t\t\t\t<td>{$Vatcodes}<input type='hidden' name='stkids[]' value='0'></td>\n\t\t\t\t\t\t<td><input type='text' size='20' name='descriptions[]' value='{$descriptionss[$key]}'></td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='disc[]' value='0'><input type='hidden' name='discp[]' value='0'></td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
            } else {
                if (!isset($diffwhBtn)) {
                    # skip if not selected
                    if ($whid == "-S") {
                        continue;
                    }
                    if (!isset($addnon)) {
                        # get warehouse name
                        db_conn("exten");
                        $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                        $whRslt = db_exec($sql);
                        $wh = pg_fetch_array($whRslt);
                        if (isset($ria) && $ria != "") {
                            $len = strlen($ria);
                            if ($ria == "Show All") {
                                $Wh = "";
                                $ria = "";
                            } else {
                                $Wh = "AND (lower(stkdes) LIKE lower('%{$ria}%')) OR (lower(stkcod) LIKE lower('%{$ria}%'))";
                                //								$Wh = "AND lower(substr(stkcod,1,'$len'))=lower('$ria')";
                            }
                        } else {
                            $Wh = "AND FALSE";
                            $ria = "";
                        }
                        # get stock on this warehouse
                        db_connect();
                        $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND blocked = 'n' AND div = '" . USER_DIV . "' AND serd = 'no' {$Wh} ORDER BY stkcod ASC";
                        $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                        if (pg_numrows($stkRslt) < 1) {
                            $error .= "<li class='err'>There are no stock items in the selected warehouse.</li>";
                            continue;
                        }
                        if (pg_numrows($stkRslt) == 1) {
                            $ex = "selected";
                        } else {
                            $ex = "";
                        }
                        if (!isset($sel_frm) || $sel_frm == "stkcod") {
                            $cods = "<select class='width : 15'name='stkidss[]' onChange='javascript:document.form.submit();'>";
                            $cods .= "<option value='-S' disabled selected>Select Number</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $cods .= "</select> ";
                            $descs = "";
                        } else {
                            $descs = "<select class='width : 15'name='stkidss[]' onChange='javascript:document.form.submit();'>";
                            $descs .= "<option value='-S' disabled selected>Select Description</option>";
                            $count = 0;
                            while ($stk = pg_fetch_array($stkRslt)) {
                                $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                            }
                            $descs .= "</select> ";
                            $cods = "";
                        }
                        # put in drop down and warehouse
                        $products .= "\n\t\t\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t\t\t<td>{$cods}</td>\n\t\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]'  value='1'></td>\n\t\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t\t\t<td><input type='hidden' name='amts[]' value='0.00'>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t</tr>";
                    } else {
                        db_conn('core');
                        $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                        $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                        $Accounts = "\n\t\t\t\t\t\t\t<select name='accountss[]'  onChange='javascript:document.form.submit();'>\n\t\t\t\t\t\t\t\t<option value='0'>Select Account</option>";
                        while ($ad = pg_fetch_array($Ri)) {
                            if (isb($ad['accid'])) {
                                continue;
                            }
                            $Accounts .= "<option value={$ad['accid']}>{$ad['accname']}</option>";
                        }
                        $Accounts .= "</select>";
                        db_conn('cubit');
                        $Sl = "SELECT * FROM vatcodes ORDER BY code";
                        $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                        $Vatcodes = "\n\t\t\t\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t\t\t\t<option value='0'>Select</option>";
                        while ($vd = pg_fetch_array($Ri)) {
                            if ($vd['del'] == "Yes") {
                                $sel = "selected";
                            } else {
                                $sel = "";
                            }
                            $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                        }
                        $Vatcodes .= "</select>";
                        //<input type='hidden' name='stkidss[]' value=''>
                        $products .= "\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whidss[]' value='{$FIRST_WH}'></td>\n\t\t\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t\t<td><input type='hidden' name='discs[]' value='0'><input type='hidden' name='discps[]' value='0' ></td>\n\t\t\t\t\t\t\t</tr>";
                    }
                }
            }
        }
    } else {
        if (!(isset($diffwhBtn) || isset($addnon))) {
            # check if setting exists
            db_connect();
            $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
            $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
            if (pg_numrows($Rslt) > 0) {
                $set = pg_fetch_array($Rslt);
                $whid = $set['value'];
                if (isset($wtd) && $wtd != 0) {
                    $whid = $wtd;
                }
                # get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whname FROM warehouses WHERE whid = '{$whid}' AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                if (isset($ria) && $ria != "") {
                    $len = strlen($ria);
                    if ($ria == "Show All") {
                        $Wh = "";
                        $ria = "";
                    } else {
                        $Wh = "AND lower(substr(stkcod,1,'{$len}'))=lower('{$ria}')";
                        $ria = "";
                    }
                } else {
                    $Wh = "";
                    $ria = "";
                }
                # get stock on this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE whid = '{$whid}' AND blocked = 'n' AND div = '" . USER_DIV . "' AND serd = 'no' {$Wh} ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                if (pg_numrows($stkRslt) < 1) {
                    if (!isset($err)) {
                        $err = "";
                    }
                    $err .= "<li>There are no stock items in the selected store.</li>";
                    //ontinue;
                }
                $stks = "<select name='stkidss[]' onChange='javascript:document.form.submit();'>";
                $stks .= "<option value='-S' disabled selected>Select Number</option>";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    $stks .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $stks .= "</select> ";
                $products .= "\n\t\t\t\t\t<input type='hidden' name='descriptionss[]' value=''>\n\t\t\t\t\t<input type='hidden' name='vatcodess[]' value=''>\n\t\t\t\t\t<input type='hidden' name='accountss[]' value='0'>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' name='whidss[]' value='{$whid}'>{$wh['whname']}</td>\n\t\t\t\t\t\t<td>{$stks}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td><input type='hidden' size='3' name='qtyss[]' value='1'>1</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td><input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>";
            } else {
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$whs}</td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t<td><input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>";
            }
        } else {
            if (isset($addnon)) {
                db_conn('core');
                $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                $Accounts = "\n\t\t\t\t<select name='accountss[]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
                while ($ad = pg_fetch_array($Ri)) {
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                }
                $Accounts .= "</select>";
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t<select name='vatcodess[]'>\n\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vd['del'] == "Yes") {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whidss[]' value='{$FIRST_WH}'></td>\n\t\t\t\t\t<input type='hidden' name='stkidss[]' value='-S'>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[]'></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[]' value='1'></td>\n\t\t\t\t\t<td><input type='text' name='unitcosts[]' size='7'></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t\t<td><input type='hidden' name='discs[]' value='0'><input type='hidden' name='discps[]' value='0'></td>\n\t\t\t\t</tr>";
            }
        }
    }
    /* -- start Listeners -- */
    if (isset($diffwhBtn)) {
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$whs}</td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td></td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td> </td>\n\t\t\t\t<td><input type='text' size='4' name='discs[]' value='0'> OR <input type='text' size='4' name='discps[]' value='0' maxlength='5'>%</td>\n\t\t\t\t<td>" . CUR . " 0.00</td>\n\t\t\t\t<td></td>\n\t\t\t</tr>";
    }
    /* -- End Listeners -- */
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    # Calculate tradediscm
    if ($inv['traddisc'] > 0) {
        $traddiscm = sprint($inv['traddisc'] / 100 * ($SUBTOT + $inv['delchrg']));
    } else {
        $traddiscm = "0.00";
    }
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    $VAT = sprint($inv['vat']);
    $TOTAL = sprint($inv['total']);
    $inv['delchrg'] = sprint($inv['delchrg']);
    /* --- End Some calculations --- */
    /*--- Start checks --- */
    # check only if the customer is selected
    if (isset($cusnum) && $cusnum != "-S") {
        #check againg credit limit
        if ($TOTAL + $cust['balance'] > $cust['credlimit']) {
            $error .= "<li class='err'>Warning : Customers Credit limit of <b>" . CUR . " " . sprint($cust["credlimit"]) . "</b> has been exceeded";
        }
        $avcred = $cust['credlimit'] - $cust['balance'];
    } else {
        $avcred = "0.00";
    }
    $inv['delvat'] += 0;
    if ($inv['delvat'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $inv['delvat'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "\n\t\t<select name='delvat'>\n\t\t\t<option value='0'>Select</option>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $inv['delvat']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    db_conn('cubit');
    $Sl = "SELECT * FROM costcenters";
    $Ri = db_exec($Sl);
    if (pg_num_rows($Ri) > 0) {
        $ctd = "\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Cost Center</th>\n\t\t\t\t\t<th>Percentage</th>\n\t\t\t\t</tr>";
        $i = 0;
        while ($data = pg_fetch_array($Ri)) {
            $Sl = "SELECT * FROM invc WHERE inv='{$invid}' AND cid='{$data['ccid']}'";
            $Rq = db_exec($Sl);
            $cd = pg_fetch_array($Rq);
            $ctd .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$data['centername']}</td>\n\t\t\t\t\t<td><input type='text' name='ct[{$data['ccid']}]' size='5' value='{$cd['amount']}'>%</td>\n\t\t\t\t</tr>";
            $i++;
        }
        $ctd .= "</table>";
    } else {
        $ctd = "";
    }
    // Retrieve default comments from Cubit
    if (empty($inv["comm"])) {
        db_conn("cubit");
        $sql = "SELECT value FROM settings WHERE constant='DEFAULT_COMMENTS'";
        $commRslt = db_exec($sql) or errDie("Unable to retrieve default comment from Cubit.");
        $comment = base64_decode(pg_fetch_result($commRslt, 0));
    } else {
        $comment = $inv["comm"];
    }
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    // Which display method was selected
    if (isset($sel_frm) && $sel_frm == "stkdes") {
        $sel_frm_cod = "";
        $sel_frm_des = "checked";
    } else {
        $sel_frm_cod = "checked";
        $sel_frm_des = "";
    }
    /*--- Start checks --- */
    /* -- Final Layout -- */
    $details_begin = "\n\t\t<center>\n\t\t<h3>Recurring Invoice</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='invid' value='{$invid}'>\n\t\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\n\t\t\t\t\t<div id='cust_selection'>";
    if (empty($ajax_err) && (isset($cusnum) || AJAX)) {
        if (isset($cusnum)) {
            $OTS_OPT = onthespot_encode(SELF, "cust_selection", "deptid={$inv['deptid']}&letters={$letters}&cusnum={$cusnum}&invid={$invid}");
            $custedit = "\n\t\t\t\t<td nowrap>\n\t\t\t\t\t<a href='javascript: popupSized(\"cust-edit.php?cusnum={$cusnum}&onthespot={$OTS_OPT}\", \"edit_cust\", 700, 630);'>\n\t\t\t\t\t\tEdit Customer Details\n\t\t\t\t\t</a>\n\t\t\t\t</td>";
        } else {
            $custedit = "";
        }
        $ajaxOut = "\n\t\t\t<input type='hidden' name='letters' value='{$letters}'>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Account No.</td>\n\t\t\t\t\t<td valign='center'>{$cust['accno']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t<td valign='center'>{$customers}</td>\n\t\t\t\t\t{$custedit}\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t\t<td valign='center'>" . nl2br($cust['addr1']) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer Order number</td>\n\t\t\t\t\t<td valign='center'><input type='text' size='10' name='cordno' value='{$inv['cordno']}'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer VAT Number</td>\n\t\t\t\t\t<td>{$cust['vatnum']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Point of Sale</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Barcode</td>\n\t\t\t\t\t<td><input type='text' size='13' name='bar' value=''></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Using</td>\n\t\t\t\t\t<td>Stock Code<input type='radio' name='sel_frm' value='stkcod' onChange='javascript:document.form.submit();' {$sel_frm_cod}><br>Stock Description<input type='radio' name='sel_frm' value='stkdes' onChange='javascript:document.form.submit();' {$sel_frm_des}></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "' " . ass("Type the first letters of the stock code you are looking for.") . ">\n\t\t\t\t\t<td>Stock Filter</td>\n\t\t\t\t\t<td nowrap><input type='text' size='13' name='ria' value='{$ria}'> <input type='submit' value='Search'> <input type='submit' name='ria' value='Show All'></td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    } else {
        # Query server for depts
        db_conn("exten");
        $sql = "SELECT * FROM departments WHERE div = '" . USER_DIV . "' ORDER BY deptname ASC";
        $deptRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($deptRslt) < 1) {
            return "<li class='err'>There are no Departments found in Cubit.</li>";
        } else {
            $depts = "<select id='deptid'>";
            $depts .= "<option value='0'>All Departments</option>";
            while ($dept = pg_fetch_array($deptRslt)) {
                $depts .= "<option value='{$dept['deptid']}'>{$dept['deptname']}</option>";
            }
            $depts .= "</select>";
        }
        if (!isset($ajax_err)) {
            $ajax_err = "";
        }
        $ajaxOut = "\n\t\t\t<script>\n\t\t\t\tfunction updateCustSelection() {\n\t\t\t\t\tdeptid = getObject('deptid').value;\n\t\t\t\t\tletters = getObject('letters').value;\n\t\t\t\t\tajaxRequest('" . SELF . "', 'cust_selection', AJAX_SET, 'letters='+letters+'&deptid='+deptid+'&invid={$invid}');\n\t\t\t\t}\n\t\t\t</script>\n\t\t\t{$ajax_err}\n\t\t\t<table " . TMPL_tblDflts . " width='400'>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>New Recurring Invoice</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Department</td>\n\t\t\t\t\t<td valign='center'>{$depts}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>First Letters of customer</td>\n\t\t\t\t\t<td valign='center'><input type='text' size='5' id='letters' maxlength='5'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td valign='center'><input type='button' value='Update' onClick='updateCustSelection();'></td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    }
    if (isset($diffwhBtn) or isset($addprodBtn) or isset($addnon) or isset($upBtn) or isset($saveBtn) or isset($ria)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $details_end = "\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td valign='top' align='right'>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th colspan='2'> Invoice Details </th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Invoice No.</td>\n\t\t\t\t\t\t\t<td valign='center'>RI {$inv['invid']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Document Ref No.</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='docref' value='{$inv['docref']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Sales Order No.</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='ordno' value='{$inv['ordno']}'></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' size='7' name='chrgvat' value='inc' {$chin}> No<input type='radio' size='7' name='chrgvat' value='exc' {$chex}></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t<td valign='center'>{$termssel} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t\t<td valign='center'>{$salesps}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Invoice Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("rinv", $rinv_year, $rinv_month, $rinv_day) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Available Credit</td>\n\t\t\t\t\t\t\t<td>" . CUR . " " . sprint($avcred) . "</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='traddisc' value='{$inv['traddisc']}'>%</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='7' name='delchrg' value='{$inv['delchrg']}'>{$Vatcodes}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td colspan='2'>{$ctd}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr><td><br></td></tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>\n\t\t\t\t\t<p>\n\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td rowspan='2'>" . mkQuickLinks(ql("cust-credit-stockinv.php", "New Invoice"), ql("rec-invoice-view.php", "View Recurring Invoices"), ql("customers-new.php", "New Customer")) . "\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<th width='25%'>Comments</th>\n\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'><textarea name='comm' rows='4' cols='20'>{$comment}</textarea></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t\t<td align='right' valign='top'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t<td align='right'>" . CUR . " <input type='hidden' name='SUBTOT' value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$inv['discount']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$inv['delivery']}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='right'><input name='diffwhBtn' type='submit' value='Different Store'> | <input name='addprodBtn' type='submit' value='Add Product'> | <input name='addnon' type='submit' value='Add Non stock Product'> | <input type='submit' name='upBtn' value='Update'> </td>\n\t\t\t\t<td> | <input type='submit' name='saveBtn' value='Save &raquo'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<a name='bottom'>\n\t\t</form>\n\t\t</center>\n\t\t{$jump_bot}";
    if (AJAX) {
        return $ajaxOut;
    } else {
        return "{$details_begin}{$ajaxOut}{$details_end}";
    }
}
コード例 #30
0
function details($_POST, $error = "")
{
    # Get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    if (isset($invid)) {
        $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    }
    if (isset($letter)) {
        $v->isOk($letters, "string", 0, 5, "Invalid First 3 Letters.");
    }
    if (isset($deptid)) {
        $v->isOk($deptid, "num", 1, 20, "Invalid department number.");
    }
    if (isset($sel_frm)) {
        $v->isOk($sel_frm, "string", 6, 6, "Invalid select from selection.");
    }
    # display errors, if any
    if ($v->isError()) {
        $error = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $error .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        return $error . view_err($_POST);
    }
    if (isset($deptid) && isset($letters)) {
        db_connect();
        if ($deptid == "0") {
            $searchdept = "";
        } else {
            $searchdept = "deptid = '{$deptid}' AND ";
        }
        # Query server for customer info
        $sql = "SELECT cusnum, cusname, surname FROM customers WHERE {$searchdept} location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
        $custRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($custRslt) < 1) {
            $ajax_err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
            //return view_err($_POST, $err);
        }
    }
    if (!isset($deptid)) {
        $deptid = 2;
    } else {
        if (isset($invid)) {
            db_conn("cubit");
            $sql = "UPDATE invoices SET deptid='{$deptid}' WHERE invid='{$invid}' AND deptid<>'{$deptid}'";
            db_exec($sql) or errDie("Error updating invoice department.");
        }
    }
    if (!isset($invid)) {
        $invid = create_dummy($deptid);
    }
    if (!isset($stkerr)) {
        $stkerr = "0,0";
    }
    if (!isset($done)) {
        $done = "";
    }
    if (!isset($cust_del_addr)) {
        $cust_del_addr = "";
    }
    if (!isset($sel_frm)) {
        $sel_frm = "stkcod";
    }
    # Get invoice info
    db_connect();
    $sql = "SELECT * FROM invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoice information");
    if (pg_numrows($invRslt) < 1) {
        return "<li class='err'>Invoice Not Found</li>";
    }
    $inv = pg_fetch_array($invRslt);
    if (!isset($branch)) {
        $branch = $inv['branch'];
    }
    # Check if invoice has been printed
    if ($inv['printed'] == "y") {
        $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has already been printed.</li>";
        $error .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $error;
    }
    # Get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$inv['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<li class='err'>Department not Found.</li>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    # Get selected Customer info
    if (isset($letters)) {
        db_connect();
        $sql = "SELECT * FROM customers WHERE cusnum = '{$inv['cusnum']}' AND location != 'int' AND div = '" . USER_DIV . "'";
        $custRslt = db_exec($sql) or errDie("Unable to view customer");
        if (pg_numrows($custRslt) < 1) {
            if ($inv['deptid'] == 0) {
                $searchdept = "";
            } else {
                $searchdept = "deptid = '{$inv['deptid']}' AND ";
            }
            # Query server for customer info
            $sql = "SELECT cusnum, cusname, surname, accno FROM customers WHERE {$searchdept} location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
            $custRslt = db_exec($sql) or errDie("Unable to view customers");
            if (pg_numrows($custRslt) < 1) {
                $ajax_err = "<li class='err'>No customer names starting with <b>{$letters}</b> in database.</li>";
                //return view_err($_POST, $err);
            } else {
                $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
                if (pg_numrows($custRslt) == 1) {
                    $inv['cusnum'] = pg_fetch_result($custRslt, 0, 0);
                } else {
                    $customers .= "<option value='-S' selected>Select Customer</option>";
                }
                while ($cust = pg_fetch_array($custRslt)) {
                    $customers .= "<option value='{$cust['cusnum']}'>{$cust['cusname']} {$cust['surname']} ({$cust['accno']})</option>";
                }
                $customers .= "</select>";
            }
            # Take care of the unset vars
            $cust['addr1'] = "";
            $cust['cusnum'] = "";
            $cust['vatnum'] = "";
            $cust['accno'] = "";
            $cust_del_addr = "";
            $branchdrop = "<input type='hidden' name='branch' value='0'>";
        } else {
            $cust = pg_fetch_array($custRslt);
            #override address
            if ($branch != 0) {
                $get_addr = "SELECT branch_descrip FROM customer_branches WHERE id = '{$branch}' AND div = '" . USER_DIV . "' LIMIT 1";
                $run_addr = db_exec($get_addr);
                if (pg_numrows($run_addr) < 1) {
                    #address missing ... do nothing
                } else {
                    $arr = pg_fetch_array($run_addr);
                    $cust['addr1'] = $arr['branch_descrip'];
                    if ($inv['del_addr'] != $arr['branch_descrip']) {
                        $update_addr = "UPDATE invoices SET del_addr  = '{$arr['branch_descrip']}' WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
                    }
                }
            }
            #if the del_addr of invoice if empty, add the customer's entry and display button so user can edit anyway
            if (strlen($inv['del_addr']) < 1) {
                $cust_del_addr = $cust['del_addr1'];
            } else {
                $cust_del_addr = $inv['del_addr'];
            }
            $sql = "SELECT cusnum, cusname, surname FROM customers WHERE deptid = '{$inv['deptid']}' AND location != 'int' AND lower(surname) LIKE lower('{$letters}%') AND blocked != 'yes' AND div = '" . USER_DIV . "' ORDER BY surname";
            $cusRslt = db_exec($sql) or errDie("Unable to view customers");
            # Moarn if customer account has been blocked
            if ($cust['blocked'] == 'yes') {
                $error .= "<li class='err'>Error : Selected customer account has been blocked.</li>";
            }
            // $customers = "<input type=hidden name=cusnum value='$cust[cusnum]'>$cust[cusname]  $cust[surname]";
            $cusnum = $cust['cusnum'];
            $customers = "<select name='cusnum' onChange='javascript:document.form.submit();'>";
            // $customers .= "<option value='-S' selected>Select Customer</option>";
            while ($cus = pg_fetch_array($cusRslt)) {
                $sel = "";
                if ($cust['cusnum'] == $cus['cusnum']) {
                    $sel = "selected";
                }
                $customers .= "<option value='{$cus['cusnum']}' {$sel}>{$cus['cusname']} {$cus['surname']}</option>";
            }
            $customers .= "</select>";
            #get list of branches
            $get_branches = "SELECT * FROM customer_branches WHERE cusnum = '{$cusnum}' AND div = '" . USER_DIV . "'";
            $run_branches = db_exec($get_branches);
            if (pg_numrows($run_branches) < 1) {
                $branchdrop = "<input type='hidden' name='branch' value='0'>No Branches For This Customer";
            } else {
                $branchdrop = "<select name='branch' onChange='javascript:document.form.submit();'>";
                $branchdrop .= "<option value='0'>Head Office</option>";
                while ($barr = pg_fetch_array($run_branches)) {
                    $sel2 = "";
                    if ($barr['id'] == $branch) {
                        $sel2 = "selected";
                    }
                    $branchdrop .= "<option {$sel2} value='{$barr['id']}'>{$barr['branch_name']}</option>";
                }
                $branchdrop .= "</select>";
            }
        }
    }
    /* --- Start Drop Downs --- */
    # Select warehouse
    db_conn("exten");
    //old
    //$whs = "<select name='whidss[]' onChange='javascript:document.form.submit();'>";
    //fixes broken new store function
    //STORE1
    $whs = "<select name='whidss[]'>";
    $sql = "SELECT * FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
    $whRslt = db_exec($sql);
    if (pg_numrows($whRslt) < 1) {
        return "<li class='err'> There are no Stores found in Cubit.</li>";
    } else {
        $whs .= "<option value='-S' disabled selected>Select Store</option>";
        while ($wh = pg_fetch_array($whRslt)) {
            $whs .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
        }
    }
    $whs .= "</select>";
    // Is the customer linked to a sales rep
    if (!empty($cust["sales_rep"])) {
        db_conn("exten");
        $sql = "SELECT salesp FROM salespeople WHERE salespid='{$cust['sales_rep']}'";
        $sr_rslt = db_exec($sql) or errDie("Unable to retrieve sales rep from Cubit.");
        $salespname = pg_fetch_result($sr_rslt, 0);
        $salesps = "<input type='hidden' name='salespn' value='{$salespname}'><b>[{$salespname}]</b>";
    } else {
        db_conn("exten");
        $sql = "SELECT * FROM salespeople WHERE div = '" . USER_DIV . "' ORDER BY salesp ASC";
        $salespRslt = db_exec($sql) or errDie("Unable to get sales people.");
        if (pg_numrows($salespRslt) < 1) {
            return "<li class='err'> There are no Sales People found in Cubit.</li>";
        } else {
            $salesps = "<select name='salespn'>";
            while ($salesp = pg_fetch_array($salespRslt)) {
                if ($salesp['salesp'] == $inv['salespn']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $salesps .= "<option value='{$salesp['salesp']}' {$sel}>{$salesp['salesp']}</option>";
            }
            $salesps .= "</select>";
        }
    }
    # Days drop downs
    $days = array("0" => "0", "7" => "7", "14" => "14", "30" => "30", "60" => "60", "90" => "90", "120" => "120");
    $termssel = extlib_cpsel("terms", $days, $inv['terms']);
    # Keep the charge vat option stable
    if ($inv['chrgvat'] == "inc") {
        $chin = "checked=yes";
        $chex = "";
        $chno = "";
    } elseif ($inv['chrgvat'] == "exc") {
        $chin = "";
        $chex = "checked=yes";
        $chno = "";
    } else {
        $chin = "";
        $chex = "";
        $chno = "checked=yes";
    }
    # Format date
    list($inv_date_year, $inv_date_month, $inv_date_day) = explode("-", $inv['odate']);
    /* --- End Drop Downs --- */
    /* --- Start Products Display --- */
    # Select all products
    $products = "\n\t\t<table " . TMPL_tblDflts . "' width='100%'>\n\t\t\t<tr>\n\t\t\t\t<th>STORE</th>\n\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t<th>VAT CODE</th>\n\t\t\t\t<th>SERIAL NO.</th>\n\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t<th>QTY</th>\n\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t<th>Remove</th>\n\t\t\t<tr>";
    # get selected stock in this invoice
    db_connect();
    $sql = "SELECT * FROM inv_items  WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $stkdRslt = db_exec($sql);
    $i = 0;
    $key = 0;
    $ai = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        $stkd['account'] += 0;
        if ($stkd['account'] != 0) {
            # Keep track of selected stock amounts
            $stkd["amt"] = sprint($stkd["amt"]);
            $amts[$i] = $stkd['amt'];
            $i++;
            $Accounts = "\n\t\t\t\t<select name='accounts[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
            if (isset($useaccdrop) and $useaccdrop == "yes") {
                db_connect();
                $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                if (pg_numrows($run_acc) > 0) {
                    while ($acc = pg_fetch_array($run_acc)) {
                        if ($acc['accid'] == $stkd['account']) {
                            $Accounts .= "<option value='{$acc['accid']}' selected>{$acc['accname']}</option>";
                        } else {
                            $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                        }
                    }
                    $Accounts .= "</select>";
                }
            } else {
                db_conn('core');
                $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                while ($ad = pg_fetch_array($Ri)) {
                    if ($ad['accid'] == $stkd['account']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    $Accounts .= "<option value='{$ad['accid']}' {$sel}>{$ad['accname']}</option>";
                }
            }
            $Accounts .= "</select>";
            $sernos = "\n\t\t\t\t<input type='hidden' name='sernos[{$ai}]' value='{$stkd['serno']}'>\n\t\t\t\t<input type='hidden' name='sernos_ss[{$ai}]' value='{$stkd['serno']}'>";
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[{$ai}]' value='{$stkd['qty']}'>";
            $viewcost = "<input type='text' size='8' name='unitcost[{$ai}]' value='{$stkd['unitcost']}'>";
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            # Put in product
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t{$Accounts}\n\t\t\t\t\t\t<input type='hidden' name='whids[{$ai}]' value='{$stkd['whid']}'>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[{$ai}]' value='{$stkd['stkid']}'>{$Vatcodes}</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptions[{$ai}]' value='{$stkd['description']}'> {$sernos}</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='hidden' name='disc[{$ai}]' value='{$stkd['disc']}'><input type='hidden' name='discp[{$ai}]' value='{$stkd['discp']}'></td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[{$ai}]' value='{$stkd['amt']}'> " . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$key}'></td>\n\t\t\t\t</tr>";
            $key++;
            ++$ai;
        } else {
            # Keep track of selected stock amounts
            $amts[$i] = $stkd['amt'];
            $i++;
            # Get warehouse name
            db_conn("exten");
            $sql = "SELECT whname FROM warehouses WHERE whid = '{$stkd['whid']}' AND div = '" . USER_DIV . "'";
            $whRslt = db_exec($sql);
            $wh = pg_fetch_array($whRslt);
            # Get selected stock in this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE stkid = '{$stkd['stkid']}' AND div = '" . USER_DIV . "'";
            $stkRslt = db_exec($sql);
            $stk = pg_fetch_array($stkRslt);
            # Serial number
            if ($stk['serd'] == 'yes' && ($inv['serd'] == 'n' || $stkd["serno"] == "")) {
                $sers = ext_getavserials($stkd['stkid']);
                $sernos = "<select name='sernos[{$ai}]'>";
                foreach ($sers as $skey => $ser) {
                    $sernos .= "<option value='{$ser['serno']}'>{$ser['serno']}</option>";
                }
                $sernos .= "</select>\n\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value='*_*_*CUBIT_SERIAL_SELECT_BOX*_*_*' />";
            } else {
                $sernos = "\n\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value='{$stkd['ss']}' />\n\t\t\t\t\t<input type='hidden' name='sernos[{$ai}]' value='{$stkd['serno']}'>{$stkd['ss']}";
            }
            # Input qty if not serialised
            $qtyin = "<input type='text' size='3' name='qtys[{$ai}]' value='{$stkd['qty']}'>";
            if ($stk['serd'] == 'yes') {
                $qtyin = "<input type='hidden' size='3' name='qtys[{$ai}]' value='{$stkd['qty']}'>{$stkd['qty']}";
            }
            # check permissions
            if (perm("invoice-unitcost-edit.php")) {
                $viewcost = "<input type='text' size='8' name='unitcost[{$ai}]' value='{$stkd['unitcost']}'>";
            } else {
                $viewcost = "<input type='hidden' size='8' name='unitcost[{$ai}]' value='{$stkd['unitcost']}'>{$stkd['unitcost']}";
            }
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($stkd['vatcode'] == $vd['id']) {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            # Put in product
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='hidden' name='accounts[{$ai}]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='descriptions[{$ai}]' value=''>\n\t\t\t\t\t\t<input type='hidden' name='whids[{$ai}]' value='{$stkd['whid']}'>{$wh['whname']}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='{$stkd['stkid']}'><a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td>{$sernos}</td>\n\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t<td><input type='text' size='4' name='disc[{$ai}]' value='{$stkd['disc']}'> OR <input type='text' size='4' name='discp[{$ai}]' value='{$stkd['discp']}' maxlength='5'>%</td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[{$ai}]' value='{$stkd['amt']}'> " . CUR . " {$stkd['amt']}</td>\n\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$key}'></td>\n\t\t\t\t</tr>";
            $key++;
            ++$ai;
        }
    }
    # Look above(remprod keys)
    $keyy = $key;
    # Look above(if i = 0 then there are no products)
    if ($i == 0) {
        $done = "";
    } else {
        $SCROLL = "yes";
    }
    # check if stock warehouse was selected
    if (isset($whidss)) {
        foreach ($whidss as $key => $whid) {
            if (isset($stkidss[$key]) && $stkidss[$key] != "-S" && isset($cust['pricelist'])) {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                # Get selected stock in this warehouse
                db_connect();
                $sql = "SELECT * FROM stock WHERE stkid = '{$stkidss[$key]}' AND div = '" . USER_DIV . "' ORDER BY stkcod ASC";
                $stkRslt = db_exec($sql);
                $stk = pg_fetch_array($stkRslt);
                # Get selected warehouse name
                db_conn("exten");
                $sql = "SELECT whid, whname FROM warehouses WHERE whid = (select whid from cubit.stock where stkid = '{$stk['stkid']}' limit 1) AND div = '" . USER_DIV . "'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                if ($stk['serd'] == 'yes') {
                    $sers = ext_getavserials($stkidss[$key]);
                    $sernos = "<select name='sernos[]' onChange='javascript:document.form.submit();'>";
                    foreach ($sers as $skey => $ser) {
                        $sernos .= "<option value='{$ser['serno']}'>{$ser['serno']}</option>";
                    }
                    $sernos .= "</select>\n\t\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value='*_*_*CUBIT_SERIAL_SELECT_BOX*_*_*' />";
                } else {
                    $sernos = "\n\t\t\t\t\t\t<input type='hidden' name='sernos_ss[]' value=''>\n\t\t\t\t\t\t<input type='hidden' name='sernos[{$ai}]' value=''>";
                }
                # Get price from price list if it is set
                if (isset($cust['pricelist'])) {
                    # get selected stock in this warehouse
                    db_conn("exten");
                    $sql = "SELECT price FROM plist_prices WHERE listid = '{$cust['pricelist']}' AND stkid = '{$stk['stkid']}' AND div = '" . USER_DIV . "'";
                    $plRslt = db_exec($sql);
                    if (pg_numrows($plRslt) > 0) {
                        $pl = pg_fetch_array($plRslt);
                        $stk['selamt'] = $pl['price'];
                    }
                }
                /* -- Start Some Checks -- */
                # check if they are selling too much
                if ($stk['units'] - $stk['alloc'] < $qtyss[$key]) {
                    if (!in_array($stk['stkid'], explode(",", $stkerr))) {
                        if ($stk['type'] != 'lab') {
                            $stkerr .= ",{$stk['stkid']}";
                            $error .= "<li class='err'>Warning : Item number <b>{$stk['stkcod']}</b> does not have enough items available.</li>";
                        }
                    }
                }
                if ($stk['units'] <= $stk['minlvl'] && $stk['minlvl'] != 0) {
                    $error .= "<li class='err'>{$stk['stkcod']} is below minimum level, please notify stock controller.</li>";
                }
                /* -- End Some Checks -- */
                # Calculate the Discount discount
                if ($discs[$key] < 1) {
                    if ($discps[$key] > 0) {
                        $discs[$key] = round($discps[$key] / 100 * $stk['selamt'], 2);
                    }
                } else {
                    $discps[$key] = round($discs[$key] * 100 / $stk['selamt'], 2);
                }
                # Calculate amount
                $amt[$key] = $qtyss[$key] * ($stk['selamt'] - $discs[$key]);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtemp' value='{$qtyss[$key]}'>";
                if ($stk['serd'] == 'yes') {
                    $qtyin = "<input type='hidden' size='3' name='qtemp' value='{$qtyss[$key]}'>{$qtyss[$key]}";
                }
                #clean some vars
                $stk['selamt'] = sprint($stk['selamt']);
                $amt[$key] = sprint($amt[$key]);
                # Check permissions
                if (perm("invoice-unitcost-edit.php")) {
                    $viewcost = "<input type='text' size='8' name='unitcost[{$ai}]' value='{$stk['selamt']}'>";
                } else {
                    $viewcost = "<input type='hidden' size='8' name='unitcost[{$ai}]' value='{$stk['selamt']}'>{$stk['selamt']}";
                }
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($stk['vatcode'] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                # Put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<input type='hidden' name='accounts[{$ai}]' value='0'>\n\t\t\t\t\t\t\t<input type='hidden' name='descriptions[{$ai}]' value=''>\n\t\t\t\t\t\t\t<input type='hidden' name='whids[]' value='{$wh['whid']}'>{$wh['whname']}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td><input type='hidden' name='stkids[{$ai}]' value='{$stk['stkid']}'><a href='#bottom' onclick='openwindow(\"stock-amt-det.php?stkid={$stk['stkid']}\")'>{$stk['stkcod']}</a></td>\n\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t<td>{$sernos}</td>\n\t\t\t\t\t\t<td>" . extlib_rstr($stk['stkdes'], 30) . "</td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td><input type='text' size='4' name='disc[{$ai}]' value='{$discs[$key]}'> OR <input type='text' size='4' name='discp[{$ai}]' value='{$discps[$key]}' maxlength='5'>%</td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[{$ai}]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
                ++$ai;
            } elseif (isset($accountss[$key]) && $accountss[$key] != "0" && isset($cust['pricelist'])) {
                db_conn('core');
                $Sl = "SELECT * FROM accounts WHERE accid='{$accountss[$key]}'";
                $Ri = db_exec($Sl) or errDie("Unable to get account data.");
                if (pg_num_rows($Ri) < 1) {
                    return "invalid.";
                }
                $ad = pg_fetch_array($Ri);
                # Calculate amount
                $amt[$key] = sprint($qtyss[$key] * $unitcosts[$key]);
                # Input qty if not serialised
                $qtyin = "<input type='text' size='3' name='qtemp' value='{$qtyss[$key]}'>";
                # Check permissions
                $viewcost = "<input type='text' size='8' name='unitcost[{$ai}]' value='{$unitcosts[$key]}'>";
                db_conn('cubit');
                $Sl = "SELECT * FROM vatcodes ORDER BY code";
                $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                $Vatcodes = "\n\t\t\t\t\t<select name='vatcodes[{$ai}]'>\n\t\t\t\t\t\t<option value='0'>Select</option>";
                while ($vd = pg_fetch_array($Ri)) {
                    if ($vatcodess[$key] == $vd['id']) {
                        $sel = "selected";
                    } else {
                        $sel = "";
                    }
                    $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                }
                $Vatcodes .= "</select>";
                # Put in selected warehouse and stock
                $products .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t\t{$ad['accname']}\n\t\t\t\t\t\t\t<input type='hidden' name='accounts[{$ai}]' value='{$accountss[$key]}'>\n\t\t\t\t\t\t\t<input type='hidden' name='whids[{$ai}]' value='0'>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>{$Vatcodes}<input type='hidden' name='stkids[{$ai}]' value='0'></td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td><input type='text' size='20' name='descriptions[{$ai}]' value='{$descriptionss[$key]}'></td>\n\t\t\t\t\t\t<td>{$qtyin}</td>\n\t\t\t\t\t\t<td>{$viewcost}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='disc[{$ai}]' value='0'><input type='hidden' name='discp[{$ai}]' value='0'></td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[{$ai}]' value='{$amt[$key]}'> " . CUR . " {$amt[$key]}</td>\n\t\t\t\t\t\t<td><input type='checkbox' name='remprod[{$ai}]' value='{$keyy}'></td>\n\t\t\t\t\t</tr>";
                $keyy++;
                ++$ai;
            } else {
                # skip if not selected
                if ($whid == "-S") {
                    continue;
                }
                if (!isset($addnon)) {
                    if ($filter_store != "0") {
                        # get warehouse name
                        db_conn("exten");
                        $sql = "SELECT whname FROM warehouses WHERE whid = '{$filter_store}' AND div = '" . USER_DIV . "'";
                        $whRslt = db_exec($sql);
                        $wh = pg_fetch_array($whRslt);
                    }
                    if (isset($ria) and $ria != "") {
                        $len = strlen($ria);
                        if ($ria == "Show All") {
                            $Wh = "";
                            $ria = "";
                        } else {
                            $Wh = "AND (lower(stkdes) LIKE lower('%{$ria}%')) OR (lower(stkcod) LIKE lower('%{$ria}%'))";
                            $ria = "";
                        }
                    } else {
                        $Wh = "AND FALSE";
                        $ria = "";
                    }
                    $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
                    if (isset($check_setting) and $check_setting == "yes") {
                        if (isset($filter_class) and $filter_class != "0") {
                            $Wh .= " AND prdcls = '{$filter_class}'";
                        }
                        if (isset($filter_cat) and $filter_cat != "0") {
                            $Wh .= " AND catid = '{$filter_cat}'";
                        }
                    }
                    if (isset($filter_store) and $filter_store != "0") {
                        $Wh .= " AND whid = '{$filter_store}'";
                    }
                    # get stock on this warehouse
                    db_connect();
                    $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY {$sel_frm} ASC";
                    $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
                    if (pg_numrows($stkRslt) < 1) {
                        $error .= "<li class='err'>There are no stock items in the selected warehouse.";
                        continue;
                    }
                    if (pg_numrows($stkRslt) == 1) {
                        $ex = "selected";
                        $reload = TRUE;
                        $send_override = "<input type='hidden' name='stkidss[{$ai}]' value='" . pg_fetch_result($stkRslt, 0, 0) . "'><script>document.form.submit();</script>";
                    } else {
                        $ex = "";
                        $reload = FALSE;
                    }
                    if ($sel_frm == "stkcod") {
                        $cods = "<select name='stkidss[{$ai}]' onChange='javascript:document.form1.submit();'>";
                        $count = 0;
                        while ($stk = pg_fetch_array($stkRslt)) {
                            // Check if this stock item has been blocked
                            //pointless, as we only get non blocked stock ...
                            //if (stock_is_blocked($stk["stkid"])) {
                            //	continue;
                            //}
                            $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                        }
                        $cods .= "</select> ";
                        $descs = "";
                    } else {
                        $descs = "<select style='width:250px'name='stkidss[{$ai}]' onChange='javascript:document.form.submit();'>";
                        $descs .= "<option value='-S' disabled selected>Select Description</option>";
                        $count = 0;
                        while ($stk = pg_fetch_array($stkRslt)) {
                            // Check if this stock item has been blocked
                            //pointless, as ge only get non blocked stock
                            //								if (stock_is_blocked($stk["stkid"])) {
                            //									continue;
                            //								}
                            $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                        }
                        $descs .= "</select> ";
                        $cods = "";
                    }
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[{$ai}]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vd['del'] == "Yes") {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    # put in drop down and warehouse
                    $products .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t<input type='hidden' name='accountss[{$ai}]' value='0'>\n\t\t\t\t\t\t\t\t<input type='hidden' name='descriptionss[{$ai}]' value=''>\n\t\t\t\t\t\t\t\t<input type='hidden' name='whidss[{$ai}]' value='{$filter_store}'>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td>{$cods}</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='vatcodess' value='0'></td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t\t\t<td><input type='hidden' size='3' name='qtyss[{$ai}]'  value='1'>1</td>\n\t\t\t\t\t\t\t<td> </td>\n\t\t\t\t\t\t\t<td><input type='text' size='4' name='discs[{$ai}]' value='0'> OR <input type='text' size='4' name='discps[{$ai}]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t\t\t<td nowrap><input type='hidden' name='amts[{$ai}]' value='0.00'>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t</tr>";
                    ++$ai;
                } else {
                    $Accounts = "\n\t\t\t\t\t\t<select name='accountss[{$ai}]' onChange='javascript:document.form.submit();'>\n\t\t\t\t\t\t\t<option value='0'>Select Account</option>";
                    $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
                    if (isset($useaccdrop) and $useaccdrop == "yes") {
                        db_connect();
                        $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                        $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                        if (pg_numrows($run_acc) > 0) {
                            while ($acc = pg_fetch_array($run_acc)) {
                                $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                            }
                            $Accounts .= "</select>";
                        }
                    } else {
                        db_conn('core');
                        $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                        $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                        while ($ad = pg_fetch_array($Ri)) {
                            if (isb($ad['accid'])) {
                                continue;
                            }
                            $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                        }
                        $Accounts .= "</select>";
                    }
                    db_conn('cubit');
                    $Sl = "SELECT * FROM vatcodes ORDER BY code";
                    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
                    $Vatcodes = "\n\t\t\t\t\t\t<select name='vatcodess[{$ai}]'>\n\t\t\t\t\t\t\t<option value='0'>Select</option>";
                    while ($vd = pg_fetch_array($Ri)) {
                        if ($vd['del'] == "Yes") {
                            $sel = "selected";
                        } else {
                            $sel = "";
                        }
                        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
                    }
                    $Vatcodes .= "</select>";
                    $products .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'>\n\t\t\t\t\t\t\t\t{$Accounts}\n\t\t\t\t\t\t\t\t<input type='hidden' name='whidss[{$ai}]' value='1'>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<inpu type='hidden' name='stkidss[{$ai}]' value=''>\n\t\t\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[{$ai}]'></td>\n\t\t\t\t\t\t\t<td><input type='text' size='3' name='qtyss[{$ai}]' value='1'></td>\n\t\t\t\t\t\t\t<td><input type='text' name='unitcosts[{$ai}]' size='7'></td>\n\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t<td nowrap>" . CUR . " 0.00</td>\n\t\t\t\t\t\t\t<td><input type='hidden' name='discs[{$ai}]' value='0'><input type='hidden' name='discps[{$ai}]' value='0'></td>\n\t\t\t\t\t\t</tr>";
                    ++$ai;
                }
            }
        }
    } else {
        #HAX !
        if (!isset($addnon) && !isset($upBtn)) {
            if (isset($ria) and $ria != "") {
                $len = strlen($ria);
                if ($ria == "Show All") {
                    $Wh = "";
                    $ria = "";
                } else {
                    $Wh = "AND (lower(stkdes) LIKE lower('%{$ria}%')) OR (lower(stkcod) LIKE lower('%{$ria}%'))";
                    $ria = "";
                }
            } else {
                $Wh = "AND FALSE";
                $ria = "";
            }
            $check_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
            if (isset($check_setting) and $check_setting == "yes") {
                if (isset($filter_class) and $filter_class != "0") {
                    $Wh .= " AND prdcls = '{$filter_class}'";
                }
                if (isset($filter_cat) and $filter_cat != "0") {
                    $Wh .= " AND catid = '{$filter_cat}'";
                }
            }
            if (isset($filter_store) and $filter_store != "0") {
                $Wh .= " AND whid = '{$filter_store}'";
            }
            # get stock on this warehouse
            db_connect();
            $sql = "SELECT * FROM stock WHERE blocked = 'n' AND div = '" . USER_DIV . "' {$Wh} ORDER BY {$sel_frm} ASC";
            $stkRslt = db_exec($sql) or errDie("Unable to retrieve stocks from database.");
            if (pg_numrows($stkRslt) < 1) {
                if (!isset($err)) {
                    $err = "";
                }
                $err .= "<li>There are no stock items in the selected store.</li>";
                //ontinue;
            }
            if (pg_numrows($stkRslt) == 1) {
                $reload = TRUE;
                $send_override = "<input type='hidden' name='stkidss[{$ai}]' value='" . pg_fetch_result($stkRslt, 0, 0) . "'>";
            } else {
                $reload = FALSE;
                $send_override = "";
            }
            if ($sel_frm == "stkcod") {
                $cods = "<select name='stkidss[{$ai}]' onChange='javascript:document.form.submit();'>";
                //					$cods .= "<option value='-S' disabled selected>Select Number</option>";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    $cods .= "<option value='{$stk['stkid']}'>{$stk['stkcod']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $cods .= "</select> ";
                $descs = "";
            } else {
                $descs = "<select style='width:250px' name='stkidss[{$ai}]' onChange='javascript:document.form.submit();'>";
                $descs .= "<option value='-S' disabled selected>Select Description</option>";
                $count = 0;
                while ($stk = pg_fetch_array($stkRslt)) {
                    $descs .= "<option value='{$stk['stkid']}'>{$stk['stkdes']} (" . sprint3($stk['units'] - $stk['alloc']) . ")</option>";
                }
                $descs .= "</select> ";
                $cods = "";
            }
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input type='hidden' name='accountss[{$ai}]' value='0'>\n\t\t\t\t\t\t<input type='hidden' name='descriptionss[{$ai}]' value=''>\n\t\t\t\t\t\t<input type='hidden' name='vatcodess[{$ai}]' value=''>\n\t\t\t\t\t\t<input type='hidden' name='whidss[{$ai}]' value='{$filter_store}'>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td>{$cods}</td>\n\t\t\t\t\t<td> </td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td>{$descs}</td>\n\t\t\t\t\t<td><input type='hidden' size='3' name='qtyss[{$ai}]' value='1'>1</td>\n\t\t\t\t\t<td> </td>\n\t\t\t\t\t<td><input type='text' size='4' name='discs[{$ai}]' value='0'> OR <input type='text' size='4' name='discps[{$ai}]' value='0' maxlength='5'>%</td>\n\t\t\t\t\t<td nowrap>" . CUR . " 0.00</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t</tr>";
            ++$ai;
        } elseif (isset($addnon)) {
            $Accounts = "\n\t\t\t\t<select name='accountss[{$ai}]'  onChange='javascript:document.form.submit();'>\n\t\t\t\t\t<option value='0'>Select Account</option>";
            $useaccdrop = getCSetting("USE_NON_STOCK_ACCOUNTS");
            if (isset($useaccdrop) and $useaccdrop == "yes") {
                db_connect();
                $acc_sql = "SELECT * FROM non_stock_account_list ORDER BY accname";
                $run_acc = db_exec($acc_sql) or errDie("Unable to get account information.");
                if (pg_numrows($run_acc) > 0) {
                    while ($acc = pg_fetch_array($run_acc)) {
                        $Accounts .= "<option value='{$acc['accid']}'>{$acc['accname']}</option>";
                    }
                    $Accounts .= "</select>";
                }
            } else {
                db_conn('core');
                $Sl = "SELECT accid,topacc,accnum,accname FROM accounts WHERE acctype='I' ORDER BY accname";
                $Ri = db_exec($Sl) or errDie("Unable to get accounts.");
                while ($ad = pg_fetch_array($Ri)) {
                    if (isb($ad['accid'])) {
                        continue;
                    }
                    $Accounts .= "<option value='{$ad['accid']}'>{$ad['accname']}</option>";
                }
                $Accounts .= "</select>";
            }
            db_conn('cubit');
            $Sl = "SELECT * FROM vatcodes ORDER BY code";
            $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
            $Vatcodes = "\n\t\t\t\t<select name='vatcodess[{$ai}]'>\n\t\t\t\t\t<option value='0'>Select</option>";
            while ($vd = pg_fetch_array($Ri)) {
                if ($vd['del'] == "Yes") {
                    $sel = "selected";
                } else {
                    $sel = "";
                }
                $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
            }
            $Vatcodes .= "</select>";
            $products .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='2'>{$Accounts}<input type='hidden' name='whidss[{$ai}]' value='1'></td>\n\t\t\t\t\t<inpu type='hidden' name='stkidss[{$ai}]' value=''>\n\t\t\t\t\t<td>{$Vatcodes}</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><input type='text' size='20' name='descriptionss[{$ai}]'></td>\n\t\t\t\t\t<td><input type='text' size='3' name='qtyss[{$ai}]' value='1'></td>\n\t\t\t\t\t<td><input type='text' name='unitcosts[{$ai}]' size='7'></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td nowrap>" . CUR . " 0.00</td>\n\t\t\t\t\t<td><input type='hidden' name='discs[{$ai}]' value='0'><input type='hidden' name='discps[{$ai}]' value='0' ></td>\n\t\t\t\t</tr>";
            ++$ai;
        }
    }
    $products .= "</table>";
    /* --- End Products Display --- */
    /* --- Start Some calculations --- */
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    # Calculate tradediscm
    if ($inv['traddisc'] > 0) {
        $traddiscm = sprint($inv['traddisc'] / 100 * $inv['total']);
    } else {
        $traddiscm = "0.00";
    }
    $VATP = TAX_VAT;
    # Calculate subtotal
    $SUBTOT = sprint($inv['subtot']);
    $VAT = sprint($inv['vat']);
    $TOTAL = sprint($inv['total']);
    $inv['delchrg'] = sprint($inv['delchrg']);
    /* --- End Some calculations --- */
    /*--- Start checks --- */
    # check only if the customer is selected
    if (isset($cusnum) && $cusnum != "-S") {
        #check againg credit limit
        if ($TOTAL + $cust['balance'] > $cust['credlimit']) {
            $error .= "<li class='err'>Warning : Customers Credit limit of <b>" . CUR . " " . sprint($cust["credlimit"]) . "</b> has been exceeded";
            #limit reached ... check for warn/block
            db_conn("cubit");
            $get_check = "SELECT value FROM set WHERE label = 'CUST_INV_WARN' LIMIT 1";
            $run_check = db_exec($get_check) or errDie("Unable to get credit limit response setting");
            if (pg_numrows($run_check) < 1) {
                #no setting ? do nothing ....
            } else {
                $sarr = pg_fetch_array($run_check);
                if ($sarr['value'] == "block") {
                    #block account ...
                    $done = "";
                }
            }
            # Check permissions
            if (!perm("invoice-limit-override.php")) {
                $done = "";
            }
        }
        $avcred = $cust['credlimit'] - $cust['balance'];
    } else {
        $avcred = "0.00";
    }
    /*--- Start checks --- */
    db_conn('cubit');
    $Sl = "SELECT * FROM settings WHERE constant='SALES'";
    $Ri = db_exec($Sl) or errDie("Unable to get settings.");
    $data = pg_fetch_array($Ri);
    if ($data['value'] == "Yes") {
        $sc = "checked";
    } else {
        $sc = "";
    }
    $sales = "\n\t\t<td>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$salesps}</td>\n\t\t\t\t\t<td>Print</td>\n\t\t\t\t\t<td><input type='checkbox' name='printsales' {$sc}></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>";
    $inv['delvat'] += 0;
    if ($inv['delvat'] == 0) {
        $Sl = "SELECT * FROM vatcodes WHERE del='Yes'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $vd = pg_fetch_array($Ri);
        $inv['delvat'] = $vd['id'];
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes ORDER BY code";
    $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
    $Vatcodes = "\n\t\t<select name='delvat'>\n\t\t\t<option value='0'>Select</option>";
    while ($vd = pg_fetch_array($Ri)) {
        if ($vd['id'] == $inv['delvat']) {
            $sel = "selected";
        } else {
            $sel = "";
        }
        $Vatcodes .= "<option value='{$vd['id']}' {$sel}>{$vd['code']}</option>";
    }
    $Vatcodes .= "</select>";
    db_conn('cubit');
    $Sl = "SELECT * FROM settings WHERE constant='Delivery Note'";
    $Ri = db_exec($Sl) or errDie("Unable to get settings.");
    $data = pg_fetch_array($Ri);
    if ($data['value'] == "Yes") {
        $chp = "checked";
    } else {
        $chp = "";
    }
    if (empty($inv["comm"])) {
        db_conn("cubit");
        $sql = "SELECT value FROM settings WHERE constant='DEFAULT_COMMENTS'";
        $cmntRslt = db_exec($sql) or errDie("Unable to retrieve the default comment from Cubit.");
        $comm = base64_decode(pg_fetch_result($cmntRslt, 0));
    } else {
        $comm = $inv["comm"];
    }
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    // Which display method was selected
    if (isset($sel_frm) && $sel_frm == "stkdes") {
        $sel_frm_cod = "";
        $sel_frm_des = "checked";
    } else {
        $sel_frm_cod = "checked";
        $sel_frm_des = "";
    }
    // Delivery Date
    if (!empty($inv["deldate"])) {
        $deldate = explode("-", $inv["deldate"]);
    } else {
        $trans_date_setting = getCSetting("USE_TRANSACTION_DATE");
        if (isset($trans_date_setting) and $trans_date_setting == "yes") {
            $trans_date_value = getCSetting("TRANSACTION_DATE");
            $date_arr = explode("-", $trans_date_value);
            $deldate[0] = $date_arr[0];
            $deldate[1] = $date_arr[1];
            $deldate[2] = $date_arr[2];
        } else {
            $deldate[0] = date("Y");
            $deldate[1] = date("m");
            $deldate[2] = date("d");
        }
    }
    $details_begin = "\n\t\t<center>\n\t\t<h3>New Invoice</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t<input type='hidden' name='SCROLL' value='yes'>\n\t\t\t<input type='hidden' name='key' value='update'>\n\t\t\t<input type='hidden' name='invid' value='{$invid}'>\n\t\t\t<input type='hidden' name='stkerr' value='{$stkerr}'>\n\t\t<table " . TMPL_tblDflts . " width='95%'>\n\t\t \t<tr>\n\t\t \t\t<td valign='top' width='50%'>\n\t\t \t\t\t<div id='cust_selection'>";
    if (empty($ajax_err) && (isset($cusnum) || AJAX)) {
        if (isset($cusnum)) {
            $OTS_OPT = onthespot_encode(SELF, "cust_selection", "deptid={$inv['deptid']}&letters={$letters}&cusnum={$cusnum}&invid={$invid}");
            $custedit = "\n\t\t\t\t<td nowrap>\n\t\t\t\t\t<a href='javascript: popupSized(\"customers-new.php?cusnum={$cusnum}&onthespot={$OTS_OPT}\", \"edit_cust\", 700, 630);'>Edit Customer Details</a>\n\t\t\t\t</td>";
        } else {
            $custedit = "";
        }
        $optional_filter_setting = getCSetting("OPTIONAL_STOCK_FILTERS");
        if (isset($optional_filter_setting) and $optional_filter_setting == "yes") {
            db_connect();
            $catsql = "SELECT catid, cat, catcod FROM stockcat WHERE div = '" . USER_DIV . "' ORDER BY cat ASC";
            $catRslt = db_exec($catsql);
            if (pg_numrows($catRslt) < 1) {
                $cat_drop = "<input type='hidden' name='filter_cat' value='0'>";
            } else {
                $cat_drop = "<select name='filter_cat'>";
                $cat_drop .= "<option value='0'>All Categories</option>";
                while ($cat = pg_fetch_array($catRslt)) {
                    if (isset($filter_cat) and $filter_cat == $cat['catid']) {
                        $cat_drop .= "<option value='{$cat['catid']}' selected>({$cat['catcod']}) {$cat['cat']}</option>";
                    } else {
                        $cat_drop .= "<option value='{$cat['catid']}'>({$cat['catcod']}) {$cat['cat']}</option>";
                    }
                }
                $cat_drop .= "</select>";
            }
            # Select classification
            $classsql = "SELECT * FROM stockclass WHERE div = '" . USER_DIV . "' ORDER BY classname ASC";
            $clasRslt = db_exec($classsql);
            if (pg_numrows($clasRslt) < 1) {
                $class_drop = "<input type='hidden' name='filter_class' value='0'>";
            } else {
                $class_drop = "<select name='filter_class' style='width: 167'>";
                $class_drop .= "<option value='0'>All Classifications</option>";
                while ($clas = pg_fetch_array($clasRslt)) {
                    if (isset($filter_class) and $filter_class == $clas['clasid']) {
                        $class_drop .= "<option value='{$clas['clasid']}' selected>{$clas['classname']}</option>";
                    } else {
                        $class_drop .= "<option value='{$clas['clasid']}'>{$clas['classname']}</option>";
                    }
                }
                $class_drop .= "</select>";
            }
            $display_optional_filters = "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Category</td>\n\t\t\t\t\t<td>{$cat_drop}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Classification</td>\n\t\t\t\t\t<td>{$class_drop}</td>\n\t\t\t\t</tr>";
        }
        db_conn("exten");
        $sql = "SELECT whid, whname, whno FROM warehouses WHERE div = '" . USER_DIV . "' ORDER BY whname ASC";
        $whRslt = db_exec($sql);
        if (pg_numrows($whRslt) < 1) {
            $store_drop = "<input type='hidden' name='filter_store' value='0'>";
        } else {
            if (!isset($filter_store)) {
                # check if setting exists
                db_connect();
                $sql = "SELECT value FROM set WHERE label = 'DEF_WH' AND div = '" . USER_DIV . "'";
                $Rslt = db_exec($sql) or errDie("Unable to check database for existing settings.");
                if (pg_numrows($Rslt) > 0) {
                    $set = pg_fetch_array($Rslt);
                    $filter_store = $set['value'];
                }
            }
            $store_drop = "<select name='filter_store'>";
            $store_drop .= "<option value='0'>All Stores</option>";
            while ($wh = pg_fetch_array($whRslt)) {
                if ($wh['whid'] == $filter_store) {
                    $store_drop .= "<option value='{$wh['whid']}' selected>({$wh['whno']}) {$wh['whname']}</option>";
                } else {
                    $store_drop .= "<option value='{$wh['whid']}'>({$wh['whno']}) {$wh['whname']}</option>";
                }
            }
            $store_drop .= "</select>";
        }
        $ajaxOut = "\n\t\t\t<input type='hidden' name='letters' value='{$letters}'>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'> Customer Details </th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Department</td>\n\t\t\t\t\t<td valign='center'>{$dept['deptname']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Account No.</td>\n\t\t\t\t\t<td valign='center'>{$cust['accno']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer</td>\n\t\t\t\t\t<td valign='center'>{$customers}</td>\n\t\t\t\t\t{$custedit}\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Customer Branch</td>\n\t\t\t\t\t<td valign='center'>{$branchdrop}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Customer Address</td>\n\t\t\t\t\t<td valign='center'>" . nl2br($cust['addr1']) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Current Delivery Address</td>\n\t\t\t\t\t<td valign='center'>" . nl2br($cust_del_addr) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td valign='top'>Delivery Address</td>\n\t\t\t\t\t<td valign='center'>\n\t\t\t\t\t\t<input type='button' onClick=\"\n\t\t\t\t\t\t\tvar windowReference;\n\n\t\t\t\t\t\t\tfunction openPopup() {\n\t\t\t\t\t\t\t\twindowReference = window.open('cust-credit-stockinv-deladdr.php?invid={$invid}','windowName','width=500,height=400,status=1');\n\t\t\t\t\t\t\t\tif (!windowReference.opener)\n\t\t\t\t\t\t\t\t\twindowReference.opener = self;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\topenPopup();\" value='Change Delivery Address'>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer Order number</td>\n\t\t\t\t\t<td valign='center'><input type='text' size='10' name='cordno' value='{$inv['cordno']}'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer VAT Number</td>\n\t\t\t\t\t<td>{$cust['vatnum']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Point of Sale</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Barcode</td>\n\t\t\t\t\t<td><input type='text' size='13' name='bar' value=''></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Print Delivery Note</td>\n\t\t\t\t\t<td><input type='checkbox' name='printdel' {$chp}></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Using</td>\n\t\t\t\t\t<td>Stock Code<input type='radio' name='sel_frm' value='stkcod' onChange='javascript:document.form.submit();' {$sel_frm_cod}><br>Stock Description<input type='radio' name='sel_frm' value='stkdes' onChange='javascript:document.form.submit();' {$sel_frm_des}></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Additional Filters</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Store</td>\n\t\t\t\t\t<td>{$store_drop}</td>\n\t\t\t\t</tr>\n\t\t\t\t{$display_optional_filters}\n\t\t\t\t<tr class='" . bg_class() . "' " . ass("Type the first letters of the stock code you are looking for.") . ">\n\t\t\t\t\t<td>Stock Filter</td>\n\t\t\t\t\t<td nowrap><input type='text' size='13' name='ria' value='{$ria}'> <input type='submit' value='Search'> <input type='submit' name='ria' value='Show All'></td>\n\t\t\t\t</tr>\n\t\t\t</table>";
    } else {
        db_conn("exten");
        $sql = "SELECT * FROM departments WHERE div = '" . USER_DIV . "' ORDER BY deptname ASC";
        $deptRslt = db_exec($sql) or errDie("Unable to view customers");
        if (pg_numrows($deptRslt) < 1) {
            return "<li class='err'>There are no Departments found in Cubit.</li>";
        } else {
            $depts = "<select name='deptid' id='deptid'>";
            $depts .= "<option value='0'>All Departments</option>";
            while ($dept = pg_fetch_array($deptRslt)) {
                $depts .= "<option value='{$dept['deptid']}'>{$dept['deptname']}</option>";
            }
            $depts .= "</select>";
        }
        if (!isset($ajax_err)) {
            $ajax_err = "";
        }
        $ajaxOut = "\n\t\t\t<script>\n\t\t\t\tfunction updateCustSelection() {\n\t\t\t\t\tdeptid = getObject('deptid').value;\n\t\t\t\t\tletters = getObject('letters').value;\n\t\t\t\t\tctyp = getObject('ctypintl').checked;\n\t\t\t\t\tif (ctyp) {\n\t\t\t\t\t\tdocument.location.href='intinvoice-new.php?' + 'letters=' + letters + '&deptid=' + deptid + '&ctyp=' + ctyp + '&invid={$invid}';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tajaxRequest('" . SELF . "', 'cust_selection', AJAX_SET, 'letters='+letters+'&deptid='+deptid+'&ctyp='+ctyp+'&invid={$invid}');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</script>\n\t\t\t{$ajax_err}\n\t\t\t<form name='cusselfrm'>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Customer Selection</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Select Department</td>\n\t\t\t\t\t<td valign='center'>{$depts}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>First Letters of customer</td>\n\t\t\t\t\t<td valign='center'><input type='text' size='5' id='letters' maxlength='5'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Customer is International</td>\n\t\t\t\t\t<td valign='center'><input type='checkbox' id='ctypintl'></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><br /></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td valign='center'><input type='button' value='Update &raquo' onClick='updateCustSelection();'></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</form>";
    }
    $avcred = sprint($avcred);
    if (isset($addprodBtn) or isset($addnon) or isset($saveBtn) or isset($upBtn) or isset($ria)) {
        $jump_bot = "\n\t\t\t<script>\n\t\t\t\twindow.location.hash='bottom';\n\t\t\t</script>";
    } else {
        $jump_bot = "";
    }
    $details_end = "\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td valign='top' align='right' width='50%'>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th colspan='2'> Invoice Details </th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Invoice No.</td>\n\t\t\t\t\t\t\t\t<td valign='center'>TI {$inv['invid']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Proforma Inv No.</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='docref' value='{$inv['docref']}'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Sales Order No.</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='ordno' value='{$inv['ordno']}'></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>VAT Inclusive</td>\n\t\t\t\t\t\t\t\t<td valign='center'>Yes <input type='radio' size='7' name='chrgvat' value='inc' {$chin}> No<input type='radio' size='7' name='chrgvat' value='exc' {$chex}></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Terms</td>\n\t\t\t\t\t\t\t\t<td valign='center'>{$termssel} Days</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t\t\t{$sales}\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Invoice Date</td>\n\t\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("inv_date", $inv_date_year, $inv_date_month, $inv_date_day) . "</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Available Credit</td>\n\t\t\t\t\t\t\t\t<td>" . CUR . " {$avcred}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='5' name='traddisc' value='{$inv['traddisc']}'>%</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t\t<td valign='center'><input type='text' size='7' name='delchrg' value='{$inv['delchrg']}'>{$Vatcodes}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Delivery Date</td>\n\t\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("del_date", $deldate[0], $deldate[1], $deldate[2]) . "</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'>{$products}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th width='25%'>Quick Links</th>\n\t\t\t\t\t\t\t\t<th width='25%'>Comments</th>\n\t\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='50%'>{$error}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='customers-new.php?re={$inv['invid']}'>New Customer</a></td>\n\t\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='5' align='center' valign='top'><textarea name='comm' rows='4' cols='20'>{$comm}</textarea></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td class='" . bg_class() . "'><a href='cust-credit-stockinv.php'>New Invoice</a></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><a href='invoice-view.php'>View Invoices</a></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><a href='settings/cust-credit-stockinv-newsetting.php?change=yes'>Change Invoice Complete Setting</a></td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td align='right' valign='top'>\n\t\t\t\t\t\t<table " . TMPL_tblDflts . " width='50%'>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>SUBTOTAL</td>\n\t\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " <input type='hidden' name='SUBTOT' value='{$SUBTOT}'>{$SUBTOT}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Trade Discount</td>\n\t\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$inv['discount']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td>Delivery Charge</td>\n\t\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$inv['delivery']}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<td><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t\t<td align='right' nowrap>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align='right'><input name='addprodBtn' type='submit' value='Add Product'> | <input name='addnon' type='submit' value='Add Non stock Product'> | <input type='submit' name='saveBtn' value='Save'> </td>\n\t\t\t\t\t<td nowrap>| <input type='submit' name='upBtn' value='Update'>{$done}</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<a name='bottom'>\n\t\t\t</form>\n\t\t\t</center>\n\t\t\t{$jump_bot}";
    if (!isset($reload)) {
        $reload = FALSE;
        $send_override = "";
    }
    if ($reload) {
        $details_end .= "\n\t\t\t\t\t\t{$send_override}\n\t\t\t\t\t\t<script>\n\t\t\t\t\t\t\tonLoad=document.form.submit();\n\t\t\t\t\t\t</script>\n\t\t\t\t\t";
    }
    if (AJAX) {
        return $ajaxOut;
    } else {
        return "{$details_begin}{$ajaxOut}{$details_end}";
    }
}