function alloc($_POST, $err = "")
{
    extract($_POST);
    #if quick ... redirect here
    if (isset($quickpay)) {
        $date = "{$date_year}-{$date_month}-{$date_day}";
        header("Location: bank-pay-supp-quick.php?supid={$supid}&amt={$amt}&cheqnum={$cheqnum}&reference={$reference}&descript={$descript}&bankid={$bankid}&tdate={$date}&pur=&inv=&process_type={$process_type}");
        exit;
    }
    if (isset($midupdate)) {
        $navigation = "\n\t\t\t<script>\n\t\t\t\tgotoName('midupdate');\n\t\t\t</script>";
    }
    if (isset($botupdate)) {
        $navigation = "\n\t\t\t<script>\n\t\t\t\tgotoName('botupdate');\n\t\t\t</script>";
    }
    #######set all missing vars ...
    $out = 0;
    $doset = TRUE;
    $settext = "Do not use this settlement discount function if the supplier is going to issue a tax credit note. If the supplier tax invoice contains the percentage and terms of settlement or any additional post transactional discount, then the supplier does not have to issue a tax credit note and you can use this function.";
    if (!isset($all)) {
        $all = 2;
    }
    if (!isset($bankid)) {
        $bankid = "";
    }
    if (!isset($descript)) {
        $descript = "";
    }
    if (!isset($reference)) {
        $reference = "";
    }
    if (!isset($cheqnum)) {
        $cheqnum = "";
    }
    if (!isset($paidamt) or !is_array($paidamt)) {
        $paidamt = array(0);
    }
    $amt = sprint(array_sum($paidamt));
    if (!isset($stock_setamt)) {
        $stock_setamt = array(0);
    }
    if (!isset($setamt)) {
        $setamt = 0;
    }
    if (!isset($setvat)) {
        $setvat = "";
    }
    if (!isset($setvatcode)) {
        $setvatcode = "";
    }
    if (!isset($overpay)) {
        $overpay = 0;
    }
    if (!isset($process_type)) {
        $process_type = getCSetting("SUPP_PROCESS_TYPE");
    }
    if (!isset($process_type)) {
        $process_type = "";
    }
    if (!isset($supid) or strlen($supid) < 1) {
        return sel_sup();
    }
    $amt = sprint($amt + $overpay);
    $setamt = sprint($setamt);
    if (!isset($date_day)) {
        #get the last used one ...
        $date = getCSetting("SUPP_PAY_DATE");
        if (isset($date) and strlen($date) > 0) {
            $date_arr = explode("-", $date);
            $date_day = $date_arr[2];
            $date_month = $date_arr[1];
            $date_year = $date_arr[0];
        } else {
            $date_year = date("Y");
            $date_month = date("m");
            $date_day = date("d");
        }
    }
    if (!isset($date_day) or strlen($date_day) < 1 or $date_day > 31 or $date_day < 1) {
        $date_day = date("d");
    }
    if (!isset($date_month) or strlen($date_month) < 1 or $date_month > 12 or $date_month < 1) {
        $date_month = date("m");
    }
    if (!isset($date_year) or strlen($date_year) < 1 or $date_year < 1980 or $date_year > 2020) {
        $date_year = date("Y");
    }
    //print "$date_year-$date_month-$date_day";
    ####### validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($bankid, "num", 0, 30, "Invalid Bank Account.");
    $v->isOk($all, "num", 1, 1, "Invalid allocation.");
    $v->isOk($date_day, "num", 1, 2, "Invalid Date day.");
    $v->isOk($date_month, "num", 1, 2, "Invalid Date month.");
    $v->isOk($date_year, "num", 1, 4, "Invalid Date Year.");
    if (strlen($date_year) != 4) {
        $v->isOk($bankname, "num", 1, 1, "Invalid Date year.");
    }
    $v->isOk($descript, "string", 0, 255, "Invalid Description.");
    $v->isOk($reference, "string", 0, 50, "Invalid Reference Name/Number.");
    $v->isOk($cheqnum, "num", 0, 30, "Invalid Cheque number.");
    $v->isOk($amt, "float", 1, 10, "Invalid amount.");
    $v->isOk($setamt, "float", 0, 40, "Invalid Settlement Discount Amount.");
    $v->isOk($setvat, "string", 0, 10, "Invalid Settlement VAT Option.");
    $v->isOk($setvatcode, "string", 0, 40, "Invalid Settlement VAT code");
    $v->isOk($supid, "num", 1, 10, "Invalid supplier number.");
    $date = mkdate($date_year, $date_month, $date_day);
    if (!checkdate($date_month, $date_day, $date_year)) {
        $v->isOk($date, "num", 1, 1, "Invalid 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 . alloc($_POST, $confirm . "<br>");
    }
    db_connect();
    #check if this supplier is blocked ...
    $sql = "SELECT blocked FROM suppliers WHERE supid = '{$supid}'";
    $run_sql = db_exec($sql) or errDie("Unable to get supplier information.");
    if (pg_numrows($run_sql) < 1) {
        return "<li class='err'>Supplier information not found.</li>";
    } else {
        $res = pg_fetch_array($run_sql);
        if ($res['blocked'] == "yes") {
            return "<li class='err'>Supplier has been blocked. Please unblock supplier before continuing. <a href='../supp-view.php'>View Suppliers.</a></li>";
        }
    }
    ####### Get supplier details
    $sql = "SELECT supid,supno,supname,setdisc,setdays,balance FROM suppliers WHERE supid = '{$supid}' AND div = '" . USER_DIV . "'";
    $supRslt = db_exec($sql);
    $sup = pg_fetch_array($supRslt);
    ####### Get Bank Dropdown
    $sql = "SELECT * FROM bankacct WHERE btype != 'int' AND div = '" . USER_DIV . "' ORDER BY accname,bankname";
    $banks = db_exec($sql);
    $numrows = pg_numrows($banks);
    if (empty($numrows)) {
        return "<li class='err'> There are no accounts held at the selected Bank.</li>\n\t\t<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct Selection'>";
    }
    $bank_drop = "<select name='bankid'>";
    while ($acc = pg_fetch_array($banks)) {
        if ($bankid == $acc['bankid']) {
            $bank_drop .= "<option value='{$acc['bankid']}' selected>{$acc['accname']} - {$acc['bankname']} ({$acc['acctype']})</option>";
        } else {
            $bank_drop .= "<option value='{$acc['bankid']}'>{$acc['accname']} - {$acc['bankname']} ({$acc['acctype']})</option>";
        }
    }
    $bank_drop .= "</select>";
    ####### Get vat codes for dropdown
    $get_vatc = "SELECT * FROM vatcodes ORDER BY code";
    $run_vatc = db_exec($get_vatc) or errDie("Unable to get vat codes information.");
    if (pg_numrows($run_vatc) < 1) {
        $vatcode_drop = "<input type='hidden' name='setvatcode' value=''>";
    } else {
        $vatcode_drop = "<select name='setvatcode'>";
        while ($varr = pg_fetch_array($run_vatc)) {
            if (isset($setvatcode) and $setvatcode == $varr['id']) {
                $vatcode_drop .= "<option value='{$varr['id']}' selected>{$varr['code']} {$varr['description']}</option>";
            } else {
                $vatcode_drop .= "<option value='{$varr['id']}'>{$varr['code']} {$varr['description']}</option>";
            }
        }
        $vatcode_drop .= "</select>";
    }
    $setvatsel1 = "";
    $setvatsel2 = "";
    if ($setvat == "novat") {
        $setvatsel2 = "checked='yes'";
    } else {
        $setvatsel1 = "checked='yes'";
    }
    //				<input type='hidden' name='bankid' value='$bankid'>
    //				<input type='hidden' name='date' value='$date'>
    //				<input type='hidden' name='descript' value='$descript'>
    //				<input type='hidden' name='reference' value='$reference'>
    //				<input type='hidden' name='cheqnum' value='$cheqnum'>
    //				<input type='hidden' name='amt' value='$amt'>
    //				<input type='hidden' name='setvat' value='$setvat'>
    //				<input type='hidden' name='setvatcode' value='$setvatcode'>
    //				<input type='hidden' name='setamt' value='".sprint (array_sum($stock_setamt))."'>
    $prsel1 = "";
    $prsel2 = "";
    if ($process_type == "batch") {
        $prsel2 = "checked='yes'";
    } else {
        $prsel1 = "checked='yes'";
    }
    if (perm("allow-user-change-supp-process-type.php")) {
        $show_process_type = "\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan='2'>Payment Process Type</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='radio' name='process_type' value='now' {$prsel1}>Pay creditor immediately and add to cashbook</td>\n\t\t\t\t\t<td><input type='radio' name='process_type' value='batch' {$prsel2}>Add to creditor payment batch</td>\n\t\t\t\t</tr>\n\t\t\t\t" . TBL_BR . "\n\t\t\t</table>";
    } else {
        $show_process_type = "<input type='hidden' name='process_type' value='{$process_type}'>";
    }
    $confirm = "\n\t\t<script>\n\t\t\tfunction showText() {\n\t\t\t\tXPopupShow('{$settext}', getObject('phonetic_show'));\n\t\t\t}\n\t\t\tfunction updateStockTotal (counter){\n\t\t\t\tvar total_val = getObj('total_id'+counter);\n\t\t\t\tvar htotal_val = getObj('total_hid'+counter);\n\t\t\t\tvar set_val = getObj('set_id'+counter);\n\t\t\t\tvar hset_val = getObj('set_hid'+counter);\n\t\n\t\t\t\tvar button_val = getObj('button'+counter);\n\t\n\t\t\t\tif (total_val.value == '0.00'){\n\t\t\t\t\ttotal_val.value = htotal_val.value - hset_val.value;\n\t\t\t\t}else {\n\t\t\t\t\ttotal_val.value = '0.00';\n\t\t\t\t}\n\t\t\t\tif (set_val.value == '0.00'){\n\t\t\t\t\tset_val.value = hset_val.value;\n\t\t\t\t}else {\n\t\t\t\t\tset_val.value = '0.00';\n\t\t\t\t}\n\t\t\t\tbutton_val.blur();\n\t\t\t}\n\t\t\tfunction pageXY(el){\n\t\t\t\tvar XY={x:0, y:0};\n\t\t\t\tfor( var node = el; node; node=node.offsetParent)\n\t\t\t\t{ XY.x += node.offsetLeft;\n\t\t\t\t\tXY.y += node.offsetTop;\n\t\t\t\t}\n\t\t\t\treturn XY;\n\t\t\t}\n\t\t\tfunction gotoName(name){\n\t\t\t\tvar anchors, anchor, XY;\n\t\t\t\tanchors=document.anchors;\n\t\t\t\tanchor=anchors[name];\n\t\t\t\tif(!anchor) // IE sucks\n\t\t\t\t{\n\t\t\t\t\tfor( var i = 0; i < anchors.length; ++i){\n\t\t\t\t\t\tif(anchors[i].name==name){\n\t\t\t\t\t\t\tanchor = anchors[i];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!anchor){\n\t\t\t\t\tif( document.getElementById)\n\t\t\t\t\t\tanchor=document.getElementById(name);\n\t\t\t\t\telse if( document.all) // untested\n\t\t\t\t\t\tanchor=document.all[name];\n\t\t\t\t}\n\t\t\t\tif(anchor){\n\t\t\t\t\tXY = pageXY(anchor);\n\t\t\t\t\twindow.scrollTo(XY.x, XY.y);\n\t\t\t\t}\n\t\t\t}\n\t\t</script>\n\t\t<h3>New Bank Payment</h3>\n\t\t<form action='" . SELF . "' method='POST' name='form1'>\n\t\t{$show_process_type}\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t{$err}\n\t\t\t<input type='hidden' name='key' value='confirm'>\n\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t<input type='hidden' name='supid' value='{$supid}'>\n\t\t\t<input type='hidden' name='pur' value=''>\n\t\t\t<input type='hidden' name='inv' value=''>\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>Field</th>\n\t\t\t\t\t\t\t<th>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>Account</td>\n\t\t\t\t\t\t\t<td>{$bank_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>Payment Date</td>\n\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("date", $date_year, $date_month, $date_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>Paid To</td>\n\t\t\t\t\t\t\t<td valign='center'>({$sup['supno']}) {$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>Description</td>\n\t\t\t\t\t\t\t<td valign='center'><textarea col='18' rows='3' name='descript'>{$descript}</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>Reference</td>\n\t\t\t\t\t\t\t<td valign='center'><input type='text' size='25' name='reference' value='{$reference}'></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>Total Amount</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$amt}</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>Settlement Discount</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " " . sprint(array_sum($stock_setamt)) . " <input type='button' onClick='showText();' value='Tax Credit Note ?'></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 nowrap>Settlement Discount VAT</td>\n\t\t\t\t\t\t\t<td nowrap>\n\t\t\t\t\t\t\t\t{$vatcode_drop} \n\t\t\t\t\t\t\t\t<input type='radio' name='setvat' value='inc' {$setvatsel1}> VAT Inclusive \n\t\t\t\t\t\t\t\t<input type='radio' name='setvat' value='novat' {$setvatsel2}> No VAT\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 width='5%'></td>\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'><font style='color:red'>Quick</font> Payment</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>Cheque Number</td>\n\t\t\t\t\t\t\t<td valign='center'><input size='20' name='cheqnum' value='{$cheqnum}'></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>Amount</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " <input type='text' size='6' name='amt' value='{$amt}'></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 colspan='2' align='right'><input type='submit' name='quickpay' value='Allocate the above payment automatically'></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 align='right'><input type='submit' name='confirm' value='Allocate the payments below &raquo'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t" . TBL_BR . "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='4'>Add unallocated payment to supplier statement &nbsp;</td>\n\t\t\t\t<td>&nbsp;" . CUR . " <input type='text' size='10' name='overpay' value='{$overpay}'></td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR;
    db_conn('cubit');
    $Sl = "SELECT purnum,supinv FROM purchases";
    $Ri = db_exec($Sl);
    while ($pd = pg_fetch_array($Ri)) {
        $pid = $pd['purnum'];
        $supinv[$pid] = $pd['supinv'];
    }
    for ($i = 1; $i < 13; $i++) {
        db_conn($i);
        $Sl = "SELECT purnum, supinv FROM purchases";
        $Ri = db_exec($Sl);
        while ($pd = pg_fetch_array($Ri)) {
            $pid = $pd['purnum'];
            $supinv[$pid] = $pd['supinv'];
        }
        $Sl = "SELECT purnum, supinv FROM nons_purchases";
        $Ri = db_exec($Sl);
        while ($pd = pg_fetch_array($Ri)) {
            $pid = $pd['purnum'];
            $supinv[$pid] = $pd['supinv'];
        }
    }
    if ($all == 2) {
        if (!isset($paidamt)) {
            $paidamt = array(0);
        }
        if (!isset($stock_setamt)) {
            $stock_setamt = array(0);
        }
        #user has to use auto allocation ... we cant just die here anymore ...
        db_conn("cubit");
        $sql = "\n\t\t\tSELECT purid as invid, intpurid as invid2, SUM(balance) AS balance, pdate as odate \n\t\t\tFROM suppurch WHERE supid = '{$supid}' AND div = '" . USER_DIV . "' \n\t\t\tGROUP BY purid, intpurid, pdate \n\t\t\tHAVING SUM(balance) > 0 \n\t\t\tORDER BY odate ASC";
        $prnInvRslt = db_exec($sql);
        //		if(pg_numrows($prnInvRslt) < 1) {return "The selected supplier has no outstanding purchases<br>
        //				To make a payment in advance please select Auto Allocation";}
        $i = 0;
        $counter = 0;
        $total = 0;
        while ($inv = pg_fetch_array($prnInvRslt)) {
            if ($inv['invid'] == 0) {
                continue;
            }
            if ($inv['invid2'] > 0) {
                $inv['invid'] = $inv['invid2'];
            }
            if ($doset) {
                $showsethead = "<th>Settlement</th><th>Potential Settlement Discount</th>";
            } else {
                $showsethead = "";
            }
            if ($i == 0) {
                $confirm .= "\n\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='3'><h3>Allocate Payments To Supplier Invoices:</h3></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Purchase</th>\n\t\t\t\t\t\t<th>Supplier Invoice No.</th>\n\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t{$showsethead}\n\t\t\t\t\t</tr>";
            }
            $invid = $inv['invid'];
            $val = '';
            if (pg_numrows($prnInvRslt) == 1) {
                $val = $amt;
            }
            if (isset($paidamt[$i])) {
                $val = sprint($paidamt[$i]);
            }
            $val = sprint($val);
            if (isset($supinv[$invid])) {
                $sinv = $supinv[$invid];
            } else {
                $sinv = "";
            }
            if ($doset) {
                #check if we can find a recommended settlement amt ...
                if ($sup['setdisc'] != "0") {
                    #generate the dates ...
                    if ($sup['setdays'] == 0) {
                        $month = date("m") + 1;
                    } else {
                        $month = date("m");
                    }
                    $startmonth = $month - 1;
                    $firstdate = date("Y-m-d", mktime(0, 0, 0, $startmonth, $sup['setdays'], date("Y")));
                    $discdate = date("Y-m-d", mktime(0, 0, 0, $month, $sup['setdays'], date("Y")));
                    $lastdate = date("Y-m-d", mktime(0, 0, 0, date("m") + 1, -1, date("Y")));
                    //print "$firstdate -> $discdate -> $lastdate =====> $date ($inv[odate])<br>";
                    if ($inv['odate'] > $firstdate and $inv['odate'] < $lastdate and $inv['odate'] <= $date) {
                        #discount applies ...
                        $setrec = sprint($inv['balance'] / 100 * $sup['setdisc']);
                    } else {
                        #no discount
                        $setrec = sprint(0);
                    }
                } else {
                    $setrec = sprint(0);
                }
                if (!isset($stock_setamt[$i])) {
                    $stock_setamt[$i] = sprint(0);
                }
                $stock_setamt[$i] = sprint($stock_setamt[$i]);
                $showset = "\n\t\t\t\t\t<td><input id='set_id{$counter}' type='text' size='10' name='stock_setamt[{$i}]' value='{$stock_setamt[$i]}'></td>\n\t\t\t\t\t<td><input id='set_hid{$counter}' type='hidden' name='stock_setamt_val' value='{$setrec}'>" . CUR . " {$setrec}</td>";
            } else {
                $showset = "\n\t\t\t\t\t<input id='set_id{$counter}' type='hidden' name='stock_setamt[{$i}]' value='0'>\n\t\t\t\t\t<input id='set_hid{$counter}' type='hidden' name='stock_setamt_val' value='0'>";
            }
            $confirm .= "\n\t\t\t\t<input type='hidden' size='20' name='invids[{$i}]' value='{$inv['invid']}'>\n\t\t\t\t<input id='total_hid{$counter}' type='hidden' name='totamt[{$i}]' value='{$inv['balance']}'>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$inv['invid']}</td>\n\t\t\t\t\t<td>{$sinv}</td>\n\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t<td><input id='total_id{$counter}' type='text' name='paidamt[{$i}]' size='10' value='{$val}'></td>\n\t\t\t\t\t{$showset}\n\t\t\t\t\t<td><input id='button{$counter}' type='checkbox' onClick=\"updateStockTotal({$counter});\"></td>\n\t\t\t\t</tr>";
            $i++;
            $total = $total + $inv['balance'];
            if ($counter == 15) {
                $confirm .= "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2'></td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap colspan='2'>" . CUR . " " . sprint($total) . "</td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($paidamt)) . " </td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($stock_setamt)) . " </td>\n\t\t\t\t\t\t<td class='" . bg_class() . "' nowrap align='left'><input type='submit' name='midupdate' value='Update'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<a name='midupdate'></a>";
                $counter = 0;
            }
            $counter++;
        }
        if ($counter != 0) {
            $confirm .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'></td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap colspan='2'>" . CUR . " " . sprint($total) . "</td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($paidamt)) . " </td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap>Total: " . CUR . " " . sprint(array_sum($stock_setamt)) . " </td>\n\t\t\t\t\t<td class='" . bg_class() . "' nowrap align='left'><input type='submit' name='botupdate' value='Update'></td>\n\t\t\t\t</tr>\n\t\t\t\t<a name='botupdate'></a>";
        }
        // 0.01 because of high precisions like 0.0000000001234 still matching
        if ($out >= 0.01) {
            $confirm .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account with " . CUR . " " . sprint($out) . " </b></td>\n\t\t\t\t</tr>";
        }
    }
    vsprint($out);
    ###########################[ RECONCILIATION ]#############################
    #if we adding a new reason ... add it
    if (isset($newreason) and strlen($newreason) > 0 and (isset($newreasonamt) and strlen($newreasonamt) > 0)) {
        if (!isset($newreasondescr)) {
            $newreasondescr = "";
        }
        $ins_sql = "\n\t\t\tINSERT INTO recon_balance_ct (\n\t\t\t\tsupid, date, reason_id, amount,descr\n\t\t\t) VALUES (\n\t\t\t\t'{$supid}', 'now', '{$newreason}', '{$newreasonamt}', '{$newreasondescr}'\n\t\t\t)";
        $run_ins = db_exec($ins_sql) or errDie("Unable to record new reson information.");
        $navigation = "<script>gotoName('bottom');</script>";
    }
    #if we adding a new comment ... add it
    if (isset($newcomment) and strlen($newcomment) > 0) {
        $ins_sql = "\n\t\t\tINSERT INTO recon_comments_ct (\n\t\t\t\tsupid, comment, date\n\t\t\t) VALUES (\n\t\t\t\t'{$supid}', '" . base64_encode($newcomment) . "', 'now'\n\t\t\t)";
        $run_ins = db_exec($ins_sql) or errDie("Unable to record new comment information.");
        $navigation = "<script>gotoName('bottom');</script>";
    }
    #if we removing a reason ... remove it
    if (isset($remreason)) {
        $rem_sql = "DELETE FROM recon_balance_ct WHERE id = '{$remreason}'";
        $run_rem = db_exec($rem_sql) or errDie("Unable to remove selected reason.");
    }
    #if we removing a comment ... remove it
    if (isset($remcomment)) {
        $rem_com = "DELETE FROM recon_comments_ct WHERE id = '{$remcomment}'";
        $run_rem = db_exec($rem_com) or errDie("Unable to remove selected comment.");
    }
    #get balances ...
    if (!isset($creditor_balance) or strlen($creditor_balance) < 1) {
        $sql = "SELECT balance FROM cubit.recon_creditor_balances WHERE supid='{$supid}'";
        $cbalance_rslt = db_exec($sql) or errDie("Unable to retrieve creditor balance.");
        if (pg_numrows($cbalance_rslt) < 1) {
            $creditor_balance = 0;
            $ins_sql = "INSERT INTO cubit.recon_creditor_balances (supid,balance) VALUES ('{$supid}','0')";
            $run_ins = db_exec($ins_sql) or errDie("Unable to record creditor balance.");
        }
        $creditor_balance = pg_fetch_result($cbalance_rslt, 0);
    } else {
        #update the db one now ..
        $upd_sql = "UPDATE recon_creditor_balances SET balance = '{$creditor_balance}' WHERE supid = '{$supid}'";
        $run_upd = db_exec($upd_sql) or errDie("Unable to update creditor balance information.");
    }
    $total_balance = sprint($sup["balance"] + $creditor_balance);
    //	$diff_balance = sprint($sup["balance"] - $creditor_balance);
    $diff_balance = sprint($amt + array_sum($stock_setamt) - $creditor_balance);
    #get reasons for supplier ...
    $sql = "SELECT recon_balance_ct.id, date, reason, amount, descr FROM cubit.recon_balance_ct\n\t\t\t\tLEFT JOIN cubit.recon_reasons\n\t\t\t\t\tON recon_balance_ct.reason_id=recon_reasons.id\n\t\t\tWHERE supid='{$supid}' AND date>='{$date}'";
    $balance_rslt = db_exec($sql) or errDie("Unable to retrieve balances.");
    $balance_out = "";
    $reason_total = 0;
    while (list($id, $date, $reason, $amount, $reasondescr) = pg_fetch_array($balance_rslt)) {
        $balance_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$date}</td>\n\t\t\t\t<td>{$reason}</td>\n\t\t\t\t<td align='right'>" . CUR . " {$amount}</td>\n\t\t\t\t<td>{$reasondescr}</td>\n\t\t\t\t<td><input type='checkbox' name='remreason' value='{$id}' onClick='document.form1.submit();'></td>\n\t\t\t</tr>";
        $reason_total = $reason_total + $amount;
    }
    if ($reason_total != 0) {
        $balance_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='2'><b>Total:</b></td>\n\t\t\t\t<td align='right'><b>" . CUR . " " . sprint($reason_total) . "</b></td>\n\t\t\t\t<td colspan='2'></td>\n\t\t\t</tr>";
    }
    if (!isset($sup['supid'])) {
        $sup['supid'] = "0";
    }
    #get comments for supplier ...
    $sql = "SELECT id, date, comment FROM cubit.recon_comments_ct WHERE supid='{$sup['supid']}' ORDER BY id DESC";
    $comments_rslt = db_exec($sql) or errDie("Unable to retrieve comments.");
    $comments_out = "";
    while ($comments_data = pg_fetch_array($comments_rslt)) {
        $comments_out .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$comments_data['date']}</td>\n\t\t\t\t<td>" . base64_decode(nl2br($comments_data["comment"])) . "</td>\n\t\t\t\t<td><input type='checkbox' name='remcomment' value='{$comments_data['id']}' onClick='document.form1.submit();'></td>\n\t\t\t</tr>";
    }
    $get_reasons = "SELECT * FROM recon_reasons ORDER BY reason";
    $run_reasons = db_exec($get_reasons) or errDie("Unable to get reasons information");
    if (pg_numrows($run_reasons) < 1) {
        $newreason_drop = "<a target='_blank' href='../recon_reason_view.php'>No Reasons Found.</a>";
    } else {
        #get list of available reasons
        $newreason_drop = "<select name='newreason'>";
        while ($rarr = pg_fetch_array($run_reasons)) {
            $newreason_drop .= "<option value='{$rarr['id']}'>{$rarr['reason']}</option>";
        }
        $newreason_drop .= "</select>";
    }
    if (!isset($navigation)) {
        $navigation = "";
    }
    $confirm .= "\n\t\t\t<input type='hidden' name='out' value='{$out}'>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'></td>\n\t\t\t\t<td align='right'><input type='submit' name='confirm' value='Confirm &raquo'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t" . TBL_BR . "\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='5'>Reconciliation to statement supplied by supplier:</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<th>Date</th>\n\t\t\t\t\t\t\t<th>Reason</th>\n\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t<th>Ref No</th>\n\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$balance_out}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'>{$newreason_drop}</td>\n\t\t\t\t\t\t\t<td><input type='text' size='10' name='newreasonamt'></td>\n\t\t\t\t\t\t\t<td><input type='text' size='14' name='newreasondescr'></td>\n\t\t\t\t\t\t\t<td><input type='submit' value='Add'></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'>\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='3'>Comments</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<th>Date</th>\n\t\t\t\t\t\t\t<th>Comment</th>\n\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$comments_out}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='2'><input type='text' size='30' name='newcomment'></td>\n\t\t\t\t\t\t\t<td><input type='submit' value='Add'></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</table>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Balance According to Cubit</td>\n\t\t\t\t<td align='right'>" . CUR . " {$sup['balance']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Total Of This Payment</td>\n\t\t\t\t<td align='right'>" . CUR . " " . sprint($amt + array_sum($stock_setamt)) . "</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Balance According to Supplier</td>\n\t\t\t\t<td align='right'><input type='text' name='creditor_balance' value='{$creditor_balance}'></td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Difference in amount paid now and supplier statement</td>\n\t\t\t\t<td align='right'><li class='err'>" . CUR . " {$diff_balance}</li></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t<a name='bottom'></a>\n\t\t{$navigation}";
    return $confirm;
}
            break;
        case "alloc":
            $OUTPUT = alloc($_POST);
            break;
        case "confirm":
            $OUTPUT = confirm($_POST);
            break;
        case "write":
            $OUTPUT = write($_POST);
            break;
        default:
            $OUTPUT = sel_sup();
    }
} else {
    # Display default output
    $OUTPUT = sel_sup();
}
# get templete
require "../template.php";
# Insert details
function sel_sup()
{
    // suppliers Drop down selections
    db_connect();
    $supp = "<select name='supid'>";
    $sql = "SELECT supid, supno, supname FROM suppliers WHERE div = '" . USER_DIV . "' ORDER BY supname,supno";
    $supRslt = db_exec($sql);
    if (pg_numrows($supRslt) < 1) {
        return "<li> There are no Creditors in Cubit.";
    }
    while ($sup = pg_fetch_array($supRslt)) {
function alloc($_POST)
{
    # get vars
    extract($_POST);
    if (isset($back)) {
        if (isset($e)) {
            header("Location: cashbook-entry.php");
            exit;
        }
        return sel_sup();
    }
    $passon = "";
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($all, "num", 1, 1, "Invalid allocation.");
    $v->isOk($rec_amount, "num", 1, 10, "Invalid supplier payment amount.");
    for ($t = 0; $t < $rec_amount; $t++) {
        $v->isOk($supid[$t], "num", 1, 10, "Invalid supplier number. ({$t})");
        $v->isOk($bankid[$t], "num", 1, 30, "Invalid Bank Account. ({$t})");
        $v->isOk($date_day[$t], "num", 1, 2, "Invalid Date day. ({$t})");
        $v->isOk($date_month[$t], "num", 1, 2, "Invalid Date month. ({$t})");
        $v->isOk($date_year[$t], "num", 1, 4, "Invalid Date Year. ({$t})");
        if (strlen($date_year[$t]) != 4) {
            $v->isOk($bankname, "num", 1, 1, "Invalid Date year. ({$t})");
        }
        $v->isOk($descript[$t], "string", 0, 255, "Invalid Description. ({$t})");
        $v->isOk($reference[$t], "string", 0, 50, "Invalid Reference Name/Number. ({$t})");
        $v->isOk($cheqnum[$t], "num", 0, 30, "Invalid Cheque number. ({$t})");
        $v->isOk($amt[$t], "float", 1, 10, "Invalid amount. ({$t})");
        if ($amt[$t] < 0.01) {
            $v->isOk($amt[$t], "float", 5, 1, "Amount too small. ({$t})");
        }
        $date[$t] = mkdate($date_year[$t], $date_month[$t], $date_day[$t]);
        if (!checkdate($date_month[$t], $date_day[$t], $date_year[$t])) {
            $v->isOk($date[$t], "num", 1, 1, "Invalid date. ({$t})");
        }
        $passon .= "\n\t\t\t\t<input type='hidden' name='bankid[{$t}]' value='{$bankid[$t]}'>\n\t\t\t\t<input type='hidden' name='date[{$t}]' value='{$date[$t]}'>\n\t\t\t\t<input type='hidden' name='supid[{$t}]' value='{$supid[$t]}'>\n\t\t\t\t<input type='hidden' name='descript[{$t}]' value='{$descript[$t]}'>\n\t\t\t\t<input type='hidden' name='reference[{$t}]' value='{$reference[$t]}'>\n\t\t\t\t<input type='hidden' name='cheqnum[{$t}]' value='{$cheqnum[$t]}'>\n\t\t\t\t<input type='hidden' name='amt[{$t}]' value='{$amt[$t]}'>\n\t\t\t\t<input type='hidden' name='date_day[{$t}]' value='{$date_day[$t]}'>\n\t\t\t\t<input type='hidden' name='date_month[{$t}]' value='{$date_month[$t]}'>\n\t\t\t\t<input type='hidden' name='date_year[{$t}]' value='{$date_year[$t]}'>";
    }
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        //$confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm . method($supid);
    }
    $confirm = "\n\t\t\t<h3>Confirm Multiple Bank Receipts</h3>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t\t<input type='hidden' name='key' value='confirm'>\n\t\t\t\t<input type='hidden' name='rec_amount' value='{$rec_amount}'>\n\t\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t\t<input type='hidden' name='pur' value=''>\n\t\t\t\t<input type='hidden' name='inv' value=''>\n\t\t\t\t{$passon}";
    for ($t = 0; $t < $rec_amount; $t++) {
        //$out = array();
        # Get bank account name
        db_connect();
        $sql = "SELECT accname,bankname FROM bankacct WHERE bankid = '{$bankid[$t]}' AND div = '" . USER_DIV . "'";
        $bankRslt = db_exec($sql);
        $bank[$t] = pg_fetch_array($bankRslt);
        if (pg_num_rows($bankRslt) < 1) {
            $bank[$t]['accname'] = "Cash";
            $bank[$t]['bankname'] = "";
        }
        # Supplier name
        $sql = "SELECT supno,supname FROM suppliers WHERE supid = '{$supid[$t]}' AND div = '" . USER_DIV . "'";
        $supRslt = db_exec($sql);
        $sup = pg_fetch_array($supRslt);
        $bank1 = $bank[$t]['accname'];
        $bank2 = $bank[$t]['bankname'];
        $confirm .= "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Supplier</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Account</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Paid To</th>\n\t\t\t\t\t<th>Description</th>\n\t\t\t\t\t<th>Reference</th>\n\t\t\t\t\t<th>Cheque Number</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$bank1} - {$bank2}</td>\n\t\t\t\t\t<td valign='center'>{$date[$t]}</td>\n\t\t\t\t\t<td valign='center'>({$sup['supno']}) {$sup['supname']}</td>\n\t\t\t\t\t<td valign='center'>" . nl2br($descript[$t]) . "</td>\n\t\t\t\t\t<td valign='center'>{$reference[$t]}</td>\n\t\t\t\t\t<td valign='center'>{$cheqnum[$t]}</td>\n\t\t\t\t\t<td valign='center'>" . CUR . " {$amt[$t]}</td>\n\t\t\t\t</tr>";
        db_conn('cubit');
        $Sl = "SELECT purnum,supinv FROM purchases";
        $Ri = db_exec($Sl);
        while ($pd = pg_fetch_array($Ri)) {
            $pid = $pd['purnum'];
            $supinv[$pid] = $pd['supinv'];
        }
        for ($i = 1; $i < 13; $i++) {
            db_conn($i);
            $Sl = "SELECT purnum,supinv FROM purchases";
            $Ri = db_exec($Sl);
            while ($pd = pg_fetch_array($Ri)) {
                $pid = $pd['purnum'];
                $supinv[$pid] = $pd['supinv'];
            }
        }
        if ($all == 0) {
            $out[$t] = $amt[$t];
            // Connect to database
            db_conn("cubit");
            $sql = "SELECT purid as invid,intpurid as invid2,SUM(balance) AS balance,pdate as odate\n\t\t\t\t\tFROM suppurch WHERE supid = '{$supid[$t]}' AND div = '" . USER_DIV . "'\n\t\t\t\t\tGROUP BY purid, intpurid, pdate\n\t\t\t\t\tHAVING SUM(balance) > 0\n\t\t\t\t\tORDER BY odate ASC";
            $prnInvRslt = db_exec($sql) or errDie("unable to get invoices.");
            $i = 0;
            while ($inv = pg_fetch_array($prnInvRslt) and $out[$t] > 0) {
                //if ($inv['invid']==0) {continue;}
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                if ($i == 0) {
                    $confirm .= "\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<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Purchase</th>\n\t\t\t\t\t\t<th>Supplier Invoice No.</th>\n\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t</tr>";
                }
                $invid = $inv['invid'];
                if (isset($supinv[$invid])) {
                    $sinv = $supinv[$invid];
                } else {
                    $sinv = "";
                }
                $confirm .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' size='20' name='invids[{$t}][]' value='{$inv['invid']}'>{$inv['invid']}</td>\n\t\t\t\t\t\t\t<td>{$sinv}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                if ($out[$t] >= $inv['balance']) {
                    $val = $inv['balance'];
                    $out[$t] = $out[$t] - $inv['balance'];
                } else {
                    $val = $out[$t];
                    $out[$t] = 0;
                }
                $i++;
                $val = sprint($val);
                $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[{$invid}]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out[$t] >= 0.01) {
                $confirm .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\t\twith " . CUR . " " . sprint($out[$t]) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
        if ($all == 1) {
            $confirm .= "\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><td><br></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Current</th>\n\t\t\t\t\t\t\t<th>30 days</th>\n\t\t\t\t\t\t\t<th>60 days</th>\n\t\t\t\t\t\t\t<th>90 days</th>\n\t\t\t\t\t\t\t<th>120 days</th>\n\t\t\t\t\t\t\t<th>Total Outstanding</th>\n\t\t\t\t\t\t</tr>";
            $curr[$t] = sage($supid[$t], 29);
            $age30[$t] = sage($supid[$t], 59);
            $age60[$t] = sage($supid[$t], 89);
            $age90[$t] = sage($supid[$t], 119);
            $age120[$t] = sage($supid[$t], 149);
            $supttot[$t] = sprint($curr[$t] + $age30[$t] + $age60[$t] + $age90[$t] + $age120[$t]);
            if (!isset($out1[$t])) {
                $out1[$t] = "";
                $out2[$t] = "";
                $out3[$t] = "";
                $out4[$t] = "";
                $out5[$t] = "";
            }
            vsprint($out1[$t]);
            vsprint($out2[$t]);
            vsprint($out3[$t]);
            vsprint($out4[$t]);
            vsprint($out5[$t]);
            # Alternate bgcolor
            $confirm .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>" . CUR . " {$curr[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age30[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age60[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age90[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$age120[$t]}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$supttot[$t]}</td>\n\t\t\t\t\t\t</tr>";
            $confirm .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out1[{$t}]' value='{$out1[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out2[{$t}]' value='{$out2[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out3[{$t}]' value='{$out3[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out4[{$t}]' value='{$out4[$t]}'></td>\n\t\t\t\t\t\t<td><input type='text' size='7' name='out5[{$t}]' value='{$out5[$t]}'></td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t</tr>";
            $confirm .= "\n\t\t\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t\t</table>\n\t\t\t\t</td>\n\t\t\t</tr>";
        }
        if ($all == 2) {
            db_conn("cubit");
            $sql = "SELECT purid as invid,intpurid as invid2,SUM(balance) AS balance,pdate as odate\n\t\t\t\t\tFROM suppurch WHERE supid = '{$supid[$t]}' AND div = '" . USER_DIV . "'\n\t\t\t\t\tGROUP BY purid, intpurid, pdate\n\t\t\t\t\tHAVING SUM(balance) > 0\n\t\t\t\t\tORDER BY odate ASC";
            $prnInvRslt = db_exec($sql);
            if (pg_numrows($prnInvRslt) < 1) {
                return "The selected supplier has no outstanding purchases<br>\n\t\t\t\t\tTo make a payment in advance please select Auto Allocation";
            }
            $i = 0;
            while ($inv = pg_fetch_array($prnInvRslt)) {
                if ($inv['invid'] == 0) {
                    continue;
                }
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                if ($i == 0) {
                    $confirm .= "\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='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t<th>Supplier Invoice No.</th>\n\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t</tr>";
                }
                $invid = $inv['invid'];
                $val = '';
                if (pg_numrows($prnInvRslt) == 1) {
                    $val = $amt[$t];
                }
                if (isset($paidamt[$t][$i])) {
                    $val = $paidamt[$t][$i];
                }
                if (isset($supinv[$invid])) {
                    $sinv = $supinv[$invid];
                } else {
                    $sinv = "";
                }
                $confirm .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td><input type='hidden' size='20' name='invids[{$t}][]' value='{$inv['invid']}'>{$inv['invid']}</td>\n\t\t\t\t\t\t\t<td>{$sinv}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                $i++;
                $confirm .= "\n\t\t\t\t\t\t\t<td><input type='text' name='paidamt[{$t}][{$invid}]' size='10' value='{$val}'></td>\n\t\t\t\t\t\t</tr>";
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out[$t] >= 0.01) {
                $confirm .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\t\twith " . CUR . " " . sprint($out[$t]) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
        vsprint($out[$t]);
        $confirm .= "<input type='hidden' name='out[{$t}]' value='{$out[$t]}'>";
    }
    $confirm .= "\n\t\t\t\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td><input type='submit' name='back' value='&laquo; Correction'></td>\n\t\t\t\t<td align='right' colspan='6'><input type='submit' value='Confirm &raquo'></td>\n\t\t\t</tr>\n\t\t</form>\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='bank-pay-supp.php'>Add supplier payment</a></td>\n\t\t\t</tr>\n\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t</table>";
    return $confirm;
}