function view()
{
    extract($_GET);
    require_lib("validate");
    $v = new validate();
    $v->isOk($empnum, "num", 1, 20, "Invalid employee number.");
    $v->isOk($id, "num", 1, 20, "Invalid payslip number.");
    if ($v->isError()) {
        $confirmCust = $v->genErrors() . "<br><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirmCust;
    }
    if (($emp = qryEmployee($empnum, "*")) === false) {
        $emp = qryLEmployee($empnum, "*");
    }
    if (isset($rev)) {
        $tbl = "salr";
    } else {
        $tbl = "salpaid";
    }
    $sql = "SELECT * FROM cubit.{$tbl} WHERE empnum='{$empnum}' AND id = '{$id}' AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to read employee salary details from Cubit.");
    if (pg_numrows($rslt) < 1) {
        return "<li>Employee payment not found.</li>";
    }
    $pay = pg_fetch_array($rslt);
    # Calculate gross salary from nettpay
    $gross = $pay['salary'] - $pay['totallow'] - $pay['comm'] + $pay['totded'] + $pay['uif'] + $pay['paye'] + $pay['loanins'];
    vsprint($gross);
    # Layout
    $slip = "\n\t<table " . TMPL_tblDflts . ">\n\t<tr>\n\t\t<td align='right'><font size='3' color='white'><b>Employee: </b></font></td>\n\t\t<td align='left'><b>{$emp['empnum']}</b></td>\n\t\t<td align='right'><font size='3' color='white'><b>Name: </b></font></td>\n\t\t<td align='left'><b>{$emp['fnames']}</b></td>\n\t\t<td align='right'><font size='3' color='white'><b>Surname: </b></font></td>\n\t\t<td align='left'><b>{$emp['sname']}</b></td>\n\t</tr>\n\t" . TBL_BR . "\n\t</table>\n\t<table " . TMPL_tblDflts . ">\n\t<tr>\n\t\t<th>Description</th>\n\t\t<th>Amount</th>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Gross Basic salary</td>\n\t\t<td align='center'>" . CUR . " {$gross}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Commission</td>\n\t\t<td align='center'>" . CUR . " {$pay['comm']}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Low or interest-free loan</td>\n\t\t<td align='center'>" . CUR . " {$pay['loanins']}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Interest rate charged by company</td>\n\t\t<td align='center'>{$emp['loanint']} %</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Deductions</td>\n\t\t<td align='center'>" . CUR . " {$pay['totded']}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>UIF</td>\n\t\t<td align='center'>" . CUR . " {$pay['uif']}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>PAYE</td>\n\t\t<td align='center'>" . CUR . " {$pay['paye']}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Allowances</td>\n\t\t<td align='center'>" . CUR . " {$pay['totallow']}</td>\n\t</tr>\n\t" . TBL_BR . "\n\t<tr class='" . bg_class() . "'>\n\t\t<td><h3>Nett Income</h3></td>\n\t\t<td align='center'><b>" . CUR . " {$pay['salary']}</b></td>\n\t</tr>\n\t</table>" . mkQuickLinks(ql("../admin-employee-add.php", "Add Employee"));
    return $slip;
}
function confirm($_POST)
{
    extract($_POST);
    if (isset($back)) {
        header("Location: bank-recpt-inv.php?cusnum={$cusid}&descript={$descript}&reference={$reference}&amt={$amt}");
        die;
    }
    if (!isset($print_recpt)) {
        $print_recpt = "";
    }
    if (isset($bulk_pay) and strlen($bulk_pay) > 0) {
        $send_bulk = "<input type='hidden' name='bulk_pay' value='yes'>";
    } else {
        $send_bulk = "";
    }
    if (!isset($out1)) {
        $out1 = '';
    }
    if (!isset($out2)) {
        $out2 = '';
    }
    if (!isset($out3)) {
        $out3 = '';
    }
    if (!isset($out4)) {
        $out4 = '';
    }
    if (!isset($out5)) {
        $out5 = '';
    }
    require_lib("validate");
    $v = new validate();
    $v->isOk($all, "num", 1, 1, "Invalid allocation.");
    $v->isOk($bankid, "num", 1, 30, "Invalid Bank Account.");
    $v->isOk($date, "date", 1, 14, "Invalid Date.");
    $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, 40, "Invalid amount.");
    //	$v->isOk($out, "float", 1, 40, "Invalid out amount.");
    $v->isOk($out1, "float", 0, 40, "Invalid paid amount(currant).");
    $v->isOk($out2, "float", 0, 40, "Invalid paid amount(30).");
    $v->isOk($out3, "float", 0, 40, "Invalid paid amount(60).");
    $v->isOk($out4, "float", 0, 40, "Invalid paid amount(90).");
    $v->isOk($out5, "float", 0, 40, "Invalid paid amount(120).");
    $v->isOk($cusid, "num", 1, 10, "Invalid customer number.");
    $v->isOk($print_recpt, "string", 0, 10, "Invalid Print Receipt Setting.");
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$key] < 0.01) {
                continue;
            }
            $v->isOk($invids[$key], "num", 1, 50, "Invalid Invoice No. [{$key}]");
            $v->isOk($paidamt[$key], "float", 1, 40, "Invalid amount to be paid. [{$key}]");
        }
    }
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $_POST['OUT1'] = $out1 + 0;
        $_POST['OUT2'] = $out2 + 0;
        $_POST['OUT3'] = $out3 + 0;
        $_POST['OUT4'] = $out4 + 0;
        $_POST['OUT5'] = $out5 + 0;
        return $confirm . alloc($_POST);
    }
    $out += 0;
    $OUT1 = $out1 + 0;
    $OUT2 = $out2 + 0;
    $OUT3 = $out3 + 0;
    $OUT4 = $out4 + 0;
    $OUT5 = $out5 + 0;
    $tot = 0;
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$key] < 0.01) {
                continue;
            }
            $tot += $paidamt[$key];
        }
    }
    if (isset($open_amount)) {
        $tot += array_sum($open_amount);
    }
    $tot = sprint($tot);
    $amt = sprint($amt);
    $out = sprint($out);
    if (sprint($tot + $out + $out1 + $out2 + $out3 + $out4 + $out5 - $amt) != sprint(0)) {
        $_POST['OUT1'] = $OUT1;
        $_POST['OUT2'] = $OUT2;
        $_POST['OUT3'] = $OUT3;
        $_POST['OUT4'] = $OUT4;
        $_POST['OUT5'] = $OUT5;
        return "<li class='err'>The total amount for invoices not equal to the amount received.\n\t\t\tPlease check the details.</li>" . alloc($_POST);
    }
    if (isset($bout)) {
        $out = $bout;
    }
    $confirm = "\n\t\t<h3>New Bank Receipt</h3>\n\t\t<h4>Confirm entry (Please check the details)</h4>\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t<input type='hidden' name='bankid' value='{$bankid}'>\n\t\t\t<input type='hidden' name='date' value='{$date}'>\n\t\t\t<input type='hidden' name='cusid' value='{$cusid}'>\n\t\t\t<input type='hidden' name='descript' value='{$descript}'>\n\t\t\t<input type='hidden' name='reference' value='{$reference}'>\n\t\t\t<input type='hidden' name='cheqnum' value='{$cheqnum}'>\n\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t<input type='hidden' name='out' value='{$out}'>\n\t\t\t<input type='hidden' name='date_day' value='{$date_day}'>\n\t\t\t<input type='hidden' name='date_month' value='{$date_month}'>\n\t\t\t<input type='hidden' name='date_year' value='{$date_year}'>\n\t\t\t<input type='hidden' name='OUT1' value='{$OUT1}'>\n\t\t\t<input type='hidden' name='OUT2' value='{$OUT2}'>\n\t\t\t<input type='hidden' name='OUT3' value='{$OUT3}'>\n\t\t\t<input type='hidden' name='OUT4' value='{$OUT4}'>\n\t\t\t<input type='hidden' name='OUT5' value='{$OUT5}'>\n\t\t\t<input type='hidden' name='amt' value='{$amt}'>\n\t\t\t<input type='hidden' name='print_recpt' value='{$print_recpt}'>\n\t\t\t{$send_bulk}\n\t\t<table " . TMPL_tblDflts . ">";
    /* bank account name */
    if ($bankid == "0" or ($bank = qryBankAcct($bankid, "accname, bankname")) === false) {
        $bank['accname'] = "Cash";
        $bank['bankname'] = "";
    }
    /* customer name */
    $cus = qryCustomer($cusid, "cusname, surname");
    if ($print_recpt == "yes") {
        $show_print_recpt = "Yes";
    } else {
        $show_print_recpt = "No";
    }
    $confirm .= "\n\t<tr>\n\t\t<th>Field</th>\n\t\t<th>Value</th>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Account</td>\n\t\t<td>{$bank['accname']} - {$bank['bankname']}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Date</td>\n\t\t<td valign='center'>{$date}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Received from</td>\n\t\t<td valign='center'>{$cus['cusname']} {$cus['surname']}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Description</td>\n\t\t<td valign='center'>{$descript}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Reference</td>\n\t\t<td valign='center'>{$reference}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Cheque Number</td>\n\t\t<td valign='center'>{$cheqnum}</td>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Amount</td>\n\t\t<td valign='center'>" . CUR . " {$amt}</td>\n\t</tr>\n\t" . TBL_BR . "\n\t<tr class='" . bg_class() . "'>\n\t\t<td>Print Receipt</td>\n\t\t<td>{$show_print_recpt}</td>\n\t</tr>";
    /* OPTION 1 : AUTO ALLOCATE (confirm) */
    if ($all == 0) {
        // Layout
        $confirm .= "\n\t\t" . TBL_BR . "\n\t\t<tr>\n\t\t\t<td colspan='2'><h3>Invoices</h3></td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<th>Invoice Number</th>\n\t\t\t<th>Outstanding amount</th>\n\t\t\t<th>Terms</th>\n\t\t\t<th>Date</th>\n\t\t\t<th>Amount</th>\n\t\t</tr>";
        $i = 0;
        if (isset($invids)) {
            foreach ($invids as $key => $value) {
                if ($paidamt[$invids[$key]] < 0.01) {
                    continue;
                }
                db_connect();
                $ii = $invids[$key];
                if (!isset($itype[$ii]) && !isset($ptype[$ii])) {
                    # Get all the details
                    $sql = "SELECT invnum,invid,balance,terms,odate FROM invoices\n\t\t\t\t\t\t\tWHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        return "<li class='err'> - Invalid ord number {$invids[$key]}.";
                    }
                    $inv = pg_fetch_array($invRslt);
                    $invid = $inv['invid'];
                    $confirm .= "\n\t\t\t\t\t<input type='hidden' name='paidamt[{$invid}]' size='7' value='{$paidamt[$invid]}'>\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$invid}]' value='{$inv['invid']}'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td>{$inv['terms']} days</td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$paidamt[$invid]}</td>\n\t\t\t\t\t</tr>";
                } else {
                    if (!isset($ptype[$ii])) {
                        $sql = "SELECT invnum,invid,balance,sdate as odate FROM nons_invoices\n\t\t\t\t\t\t\tWHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'";
                        $invRslt = db_exec($sql) or errDie("Unable to access database.");
                        if (pg_numrows($invRslt) < 1) {
                            return "<li class='err'> - Invalid ord number {$invids[$key]}.</li>";
                        }
                        $inv = pg_fetch_array($invRslt);
                        $invid = $inv['invid'];
                        $confirm .= "\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$invid}]' value='{$inv['invid']}'>\n\t\t\t\t\t<input type='hidden' name='paidamt[{$invid}]' size='7' value='{$paidamt[$invid]}'>\n\t\t\t\t\t<input type='hidden' name='itype[{$invid}]' value='y'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$paidamt[$invid]}</td>\n\t\t\t\t\t</tr>";
                    } else {
                        $sqls = array();
                        for ($i = 1; $i <= 12; ++$i) {
                            $sqls[] = "SELECT invnum,invid,balance,odate FROM \"{$i}\".pinvoices WHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'";
                        }
                        $sql = implode(" UNION ", $sqls);
                        $prnInvRslt = db_exec($sql);
                        $inv = pg_fetch_array($prnInvRslt);
                        $invid = $inv['invid'];
                        $paidamt[$invid] = sprint($paidamt[$invid]);
                        $confirm .= "\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$invid}]' value='{$inv['invid']}'>\n\t\t\t\t\t<input type='hidden' name='paidamt[{$invid}]' size='7' value='{$paidamt[$invid]}'>\n\t\t\t\t\t<input type='hidden' name='ptype[{$invid}]' value='y'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$paidamt[$invid]}</td>\n\t\t\t\t\t</tr>";
                    }
                }
            }
        }
        if ($out > 0) {
            /* START OPEN ITEMS */
            $ox = "";
            db_conn('cubit');
            $sql = "SELECT * FROM open_stmnt WHERE balance>0 AND cusnum='{$cusid}' ORDER BY date";
            $rslt = db_exec($sql) or errDie("Unable to get open items.");
            $open_out = $out;
            $i = 0;
            while ($od = pg_fetch_array($rslt)) {
                if ($open_out == 0) {
                    continue;
                }
                $oid = $od['id'];
                if ($open_out >= $od['balance']) {
                    $open_amount[$oid] = $od['balance'];
                    $open_out = sprint($open_out - $od['balance']);
                    $ox .= "\n\t\t\t\t\t\t<input type='hidden' size='20' name='open[{$oid}]' value='{$oid}'>\n\t\t\t\t\t\t<input type='hidden' name='open_amount[{$oid}]' value='{$open_amount[$oid]}'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>{$od['type']}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$od['balance']}</td>\n\t\t\t\t\t\t\t<td>{$od['date']}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$open_amount[$oid]}</td>\n\t\t\t\t\t\t</tr>";
                } else {
                    if ($open_out < $od['balance']) {
                        $open_amount[$oid] = $open_out;
                        $open_out = 0;
                        $ox .= "\n\t\t\t\t\t\t<input type='hidden' size='20' name='open[{$oid}]' value='{$od['id']}'>\n\t\t\t\t\t\t<input type='hidden' name='open_amount[{$oid}]' value='{$open_amount[$oid]}'>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>{$od['type']}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$od['balance']}</td>\n\t\t\t\t\t\t\t<td>{$od['date']}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$open_amount[$oid]}</td>\n\t\t\t\t\t\t</tr>";
                    }
                }
            }
            if (open()) {
                $confirm .= "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Outstanding Transactions</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Description</th>\n\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>";
                $confirm .= $ox;
                $bout = $out;
                $out = $open_out;
                if ($out > 0) {
                    $confirm .= "\n\t\t\t\t\t<tr class='bg-even'>\n\t\t\t\t\t\t<td colspan='4'><b>A general transaction will credit the\n\t\t\t\t\t\t\tclient's account with " . CUR . " {$out} </b></td>\n\t\t\t\t\t</tr>";
                }
                $out = $bout;
            } else {
                $confirm .= "\n\t\t\t\t<tr class='bg-even'>\n\t\t\t\t\t<td colspan='5'><b>A general transaction will credit the\n\t\t\t\t\t\tclient's account with " . CUR . " {$out} </b></td>\n\t\t\t\t</tr>";
            }
        }
    }
    vsprint($out);
    vsprint($out1);
    vsprint($out2);
    vsprint($out3);
    vsprint($out4);
    vsprint($out5);
    /*
    	<tr>
    		<td colspan='5' align='right'><input type='submit' name='batch' value='Add To Batch'></td>
    	</tr>
    */
    $confirm .= "\n\t\t\t<input type='hidden' name='out1' value='{$out1}'>\n\t\t\t<input type='hidden' name='out2' value='{$out2}'>\n\t\t\t<input type='hidden' name='out3' value='{$out3}'>\n\t\t\t<input type='hidden' name='out4' value='{$out4}'>\n\t\t\t<input type='hidden' name='out5' value='{$out5}'>\n\t\t\t<tr><td><br></td></tr>\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='4'><input type='submit' value='Write &raquo'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>" . mkQuickLinks(ql("../core/trans-new.php", "Journal Transactions"), ql("../customers-view.php", "View Customers"));
    return $confirm;
}
function confirm($_POST)
{
    extract($_POST);
    if (isset($back)) {
        return method($cusid);
    }
    //	$date = "$date_day-$date_month-$date_year";
    $amt = sprint(array_sum($paidamt));
    $setamt = sprint(array_sum($stock_setamt));
    if (!isset($print_recpt)) {
        $print_recpt = "";
    }
    if (!isset($descript) or strlen($descript) < 1) {
        $descript = $reference;
    }
    if (!isset($out1)) {
        $out1 = '';
    }
    if (!isset($out2)) {
        $out2 = '';
    }
    if (!isset($out3)) {
        $out3 = '';
    }
    if (!isset($out4)) {
        $out4 = '';
    }
    if (!isset($out5)) {
        $out5 = '';
    }
    $date = "{$date_year}-{$date_month}-{$date_day}";
    require_lib("validate");
    $v = new validate();
    $v->isOk($all, "num", 1, 1, "Invalid allocation.");
    $v->isOk($bankid, "num", 1, 30, "Invalid Bank Account.");
    $v->isOk($date, "date", 1, 14, "Invalid Date.");
    $v->isOk($descript, "string", 1, 255, "Invalid Description.");
    $v->isOk($reference, "string", 1, 50, "Invalid Reference Name/Number.");
    $v->isOk($cheqnum, "num", 0, 30, "Invalid Cheque number.");
    $v->isOk($amt, "float", 1, 40, "Invalid amount.");
    $v->isOk($setamt, "float", 1, 40, "Invalid Settlement Amount.");
    $v->isOk($setvat, "string", 1, 10, "Invalid Settlement VAT Option.");
    $v->isOk($setvatcode, "string", 1, 40, "Invalid Settlement VAT code");
    //	$v->isOk($out, "float", 1, 40, "Invalid out amount.");
    $v->isOk($out1, "float", 0, 40, "Invalid paid amount(currant).");
    $v->isOk($out2, "float", 0, 40, "Invalid paid amount(30).");
    $v->isOk($out3, "float", 0, 40, "Invalid paid amount(60).");
    $v->isOk($out4, "float", 0, 40, "Invalid paid amount(90).");
    $v->isOk($out5, "float", 0, 40, "Invalid paid amount(120).");
    $v->isOk($cusid, "num", 1, 10, "Invalid customer number.");
    $v->isOk($overpay, "float", 1, 40, "Invalid Unallocated Amount.");
    $v->isOk($print_recpt, "string", 0, 10, "Invalid Print Receipt Setting.");
    if ($amt + $overpay <= 0) {
        $v->addError(0, "Invalid Amount Allocated To Receipt.");
    }
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$key] < 0.01) {
                continue;
            }
            if (!isset($stock_setamt[$key]) or strlen($stock_setamt[$key]) < 1) {
                $stock_setamt[$key] = 0;
            }
            $v->isOk($invids[$key], "num", 1, 50, "Invalid Invoice No. [{$key}]");
            $v->isOk($paidamt[$key], "float", 1, 40, "Invalid amount to be paid. [{$key}]");
            $v->isOk($stock_setamt[$key], "float", 1, 40, "Invalid Settlement Discount Amount");
        }
    }
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $_POST['OUT1'] = $out1 + 0;
        $_POST['OUT2'] = $out2 + 0;
        $_POST['OUT3'] = $out3 + 0;
        $_POST['OUT4'] = $out4 + 0;
        $_POST['OUT5'] = $out5 + 0;
        return $confirm . alloc($_POST);
    }
    $blocked_date_from = getCSetting("BLOCKED_FROM");
    $blocked_date_to = getCSetting("BLOCKED_TO");
    if (strtotime($date) >= strtotime($blocked_date_from) and strtotime($date) <= 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>";
    }
    $out += 0;
    $OUT1 = $out1 + 0;
    $OUT2 = $out2 + 0;
    $OUT3 = $out3 + 0;
    $OUT4 = $out4 + 0;
    $OUT5 = $out5 + 0;
    $tot = 0;
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$key] < 0.01) {
                continue;
            }
            $tot += $paidamt[$key];
        }
    }
    if (isset($open_amount)) {
        $tot += array_sum($open_amount);
    }
    $tot = sprint($tot);
    $amt = sprint($amt);
    $out = sprint($out);
    if (sprint($tot + $out + $out1 + $out2 + $out3 + $out4 + $out5 - $amt) > sprint(0)) {
        $_POST['OUT1'] = $OUT1;
        $_POST['OUT2'] = $OUT2;
        $_POST['OUT3'] = $OUT3;
        $_POST['OUT4'] = $OUT4;
        $_POST['OUT5'] = $OUT5;
        return "<li class='err'>The total amount for invoices is greater than the amount received.\n\t\t\tPlease check the details.</li>" . alloc($_POST);
    }
    if (sprint($setamt) > 0) {
        if (array_sum($stock_setamt) != $setamt) {
            return "<li class='err'>The total settlement amount for invoices is not equal to the amount received.\n\t\t\tPlease check the details.</li>" . alloc($_POST);
        }
    }
    if (isset($bout)) {
        $out = $bout;
    }
    if (!isset($overpay)) {
        $overpay = 0;
    }
    $overpay = sprint($overpay);
    #generate a receipt number
    $receiptnumber = divlastid("receipt");
    $confirm = "\n\t\t<h3>New Bank Receipt</h3>\n\t\t<h4>Confirm entry (Please check the details)</h4>\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t<input type='hidden' name='bankid' value='{$bankid}'>\n\t\t\t<input type='hidden' name='date' value='{$date}'>\n\t\t\t<input type='hidden' name='cusid' value='{$cusid}'>\n\t\t\t<input type='hidden' name='descript' value='{$descript}'>\n\t\t\t<input type='hidden' name='reference' value='{$reference}'>\n\t\t\t<input type='hidden' name='cheqnum' value='{$cheqnum}'>\n\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t<input type='hidden' name='out' value='{$out}'>\n\t\t\t<input type='hidden' name='date_day' value='{$date_day}'>\n\t\t\t<input type='hidden' name='date_month' value='{$date_month}'>\n\t\t\t<input type='hidden' name='date_year' value='{$date_year}'>\n\t\t\t<input type='hidden' name='overpay' value='{$overpay}'>\n\t\t\t<input type='hidden' name='OUT1' value='{$OUT1}'>\n\t\t\t<input type='hidden' name='OUT2' value='{$OUT2}'>\n\t\t\t<input type='hidden' name='OUT3' value='{$OUT3}'>\n\t\t\t<input type='hidden' name='OUT4' value='{$OUT4}'>\n\t\t\t<input type='hidden' name='OUT5' value='{$OUT5}'>\n\t\t\t<input type='hidden' name='amt' value='{$amt}'>\n\t\t\t<input type='hidden' name='setamt' value='{$setamt}'>\n\t\t\t<input type='hidden' name='setvat' value='{$setvat}'>\n\t\t\t<input type='hidden' name='setvatcode' value='{$setvatcode}'>\n\t\t\t<input type='hidden' name='print_recpt' value='{$print_recpt}'>\n\t\t<table " . TMPL_tblDflts . ">";
    /* bank account name */
    if ($bankid == "0" or ($bank = qryBankAcct($bankid, "accname, bankname")) === false) {
        $bank['accname'] = "Cash";
        $bank['bankname'] = "";
    }
    /* customer name */
    $cus = qryCustomer($cusid, "accno, cusname, surname");
    if ($setvat == "inc") {
        $showsetvat = "VAT Inclusive";
    } else {
        $showsetvat = "No VAT";
    }
    //	$overpay = sprint ($amt - array_sum($paidamt));
    $overpay = sprint($overpay);
    if ($overpay < 0) {
        $overpay = 0.0;
    }
    if ($print_recpt == "yes") {
        $show_print_recpt = "Yes";
    } else {
        $show_print_recpt = "No";
    }
    $confirm .= "\n\t\t<tr>\n\t\t\t<th>Field</th>\n\t\t\t<th>Value</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Account</td>\n\t\t\t<td>{$bank['accname']} - {$bank['bankname']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Payment Date</td>\n\t\t\t<td valign='center'>{$date}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Received from</td>\n\t\t\t<td valign='center'>{$cus['accno']} - {$cus['cusname']} {$cus['surname']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Description</td>\n\t\t\t<td valign='center'>{$descript}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Reference</td>\n\t\t\t<td valign='center'>{$reference}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Cheque Number</td>\n\t\t\t<td valign='center'>{$cheqnum}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Amount</td>\n\t\t\t<td valign='center'>" . CUR . " {$amt}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Settlement Discount</td>\n\t\t\t<td valign='center'>" . CUR . " {$setamt} {$showsetvat}</td>\n\t\t</tr>\n\t\t" . TBL_BR . "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Print Receipt</td>\n\t\t\t<td>{$show_print_recpt}</td>\n\t\t</tr>\n\t\t" . TBL_BR . "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td colspan='5'><b>A general transaction will credit the client's account with " . CUR . " {$overpay} </b></td>\n\t\t</tr>";
    if (sprint($setamt) > 0) {
        $doset = TRUE;
    } else {
        $doset = FALSE;
    }
    /* OPTION 3 : ALLOCATE TO EACH INVOICE (confirm) */
    if ($all == 2) {
        if ($doset) {
            $showsethead = "<th>Settlement</th>";
        } else {
            $showsethead = "";
        }
        // Layout
        $confirm .= "\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'><h3>Invoices</h3></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Invoice Number</th>\n\t\t\t\t<th>Outstanding amount</th>\n\t\t\t\t<th>Terms</th>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t\t{$showsethead}\n\t\t\t</tr>";
        $i = 0;
        foreach ($invids as $key => $value) {
            if ($paidamt[$key] < 0.01) {
                continue;
            }
            $paidamt[$key] = sprint($paidamt[$key]);
            $ii = $invids[$key];
            if (!isset($itype[$key]) && !isset($ptype[$key])) {
                /* STOCK INVOICE ! */
                db_connect();
                $sql = "SELECT invnum,invid,balance,terms,odate FROM invoices\n\t\t\t\t\t\tWHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'";
                $invRslt = db_exec($sql) or errDie("Unable to access database.");
                if (pg_numrows($invRslt) < 1) {
                    return "<li class='err'> -S- Invalid ord number {$invids[$key]}.</li>";
                }
                $inv = pg_fetch_array($invRslt);
                $invid = $inv['invid'];
                #handle warnings ...
                if ($paidamt[$invid] + $stock_setamt[$invid] < sprint($inv['balance'])) {
                    $warning = "<td><li class='err'>Paying Less Than Total Amount.</li></td>";
                } elseif ($paidamt[$invid] + $stock_setamt[$invid] > sprint($inv['balance'])) {
                    $warning = "<td><li class='err'>Paying More Than Total Amount Outstanding.</li></td>";
                } else {
                    $warning = "";
                }
                if ($doset) {
                    if (!isset($stock_setamt[$invid])) {
                        $stock_setamt[$invid] = "";
                    }
                    $showset = "<td>" . CUR . " " . sprint($stock_setamt[$invid]) . "</td>";
                } else {
                    $showset = "<td></td>";
                }
                $confirm .= "\n\t\t\t\t\t<input type='hidden' name='paidamt[{$key}]' size='7' value='{$paidamt[$invid]}'>\n\t\t\t\t\t<input type='hidden' name='stock_setamt[{$key}]' value='{$stock_setamt[$invid]}'>\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$key}]' value='{$inv['invid']}'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td>{$inv['terms']} days</td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$paidamt[$key]}</td>\n\t\t\t\t\t\t{$showset}\n\t\t\t\t\t\t{$warning}\n\t\t\t\t\t</tr>";
            } else {
                if (!isset($ptype[$key])) {
                    /* NON STOCK INVOICE ! */
                    db_connect();
                    $sql = "SELECT invnum,invid,balance,sdate as odate FROM nons_invoices\n\t\t\t\t\t\tWHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        return "<li class='err'> -N- Invalid ord number {$invids[$key]}.</li>";
                    }
                    $inv = pg_fetch_array($invRslt);
                    $invid = "i" . $inv['invid'];
                    #handle warnings ...
                    if ($paidamt[$invid] + $stock_setamt[$invid] < sprint($inv['balance'])) {
                        $warning = "<td><li class='err'>Paying Less Than Total Amount.</li></td>";
                    } elseif ($paidamt[$invid] + $stock_setamt[$invid] > sprint($inv['balance'])) {
                        $warning = "<td><li class='err'>Paying More Than Total Amount Outstanding.</li></td>";
                    } else {
                        $warning = "";
                    }
                    if ($doset) {
                        if (!isset($stock_setamt[$invid])) {
                            $stock_setamt[$invid] = "";
                        }
                        $showset = "<td>" . CUR . " " . sprint($stock_setamt[$invid]) . "</td>";
                    } else {
                        $showset = "<td></td>";
                    }
                    $confirm .= "\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$key}]' value='{$inv['invid']}'>\n\t\t\t\t\t<input type='hidden' name='paidamt[{$key}]' size='7' value='" . $paidamt[$key] . "'>\n\t\t\t\t\t<input type='hidden' name='stock_setamt[{$key}]' value='{$stock_setamt[$key]}'>\n\t\t\t\t\t<input type='hidden' name='itype[{$key}]' value='PcP'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " " . $paidamt[$key] . "</td>\n\t\t\t\t\t\t{$showset}\n\t\t\t\t\t\t{$warning}\n\t\t\t\t\t</tr>";
                } else {
                    /* POS INVOICE ! */
                    $sqls = array();
                    for ($i = 1; $i <= 12; ++$i) {
                        $sqls[] = "SELECT invnum,invid,balance,odate FROM \"{$i}\".pinvoices WHERE invid = '{$invids[$key]}' AND div = '" . USER_DIV . "'";
                    }
                    $sql = implode(" UNION ", $sqls);
                    // (1jun07) only checks the current prd ??????
                    //				db_conn(PRD_DB);
                    //				$sql = "SELECT invnum,invid,balance,odate FROM pinvoices
                    //						WHERE invid = '$invids[$key]' AND div = '".USER_DIV."'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        return "<li class='err'> -P- Invalid ord number {$invids[$key]}.</li>";
                    }
                    $inv = pg_fetch_array($invRslt);
                    $invid = "p" . $inv['invid'];
                    #handle warnings ...
                    if ($paidamt[$invid] + $stock_setamt[$invid] < sprint($inv['balance'])) {
                        $warning = "<td><li class='err'>Paying Less Than Total Amount.</li></td>";
                    } elseif ($paidamt[$invid] + $stock_setamt[$invid] > sprint($inv['balance'])) {
                        $warning = "<td><li class='err'>Paying More Than Total Amount Outstanding.</li></td>";
                    } else {
                        $warning = "";
                    }
                    if ($doset) {
                        if (!isset($stock_setamt[$invid])) {
                            $stock_setamt[$invid] = "";
                        }
                        $showset = "<td>" . CUR . " " . sprint($stock_setamt[$invid]) . "</td>";
                    } else {
                        $showset = "<td></td>";
                    }
                    $confirm .= "\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$key}]' value='{$inv['invid']}'>\n\t\t\t\t\t<input type='hidden' name='paidamt[{$key}]' size='7' value='" . $paidamt[$key] . "'>\n\t\t\t\t\t<input type='hidden' name='stock_setamt[{$key}]' value='{$stock_setamt[$key]}'>\n\t\t\t\t\t<input type='hidden' name='ptype[{$key}]' value='PcP'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " " . $paidamt[$key] . "</td>\n\t\t\t\t\t\t{$showset}\n\t\t\t\t\t\t{$warning}\n\t\t\t\t\t</tr>";
                }
            }
        }
        if (open()) {
            db_conn('cubit');
            $Sl = "SELECT * FROM open_stmnt WHERE balance>0 AND cusnum='{$cusid}' ORDER BY date";
            $Ri = db_exec($Sl) or errDie("Unable to get open items.");
            //$open_out=$out;
            $ox = "";
            $i = 0;
            while ($od = pg_fetch_array($Ri)) {
                $oid = $od['id'];
                if (!isset($open_amount[$oid]) || $open_amount[$oid] == 0) {
                    continue;
                }
                $ox .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' size='20' name='open[{$oid}]' value='{$oid}'>{$od['type']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$od['balance']}</td>\n\t\t\t\t\t\t<td>{$od['date']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='open_amount[{$oid}]' value='{$open_amount[$oid]}'>" . CUR . " {$open_amount[$oid]}</td>\n\t\t\t\t\t</tr>";
                $i++;
            }
            $confirm .= "\n\t\t\t\t<tr><td colspan='2'><br></td></tr>\n\t\t\t\t<tr><td colspan='2'>\n\t\t\t\t\t<h3>Outstanding Transactions</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Description</th>\n\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>\n\t\t\t\t{$ox}";
        }
    }
    vsprint($out);
    vsprint($out1);
    vsprint($out2);
    vsprint($out3);
    vsprint($out4);
    vsprint($out5);
    /*
    	<tr>
    		<td colspan='5' align='right'><input type='submit' name='batch' value='Add To Batch'></td>
    	</tr>
    */
    $confirm .= "\n\t\t<input type='hidden' name='out1' value='{$out1}'>\n\t\t<input type='hidden' name='out2' value='{$out2}'>\n\t\t<input type='hidden' name='out3' value='{$out3}'>\n\t\t<input type='hidden' name='out4' value='{$out4}'>\n\t\t<input type='hidden' name='out5' value='{$out5}'>\n\t\t" . TBL_BR . "\n\t\t<tr>\n\t\t\t<td><input type='submit' name='back' value='&laquo; Correction'></td>\n\t\t\t<td align='right' colspan='4'><input type='submit' value='Write &raquo'></td>\n\t\t</tr>\n\t\t</table>\n\t\t</form>" . mkQuickLinks(ql("../core/trans-new.php", "Journal Transactions"), ql("../customers-view.php", "View Customers"));
    return $confirm;
}
function confirmEmp($_POST)
{
    $_POST = var_makesafe($_POST);
    extract($_POST);
    //	$hiredate = $month."-".$day."-".$year;
    $hiredate = $year . "-" . $month . "-" . $day;
    $termination_date = $t_month . "-" . $t_day . "-" . $t_year;
    # validate input
    require_lib("validate");
    $v = new validate();
    # Limit field lengths as per database settings
    $v->isOk($empnum, "string", 0, 20, "Invalid empnum.");
    $v->isOk($enum, "string", 0, 20, "Invalid empnum.");
    $v->isOk($sname, "string", 1, 50, "Invalid surname.");
    $v->isOk($fnames, "string", 1, 50, "Invalid first names.");
    $v->isOk($sex, "string", 1, 1, "Invalid sex.");
    $v->isOk($changelogo, "string", 1, 3, "Invalid image selection.");
    $v->isOk($marital, "string", 0, 10, "Invalid marital status.");
    $v->isOk($resident, "string", 1, 5, "Invalid residential status.");
    $v->isOk($hiredate, "date", 1, 10, "{$hiredate} Invalid hire date.");
    $v->isOk($telno, "string", 0, 30, "Invalid telephone no.");
    $v->isOk($email, "email", 0, 50, "Invalid email address.");
    $v->isOk($designation, "string", 0, 100, "Invalid designation.");
    $v->isOk($hpweek, "float", 1, 5, "Invalid hours per week.");
    $v->isOk($saltyp, "string", 1, 2, "Invalid salary type.");
    $v->isOk($novert, "float", 1, 9, "Invalid normal overtime.");
    $v->isOk($hovert, "float", 1, 9, "Invalid holiday overtime.");
    $v->isOk($paytype, "string", 1, 15, "Invalid pay type.");
    $v->isOk($bankname, "string", 0, 50, "Invalid bank name.");
    $v->isOk($bankcode, "string", 0, 8, "Invalid branch code.");
    $v->isOk($bankacctype, "string", 0, 50, "Invalid bank account type.");
    $v->isOk($bankaccno, "num", 0, 50, "Invalid bank account no.");
    $v->isOk($vaclea, "num", 1, 5, "Invalid vacation leave days.");
    $v->isOk($siclea, "num", 1, 5, "Invalid sick leave days.");
    $v->isOk($stdlea, "num", 1, 5, "Invalid study leave days.");
    $v->isOk($res1, "string", 1, 50, "Invalid residential address. (line 1)");
    $v->isOk($res2, "string", 0, 50, "Invalid residential address. (line 2)");
    $v->isOk($res3, "string", 0, 50, "Invalid residential address. (line 3)");
    $v->isOk($res4, "string", 0, 50, "Invalid residential address. (line 4)");
    $v->isOk($pos1, "string", 0, 50, "Invalid postal address. (line 1)");
    $v->isOk($pos2, "string", 0, 50, "Invalid postal address. (line 2)");
    $v->isOk($pcode, "string", 0, 16, "Invalid postal code.");
    $v->isOk($contsname, "string", 0, 50, "Invalid contact surname.");
    $v->isOk($contfnames, "string", 0, 50, "Invalid first names.");
    $v->isOk($contres1, "string", 0, 50, "Invalid contact address. (line 1)");
    $v->isOk($contres2, "string", 0, 50, "Invalid contact address. (line 2)");
    $v->isOk($contres3, "string", 0, 50, "Invalid contact address. (line 3)");
    $v->isOk($conttelno, "string", 0, 30, "Invalid contact telephone no.");
    $v->isOk($idnum . $passportnum, "string", 1, 30, "Invalid id/passport num (VAL).");
    if (!empty($idnum)) {
        $v->isOk($idnum, "string", 6, 30, "Invalid id number.");
    }
    $v->isOk($taxref, "string", 0, 30, "Invalid tax ref no.");
    $v->isOk($department, "string", 0, 50, "Invalid department");
    $v->isOk($occ_cat, "string", 0, 50, "Invalid Occupational Category");
    $v->isOk($occ_level, "string", 0, 50, "Invalid Occupational Level");
    $v->isOk($pos_filled, "string", 0, 50, "Invalid Position Files");
    $v->isOk($temporary, "string", 0, 50, "Invalid Temporary Data");
    $v->isOk($termination_date, "date", 1, 10, "{$termination_date} Invalid termination date.");
    $v->isOk($recruitment_from, "string", 0, 50, "Invalid Recruitment From");
    $v->isOk($employment_reason, "string", 0, 50, "Invalid Employment Reason");
    $v->isOk($union_name, "string", 0, 50, "Invalid Union Name");
    $v->isOk($union_mem_num, "string", 0, 50, "Invalid Union Member Name");
    $v->isOk($union_pos, "string", 0, 50, "Invalid Union Position");
    $v->isOk($race, "string", 0, 50, "Invalid Race");
    $v->isOk($disabled_stat, "string", 0, 50, "Invalid Disabled Status");
    $v->isOk($emp_group, "num", 1, 10, "Invalid Employee Group.");
    $v->isOK($person_nature, "string", 1, 1, "Invalid Nature Of Person Selection.");
    $v->isOK($medical_aid, "num", 1, 4, "Invalid Medical Aid Selected.");
    $v->isOK($medical_aid_number, "string", 0, 25, "Invalid Medical Aid Number.");
    if (strlen($idnum) >= 6) {
        $bd_year = substr($idnum, 0, 2);
        $bd_month = substr($idnum, 2, 2);
        $bd_day = substr($idnum, 4, 2);
        if (!(is_numeric($bd_year) && is_numeric($bd_month) && is_numeric($bd_day) && checkdate($bd_month, $bd_day, $bd_year))) {
            $v->addError("", "Invalid id num (BD).");
        }
    }
    if (isset($allowances)) {
        foreach ($allowances as $key => $value) {
            $v->isOk($allowances[$key], "float", 0, 11, "Invalid allowance amount " . ($key + 1) . ".");
        }
    }
    if (isset($deductid)) {
        foreach ($deductid as $key => $value) {
            $v->isOk($deductid[$key], "num", 1, 9, "Invalid deductions ID.");
        }
    }
    if (isset($deductions)) {
        foreach ($deductions as $key => $value) {
            $v->isOk($deductions[$key], "float", 0, 11, "Invalid deduction amount" . ($key + 1) . ".");
        }
    }
    if (isset($allowid)) {
        foreach ($allowid as $key => $value) {
            $v->isOk($allowid[$key], "num", 1, 9, "Invalid allowance ID.");
        }
    }
    if (isset($allowtax)) {
        foreach ($allowtax as $key => $value) {
            $v->isOk($allowtax[$key], "string", 1, 13, "Invalid allowance tax option" . ($key + 1) . ".");
        }
    }
    # Check date(feb, day, month, year) ( work of a genius, a master piece :-) )
    $hdate = explode("-", $hiredate);
    if (count($hdate) < 3) {
        $v->isOk($hiredate, "date", 1, 1, "Invalid hire date.");
    } else {
        if ($hdate[1] > 29 && $hdate[0] == 2) {
            $v->isOk($hiredate, "date", 1, 1, "Invalid hire date.");
        } elseif ($hdate[1] > 31 || $hdate[0] > 12) {
            $v->isOk($hiredate, "date", 1, 1, "Invalid hire date.");
        }
    }
    # display errors, if any
    if ($v->isError()) {
        $confirmCust = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirmCust .= "<li class='err'>{$e['msg']}</li>";
        }
        return editEmp($confirmCust);
    }
    $fringes = "";
    $fringe_disp = "";
    $fringes_amount = 0;
    if (isset($fringebens)) {
        foreach ($fringebens as $key => $value) {
            $fringes .= "\n\t\t\t\t<input type='hidden' name='fringebens[]' value='{$fringebens[$key]}'>\n\t\t\t\t<input type='hidden' name='fringename[]' value='{$fringename[$key]}'>\n\t\t\t\t<input type='hidden' name='fringeid[]' value='{$fringeid[$key]}'>\n\t\t\t\t<input type='hidden' name='fringetype[]' value='{$fringetype[$key]}'>\n\t\t\t\t<input type='hidden' name='fringeexpacc[]' value='{$fringeexpacc[$key]}'>";
            if ($fringetype[$key] == "Amount") {
                $symbol_cur = CUR;
                $symbol_perc = "";
            } else {
                $symbol_cur = "";
                $symbol_perc = "%";
            }
            if ($fringebens[$key] > 0) {
                $fringe_disp .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$fringename[$key]}</td>\n\t\t\t\t\t\t<td>{$symbol_cur} {$fringebens[$key]} {$symbol_perc}</td>\n\t\t\t\t\t</tr>";
                $fringes_amount += $fringebens[$key];
            }
        }
    }
    $allow = "";
    $all_before = "";
    $all_after = "";
    $all_beforeamount = 0;
    $all_afteramount = 0;
    if (isset($allowtax)) {
        foreach ($allowtax as $key => $perc) {
            $allow .= "\n\t\t\t\t<input type='hidden' name='allowname[]' value='{$allowname[$key]}'>\n\t\t\t\t<input type='hidden' name='allowid[]' value='{$allowid[$key]}'>\n\t\t\t\t<input type='hidden' name='allowances[]' value='{$allowances[$key]}'>\n\t\t\t\t<input type='hidden' name='allowtax[]' value='{$allowtax[$key]}'>\n\t\t\t\t<input type='hidden' name='allowaccid[]' value='{$allowaccid[$key]}'>\n\t\t\t\t<input type='hidden' name='allowtype[]' value='{$allowtype[$key]}'>";
            if ($allowtype[$key] == "Amount") {
                $symbol_cur = CUR;
                $symbol_perc = "";
            } else {
                $symbol_cur = "";
                $symbol_perc = "%";
            }
            if ($perc == "Yes" && $allowances[$key] > 0) {
                $all_before .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$allowname[$key]}</td>\n\t\t\t\t\t\t<td>{$symbol_cur} {$allowances[$key]} {$symbol_perc}</td>\n\t\t\t\t\t</tr>";
                $all_beforeamount = $all_beforeamount + $allowances[$key];
            } elseif ($allowances[$key] > 0) {
                $all_after .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$allowname[$key]}</td>\n\t\t\t\t\t\t<td>{$symbol_cur} {$allowances[$key]} {$symbol_perc}</td>\n\t\t\t\t\t</tr>";
                $all_afteramount = $all_afteramount + $allowances[$key];
            }
        }
    }
    $subsistence = "";
    $i = 0;
    if (isset($subsname)) {
        foreach ($subsname as $sid => $sn) {
            $subsistence .= "\n\t\t\t\t<input type='hidden' name='subsname[{$sid}]' value='{$subsname[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsamt[{$sid}]' value='{$subsamt[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsacc[{$sid}]' value='{$subsacc[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsdays[{$sid}]' value='{$subsdays[$sid]}'>\n\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t<td>{$subsname[$sid]}</td>\n\t\t\t\t\t<td>" . CUR . " {$subsamt[$sid]}</td>\n\t\t\t\t\t<td>{$subsdays[$sid]}</td>\n\t\t\t\t</tr>";
        }
        if (!empty($subsistence)) {
            $subsistence = "\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th colspan='3'>Subsistence Allowances</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Name</th>\n\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t<th>Days</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t{$subsistence}\n\t\t\t\t</table>";
        }
    }
    $deduct = "";
    $de_before = "\n\t\t<table width='100%' " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Name</th>\n\t\t\t\t<th>Employee Contribution</th>\n\t\t\t\t<th>Company Contribution</th>\n\t\t\t</tr>";
    $de_after = "\n\t\t<table width='100%' " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Name</th>\n\t\t\t\t<th>Employee Contribution</th>\n\t\t\t\t<th>Company Contribution</th>\n\t\t\t</tr>";
    $de_beforeamount = 0;
    $de_afteramount = 0;
    if (isset($deducttax)) {
        foreach ($deducttax as $key => $perc) {
            $deduct .= "\n\t\t\t\t<input type='hidden' name='deductname[]' value='{$deductname[$key]}'>\n\t\t\t\t<input type='hidden' name='deductid[]' value='{$deductid[$key]}'>\n\t\t\t\t<input type='hidden' name='deductions[]' value='{$deductions[$key]}'>\n\t\t\t\t<input type='hidden' name='comp_deductions[]' value='{$comp_deductions[$key]}'>\n\t\t\t\t<input type='hidden' name='deducttax[]' value='{$deducttax[$key]}'>\n\t\t\t\t<input type='hidden' name='deducttype[]' value='{$deducttype[$key]}'>\n\t\t\t\t<input type='hidden' name='deductaccid[]' value='{$deductaccid[$key]}'>";
            if ($deducttype[$key] == "Amount") {
                $symbol_cur = CUR;
                $symbol_perc = "";
            } else {
                $symbol_cur = "";
                $symbol_perc = "%";
            }
            vsprint($deductions[$key]);
            vsprint($comp_deductions[$key]);
            if ($perc == "Yes" && $deductions[$key] > 0) {
                $de_before .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$deductname[$key]}</td>\n\t\t\t\t\t\t<td>{$symbol_cur} {$deductions[$key]} {$symbol_perc}</td>\n\t\t\t\t\t\t<td>{$symbol_cur} {$comp_deductions[$key]} {$symbol_perc}</td>\n\t\t\t\t\t</tr>";
                $de_beforeamount = $de_beforeamount + $deductions[$key];
            } else {
                if ($deductions[$key] > 0) {
                    $de_after .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$deductname[$key]}</td>\n\t\t\t\t\t\t<td>{$symbol_cur} {$deductions[$key]} {$symbol_perc}</td>\n\t\t\t\t\t\t<td>{$symbol_cur} {$comp_deductions[$key]} {$symbol_perc}</td>\n\t\t\t\t\t</tr>";
                    $de_afteramount = $de_afteramount + $deductions[$key];
                }
            }
        }
    }
    $de_before .= "</table>";
    $de_after .= "</table>";
    if ($fringes_amount > 0) {
        $fringe_disp = "<tr><th colspan='2'>Fringe Benefits</th></tr>{$fringe_disp}";
    }
    if ($all_beforeamount > 0) {
        $all_before = "<tr><th colspan='2'>Allowances</th></tr>{$all_before}";
    }
    if ($all_afteramount > 0) {
        $all_after = "<tr><th colspan='2'>Allowances</th></tr>{$all_after}";
    }
    if ($de_beforeamount > 0) {
        $de_before = "\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>Deductions Before PAYE</th>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$de_before}</td>\n\t\t\t</tr>";
    } else {
        $de_before = "";
    }
    if ($de_afteramount > 0) {
        $de_after = "\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>Deductions After PAYE</th>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'>{$de_after}</td>\n\t\t\t</tr>";
    } else {
        $de_after = "";
    }
    if ($sex == "M") {
        $sexx = "Male";
    } else {
        $sexx = "Female";
    }
    $salarr = array("m" => "Per Month", "w" => "Per Week", "f" => "Per 2 Weeks", "h" => "Per Hour");
    $saltype = $salarr[$saltyp];
    if ($changelogo == "yes") {
        $img = "<tr class='" . bg_class() . "'><td>Image</td><td><input type='file' size='20' name='logo'></td></tr>";
    } else {
        $img = "";
    }
    db_conn('cubit');
    $sql = "SELECT * FROM costcenters";
    $rslt = db_exec($sql);
    $ctd = "\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Cost Center</th>\n\t\t\t\t<th>Percentage</th>\n\t\t\t</tr>";
    $i = 0;
    while ($data = pg_fetch_array($rslt)) {
        $ctd .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$data['centername']}</td>\n\t\t\t\t<td><input type='hidden' name='ct[{$data['ccid']}]' value='" . $ct[$data['ccid']] . "'>" . $ct[$data['ccid']] . " %</td>\n\t\t\t</tr>";
        $i++;
    }
    $ctd .= "</table>";
    switch ($saltyp) {
        case "m":
            $sal_divisor = 12;
            break;
        case "f":
            $sal_divisor = 26;
            break;
        case "w":
            $sal_divisor = 52;
            break;
        case "h":
            $sal_divisor = 52 * $hpweek;
            break;
    }
    $basic_sal = sprint($basic_sal_annum / $sal_divisor);
    #get occ cats
    $get_cats = "SELECT * FROM occ_cat WHERE id = '{$occ_cat}' LIMIT 1";
    $run_cats = db_exec($get_cats) or errDie("Unable to get occupational categories.");
    if (pg_numrows($run_cats) < 1) {
        $showocc_cat = "Unknown";
    } else {
        $carr = pg_fetch_array($run_cats);
        $showocc_cat = $carr['cat'];
    }
    #get occ category
    $getocc_level = "SELECT * FROM occ_level WHERE id = '{$occ_level}' LIMIT 1";
    $run_level = db_exec($getocc_level) or errDie("Unable to get occupational levels.");
    if (pg_numrows($run_level) < 1) {
        $showocc_level = "Unknown";
    } else {
        $larr = pg_fetch_array($run_level);
        $showocc_level = $larr['level'];
    }
    $get_dep = "SELECT * FROM departments WHERE id = '{$department}' LIMIT 1";
    $run_dep = db_exec($get_dep) or errDie("Unable to get departments information.");
    if (pg_numrows($run_dep) < 1) {
        $showdepartment = "Unknown";
    } else {
        $darr = pg_fetch_array($run_dep);
        $showdepartment = $darr['department'];
    }
    $get_pos = "SELECT * FROM pos_filled WHERE id = '{$pos_filled}' LIMIT 1";
    $run_pos = db_exec($get_pos) or errDie("Unable to get position filled information.");
    if (pg_numrows($run_pos) < 1) {
        $showpos_filled = "Unknown";
    } else {
        $parr = pg_fetch_array($run_pos);
        $showpos_filled = $parr['method'];
    }
    $get_union = "SELECT * FROM unions WHERE id = '{$union_name}' LIMIT 1";
    $run_union = db_exec($get_union) or errDie("Unable to get unions information.");
    if (pg_numrows($run_pos) < 1) {
        $showunion = "Unknown";
    } else {
        $uarr = pg_fetch_array($run_union);
        $showunion = $uarr['union_name'];
    }
    $get_egroup = "SELECT * FROM emp_groups WHERE id = '{$emp_group}' LIMIT 1";
    $run_egroup = db_exec($get_egroup) or errDie("Unable to get employee group information.");
    if (pg_numrows($run_egroup) < 1) {
        $show_emp_group = "";
    } else {
        $earr = pg_fetch_array($run_egroup);
        $show_emp_group = "";
    }
    $natures = array("A" => "Individual with an identity- or password number", "B" => "Individual without an identity- or passport number", "C" => "Director of a private company / member of a close corporation", "D" => "Trust", "E" => "Company / cc", "F" => "Partnership", "G" => "Corporation", "H" => "Employment company / personal service company or cc", "K" => "Employment trust / personal service trust", "M" => "Foreign service income (may only be used with foreign income codes)");
    $medical_aid += 0;
    $get_med = "SELECT medical_aid_name FROM medical_aid WHERE id = '{$medical_aid}' LIMIT 1";
    $run_med = db_exec($get_med) or errDie("Unable to get medical aid information.");
    if (pg_numrows($run_med) > 0) {
        $show_medical_aid = pg_fetch_result($run_med, 0, 0);
    } else {
        $show_medical_aid = "None";
    }
    $confirmEmp = "\n\t\t<h3>Edit Employee Information</h3>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t<form ENCTYPE='multipart/form-data' action='" . SELF . "' method='POST' name='form1'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t{$fringes}\n\t\t\t{$allow}\n\t\t\t{$deduct}\n\t\t\t<input type='hidden' name='month' value='{$month}' />\n\t\t\t<input type='hidden' name='day' value='{$day}' />\n\t\t\t<input type='hidden' name='year' value='{$year}' />\n\t\t\t<input type='hidden' name='empnum' value='{$empnum}' />\n\t\t\t<input type='hidden' name='sname' value='{$sname}' />\n\t\t\t<input type='hidden' name='designation' value='{$designation}' />\n\t\t\t<input type='hidden' name='fnames' value='{$fnames}' />\n\t\t\t<input type='hidden' name='sex' value='{$sex}' />\n\t\t\t<input type='hidden' name='marital' value='{$marital}' />\n\t\t\t<input type='hidden' name='resident' value='{$resident}' />\n\t\t\t<input type='hidden' name='hiredate' value='{$hiredate}' />\n\t\t\t<input type='hidden' name='telno' value='{$telno}' />\n\t\t\t<input type='hidden' name='email' value='{$email}' />\n\t\t\t<input type='hidden' name='hpweek' value='{$hpweek}' />\n\t\t\t<input type='hidden' name='novert' value='{$novert}' />\n\t\t\t<input type='hidden' name='hovert' value='{$hovert}' />\n\t\t\t<input type='hidden' name='bankname' value='{$bankname}' />\n\t\t\t<input type='hidden' name='bankcode' value='{$bankcode}' />\n\t\t\t<input type='hidden' name='bankacctype' value='{$bankacctype}' />\n\t\t\t<input type='hidden' name='bankaccno' value='{$bankaccno}' />\n\t\t\t<input type='hidden' name='vaclea' value='{$vaclea}' />\n\t\t\t<input type='hidden' name='siclea' value='{$siclea}' />\n\t\t\t<input type='hidden' name='stdlea' value='{$stdlea}' />\n\t\t\t<input type='hidden' name='res1' value='{$res1}' />\n\t\t\t<input type='hidden' name='res2' value='{$res2}' />\n\t\t\t<input type='hidden' name='res3' value='{$res3}' />\n\t\t\t<input type='hidden' name='res4' value='{$res4}' />\n\t\t\t<input type='hidden' name='pos1' value='{$pos1}' />\n\t\t\t<input type='hidden' name='pos2' value='{$pos2}' />\n\t\t\t<input type='hidden' name='pcode' value='{$pcode}' />\n\t\t\t<input type='hidden' name='contsname' value='{$contsname}' />\n\t\t\t<input type='hidden' name='contfnames' value='{$contfnames}' />\n\t\t\t<input type='hidden' name='contres1' value='{$contres1}' />\n\t\t\t<input type='hidden' name='contres2' value='{$contres2}' />\n\t\t\t<input type='hidden' name='contres3' value='{$contres3}' />\n\t\t\t<input type='hidden' name='contres4' value='' />\n\t\t\t<input type='hidden' name='conttelno' value='{$conttelno}' />\n\t\t\t<input type='hidden' name='idnum' value='{$idnum}' />\n\t\t\t<input type='hidden' name='passportnum' value='{$passportnum}' />\n\t\t\t<input type='hidden' name='changelogo' value='{$changelogo}' />\n\t\t\t<input type='hidden' name='taxref' value='{$taxref}' />\n\t\t\t<input type='hidden' name='basic_sal' value='{$basic_sal}' />\n\t\t\t<input type='hidden' name='saltyp' value='{$saltyp}' />\n\t\t\t<input type='hidden' name='basic_sal_annum' value='{$basic_sal_annum}' />\n\t\t\t<input type='hidden' name='sal_bonus' value='{$sal_bonus}' />\n\t\t\t<input type='hidden' name='all_travel' value='{$all_travel}' />\n\t\t\t<input type='hidden' name='comp_uif' value='{$comp_uif}' />\n\t\t\t<input type='hidden' name='comp_other' value='{$comp_other}' />\n\t\t\t<input type='hidden' name='comp_provident' value='{$comp_provident}' />\n\t\t\t<input type='hidden' name='comp_medical' value='{$comp_medical}' />\n\t\t\t<input type='hidden' name='comp_ret' value='{$comp_ret}' />\n\t\t\t<input type='hidden' name='comp_pension' value='{$comp_pension}' />\n\t\t\t<input type='hidden' name='emp_uif' value='{$emp_uif}' />\n\t\t\t<input type='hidden' name='emp_other' value='{$emp_other}' />\n\t\t\t<input type='hidden' name='emp_provident' value='{$emp_provident}' />\n\t\t\t<input type='hidden' name='emp_medical' value='{$emp_medical}' />\n\t\t\t<input type='hidden' name='emp_meddeps' value='{$emp_meddeps}' />\n\t\t\t<input type='hidden' name='emp_ret' value='{$emp_ret}' />\n\t\t\t<input type='hidden' name='emp_pension' value='{$emp_pension}' />\n\t\t\t<input type='hidden' name='comp_sdl' value='{$comp_sdl}' />\n\t\t\t<input type='hidden' name='sal_bonus_month' value='{$sal_bonus_month}' />\n\t\t\t<input type='hidden' name='fringe_car1' value='{$fringe_car1}' />\n\t\t\t<input type='hidden' name='fringe_car1_contrib' value='{$fringe_car1_contrib}'>\n\t\t\t<input type='hidden' name='fringe_car1_fuel' value='{$fringe_car1_fuel}'>\n\t\t\t<input type='hidden' name='fringe_car1_service' value='{$fringe_car1_service}' />\n\t\t\t<input type='hidden' name='fringe_car2' value='{$fringe_car2}' />\n\t\t\t<input type='hidden' name='fringe_car2_contrib' value='{$fringe_car2_contrib}' />\n\t\t\t<input type='hidden' name='fringe_car2_fuel' value='{$fringe_car2_fuel}' />\n\t\t\t<input type='hidden' name='fringe_car2_service' value='{$fringe_car2_service}' />\n\t\t\t<input type='hidden' name='emp_usescales' value='{$emp_usescales}' />\n\t\t\t<input type='hidden' name='enum' value='{$enum}' />\n\t\t\t<input type='hidden' name='department' value='{$department}' />\n\t\t\t<input type='hidden' name='occ_cat' value='{$occ_cat}' />\n\t\t\t<input type='hidden' name='occ_level' value='{$occ_level}' />\n\t\t\t<input type='hidden' name='pos_filled' value='{$pos_filled}' />\n\t\t\t<input type='hidden' name='temporary' value='{$temporary}' />\n\t\t\t<input type='hidden' name='termination_date' value='{$termination_date}' />\n\t\t\t<input type='hidden' name='recruitment_from' value='{$recruitment_from}' />\n\t\t\t<input type='hidden' name='employment_reason' value='{$employment_reason}' />\n\t\t\t<input type='hidden' name='union_name' value='{$union_name}' />\n\t\t\t<input type='hidden' name='union_mem_num' value='{$union_mem_num}' />\n\t\t\t<input type='hidden' name='union_pos' value='{$union_pos}' />\n\t\t\t<input type='hidden' name='race' value='{$race}' />\n\t\t\t<input type='hidden' name='disabled_stat' value='{$disabled_stat}' />\n\t\t\t<input type='hidden' name='prevemp_remun' value='{$prevemp_remun}' />\n\t\t\t<input type='hidden' name='prevemp_tax' value='{$prevemp_tax}' />\n\t\t\t<input type='hidden' name='payprd' value='{$payprd}' />\n\t\t\t<input type='hidden' name='payprd_day' value='{$payprd_day}' />\n\t\t\t<input type='hidden' name='paytype' value='{$paytype}' />\n\t\t\t<input type='hidden' name='emp_group' value='{$emp_group}' />\n\t\t\t<input type='hidden' name='person_nature' value='{$person_nature}' />\n\t\t\t<input type='hidden' name='medical_aid' value='{$medical_aid}' />\n\t\t\t<input type='hidden' name='medical_aid_number' value='{$medical_aid_number}' />\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'><input type='submit' value='Write &raquo;'></td>\n\t\t\t</tr>\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'>Employee 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>Emp Num</td>\n\t\t\t\t\t\t\t<td>{$enum}</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>Surname</td>\n\t\t\t\t\t\t\t<td valign='center'>{$sname}</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>First Names</td>\n\t\t\t\t\t\t\t<td valign='center'>{$fnames}</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>Sex</td>\n\t\t\t\t\t\t\t<td valign='center'>{$sexx}</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>Race</td>\n\t\t\t\t\t\t\t<td>{$race}</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>Disabled Status</td>\n\t\t\t\t\t\t\t<td>{$disabled_stat}</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>Marital Status</td>\n\t\t\t\t\t\t\t<td valign='center'>{$marital}</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>Resident</td>\n\t\t\t\t\t\t\t<td valign='center'>{$resident}</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>Employee Group</td>\n\t\t\t\t\t\t\t<td>{$show_emp_group}</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>Hire Date</td>\n\t\t\t\t\t\t\t<td valign='center'>{$hiredate}</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>Telephone No</td>\n\t\t\t\t\t\t\t<td valign='center'>{$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>Email</td>\n\t\t\t\t\t\t\t<td valign='center'>{$email}</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>Remuneration</td>\n\t\t\t\t\t\t\t<td valign='center'>R {$basic_sal} {$saltype}</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>Hours Per Week</td>\n\t\t\t\t\t\t\t<td valign='top'>{$hpweek}&nbsp;&nbsp;Hours</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 rowspan='2'>Overtime rate</td>\n\t\t\t\t\t\t\t<td valign='top'>x {$novert}&nbsp;&nbsp;Normal</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<!--         rowspan         -->\n\t\t\t\t\t\t\t<td valign='top'>x {$hovert}&nbsp;&nbsp;Public holidays</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>Pay Period</td>\n\t\t\t\t\t\t\t<td valign='top'>{$payprd_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>Pay Type</td>\n\t\t\t\t\t\t\t<td valign='center'>{$paytype}</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>Bank Name</td>\n\t\t\t\t\t\t\t<td valign='center'>{$bankname}</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>Branch Code</td>\n\t\t\t\t\t\t\t<td valign='center'>{$bankcode}</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>Bank Account Type</td>\n\t\t\t\t\t\t\t<td valign='center'>{$bankacctype}</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>Bank Account No</td>\n\t\t\t\t\t\t\t<td valign='center'>{$bankaccno}</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>UIF: Employee Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>{$emp_uif} %</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>UIF: Company Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>{$comp_uif} %</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>Retirement Annuity: Employee Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " " . money($emp_ret) . "</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>Retirement Annuity: Company Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " " . money($comp_ret) . "</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>Pension: Employee Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . money($emp_pension) . " %</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>Pension: Company Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . money($comp_pension) . " %</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>Medical Contribution: Employee</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " " . money($emp_medical) . "</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>Medical Contribution: Employee Beneficiaries</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " " . money($emp_meddeps) . "</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>Medical Contribution: Company</td>\n\t\t\t\t\t\t\t<td valign='center'>" . CUR . " " . money($comp_medical) . "</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>Provident Fund: Employee Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . money($emp_provident) . " %</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>Provident Fund: Company Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . money($comp_provident) . " %</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>Other: Employee Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . money($emp_other) . " %</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>Other: Company Contribution</td>\n\t\t\t\t\t\t\t<td valign='center'>" . money($comp_other) . " %</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='2'>Employee 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>Medical Aid</td>\n\t\t\t\t\t\t\t<td>{$show_medical_aid}</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>Medical Aid Number</td>\n\t\t\t\t\t\t\t<td>{$medical_aid_number}</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>Nature of Person</td>\n\t\t\t\t\t\t\t<td>{$natures[$person_nature]}</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>Designation (Job Title)</td>\n\t\t\t\t\t\t\t<td>{$designation}</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>{$showdepartment}</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>Occupational Category</td>\n\t\t\t\t\t\t\t<td>{$showocc_cat}</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>Occupational Level</td>\n\t\t\t\t\t\t\t<td>{$showocc_level}</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>This Position Filled</td>\n\t\t\t\t\t\t\t<td>{$showpos_filled}</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>Temporary (Employee or Contract)</td>\n\t\t\t\t\t\t\t<td>{$temporary}</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>If Temporary: Termination Date</td>\n\t\t\t\t\t\t\t<td>{$termination_date}</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>Recruitment From</td>\n\t\t\t\t\t\t\t<td>{$recruitment_from}</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>Reason for Employment</td>\n\t\t\t\t\t\t\t<td>{$employment_reason}</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>Union Name</td>\n\t\t\t\t\t\t\t<td>{$showunion}</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>Union Membership Number</td>\n\t\t\t\t\t\t\t<td>{$union_mem_num}</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>Union Position</td>\n\t\t\t\t\t\t\t<td>{$union_pos}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$img}\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>ID Num</td>\n\t\t\t\t\t\t\t<td>{$idnum}</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>Passport Num</td>\n\t\t\t\t\t\t\t<td>{$passportnum}</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>Income Tax Ref No.</td>\n\t\t\t\t\t\t\t<td>{$taxref}</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>Vacation Leave</td>\n\t\t\t\t\t\t\t<td valign='top'>{$vaclea} 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>Sick Leave</td>\n\t\t\t\t\t\t\t<td valign='top'>{$siclea} 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>Study Leave</td>\n\t\t\t\t\t\t\t<td valign='top'>{$stdlea} 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>Residential Address</td>\n\t\t\t\t\t\t\t<td valign='center'>{$res1}</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><br></td>\n\t\t\t\t\t\t\t<td valign='center'>{$res2}</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><br></td>\n\t\t\t\t\t\t\t<td valign='center'>{$res3}</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><br></td>\n\t\t\t\t\t\t\t<td valign='center'>{$res4}</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>Postal Address</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pos1}</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><br></td>\n\t\t\t\t\t\t\t<td valign='center'>{$pos2}</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>Postal Code</td>\n\t\t\t\t\t\t\t<td valign='center'>{$pcode}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr><th colspan=2>Friend Not Living With Employee</th></tr>\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td>Surname</td>\n\t\t\t\t\t\t\t<td valign='center'>{$contsname}</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>First Names</td>\n\t\t\t\t\t\t\t<td valign='center'>{$contfnames}</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>Residential Address</td>\n\t\t\t\t\t\t\t<td valign='center'>{$contres1}</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><br></td>\n\t\t\t\t\t\t\t<td valign='center'>{$contres2}</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><br></td>\n\t\t\t\t\t\t\t<td valign='center'>{$contres3}</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>Telephone No</td>\n\t\t\t\t\t\t\t<td valign='center'>{$conttelno}</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><input type='submit' name='back' value='&laquo; Correction'></td>\n\t\t\t\t\t\t\t<td align='right'><input type='submit' value='Write &raquo;'></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{$fringe_disp}\n\t\t\t{$all_before}\n\t\t\t{$all_after}\n\t\t\t{$subsistence}\n\t\t\t{$de_before}\n\t\t\t{$de_after}\n\t        </table>\n\t\t{$ctd}\n\t\t</form>" . mkQuickLinks(ql("../admin-employee-add.php", "Add Employee"));
    return $confirmEmp;
}
function confirm($_POST)
{
    $showvat = TRUE;
    # get vars
    extract($_POST);
    $pcash += 0;
    $pcheque += 0;
    $pcc += 0;
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    $v->isOk($prd, "num", 1, 20, "Invalid period number.");
    $v->isOk($comm, "string", 0, 255, "Invalid Comments.");
    $v->isOk($terms, "num", 1, 20, "Invalid terms.");
    $v->isOk($o_day, "num", 1, 2, "Invalid Invoice Date day.");
    $v->isOk($o_month, "num", 1, 2, "Invalid Invoice Date month.");
    $v->isOk($o_year, "num", 1, 5, "Invalid Invoice Date year.");
    $odate = $o_day . "-" . $o_month . "-" . $o_year;
    if (!checkdate($o_month, $o_day, $o_year)) {
        $v->isOk($odate, "num", 1, 1, "Invalid Invoice Date.");
    }
    $v->isOk($traddisc, "float", 0, 20, "Invalid Trade Discount.");
    $v->isOk($delchrg, "float", 0, 20, "Invalid Delivery Charge.");
    if ($delchrg > $dct) {
        $v->isOk($delchrg, "float", 0, 0, "Error : Delivery Charge amount must not be more than the amount in the Invoice.");
    }
    # Used to generate errors
    $error = "asa@";
    # Check quantities
    if (isset($qtys)) {
        foreach ($qtys as $keys => $qty) {
            if ($qtys[$keys] > $qts[$keys]) {
                $v->isOk($qty, "float", 0, 0, "The Returned Quantity cannot be more than the quantity sold.");
            }
            $v->isOk($qty, "float", 1, 15, "Invalid Returned Quantity.");
            $v->isOk($disc[$keys], "float", 0, 20, "Invalid Discount.");
            $v->isOk($vatcode[$keys], "float", 0, 20, "Invalid vat code.");
            $v->isOk($discp[$keys], "float", 0, 20, "Invalid Discount Percentage.");
        }
    } else {
        $v->isOk($error, "num", 0, 1, "Invalid Returned Quantity.");
    }
    # check stkids
    if (isset($stkids)) {
        foreach ($stkids as $keys => $stkid) {
            $stkid += 0;
            $v->isOk($stkid, "num", 1, 10, "Invalid Stock number, please enter all details.");
        }
    } else {
        $v->isOk($error, "num", 0, 1, "Invalid Stock number, please enter all details.");
    }
    # 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 error($_POST, $err);
    }
    # Get invoice info
    db_conn($prd);
    $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 "<i class='err'>Not Found</i>";
    }
    $inv = pg_fetch_array($invRslt);
    # Keep the charge vat option stable
    if ($inv['chrgvat'] == "inc") {
        $vchrgvat = "Yes";
    } elseif ($inv['chrgvat'] == "exc") {
        $vchrgvat = "No";
    } else {
        $vchrgvat = "Non VAT";
    }
    /* --- Start Products Display --- */
    $vatamount = 0;
    # Products layout
    $products = "\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>WAREHOUSE</th>\n\t\t\t\t\t\t\t<th>ITEM NUMBER</th>\n\t\t\t\t\t\t\t<th>DESCRIPTION</th>\n\t\t\t\t\t\t\t<TH>SERIAL NO.</TH>\n\t\t\t\t\t\t\t<th>QTY RETURNED</th>\n\t\t\t\t\t\t\t<th>UNIT PRICE</th>\n\t\t\t\t\t\t\t<th>UNIT DISCOUNT</th>\n\t\t\t\t\t\t\t<th>AMOUNT</th>\n\t\t\t\t\t\t<tr>";
    $c = 0;
    $taxex = 0;
    foreach ($qtys as $keys => $value) {
        if ($qtys[$keys] > 0) {
            if ($stkids[$keys] != 0) {
                //if($stkids[$keys]
                db_connect();
                # 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);
                # get selected stock in this invoice
                db_conn($prd);
                $sql = "SELECT * FROM pinv_items WHERE id = '{$sids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'";
                $stkdRslt = db_exec($sql);
                $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);
                # Calculate the Discount discount
                if ($disc[$keys] < 1) {
                    if ($discp[$keys] > 0) {
                        $disc[$keys] = $discp[$keys] / 100 * $stkd['unitcost'];
                    }
                } else {
                    $discp[$keys] = $disc[$keys] * 100 / $stkd['unitcost'];
                }
                # Calculate amount
                $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]);
                db_connect();
                $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 (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
                    $showvat = FALSE;
                }
                //			# Check Tax Excempt
                //			if($stk['exvat'] == 'yes'||$vd['zero']=="Yes"){
                //				$taxex += $amt[$keys];
                //			}
                if ($vd['zero'] == "Yes") {
                    $excluding = "y";
                } else {
                    $excluding = "";
                }
                $vr = vatcalc($amt[$keys], $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']);
                $vrs = explode("|", $vr);
                $ivat = $vrs[0];
                $iamount = $vrs[1];
                $vatamount += $ivat;
                if (!isset($sers[$stk['stkid']][$keys])) {
                    $sers[$stk['stkid']][$keys] = "";
                }
                $serial = $sers[$stk['stkid']][$keys];
                if (!isset($sers[$stk['stkid']][$keys])) {
                    print "error";
                }
                # Put in product
                $products .= "\n\t\t\t\t<input type='hidden' name='sids[]' value='{$stkd['id']}'>\n\t\t\t\t<input type='hidden' name='vatcode[]' value='{$stkd['vatcode']}' />\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><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t<td><input type='hidden' name='sers[{$stkd['stkid']}][]' value='{$serial}'>{$serial}</td>\n\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t\t<td><input type='hidden' size='4' name='disc[]' value='{$disc[$keys]}'>{$disc[$keys]} OR <input type='hidden' size='4' name='discp[]' value='{$discp[$keys]}' maxlength='5'>" . sprint($discp[$keys], 2) . "%</td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " " . sprint($amt[$keys]) . "</td>\n\t\t\t\t</tr>";
                $c++;
            } else {
                //if($stkids[$keys]
                # get selected stock in this invoice
                $stkids[$keys] += 0;
                db_conn($prd);
                $sql = "SELECT * FROM pinv_items  WHERE id = '{$sids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'";
                $stkdRslt = db_exec($sql);
                $stkd = pg_fetch_array($stkdRslt);
                # Calculate the Discount discount
                if ($disc[$keys] < 1) {
                    if ($discp[$keys] > 0) {
                        $disc[$keys] = $discp[$keys] / 100 * $stkd['unitcost'];
                    }
                } else {
                    $discp[$keys] = $disc[$keys] * 100 / $stkd['unitcost'];
                }
                # Calculate amount
                $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]);
                db_connect();
                $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 ($vd['zero'] == "Yes") {
                    $excluding = "y";
                } else {
                    $excluding = "";
                }
                $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];
                //			}
                //if(!(isset($sers[$stk['stkid']][$keys]))) { $sers[$stk['stkid']][$keys]="";}
                //$serial = $sers[$stk['stkid']][$keys];
                //if(!(isset($sers[$stk['stkid']][$keys]))) { print "error";}
                $serial = "";
                $amt[$keys] = sprint($amt[$keys]);
                # Put in product
                $products .= "\n\t\t\t\t<input type='hidden' name='sids[]' value='{$stkd['id']}'>\n\t\t\t\t<input type='hidden' name='vatcode[]' value='{$stkd['vatcode']}' />\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td><input type='hidden' name='stkids[]' value='0'></td>\n\t\t\t\t\t<td>{$stkd['description']}</td>\n\t\t\t\t\t<td><input type='hidden' name=sers[{$stkd['stkid']}][] value='{$serial}'>{$serial}</td>\n\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>{$qtys[$keys]}</td>\n\t\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t\t<td><input type='hidden' size='4' name='disc[]' value='{$disc[$keys]}'>{$disc[$keys]} OR <input type='hidden' size='4' name=discp[] value='{$discp[$keys]}' maxlength='5'>{$discp[$keys]}%</td>\n\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t\t</tr>";
                $c++;
            }
        }
    }
    $products .= "</table>";
    if ($c < 1) {
        $err = "<li class=err>Please enter quantity.</li>";
        return error($_POST, $err);
    }
    /* calculate delivery charge vat */
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'";
    $Ri = db_exec($Sl);
    $vd = pg_fetch_array($Ri);
    $vr = vatcalc($delchrg, $inv['chrgvat'], $vd['zero'] == "Yes" ? "y" : "", $inv['traddisc'], $vd['vat_amount']);
    $vrs = explode("|", $vr);
    $ivat = $vrs[0];
    $vatamount += $ivat;
    $chrgvat = $inv['chrgvat'];
    /* --- ----------- Clac --------------------- */
    ##----------------------NEW----------------------
    $sub = 0.0;
    if (isset($amt)) {
        $sub = sprint(array_sum($amt));
    }
    $VATP = TAX_VAT;
    if ($chrgvat == "exc") {
        $taxex = sprint($taxex - $taxex * $traddisc / 100);
        $subtotal = sprint($sub + $delchrg);
        $traddiscmt = sprint($subtotal * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        //$VAT=sprint(($subtotal-$taxex)*$VATP/100);
        $VAT = sprint($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);
        $traddiscmt = sprint($subtotal * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        //$VAT=sprint(($subtotal-$taxex)*$VATP/(100+$VATP));
        $VAT = sprint($vatamount);
        $SUBTOT = sprint($sub);
        $TOTAL = sprint($subtotal);
        $delexvat = sprint($delchrg);
        $traddiscmt = sprint($traddiscmt);
    } else {
        $subtotal = sprint($sub + $delchrg);
        $traddiscmt = sprint($subtotal * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        $VAT = sprint(0);
        $SUBTOT = $sub;
        $TOTAL = $subtotal;
        $delexvat = sprint($delchrg);
    }
    /* --- ----------- Clac --------------------- */
    ##----------------------END----------------------
    db_conn('cubit');
    $Sl = "SELECT * FROM posround";
    $Ri = db_exec($Sl);
    $data = pg_fetch_array($Ri);
    $pcash = sprint($pcash);
    $pcheque = sprint($pcheque);
    $pcc = sprint($pcc);
    $pcredit = sprint($pcredit);
    if ($data['setting'] == "5cent") {
        if (sprint(floor(sprint($TOTAL / 0.05))) != sprint($TOTAL / 0.05)) {
            $otot = $TOTAL;
            $nTOTAL = sprint(sprint(floor($TOTAL / 0.05)) * 0.05);
            $rounding = sprint($otot - $nTOTAL);
            $ptot = $inv['total'];
            $pnTOTAL = sprint(sprint(floor($inv['total'] / 0.05)) * 0.05);
            $prounding = sprint($ptot - $pnTOTAL);
            if ($prounding > 0) {
                $nTOTAL = $TOTAL;
                $rounding = $prounding;
            }
        } else {
            $rounding = 0;
        }
    } else {
        $rounding = 0;
    }
    vsprint($pcash);
    vsprint($pcheque);
    vsprint($pcc);
    vsprint($pcredit);
    if (sprint($pcash + $pcheque + $pcc + $pcredit) != sprint($TOTAL - $rounding)) {
        return error($_POST, "<li class=err>The payments are not equal to the Grand Total</li>");
    }
    if ($rounding > 0) {
        $due = sprint($TOTAL - $rounding);
        $rd = "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Rounding</td>\n\t\t\t\t\t<td align='right'>R {$rounding}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t<td align='right'>R {$due}</td>\n\t\t\t\t</tr>";
    } else {
        $rd = "";
    }
    //<tr class='".bg_class()."'><td>Customer</td><td valign='center'>$inv[cusname] $inv[surname]</td></tr>
    if ($inv['cusnum'] == 0) {
        if (!isset($client)) {
            $client = "{$inv['cusname']} {$inv['surname']}";
        }
        $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>";
    } else {
        db_conn('cubit');
        $Sl = "SELECT * FROM customers WHERE cusnum='{$inv['cusnum']}'";
        $Ri = db_exec($Sl) or errDie("Unable to get cus data.");
        $cust = pg_fetch_array($Ri);
        $cd = "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td valign='center'>Customer Name</td>\n\t\t\t\t<td valign='center'>{$cust['surname']}</td>\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>";
    }
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    $pcash = sprint($pcash);
    $pcheque = sprint($pcheque);
    $pcc = sprint($pcc);
    $pcredit = sprint($pcredit);
    /* -- Final Layout -- */
    $details = "\n\t\t\t\t\t<center>\n\t\t\t\t\t<h3>Credit Note</h3>\n\t\t\t\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t\t\t\t<input type='hidden' name='invid' value='{$invid}'>\n\t\t\t\t\t\t<input type='hidden' name='prd' value='{$prd}'>\n\t\t\t\t\t\t<input type='hidden' name='rounding'  value='{$rounding}'>\n\t\t\t\t\t\t<input type='hidden' name='o_day' value='{$o_day}'>\n\t\t\t\t\t\t<input type='hidden' name='o_month' value='{$o_month}'>\n\t\t\t\t\t\t<input type='hidden' name='o_year' value='{$o_year}'>\n\t\t\t\t\t<table " . TMPL_tblDflts . " 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 " . TMPL_tblDflts . ">\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'> Customer Details </th>\n\t\t\t\t\t\t\t\t\t</tr>\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>Department</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['deptname']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t{$cd}\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' valign='top'>Comments</th>\n\t\t\t\t\t\t\t\t\t</tr>\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 colspan='2' align='center'><input type='hidden' name='comm' value='{$comm}'>" . nl2br($comm) . "</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' align='right'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\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'> Invoice Details </th>\n\t\t\t\t\t\t\t\t\t</tr>\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>Order No.</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['ordno']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>VAT Inclusive</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$vchrgvat}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Terms</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'><input type='hidden' size='7' name='terms' value='{$terms}'>{$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 class='" . bg_class() . "'>\n\t\t\t\t\t\t\t\t\t\t<td>Sales Person</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['salespn']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Invoice Date</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'><input type='hidden' name='odate' value='{$odate}'>{$odate}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Trade Discount</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'><input type='hidden' size='7' name='traddisc' value='{$traddisc}'>{$traddisc}%</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Delivery Charge</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'><input type='hidden' size='7' name='delchrg' value='{$delchrg}'>{$delchrg}</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 colspan='2'>Payment Details </th>\n\t\t\t\t\t\t\t\t\t</tr>\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>Amount Paid Cash</td>\n\t\t\t\t\t\t\t\t\t\t<td><input type='hidden' name='pcash' value='{$pcash}'>{$pcash}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Amount Paid Cheque</td>\n\t\t\t\t\t\t\t\t\t\t<td><input type='hidden' name='pcheque' value='{$pcheque}'>{$pcheque}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Amount Paid Credit Card</td>\n\t\t\t\t\t\t\t\t\t\t<td><input type='hidden' name='pcc' value='{$pcc}'>{$pcc}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Amount Paid Credit</td>\n\t\t\t\t\t\t\t\t\t\t<td><input type='hidden' name='pcredit' value='{$pcredit}'>{$pcredit}</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='2'>{$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>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th>Quick Links</th>\n\t\t\t\t\t\t\t\t\t</tr>\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><a href='pos-invoice-new.php'>New POS Invoice</a></td>\n\t\t\t\t\t\t\t\t\t</tr>\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><a href='pos-invoice-list.php'>View POS Invoices</a></td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\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 align='right'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\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>SUBTOTAL</td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'><input type='hidden' name='SUBTOT' value='{$SUBTOT}'>" . CUR . " {$SUBTOT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Trade Discount</td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$traddiscmt}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Delivery Charge</td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$delexvat}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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><b>VAT {$vat14}</b></td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$VAT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t\t\t\t<td align='right'>" . CUR . " {$TOTAL}</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t{$rd}\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></td></tr>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td align='right'><input type='button' value='&laquo Back' onClick='javascript:history.back()'></td>\n\t\t\t\t\t\t\t<td><input type='submit' value='Write'></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>";
    return $details;
}
Ejemplo n.º 6
0
function genslip($empnum, $fromdate, $todate)
{
    $Sl = "SELECT * FROM employees WHERE empnum='{$empnum}'";
    $Ry = db_exec($Sl) or errDie("Unable to select employees from database.");
    if (pg_numrows($Ry) < 1) {
        $Sl = "SELECT * FROM lemployees WHERE empnum='{$empnum}'";
        $Ry = db_exec($Sl) or errDie("Unable to select employees from database.");
    }
    $emp = pg_fetch_array($Ry);
    $pay['showex'] = "Yes";
    $date = $todate;
    //$pw = "saldate>='$fromdate' AND saldate<='$todate'";
    $from_month = extractMonth($fromdate);
    $to_month = extractMonth($todate);
    if ($to_month < $from_month) {
        $pw = "month::int>='{$from_month}' OR month::int <= '{$to_month}'";
    } else {
        $pw = "month::int>='{$from_month}' AND month::int <= '{$to_month}'";
    }
    $pw = "({$pw}) AND (saldate>='{$fromdate}' AND saldate<='{$todate}')";
    /* paye balance */
    $sql = "SELECT sum(paye) AS sum FROM salpaid WHERE ({$pw}) AND empnum='{$empnum}' AND cyear='" . EMP_YEAR . "'";
    $Ry = db_exec($sql) or errDie("Unable to get paye");
    $pdata = pg_fetch_array($Ry);
    $paid = $pdata['sum'];
    $sql = "SELECT sum(paye) AS sum FROM salr WHERE ({$pw}) AND empnum='{$empnum}' AND cyear='" . EMP_YEAR . "'";
    $Ry = db_exec($sql) or errDie("Unable to get paye");
    $pdata = pg_fetch_array($Ry);
    $upaid = $pdata['sum'];
    $tottax = sprint($paid - $upaid);
    /* salary balance */
    $sql = "SELECT sum(salary) FROM salpaid WHERE ({$pw}) AND empnum='{$empnum}' AND cyear='" . EMP_YEAR . "'";
    $Ry = db_exec($sql) or errDie("Unable to get paye");
    $pdata = pg_fetch_array($Ry);
    $sql = "SELECT sum(salary) FROM salr WHERE ({$pw}) AND empnum='{$empnum}' AND cyear='" . EMP_YEAR . "'";
    $Ry = db_exec($sql) or errDie("Unable to get paye");
    $prdata = pg_fetch_array($Ry);
    $pay['salary'] = $pdata['sum'] - $prdata["sum"];
    $emp['basic_sal'] = sprint($emp['basic_sal']);
    /* pay slip ids */
    $psids = array();
    $sql = "\n\t\tSELECT id, novert, hovert FROM cubit.salpaid WHERE ({$pw}) AND empnum='{$empnum}' AND cyear='" . EMP_YEAR . "' \n\t\tUNION \n\t\tSELECT -id, -novert, -hovert FROM cubit.salr WHERE ({$pw}) AND empnum='{$empnum}' AND cyear='" . EMP_YEAR . "'";
    $rslt = db_exec($sql) or errDie("Error reading payslip ids");
    $novert = 0;
    $hovert = 0;
    while ($row = pg_fetch_assoc($rslt)) {
        $psids[] = "payslip='{$row['id']}'";
        $novert += $row["novert"];
        $hovert += $row["hovert"];
    }
    if (count($psids) <= 0) {
        $psids[] = "true";
    }
    $pwc = "(" . implode(" OR ", $psids) . ")";
    $dates = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<td width='50%'>Date</td>\n\t\t\t\t<td width='50%'>{$date}</td>\n\t\t\t</tr>\n\t\t</table>";
    $i = 0;
    $epw = "date >= '{$fromdate}' AND date <= '{$todate}'";
    $fepw = "fdate >= '{$fromdate}' AND fdate <= '{$todate}'";
    $incomes = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<td width='80%' align='center'>Description</td>\n\t\t\t\t<td align='center'>Amount</td>\n\t\t\t</tr>";
    db_conn('cubit');
    $sql = "SELECT DISTINCT description, type FROM emp_inc WHERE ({$pwc}) AND emp='{$empnum}' AND ({$epw}) ORDER BY description";
    $Ri = db_exec($sql) or errDie("Unable to get data.");
    $tot_incomes = 0;
    while ($data = pg_fetch_array($Ri)) {
        $sql = "SELECT sum(amount) FROM emp_inc WHERE description='{$data['description']}' AND ({$pwc}) AND emp='{$empnum}' AND ({$epw})";
        $Rl = db_exec($sql) or errDie("Unable to get data.");
        $sdata = pg_fetch_array($Rl);
        $incomes .= "\n\t\t\t<tr>\n\t\t\t\t<td>{$data['description']}</td>\n\t\t\t\t<td align='right'>" . CUR . " {$sdata['sum']}</td>\n\t\t\t</tr>";
        $i++;
        if ($data["description"] != "Fringe Benefits Total") {
            $tot_incomes = $tot_incomes + $sdata['sum'];
        }
        if ($data["type"] == "INCO") {
            if ($novert > 0) {
                $incomes .= "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2'>&nbsp;&nbsp;&nbsp; {$novert} Hours Normal Overtime</td>\n\t\t\t\t\t</tr>";
                ++$i;
            }
            if ($hovert > 0) {
                $incomes .= "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2'>&nbsp;&nbsp;&nbsp; {$hovert} Hours Holiday Overtime</td>\n\t\t\t\t\t</tr>";
                ++$i;
            }
        }
    }
    while ($i < 7) {
        $incomes .= "<tr><td><br></td></tr>";
        $i++;
    }
    $incomes .= "</table>";
    $i = 0;
    $benefits = "<table " . TMPL_tblDflts . " width='100%'>";
    while ($i < 4) {
        $benefits .= "<tr><td><br></td></tr>";
        $i++;
    }
    $benefits .= "</table>";
    $i = 0;
    $comp_parts = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<td align='center'>Description</td>\n\t\t\t\t<td align='center'>Amount</td>\n\t\t\t</tr>";
    $Sl = "SELECT DISTINCT(description) FROM emp_com WHERE ({$pwc}) AND emp='{$empnum}'  AND description !='SDL' AND ({$epw}) ORDER BY description";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    while ($data = pg_fetch_array($Ri)) {
        $Sl = "SELECT SUM(amount) FROM emp_com WHERE description='{$data['description']}' AND ({$pwc}) AND emp='{$empnum}' AND description !='SDL' AND ({$epw})";
        $Rl = db_exec($Sl) or errDie("Unable to get data.");
        $sdata = pg_fetch_array($Rl);
        $comp_parts .= "\n\t\t\t<tr>\n\t\t\t\t<td width='80%'>{$data['description']}</td>\n\t\t\t\t<td width='20%' align='right'>" . CUR . " {$sdata['sum']}</td>\n\t\t\t</tr>";
        $i++;
    }
    while ($i < 7) {
        $comp_parts .= "<tr><td><br></td></tr>";
        $i++;
    }
    $comp_parts .= "</table>";
    $i = 0;
    $deductions = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<td width='90%' align='center'>Description</td>\n\t\t\t\t<td align='center'>Amount</td>\n\t\t\t</tr>";
    $Sl = "SELECT DISTINCT(description),type FROM emp_ded WHERE ({$pwc}) AND emp='{$empnum}' AND ({$epw}) ORDER BY description";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    $tot_deductions = 0;
    while ($data = pg_fetch_array($Ri)) {
        $Sl = "SELECT SUM(amount) FROM emp_ded WHERE description='{$data['description']}' AND ({$pwc}) AND emp='{$empnum}' AND ({$epw})";
        $Rl = db_exec($Sl) or errDie("Unable to get data.");
        $sdata = pg_fetch_array($Rl);
        if ($data["type"] == "PAYE" && $emp["basic_sal_annum"] <= 65000) {
            $data["description"] = "SITE";
        }
        $deductions .= "\n\t\t\t<tr>\n\t\t\t\t<td>{$data['description']}</td>\n\t\t\t\t<td align='right' nowrap='t'>" . CUR . " {$sdata['sum']}</td>\n\t\t\t</tr>";
        $i++;
        $tot_deductions = $tot_deductions + $sdata['sum'];
    }
    while ($i < 6) {
        $deductions .= TBL_BR;
        $i++;
    }
    $deductions .= "</table>";
    $fringe = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<td width='90%' align=center>Description</td>\n\t\t\t\t<td align='center'>Amount</td>\n\t\t\t</tr>";
    $sql = "SELECT description,SUM(amount) AS amount FROM emp_frin WHERE ({$pwc}) AND emp='{$empnum}' AND ({$fepw}) GROUP BY description ORDER BY description";
    $rslt = db_exec($sql) or errDie("Unable to get data.");
    $i = 0;
    $tot_fringe = 0;
    while ($data = pg_fetch_array($rslt)) {
        $data["amount"] = sprint(abs($data["amount"]));
        $fringe .= "\n\t\t\t<tr>\n\t\t\t\t<td>{$data['description']}</td>\n\t\t\t\t<td align='right' nowrap='t'>" . CUR . " {$data['amount']}</td>\n\t\t\t</tr>";
        $i++;
        $tot_fringe += $data['amount'];
    }
    while ($i < 6) {
        $fringe .= TBL_BR;
        $i++;
    }
    $fringe .= "</table>";
    $exstras = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<td width='25%'>LEAVE DAYS DUE</td>\n\t\t\t\t<td width='25%'></td>\n\t\t\t\t<td width='25%'><b>NETT PAY</b></td>\n\t\t\t\t<td width='25%'><b>" . CUR . " " . sprint($pay["salary"]) . "</b></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width='25%'>Total Employee's Tax</td>\n\t\t\t\t<td width='25%'>{$tottax}</td>\n\t\t\t\t<td width='25%'></td>\n\t\t\t\t<td width='25%'></td>\n\t\t\t</tr>\n\t\t</table>";
    $pay["salary"] = sprint($pay["salary"]);
    db_conn('cubit');
    $period = "";
    $tot_incomes = sprint($tot_incomes);
    $tot_deductions = sprint($tot_deductions);
    vsprint($tot_fringe);
    $grossdata = "\n\t\t<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t<tr>\n\t\t\t\t<td width='50%' align='center'><b>GROSS EARNINGS</b></td>\n\t\t\t\t<td width='50%' align='right'>" . CUR . " {$tot_incomes}</td>\n\t\t\t</tr>\n\t\t</table>";
    explodeDate($fromdate, $from_year, $from_month, $from_day);
    explodeDate($todate, $to_year, $to_month, $to_day);
    if ($from_year == $to_year && $from_month == $to_month) {
        $title = "Salary Advice";
        if ($emp["payprd"] == "m") {
            $salprd = getMonthName($to_month) . " " . getYearOfEmpMon($to_month);
        } else {
            if ($emp["payprd"] == "d" && $fromdate == $todate) {
                $salprd = $pay["week"] . getMonthName($to_month) . " " . getYearOfEmpMon($to_month);
            } else {
                if ($emp["payprd"] == "w") {
                    $stdate = mktime(0, 0, 0, $to_month, 1, getYearOfEmpMon($to_month));
                    $endate = mktime(0, 0, 0, $to_month + 1, -1, getYearOfEmpMon($to_month));
                    $paydate = mktimefd($todate);
                    $i = 1;
                    while ($stdate <= $endate) {
                        if (date("w", $stdate) == 5) {
                            if (date("W", $stdate) == date("W", $paydate_f) && date("W", $stdate) == date("W", $paydate_t)) {
                                $salprd = date("j", $stdate) . " " . getMonthName($to_month) . " " . getYearOfEmpMon($to_month);
                                break;
                            }
                            ++$i;
                        }
                        /* next day */
                        $stdate += 24 * 60 * 60;
                    }
                } else {
                    if ($emp["payprd"] == "f") {
                        $stdate = mktime(0, 0, 0, $to_month, 1, getYearOfEmpMon($to_month));
                        $endate = mktime(0, 0, 0, $to_month + 1, -1, getYearOfEmpMon($to_month));
                        $paydate_f = mktimefd($fromdate);
                        $paydate_t = mktimefd($todate);
                        $c = 0;
                        $fnd_week_f = 0;
                        $fnd_week_t = 0;
                        while ($stdate <= $endate) {
                            //date("W", $stdate) == date("W", $paydate)
                            if (date("w", $stdate) == 5) {
                                if (date("W", $stdate) == date("W", $paydate_f)) {
                                    $fnd_week_f = 1;
                                }
                                if (date("W", $stdate) == date("W", $paydate_t)) {
                                    $fnd_week_t = 1;
                                }
                                if ((++$c % 2 == 0 || $c == 5) && ($fnd_week_f || $fnd_week_t)) {
                                    if ($fnd_week_f == 1 && $paydate_f <= $stdate + 48 * 3600) {
                                        $fnd_week_f = 2;
                                        $salprd_f = date("j", $stdate) . " " . getMonthName($from_month) . " " . getYearOfEmpMon($from_month);
                                    }
                                    if ($fnd_week_t == 1 && $paydate_t <= $stdate + 48 * 3600) {
                                        $fnd_week_t = 2;
                                        $salprd_t = date("j", $stdate) . " " . getMonthName($to_month) . " " . getYearOfEmpMon($to_month);
                                    }
                                    /* now check that they are the same, and if so set the display */
                                    if ($fnd_week_f + ($fnd_week_t = 4)) {
                                        if ($salprd_f == $salprd_t) {
                                            $salprd = $salprd_f;
                                        }
                                        break;
                                    }
                                }
                            }
                            /* next day */
                            $stdate += 24 * 60 * 60;
                        }
                    }
                }
            }
        }
    }
    if (!isset($salprd)) {
        $salprd = $title = "{$fromdate} TO {$todate}";
    }
    $OUT = "\n\t\t<center>\n\t\t<h2>" . COMP_NAME . "<br>{$title}</h2>\n\t\t<table border=1 " . TMPL_tblDflts . " width='750'>\n\t\t\t<tr>\n\t\t\t\t<td width='50%' align='center'><b>Employee Details:</b></td>\n\t\t\t\t<td>{$dates}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td valign='top'>\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<td>Name:</td>\n\t\t\t\t\t\t\t<td>{$emp['sname']}, {$emp['fnames']}</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>Number:</td>\n\t\t\t\t\t\t\t<td>{$emp['enum']}</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>ID:</td>\n\t\t\t\t\t\t\t<td>{$emp['idnum']}</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>Tax No:</td>\n\t\t\t\t\t\t\t<td>{$emp['taxref']}</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>Rate:</td>\n\t\t\t\t\t\t\t<td>" . CUR . " {$emp['basic_sal']}</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>Designation:</td>\n\t\t\t\t\t\t\t<td>{$emp['designation']}</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>Gender:</td>\n\t\t\t\t\t\t\t<td>{$emp['sex']}</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>Marital Status:</td>\n\t\t\t\t\t\t\t<td>{$emp['marital']}</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<table " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td width='50%'>Period</td>\n\t\t\t\t\t\t\t<td width='50%'>{$salprd}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t\t<table border=1 " . TMPL_tblDflts . " width='100%'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td align='center' colspan='2'><b>Company Details:</b></td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\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<td>Address:</td>\n\t\t\t\t\t\t\t<td>" . COMP_ADDRESS . "</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>Tel:</td>\n\t\t\t\t\t\t\t<td>" . COMP_TEL . "</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>Fax:</td>\n\t\t\t\t\t\t\t<td>" . COMP_FAX . "</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>Reg No:</td>\n\t\t\t\t\t\t\t<td>" . COMP_REGNO . "</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>PAYE Ref:</td>\n\t\t\t\t\t\t\t<td>" . COMP_PAYE . "</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'><b>COMPANY CONTRIBUTIONS</b></td>\n\t\t\t\t<td align='center'><b>INCOME</b></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>{$comp_parts}</td>\n\t\t\t\t<td>{$incomes}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='center'></td>\n\t\t\t\t<td>{$grossdata}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td align='center'><b>DEDUCTIONS</b></td>\n\t\t\t\t<td align='center'><b>FRINGE BENEFITS</b></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>{$deductions}</td>\n\t\t\t\t<td>{$fringe}</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 . " width='100%'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td width='50%'><b>TOTAL DEDUCTIONS</b></td>\n\t\t\t\t\t\t\t<td width='50%' align='right'>" . CUR . " {$tot_deductions}</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>\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<td width='50%' nowrap='t'><b>TOTAL FRINGE BENEFITS</b></td>\n\t\t\t\t\t\t\t<td width='50%' align='right'>" . CUR . " {$tot_fringe}</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'>{$exstras}</td>\n\t\t\t</tr>\n\t\t</table>";
    return $OUT;
}
function confirm($_POST)
{
    # get vars
    extract($_POST);
    if (isset($back)) {
        header("Location: bank-pay-supp.php?supid={$supid}&paidamt[]={$amt}&descript={$descript}&reference={$reference}");
        //		return method($supid);
    }
    if (!isset($out1)) {
        $out1 = '';
    }
    if (!isset($out2)) {
        $out2 = '';
    }
    if (!isset($out3)) {
        $out3 = '';
    }
    if (!isset($out4)) {
        $out4 = '';
    }
    if (!isset($out5)) {
        $out5 = '';
    }
    $OUT1 = $out1;
    $OUT2 = $out2;
    $OUT3 = $out3;
    $OUT4 = $out4;
    $OUT5 = $out5;
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($all, "num", 1, 1, "Invalid allocation.");
    $v->isOk($bankid, "num", 1, 30, "Invalid Bank Account.");
    $v->isOk($date, "date", 1, 14, "Invalid Date.");
    $v->isOk($descript, "string", 1, 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($out, "float", 1, 10, "Invalid out amount.");
    $v->isOk($out1, "float", 0, 10, "Invalid paid amount(currant).");
    $v->isOk($out2, "float", 0, 10, "Invalid paid amount(30).");
    $v->isOk($out3, "float", 0, 10, "Invalid paid amount(60).");
    $v->isOk($out4, "float", 0, 10, "Invalid paid amount(90).");
    $v->isOk($out5, "float", 0, 10, "Invalid paid amount(120).");
    $v->isOk($supid, "num", 1, 10, "Invalid Supplier number.");
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$invids[$key]] < 0.01) {
                continue;
            }
            $v->isOk($invids[$key], "num", 1, 50, "Invalid Invoice No. [{$key}]");
            $v->isOk($paidamt[$invids[$key]], "float", 1, 20, "Invalid amount to be paid. [{$key}]");
        }
    }
    # 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;
    }
    $out1 += 0;
    $out2 += 0;
    $out3 += 0;
    $out4 += 0;
    $out5 += 0;
    # check invoice payments
    $tot = 0;
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$invids[$key]] < 0.01) {
                continue;
            }
            $tot += $paidamt[$invids[$key]];
        }
    }
    if (sprint($tot + $out + $out1 + $out2 + $out3 + $out4 + $out5) != sprint($amt)) {
        return "<li class='err'>{$tot} - {$amt} The total amount is not equal to the amount paid. Please check the details.</li>" . alloc($_POST);
    }
    vsprint($out);
    $confirm = "\n\t\t\t<h3>New Bank Payment</h3>\n\t\t\t<h4>Confirm entry (Please check the details)</h4>\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='write'>\n\t\t\t\t<input type='hidden' name='bankid' value='{$bankid}'>\n\t\t\t\t<input type='hidden' name='date' value='{$date}'>\n\t\t\t\t<input type='hidden' name='supid' value='{$supid}'>\n\t\t\t\t<input type='hidden' name='descript' value='{$descript}'>\n\t\t\t\t<input type='hidden' name='reference' value='{$reference}'>\n\t\t\t\t<input type='hidden' name='cheqnum' value='{$cheqnum}'>\n\t\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t\t<input type='hidden' name='out' value='{$out}'>\n\t\t\t\t<input type='hidden' name='amt' value='{$amt}'>";
    # Get bank account name
    db_connect();
    $sql = "SELECT accname,bankname FROM bankacct WHERE bankid = '{$bankid}' AND div = '" . USER_DIV . "'";
    $bankRslt = db_exec($sql);
    $bank = pg_fetch_array($bankRslt);
    if (pg_num_rows($bankRslt) < 1) {
        $bank['accname'] = "Cash";
        $bank['bankname'] = "";
    }
    # Supplier name
    $sql = "SELECT supno,supname FROM suppliers WHERE supid = '{$supid}' AND div = '" . USER_DIV . "'";
    $supRslt = db_exec($sql);
    $sup = pg_fetch_array($supRslt);
    $confirm .= "\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>Payment Details</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Account</td>\n\t\t\t\t<td>{$bank['accname']} - {$bank['bankname']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Date</td>\n\t\t\t\t<td valign='center'>{$date}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Paid To</td>\n\t\t\t\t<td valign='center'>({$sup['supno']}) {$sup['supname']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Description</td>\n\t\t\t\t<td valign='center'>{$descript}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Reference</td>\n\t\t\t\t<td valign='center'>{$reference}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Cheque Number</td>\n\t\t\t\t<td valign='center'>{$cheqnum}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Amount</td>\n\t\t\t\t<td valign='center'>" . CUR . " {$amt}</td>\n\t\t\t</tr>";
    if ($all == 0) {
        // Layout
        $confirm .= "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<!--<table " . TMPL_tblDflts . " width='90%'>-->\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>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>";
        $i = 0;
        // for bgcolor
        if (isset($invids)) {
            foreach ($invids as $key => $value) {
                if ($paidamt[$invids[$key]] < 0.01) {
                    continue;
                }
                db_conn("cubit");
                # Get all the details
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE purid='{$invids[$key]}' AND supid = '{$supid}' AND div = '" . USER_DIV . "'";
                $invRslt = db_exec($sql) or errDie("Unable to access database.");
                if (pg_numrows($invRslt) < 1) {
                    $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE intpurid='{$invids[$key]}' AND div = '" . USER_DIV . "'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        return "<li class='err'> - Invalid ord number {$invids[$key]}.</li>";
                    }
                }
                $inv = pg_fetch_array($invRslt);
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                $invid = $inv['invid'];
                $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[]' value='{$inv['invid']}'>{$inv['invid']}</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>\n\t\t\t\t\t\t\t<td>" . CUR . " <input type='hidden' name='paidamt[]' size='7' value='{$paidamt[$invid]}'>{$paidamt[$invid]}</td>\n\t\t\t\t\t\t</tr>";
                $i++;
            }
        }
        // 0.01 because of high precisions like 0.0000000001234 still matching
        if ($out >= 0.01) {
            $confirm .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\twith " . CUR . " " . sprint($out) . " </b>\n\t\t\t\t</td>\n\t\t\t</tr>";
        }
    }
    if ($all == 1) {
        $age30 = sage($supid, 59);
        $age60 = sage($supid, 89);
        $age90 = sage($supid, 119);
        $age120 = sage($supid, 149);
        $bgColor = bgcolorg();
        $i = 0;
        if ($out1 > 0) {
            // Connect to database
            db_conn("cubit");
            $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid}' AND balance>0 AND pdate >='" . extlib_ago(29) . "' AND pdate <='" . extlib_ago(-1) . "'  AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
            $prnInvRslt = db_exec($sql);
            while ($inv = pg_fetch_array($prnInvRslt) and $out1 > 0) {
                if ($inv['invid'] == 0) {
                    continue;
                }
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                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='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>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'];
                $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[]' value='{$inv['invid']}'>{$inv['invid']}</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 ($out1 >= $inv['balance']) {
                    $val = $inv['balance'];
                    $out1 = $out1 - $inv['balance'];
                } else {
                    $val = $out1;
                    $out1 = 0;
                }
                $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                $i++;
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out1 >= 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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
        if ($out2 > 0) {
            if ($out2 > $age30) {
                $_POST['OUT1'] = $OUT1;
                $_POST['OUT2'] = $OUT2;
                $_POST['OUT3'] = $OUT3;
                $_POST['OUT4'] = $OUT4;
                $_POST['OUT5'] = $OUT5;
                $out2 = sprint($out2);
                return "<li class='err'>You cannot allocate " . CUR . " {$out2} to 30 days, you only owe " . CUR . " {$age30}</li>" . alloc($_POST);
            }
            // Connect to database
            db_conn("cubit");
            $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid}' AND balance>0 AND pdate >='" . extlib_ago(59) . "' AND pdate <='" . extlib_ago(29) . "'  AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
            $prnInvRslt = db_exec($sql);
            while ($inv = pg_fetch_array($prnInvRslt) and $out2 > 0) {
                if ($inv['invid'] == 0) {
                    continue;
                }
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                if ($i == 0) {
                    $confirm .= "\n\t\t\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                }
                $invid = $inv['invid'];
                $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[]' value='{$inv['invid']}'>{$inv['invid']}</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 ($out2 >= $inv['balance']) {
                    $val = $inv['balance'];
                    $out2 = $out2 - $inv['balance'];
                } else {
                    $val = $out2;
                    $out2 = 0;
                }
                $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                $i++;
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out2 >= 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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
        if ($out3 > 0) {
            if ($out3 > $age60) {
                $_POST['OUT1'] = $OUT1;
                $_POST['OUT2'] = $OUT2;
                $_POST['OUT3'] = $OUT3;
                $_POST['OUT4'] = $OUT4;
                $_POST['OUT5'] = $OUT5;
                $out3 = sprint($out3);
                return "<li class='err'>You cannot allocate " . CUR . " {$out3} to 60 days, you only owe " . CUR . " {$age60} </lI>" . alloc($_POST);
            }
            // Connect to database
            db_conn("cubit");
            $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid}' AND balance>0 AND pdate >='" . extlib_ago(89) . "' AND pdate <='" . extlib_ago(59) . "' AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
            $prnInvRslt = db_exec($sql);
            while ($inv = pg_fetch_array($prnInvRslt) and $out3 > 0) {
                if ($inv['invid'] == 0) {
                    continue;
                }
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                if ($i == 0) {
                    $confirm .= "\n\t\t\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                }
                $invid = $inv['invid'];
                $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[]' value='{$inv['invid']}'>{$inv['invid']}</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 ($out3 >= $inv['balance']) {
                    $val = $inv['balance'];
                    $out3 = $out3 - $inv['balance'];
                } else {
                    $val = $out3;
                    $out3 = 0;
                }
                $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                $i++;
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out3 >= 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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
        if ($out4 > 0) {
            if ($out4 > $age90) {
                $_POST['OUT1'] = $OUT1;
                $_POST['OUT2'] = $OUT2;
                $_POST['OUT3'] = $OUT3;
                $_POST['OUT4'] = $OUT4;
                $_POST['OUT5'] = $OUT5;
                $out4 = sprint($out4);
                return "<li class='err'>You cannot allocate " . CUR . " {$out4} to 90 days, you only owe " . CUR . " {$age90}</li>" . alloc($_POST);
            }
            // Connect to database
            db_conn("cubit");
            $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid}' AND balance>0 AND pdate >='" . extlib_ago(119) . "' AND pdate <='" . extlib_ago(89) . "' AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
            $prnInvRslt = db_exec($sql);
            while ($inv = pg_fetch_array($prnInvRslt) and $out4 > 0) {
                if ($inv['invid'] == 0) {
                    continue;
                }
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                if ($i == 0) {
                    $confirm .= "\n\t\t\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                }
                $invid = $inv['invid'];
                $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[]' value='{$inv['invid']}'>{$inv['invid']}</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 ($out4 >= $inv['balance']) {
                    $val = $inv['balance'];
                    $out4 = $out4 - $inv['balance'];
                } else {
                    $val = $out4;
                    $out4 = 0;
                }
                $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                $i++;
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out4 >= 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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
        if ($out5 > 0) {
            if ($out5 > $age120) {
                $_POST['OUT1'] = $OUT1;
                $_POST['OUT2'] = $OUT2;
                $_POST['OUT3'] = $OUT3;
                $_POST['OUT4'] = $OUT4;
                $_POST['OUT5'] = $OUT5;
                $out5 = sprint($out5);
                return "<li class='err'>You cannot allocate " . CUR . " {$out5} to 120 days, you only owe " . CUR . " {$age120}</li>" . alloc($_POST);
            }
            // Connect to database
            db_conn("cubit");
            $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid}' AND balance>0 AND pdate >='" . extlib_ago(149) . "' AND pdate <='" . extlib_ago(119) . "' AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
            $prnInvRslt = db_exec($sql);
            while ($inv = pg_fetch_array($prnInvRslt) and $out5 > 0) {
                if ($inv['invid'] == 0) {
                    continue;
                }
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                if ($i == 0) {
                    $confirm .= "\n\t\t\t\t\t\t\t" . TBL_BR . "\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                }
                $invid = $inv['invid'];
                $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[]' value='{$inv['invid']}'>{$inv['invid']}</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 ($out5 >= $inv['balance']) {
                    $val = $inv['balance'];
                    $out5 = $out5 - $inv['balance'];
                } else {
                    $val = $out5;
                    $out5 = 0;
                }
                $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                $i++;
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out5 >= 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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            }
        }
    }
    if ($all == 2) {
        // Layout
        $confirm .= "\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<!--<table " . TMPL_tblDflts . " width='90%'>-->\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Purchase</th>\n\t\t\t\t\t<th>Outstanding amount</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>";
        $i = 0;
        // for bgcolor
        if (isset($invids)) {
            foreach ($invids as $key => $value) {
                if ($paidamt[$invids[$key]] < 0.01) {
                    continue;
                }
                db_conn("cubit");
                # Get all the details
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE purid='{$invids[$key]}' AND div = '" . USER_DIV . "'";
                $invRslt = db_exec($sql) or errDie("Unable to access database.");
                if (pg_numrows($invRslt) < 1) {
                    $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE intpurid='{$invids[$key]}' AND div = '" . USER_DIV . "'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        return "<li class='err'> - Invalid ord number {$invids[$key]}.</li>";
                    }
                }
                $inv = pg_fetch_array($invRslt);
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                $invid = $inv['invid'];
                $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[]' value='{$inv['invid']}'>{$inv['invid']}</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>\n\t\t\t\t\t\t\t<td>" . CUR . " <input type='hidden' name='paidamt[]' size='7' value='{$paidamt[$invid]}'>{$paidamt[$invid]}</td>\n\t\t\t\t\t\t</tr>";
                $i++;
            }
        }
        // 0.01 because of high precisions like 0.0000000001234 still matching
        if ($out >= 0.01) {
            $confirm .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\twith " . CUR . " " . sprint($out) . " </b>\n\t\t\t\t</td>\n\t\t\t</tr>";
        }
    }
    vsprint($out1);
    vsprint($out2);
    vsprint($out3);
    vsprint($out4);
    vsprint($out5);
    vsprint($OUT1);
    vsprint($OUT2);
    vsprint($OUT3);
    vsprint($OUT4);
    vsprint($OUT5);
    $confirm .= "\n\t\t\t\t<input type='hidden' name='out1' value='{$out1}'>\n\t\t\t\t<input type='hidden' name='out2' value='{$out2}'>\n\t\t\t\t<input type='hidden' name='out3' value='{$out3}'>\n\t\t\t\t<input type='hidden' name='out4' value='{$out4}'>\n\t\t\t\t<input type='hidden' name='out5' value='{$out5}'>\n\t\t\t\t<input type='hidden' name='OUT1' value='{$OUT1}'>\n\t\t\t\t<input type='hidden' name='OUT2' value='{$OUT2}'>\n\t\t\t\t<input type='hidden' name='OUT3' value='{$OUT3}'>\n\t\t\t\t<input type='hidden' name='OUT4' value='{$OUT4}'>\n\t\t\t\t<input type='hidden' name='OUT5' value='{$OUT5}'>\n\t\t\t\t<input type='hidden' name='date_day' value='{$date_day}'>\n\t\t\t\t<input type='hidden' name='date_month' value='{$date_month}'>\n\t\t\t\t<input type='hidden' name='date_year' value='{$date_year}'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='submit' name='back' value='&laquo; Correction'></td>\n\t\t\t\t\t<td align='right'><input type='submit' value='Write &raquo'></td>\n\t\t\t\t</tr>\n\t\t\t</form>\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='bank-pay-supp.php'>Add supplier payment</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t</table>";
    return $confirm;
}
function confirm($_POST)
{
    # Get vars
    extract($_POST);
    if (isset($back)) {
        header("Location: cashbook-entry.php");
        exit;
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($bankid, "num", 1, 30, "Invalid Bank Account.");
    $v->isOk($o_day, "num", 1, 2, "Invalid Date day.");
    $v->isOk($o_month, "num", 1, 2, "Invalid Date month.");
    $v->isOk($o_year, "num", 1, 4, "Invalid Date Year.");
    $v->isOk($name, "string", 1, 255, "Invalid Person/Business paid to/received from.");
    $v->isOk($descript, "string", 0, 255, "Invalid Description.");
    $v->isOk($reference, "string", 0, 255, "Invalid Description.");
    $v->isOk($cheqnum, "num", 0, 30, "Invalid Cheque number.");
    $v->isOk($amount, "float", 1, 10, "Invalid amount.");
    $v->isOk($chrgvat, "string", 1, 4, "Invalid vat option.");
    $v->isOk($accinv, "num", 1, 20, "Invalid Account involved.");
    $date = mkdate($o_year, $o_month, $o_day);
    $v->isOk($date, "date", 1, 1, "Invalid date.");
    if ($v->isError()) {
        $err = $v->genErrors();
        return $err . add($_POST);
    }
    # Start rattling vat
    $totamt = $amount;
    vsprint($vat);
    if ($vatcode != $orig_vatcode || $amount != $orig_amount || $chrgvat != $orig_chrgvat) {
        db_conn('cubit');
        $Sl = "SELECT * FROM vatcodes WHERE id='{$vatcode}'";
        $Ri = db_exec($Sl) or errDie("Unable to get vat codes");
        $vd = pg_fetch_array($Ri);
        $vatp = $vd['vat_amount'];
        if ($chrgvat == "exc") {
            $vat = sprint($vatp / 100 * $amount);
        } else {
            if ($chrgvat == "inc") {
                $vat = sprint($amount * $vatp / ($vatp + 100));
            } else {
                $vat = 0;
            }
        }
    }
    if ($chrgvat == "exc") {
        $totamt += $vat;
        $vatin = CUR . "<input type='text' name='vat' value='{$vat}' />";
    } else {
        if ($chrgvat == "inc") {
            $vatin = CUR . "<input type='text' name='vat' value='{$vat}' />";
        } else {
            $vatin = "No VAT";
        }
    }
    $OUT = "\n\t\t\t<center>\n\t\t\t<h3>Edit Bank Receipt</h3>\n\t\t\t<h4>Confirm entry (Please check the details)</h4>\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='write' />\n\t\t\t\t<input type='hidden' name='id' value='{$id}' />\n\t\t\t\t<input type='hidden' name='bankid' value='{$bankid}' />\n\t\t\t\t<input type='hidden' name='date' value='{$date}' />\n\t\t\t\t<input type='hidden' name='name' value='{$name}' />\n\t\t\t\t<input type='hidden' name='descript' value='{$descript}' />\n\t\t\t\t<input type='hidden' name='reference' value='{$reference}' />\n\t\t\t\t<input type='hidden' name='cheqnum' value='{$cheqnum}' />\n\t\t\t\t<input type='hidden' name='amount' value='{$amount}' />\n\t\t\t\t<input type='hidden' name='chrgvat' value='{$chrgvat}' />\n\t\t\t\t<input type='hidden' name='accinv' value='{$accinv}' />\n\t\t\t\t<input type='hidden' name='vatcode' value='{$vatcode}' />";
    # Get bank account name
    db_connect();
    $sql = "SELECT accname,bankname FROM bankacct WHERE bankid = '{$bankid}' AND div = '" . USER_DIV . "'";
    $bankRslt = db_exec($sql);
    $bank = pg_fetch_array($bankRslt);
    # get hook account number
    core_connect();
    $sql = "SELECT * FROM bankacc WHERE accid = '{$bankid}' AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to retrieve bank account link from Cubit", SELF);
    # check if link exists
    if (pg_numrows($rslt) < 1) {
        return "<li class=err> ERROR : The bank account that you selected doesn't appear to have an account linked to it.";
    }
    $banklnk = pg_fetch_array($rslt);
    # Get bank balance
    $sql = "SELECT (debit - credit) as bal FROM trial_bal WHERE period='" . getPRDDB($date) . "' AND accid = '{$banklnk['accnum']}' AND div = '" . USER_DIV . "'";
    $brslt = db_exec($sql) or errDie("Unable to retrieve bank account link from Cubit", SELF);
    $bal = pg_fetch_array($brslt);
    $accRslt = get("core", "accname,topacc,accnum", "accounts", "accid", $accinv);
    $accnt = pg_fetch_array($accRslt);
    $OUT .= "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Field</th>\n\t\t\t\t\t\t<th>Value</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>Account</td>\n\t\t\t\t\t\t<td>{$bank['accname']} - {$bank['bankname']}</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>Account Balance</td>\n\t\t\t\t\t\t<td>" . CUR . " {$bal['bal']}</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</td>\n\t\t\t\t\t\t<td valign='center'>{$date}</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>Received from</td>\n\t\t\t\t\t\t<td valign='center'>{$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>Description</td>\n\t\t\t\t\t\t<td valign='center'>{$descript}</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>Reference</td>\n\t\t\t\t\t\t<td valign='center'>{$reference}</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>Cheque Number</td>\n\t\t\t\t\t\t<td valign='center'>{$cheqnum}</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>Amount</td>\n\t\t\t\t\t\t<td valign='center'>" . CUR . " " . sprint($totamt) . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='bg-odd'>\n\t\t\t\t\t\t<td>VAT </td>\n\t\t\t\t\t\t<td>{$vatin}</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr class='bg-even'>\n\t\t\t\t\t\t<td>Ledger Account Received from</td>\n\t\t\t\t\t\t<td valign='center'>{$accnt['topacc']}/{$accnt['accnum']} - {$accnt['accname']}</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<td>&nbsp;</td>\n\t\t\t\t\t\t<td align='right'><input type='submit' value='Write &raquo'></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</form>\n\t\t\t\t</table>" . mkQuickLinks();
    return $OUT;
}
function confirm($_POST)
{
    # Get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($invid, "num", 1, 20, "Invalid Invoice number.");
    $sdate = $s_year . "-" . $s_month . "-" . $s_day;
    if (!checkdate($s_month, $s_day, $s_year)) {
        $v->addError($sdate, "Invalid Date.");
    }
    foreach ($ids as $key => $id) {
        $v->isOk($id, "num", 1, 20, "Invalid Item number.");
        //		is_int fails if the value is 1 ??? ctype_digit seems to work better
        //		if (!is_int($qtys[$key])) {
        if (!ctype_digit($qtys[$key])) {
            $v->addError(0, "Invalid Item Quantity.");
        }
        if ($qtys[$key] > $oqtys[$key]) {
            $v->isOk("##", "num", 1, 1, "Error : Item quantity cannot be more than invoiced quantity.");
        }
    }
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $confirm = "{$err}<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return details($_POST, $err);
        return $confirm;
    }
    # Get Invoice info
    db_connect();
    $sql = "SELECT * FROM nons_invoices WHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
    $invRslt = db_exec($sql) or errDie("Unable to get invoices information");
    if (pg_numrows($invRslt) < 1) {
        return "<i class='err'>Not Found</i>";
    }
    $inv = pg_fetch_array($invRslt);
    $currs = getSymbol($inv['fcid']);
    /* --- Start Products Display --- */
    # Products layout
    $products = "\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='5%'>#</th>\n\t\t\t\t\t\t\t<th width='40%'>DESCRIPTION</th>\n\t\t\t\t\t\t\t<th width='10%'>QTY</th>\n\t\t\t\t\t\t\t<th width='10%'>UNIT PRICE</th>\n\t\t\t\t\t\t\t<th width='10%'>AMOUNT</th>\n\t\t\t\t\t\t\t<th width='25%'>ACCOUNT</th>\n\t\t\t\t\t\t<tr>";
    # get selected stock in this Invoice
    $any = false;
    $i = 0;
    $totamt = 0;
    foreach ($ids as $key => $id) {
        if ($qtys[$key] < 1) {
            continue;
        }
        $any = true;
        db_connect();
        $sql = "SELECT * FROM nons_inv_items  WHERE invid = '{$invid}' AND id = '{$id}' AND div = '" . USER_DIV . "'";
        $stkdRslt = db_exec($sql);
        $stkd = pg_fetch_array($stkdRslt);
        $stkacc = $stkd['accid'];
        $accRs = get("core", "accname,topacc,accnum", "accounts", "accid", $stkacc);
        $acc = pg_fetch_array($accRs);
        # Calculate amount
        $totamt += $amt[$key] = $qtys[$key] * $stkd['unitcost'];
        $any = true;
        $i++;
        # put in product
        $products .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td align='center'>{$i}<input type='hidden' name='ids[]' value='{$stkd['id']}'></td>\n\t\t\t\t<td>{$stkd['description']}</td>\n\t\t\t\t<td><input type='hidden' name='qtys[]' value='{$qtys[$key]}'>{$qtys[$key]}</td>\n\t\t\t\t<td>{$inv['currency']} {$stkd['unitcost']}</td>\n\t\t\t\t<td><input type='hidden' name='amts[]' value='{$amt[$key]}'>{$inv['currency']} {$amt[$key]}</td>\n\t\t\t\t<td>{$acc['topacc']}/{$acc['accnum']} - {$acc['accname']}</td>\n\t\t\t</tr>";
    }
    $products .= "</table>";
    # if there isn't any products
    if (!$any) {
        $err = "<li class='err'> Error : There are no products selected.</li>";
        return details($_POST, $err);
        return "<li class='err'> Error : There are no products selected.</li>";
    }
    /* --- Start Some calculations --- */
    //  commented: 2006-04-25
    // 	# calculate subtot
    // 	if( isset($amt) ){
    // 		$TOTAL = array_sum($amt);
    // 	}else{
    // 		$TOTAL = 0.00;
    // 	}
    //
    // 	# if vat is not included
    // 	$VATP = TAX_VAT;
    // 	if($inv['chrgvat'] == "yes"){
    // 		$SUBTOT = sprintf("%0.2f", $TOTAL * 100 / (100 + $VATP) );
    // 	} elseif($inv['chrgvat'] == "no") {
    // 		$SUBTOT = $TOTAL;
    // 		$TOTAL = sprintf("%0.2f", $TOTAL * (100 + $VATP) /100 );
    // 	}else{
    // 		$SUBTOT = $TOTAL;
    // 	}
    //
    // 	// compute the sub total (total - vat), done this way because the specified price already includes vat
    // 	$VAT = sprint($TOTAL - $SUBTOT);
    // inclusive
    $SUBTOT = sprint($totamt);
    if ($inv["chrgvat"] == "yes") {
        $VAT = $totamt - $totamt / (1 + TAX_VAT / 100);
    } else {
        $VAT = $SUBTOT * TAX / 100;
        $TOTAL = $SUBTOT + $VAT;
    }
    vsprint($VAT);
    vsprint($TOTAL);
    /* --- End Some calculations --- */
    # Format date
    // list($syear, $smon, $sday) = explode("-", $inv['sdate']);
    /* -- Final Layout -- */
    $details = "\n\t\t\t\t\t<center>\n\t\t\t\t\t<h3>Non-Stock Credit Note</h3>\n\t\t\t\t\t<form action='" . SELF . "' method='POST' name='form'>\n\t\t\t\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t\t\t\t<input type='hidden' name='invid' value={$invid}>\n\t\t\t\t\t<table " . TMPL_tblDflts . " 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 " . TMPL_tblDflts . ">\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'> Customer Details </th>\n\t\t\t\t\t\t\t\t\t</tr>\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>Customer</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['cusname']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Customer Address</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'><pre>{$inv['cusaddr']}</pre></td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Customer Vat Number</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['cusvatno']}</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' align='right'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t<tr><th colspan='2'> Non-Stock Invoice Details </th></tr>\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>Non-Stock Invoice No.</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['invnum']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Date</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>" . mkDateSelect("s", $s_year, $s_month, $s_day) . "</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>Foreign Currency</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$currs['symbol']} - {$currs['name']} &nbsp;&nbsp;Exchange rate " . CUR . " {$inv['xrate']}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>VAT Inclusive</td>\n\t\t\t\t\t\t\t\t\t\t<td valign='center'>{$inv['chrgvat']}</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='2'>{$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>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th width='40%'>Quick Links</th>\n\t\t\t\t\t\t\t\t\t\t<th width='45%'>Remarks</th>\n\t\t\t\t\t\t\t\t\t\t<td rowspan='5' valign='top' width='15%'><br></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 class='" . bg_class() . "'><a href='nons-invoice-new.php'>New Non-Stock Invoices</a></td>\n\t\t\t\t\t\t\t\t\t\t<td class='" . bg_class() . "' rowspan='4' align='center' valign='top'>" . nl2br($inv['remarks']) . "</td>\n\t\t\t\t\t\t\t\t\t</tr>\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><a href='nons-invoice-view.php'>View Non-Stock Invoices</a></td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\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 align='right'>\n\t\t\t\t\t\t\t\t<table " . TMPL_tblDflts . " width='80%'>\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>SUBTOTAL</td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'><input type='hidden' name='subtot' value='{$SUBTOT}'>{$inv['currency']} {$SUBTOT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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>VAT @ " . TAX_VAT . " %</td>\n\t\t\t\t\t\t\t\t\t\t<td align='right'><input type='hidden' name='vat' value='{$VAT}'>{$inv['currency']} {$VAT}</td>\n\t\t\t\t\t\t\t\t\t</tr>\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<th>GRAND TOTAL</th>\n\t\t\t\t\t\t\t\t\t\t<td align='right'><input type='hidden' name='total' value='{$totamt}'>{$inv['currency']} {$totamt}</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>\n\t\t\t\t\t\t\t<td align='right'><input type='button' value='&laquo Back' onClick='javascript:history.back()'> | <input type='submit' value='Confirm &raquo'></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>";
    return $details;
}
function confirm($_POST)
{
    # get vars
    $_POST = var_makesafe($_POST);
    extract($_POST);
    if (isset($back)) {
        return slctEmployee();
    }
    $annual += 0;
    $bonus = 0;
    $abonus += 0;
    $mpaye_amount += 0;
    # validate input
    require_lib("validate");
    $v = new validate();
    if (isset($account)) {
        $v->isOk($account, "num", 1, 9, "Invalid ledger account.");
    }
    $v->isOk($empnum, "num", 1, 9, "Invalid employee number.");
    $v->isOk($accid, "num", 1, 9, "Invalid bank number.");
    $v->isOk($MON, "num", 1, 2, "Invalid month.");
    $v->isOk($abonus, "float", 1, 11, "Invalid bonus.");
    $v->isOk($mpaye_amount, "float", 1, 40, "Invalid manual PAYE amount.");
    $v->isOk($all_travel, "float", 1, 11, "Invalid travel allowance.");
    $v->isOk($comp_pension, "float", 1, 11, "Invalid company pension.");
    $v->isOk($comp_medical, "float", 1, 11, "Invalid company medical.");
    $v->isOk($emp_pension, "float", 1, 11, "Invalid employee pension.");
    $v->isOk($emp_medical, "float", 1, 11, "Invalid employee medical.");
    $v->isOk($comp_provident, "float", 1, 11, "Invalid company provident.");
    $v->isOk($emp_provident, "float", 1, 11, "Invalid employee provident.");
    //$v->isOk ($comp_uif, "float", 1, 11, "Invalid company uif.");
    //$v->isOk ($emp_uif, "float", 1, 11, "Invalid employee uif.");
    $v->isOk($comp_other, "float", 1, 11, "Invalid company other.");
    $v->isOk($emp_other, "float", 1, 11, "Invalid employee other.");
    $v->isOk($comp_ret, "float", 1, 11, "Invalid company ret.");
    $v->isOk($emp_ret, "float", 1, 11, "Invalid employee ret.");
    $v->isOk($basic_sal, "float", 1, 11, "Invalid basic salary.");
    $v->isOk($commission, "float", 0, 11, "Invalid commision.");
    $v->isOk($loaninstall, "float", 0, 11, "Invalid loan installment.");
    $v->isOk($loanint, "float", 0, 11, "Invalid loan interest.");
    if ($divisor != 1 && round($divisor, 2) != round(52 / 12, 2) && round($divisor) != round(26 / 12, 2)) {
        //$v->addError("", "Invalid pay period (DIVIS).");
    }
    if ($saltyp == 'd' || $saltyp == 'h') {
        $salnarr = array("d" => "Days", "h" => "Hours");
        $salntype = $salnarr[$saltyp];
        $v->isOk($multi, "float", 1, 5, "Invalid number of {$salntype}.");
        if ($multi < 1) {
            $v->addError("", "Error : Employee cannot be paid for {$multi} {$salntype}.");
        }
    }
    if (isset($allowances)) {
        foreach ($allowances as $key => $value) {
            $v->isOk($allowances[$key], "float", 0, 11, "Invalid allowance amount " . ($key + 1) . ".");
        }
    }
    if (isset($deductid)) {
        foreach ($deductid as $key => $value) {
            $v->isOk($deductid[$key], "num", 1, 9, "Invalid deductions ID.");
        }
    }
    if (isset($deductions)) {
        foreach ($deductions as $key => $value) {
            $v->isOk($deductions[$key], "float", 0, 11, "Invalid deduction amount" . ($key + 1) . ".");
        }
    }
    if (isset($allowid)) {
        foreach ($allowid as $key => $value) {
            $v->isOk($allowid[$key], "num", 1, 9, "Invalid allowance ID.");
        }
    }
    if (isset($allowtax)) {
        foreach ($allowtax as $key => $value) {
            $v->isOk($allowtax[$key], "string", 1, 3, "Invalid allowance tax option" . ($key + 1) . ".");
        }
    }
    if (!isset($pday)) {
        $pday = "";
    }
    $date = $year . "-" . $mon . "-" . $day;
    $pdate = mkdate($year, $MON, $pday);
    if (!checkdate($mon, $day, $year)) {
        $v->isOk($date, "num", 1, 1, "Invalid date .");
    }
    # display errors, if any
    if ($v->isError()) {
        $confirmCust = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirmCust .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        return $confirmCust . process($_POST);
    }
    $basic_sal_save = $basic_sal;
    global $global_empnum;
    $global_empnum = $empnum;
    db_conn('cubit');
    $sql = "SELECT * FROM employees WHERE empnum='{$empnum}' AND div = '" . USER_DIV . "'";
    $empRslt = db_exec($sql) or errDie("Unable to select employees from database.");
    if (pg_numrows($empRslt) < 1) {
        return "Invalid employee ID.";
    }
    $myEmp = pg_fetch_array($empRslt);
    if ($myEmp['payprd'] == "d") {
        $Sl = "SELECT * FROM salpaid WHERE empnum='{$empnum}' AND month='{$mm}' AND week='{$pday}' AND cyear='" . EMP_YEAR . "'";
        $Ri = db_exec($Sl);
        $paid = pg_num_rows($Ri);
        $Sl = "SELECT * FROM salr WHERE empnum='{$empnum}' AND month='{$mm}' AND week='{$pday}' AND cyear='" . EMP_YEAR . "'";
        $Ri = db_exec($Sl);
        $upaid = pg_num_rows($Ri);
        $upaid += 0;
        $paid -= $upaid;
    } elseif ($myEmp['payprd'] == "w") {
        $yy = date("Y");
        $mm = $MON;
        $mm += 0;
        $Sl = "SELECT * FROM salpaid WHERE empnum='{$empnum}' AND month='{$mm}' AND week='{$week}' AND cyear='" . EMP_YEAR . "'";
        $Ri = db_exec($Sl);
        $paid = pg_num_rows($Ri);
        $Sl = "SELECT * FROM salr WHERE empnum='{$empnum}' AND month='{$mm}' AND week='{$week}' AND cyear='" . EMP_YEAR . "'";
        $Ri = db_exec($Sl);
        $upaid = pg_num_rows($Ri);
        $upaid += 0;
        $paid -= $upaid;
    } else {
        if ($myEmp['payprd'] == "f") {
            $yy = date("Y");
            $mm = $MON;
            $mm += 0;
            $Sl = "SELECT * FROM salpaid WHERE empnum='{$empnum}' AND month='{$mm}' AND week='{$week}' AND cyear='" . EMP_YEAR . "'";
            $Ri = db_exec($Sl);
            $paid = pg_num_rows($Ri);
            $Sl = "SELECT * FROM salr WHERE empnum='{$empnum}' AND month='{$mm}' AND week='{$week}' AND cyear='" . EMP_YEAR . "'";
            $Ri = db_exec($Sl);
            $upaid = pg_num_rows($Ri);
            $upaid += 0;
            $paid -= $upaid;
        }
    }
    if (isset($paid) && $paid > 0) {
        return process($_POST, "<li class='err'>You have already processed a salary for that period.</li>");
    }
    $salconacc = gethook("accnum", "salacc", "name", "salaries control");
    $salconacc_orig = gethook("accnum", "salacc", "name", "salaries control original");
    if ($salconacc != $salconacc_orig) {
        block_check($salconacc);
    }
    block_check($uifbal = gethook("accnum", "salacc", "name", "uifbal"));
    block_check($intrec = gethook("accnum", "salacc", "name", "interestreceived"));
    block_check($sdlbal = gethook("accnum", "salacc", "name", "sdlbal"));
    block_check($pa = gethook("accnum", "salacc", "name", "pension"));
    block_check($ma = gethook("accnum", "salacc", "name", "medical"));
    block_check($cash_account = gethook("accnum", "salacc", "name", "cash"));
    block_check($retire = gethook("accnum", "salacc", "name", "retire"));
    block_check($provident = gethook("accnum", "salacc", "name", "provident"));
    block_check($commacc = gethook("accnum", "salacc", "name", "Commission"));
    block_check($abonusacc = gethook("accnum", "salacc", "name", "Bonus"));
    block_check($payeacc = gethook("accnum", "salacc", "name", "PAYE"));
    block_check($uifacc = gethook("accnum", "salacc", "name", "UIF"));
    block_check($providente = $myEmp["expacc_provident"]);
    block_check($retiree = $myEmp["expacc_ret"]);
    block_check($pax = $myEmp["expacc_pension"]);
    block_check($uifexp = $myEmp["expacc_uif"]);
    block_check($max = $myEmp["expacc_medical"]);
    block_check($dedgenerale = $myEmp["expacc_other"]);
    block_check($sdlexp = $myEmp["expacc_sdl"]);
    block_check($salacc = $myEmp["expacc_salwages"]);
    block_check($reimbursexp = $myEmp["expacc_reimburs"]);
    if (($loanexp = $myEmp["expacc_loan"]) > 0) {
        block_check($loanexp);
    }
    if (isset($allowaccs)) {
        foreach ($allowaccs as $checkacc) {
            block_check($checkacc);
        }
    }
    if (isset($dedaccs)) {
        foreach ($dedaccs as $k => $checkacc) {
            block_check($checkacc);
        }
    }
    finish_block_check();
    /* check if hire date before pay date */
    explodeDate($myEmp["hiredate"], $hd_year, $hd_month, $hd_day);
    $MONempyear = getYearOfEmpMon($MON);
    switch ($myEmp["payprd"]) {
        case "m":
            $extra = false;
            break;
        case "d":
            $extra = $hd_year == $MONempyear && $hd_month == $MON && $pday < $hd_day;
            break;
        case "w":
        case "f":
            $extra = $hd_year == $MONempyear && $hd_month == $MON && $weekends[$week] < $hd_day;
            break;
    }
    if ($hd_year > $MONempyear || $hd_year == $MONempyear && $hd_month > $MON || $extra) {
        return process($_POST, "<li class='err'>Employee was not employed in the period\n\t\t\trequested.</li>");
    }
    # The Paye
    $tyear = 12;
    switch ($myEmp["payprd"]) {
        case 'm':
            $tyear = 12;
            break;
        case 'w':
            $tyear = 52;
            break;
        case 'f':
            $tyear = 26;
            break;
        case 'd':
            $tyear = 5 * 52;
            break;
    }
    if ($myEmp["saltyp"] != "h") {
        if ($myEmp["saltyp"] == "w") {
            $perhr = sprint($basic_sal / $wh_actual);
        } else {
            $perhr = sprint($basic_sal * $tyear / ($myEmp['hpweek'] * 52));
        }
    } else {
        $perhr = $basic_sal;
    }
    $overamt = $novert * ($perhr * $myEmp['novert']);
    $overamt += $hovert * ($perhr * $myEmp['hovert']);
    $overamt = sprint($overamt);
    # Multiply basic_sal add overtime
    if (isset($multi)) {
        $basic_sal = sprint($basic_sal * $multi);
        //$tyear = ($tyear/$multi);
    } else {
        $basic_sal = $basic_sal;
    }
    # Zero if not specified
    $commission = $commission + 0;
    $loaninstall = $loaninstall + 0;
    //$basic_sal=$basic_sal+$commission;
    $all_before = "";
    $all_after = "";
    $all_beforeamount = 0;
    $all_afteramount = 0;
    if (isset($allowtax)) {
        foreach ($allowtax as $key => $perc) {
            if ($perc == "Yes" and $allowances[$key] > 0) {
                $all_before .= "<tr class='" . bg_class() . "'><td>{$allowname[$key]}</td><td>" . CUR . " {$allowances[$key]}</td></tr>";
                $all_beforeamount = $all_beforeamount + $allowances[$key];
            } elseif ($allowances[$key] > 0) {
                $all_after .= "<tr class='" . bg_class() . "'><td>{$allowname[$key]}</td><td>" . CUR . " {$allowances[$key]}</td></tr>";
                $all_afteramount = $all_afteramount + $allowances[$key];
            }
        }
    }
    $subsistence = "";
    $subs_taxable = 0;
    $subs_total = 0;
    $i = 0;
    if (isset($subsname)) {
        if (isset($subs_exch) && $subs_exch == 0) {
            $subs_exch = 1;
        }
        foreach ($subsname as $sid => $sn) {
            if ($subsrep[$sid] == "yes") {
                //2012
                $nontax = $subsdays[$sid] * ($subsmeal[$sid] == "yes" ? 303 : 93);
                $subs_total += $subsamt[$sid];
            } else {
                //2012
                //TODO
                // outside republic, 215 dollars
                $nontax = $subsdays[$sid] * (215 / $subs_exch);
                $subs_total += $subsamt[$sid] * $subs_exch;
            }
            $tmp = $subsamt[$sid] - $nontax;
            if ($tmp > 0) {
                $subs_taxable += $tmp / $divisor;
            }
            $subsistence .= "\n\t\t\t\t<input type='hidden' name='subsname[{$sid}]' value='{$subsname[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsacc[{$sid}]' value='{$subsacc[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsamt[{$sid}]' value='{$subsamt[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsrep[{$sid}]' value='{$subsrep[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsmeal[{$sid}]' value='{$subsmeal[$sid]}'>\n\t\t\t\t<input type='hidden' name='subsdays[{$sid}]' value='{$subsdays[$sid]}'>\n\t\t\t\t<!--<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t<td>{$subsname[$sid]}</td>\n\t\t\t\t\t<td>" . CUR . " {$subsamt[$sid]}</td>\n\t\t\t\t\t<td>{$subsdays[$sid]}</td>\n\t\t\t\t</tr>-->";
        }
        if (false && !empty($subsistence)) {
            $subsistence = "\n\t\t\t<tr><td colspan='20'>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th colspan='3'>Subsistence Allowances</th>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Name</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t\t<th>Days</th>\n\t\t\t</tr>\n\t\t\t{$subsistence}\n\t\t\t</table>\n\t\t\t</td></tr>";
        }
    }
    $de_before = "";
    $de_after = "";
    $de_beforeamount = 0;
    $de_afteramount = 0;
    $de_beforeamount_emp = 0;
    $de_afteramount_emp = 0;
    if (isset($deducttax)) {
        foreach ($deducttax as $key => $perc) {
            if ($perc == "Yes" and $deductions[$key] > 0) {
                $de_before .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$deductname[$key]}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$deductions[$key]}</td>\n\t\t\t\t\t\t<!--<td>" . CUR . " {$employer_deductions[$key]}</td>//-->\n\t\t\t\t\t</tr>";
                $de_beforeamount = $de_beforeamount + $deductions[$key] + $employer_deductions[$key];
                $de_beforeamount_emp += $employer_deductions[$key];
            } elseif ($deductions[$key] > 0) {
                $de_after .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$deductname[$key]}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$deductions[$key]}</td>\n\t\t\t\t\t\t<!--<td>" . CUR . " {$employer_deductions[$key]}</td>//-->\n\t\t\t\t\t</tr>";
                $de_afteramount = $de_afteramount + $deductions[$key] + $employer_deductions[$key];
                $de_afteramount_emp += $employer_deductions[$key];
            }
        }
    }
    $de_before .= "";
    $de_after .= "";
    if ($all_beforeamount > 0) {
        $all_before = "<tr><th colspan='2'>Allowances</th></tr>" . $all_before;
    }
    if ($all_afteramount > 0) {
        $all_after = "<tr><th colspan='2'>Allowances</th></tr>" . $all_after;
    }
    if ($de_beforeamount > 0) {
        $de_before = "<tr><th colspan='2'>Deductions</th></tr>" . $de_before;
    } else {
        $de_before = "";
    }
    if ($de_afteramount > 0) {
        $de_after = "<tr><th colspan='2'>Deductions</th></tr>" . $de_after;
    } else {
        $de_after = "";
    }
    // calculate age of employee (if intl., ie has passport num only), act asif under 65
    if (!empty($myEmp["idnum"])) {
        $bd_year = 1900 + substr($myEmp["idnum"], 0, 2);
        $bd_month = substr($myEmp["idnum"], 2, 2);
        $bd_day = substr($myEmp["idnum"], 4, 2);
        /* get the current financial year */
        db_conn("core");
        $sql = "SELECT yrname FROM active";
        $rslt = db_exec($sql) or errDie("Error fetching financial year.");
        if (pg_num_rows($rslt) < 1) {
            return "Please run quick setup first.";
        }
        $fin_year = substr(pg_fetch_result($rslt, 0, 0), 1);
        if (!checkdate($bd_month, $bd_day, $bd_year)) {
            return "<li class='err'>Please <a href='../admin-employee-edit.php?empnum={$myEmp['empnum']}'>change</a> employees ID Number to valid ID Number</li>" . process($_POST);
        }
        $sql = "SELECT EXTRACT('year' FROM AGE('{$fin_year}-02-28', '{$bd_year}-{$bd_month}-{$bd_day}'))";
        $rslt = db_exec($sql) or errDie("Error calculating age at financial year end.");
        $age = pg_fetch_result($rslt, 0, 0);
    } else {
        $age = 1;
    }
    // calculate loan fringe benefit amount for this month
    if (!empty($myEmp["loanamt"]) && $myEmp["gotloan"] == "t" && $myEmp["loanamt"] > 0) {
        $loanpart = $loaninstall / $myEmp["loanamt"];
        $fringe_loan = sprint($myEmp["loanfringe"] * $loanpart);
    } else {
        $fringe_loan = "0.00";
    }
    payedbg("sal/annum: {$myEmp['basic_sal_annum']}<br />", false);
    payedbg("divisor: {$divisor}<br />", false);
    //2012
    // calculate motor car fringe benefit
    if ($myEmp["fringe_car1"] > 0) {
        $deduct_perc = 0;
        // Employee has travel allowance?
        if ($myEmp["all_travel"] > 0) {
            $deduct_perc = 0.0325;
        } else {
            $deduct_perc = 0.035;
        }
        $fringe_car1 = $myEmp["fringe_car1"] * $deduct_perc;
    }
    // Second fringe car will always be 3.25%
    if ($myEmp["fringe_car2"] > 0) {
        $fringe_car2 = $myEmp["fringe_car2"] * 0.0325;
    }
    $fringe_car1 = sprint($fringe_car1);
    $fringe_car2 = sprint($fringe_car2);
    payedbg("fringe_car1: {$fringe_car1}<br />", false);
    payedbg("fringe_car2: {$fringe_car2}<br />", false);
    // calc medical fringe benefits
    if ($comp_medical > 0) {
        // calculate dependants after first one
        $tmp_deps = $myEmp["emp_meddeps"] - 2;
        if ($tmp_deps < 0) {
            $tmp_deps = 0;
        }
        //2009
        // calculate paragraph 12A amount
        //first 2 dependants are 530 each (1060) rest is 320 each.
        //$p12A_amt = ($myEmp["emp_meddeps"] > 1 ? 1060 : 530) + ($tmp_deps * 320);
        //2010
        // calculate paragraph 12A amount
        //first 2 dependants are 625 each (1250) rest is 380 each.
        //$p12A_amt = ($myEmp["emp_meddeps"] > 1 ? 1250 : 625) + ($tmp_deps * 380);
        //2011
        // calculate paragraph 12A amount
        //first 2 dependants are 670 each (1340) rest is 410 each.
        //$p12A_amt = ($myEmp["emp_meddeps"] > 1 ? 1340 : 820) + ($tmp_deps * 410);
        //2012
        // calculate paragraph 12A amount
        //first 2 dependants are 230 each (460) rest is 154 each.
        $p12A_amt = ($myEmp["emp_meddeps"] > 1 ? 460 : 230) + $tmp_deps * 154;
        // calculate taxable fringe benefit amount
        $fringe_medical = sprint($comp_medical - $p12A_amt / $divisor);
        if ($fringe_medical < 0) {
            $fringe_medical = 0;
        }
    } else {
        $fringe_medical = 0;
    }
    payedbg("medical fringe: {$fringe_medical}<br />", false);
    // calculate total fringe benefits
    $tot_fringe = $fringe_medical + $fringe_car1 + $fringe_car2 + $fringe_loan + $comp_other + $comp_ret + $de_beforeamount_emp + $de_afteramount_emp + $subs_taxable;
    // subsistance
    if (isset($fringeid)) {
        foreach ($fringeid as $key => $value) {
            $fringebens[$key] = sprint($fringebens[$key]);
            $tot_fringe += $fringebens[$key];
        }
    }
    vsprint($tot_fringe);
    payedbg("total fringe: {$tot_fringe}<br />", false);
    if ($emp_pension > $basic_sal * 7.5 / 100) {
        $emp_mpension = $basic_sal * 7.5 / 100;
    } else {
        $emp_mpension = $emp_pension;
    }
    $max_ret = $myEmp["basic_sal_annum"] * 7.5 / 100 > 1750 ? $myEmp["basic_sal_annum"] * 7.5 / 100 : 1750;
    // calculate total gross salary
    $grossal = $basic_sal + $commission + $abonus + $overamt + $bonus + $annual + $all_beforeamount + $all_travel * 0.8 - $de_beforeamount;
    // deductions deducted before paye (non taxible)
    $grossal_2 = $grossal;
    $taxed_all = $all_afteramount + $all_travel * 0.8;
    $grossal_nodedall = $basic_sal + $overamt + $bonus + $annual + $all_travel;
    #UIF HAX
    $uif_grosssal = $grossal;
    // pension/provident/ra: calculate deduction amounts, limiting them to maximum amount and only deducting
    // ONE of them for taxable income
    if ($comp_pension + $emp_pension > 0) {
        $tmp = ($grossal_2 + $tot_fringe) * $tyear;
        $maxallowed = $tmp * 0.075 > 1750 ? $tmp * 0.075 : 1750;
        if ($emp_mpension > $maxallowed) {
            $tmp_ded = $maxallowed;
        } else {
            $tmp_ded = $emp_mpension;
        }
        $grossal -= $tmp_ded;
        payedbg("pension maxded (-gross): {$tmp_ded}<br />", false);
    }
    if ($comp_ret + $emp_ret > 0) {
        $tmp = ($grossal_2 + $tot_fringe) * $tyear;
        // if their is a pension contributions the percentage is 0
        if ($comp_pension + $emp_pension + $comp_provident + $emp_provident > 0) {
            $PERC = 0;
        } else {
            $PERC = 0.15;
        }
        $maxallowed = $tmp * $PERC > 1750 ? $tmp * $PERC : 1750;
        $maxallowed = $maxallowed > 3500 - $emp_pension * $divisor * 12 ? $maxallowed : 3500 - $emp_pension * 12;
        if (($emp_ret + $comp_ret) * $divisor > $maxallowed / 12) {
            $tmp_ded = $maxallowed / 12 / $divisor;
        } else {
            $tmp_ded = $emp_ret + $comp_ret;
        }
        $grossal -= $tmp_ded;
        payedbg("retfund maxded (-gross): {$tmp_ded}<br />", false);
    }
    // calculate total paye salary
    // just remove annual this month, and add annual divided by 12
    // because paye is calculate for full twelve months and therefore
    // paye salary is average received each month
    $paye_salary = $grossal - $annual + $tot_fringe;
    // total fringe benefits;
    //print "--------- $uif_grossal - $annual + $tot_fringe;----------<br>";
    #UIF HAX
    $uif_paye_salary = $uif_grosssal - $annual + $tot_fringe;
    /* calculate uif */
    $tmp_remun = $paye_salary + $annual - $commission - $abonus;
    #UIF HAX
    $uif_tmp_remun = $uif_paye_salary + $annual - $commission - $abonus;
    //	$comp_uif = sprint($tmp_remun * ($myEmp["comp_uif"] / 100));
    //	$emp_uif = sprint($tmp_remun * ($myEmp["emp_uif"] / 100));
    #UIF HAX
    $comp_uif = sprint($uif_tmp_remun * ($myEmp["comp_uif"] / 100));
    $emp_uif = sprint($uif_tmp_remun * ($myEmp["emp_uif"] / 100));
    $uifmax = getCSetting("UIF_MAX");
    if ($emp_uif > $uifmax) {
        $emp_uif = sprint($uifmax);
    }
    if ($comp_uif > $uifmax) {
        $comp_uif = sprint($uifmax);
    }
    /* calculate sdl */
    $tmp_remun = $paye_salary + $annual;
    if (getCSetting("SDLPAYABLE") == "y") {
        $tmp_sdl = $tmp_remun;
        if ($age > 65) {
            $tmp_sdl -= $comp_medical;
        }
        $comp_sdl = $tmp_sdl * ($myEmp["comp_sdl"] / 100);
    } else {
        $comp_sdl = 0;
    }
    // a little hack, apparently the grossal is displayed wrong, in a strictly opinion based evodamion
    $grossal += $comp_ret;
    // add rest of travel allowance
    $grossal += $all_travel * 0.2;
    if (isset($mpaye)) {
        $paye = $mpaye_amount;
    } else {
        // calculate paye (take age of 65+ threshold into account)
        //2008
        //		if ( ($age >= 65 && ($paye_salary * $tyear) < 69000) || ($paye_salary * $tyear) < 43000 ) {
        //2009
        // 		if ( ($age >= 65 && ($paye_salary * $tyear) < 74000) || ($paye_salary * $tyear) < 46000 ) {
        //2010
        // 		if ( ($age >= 65 && ($paye_salary * $tyear) < 84200) || ($paye_salary * $tyear) < 54200 ) {
        //2011
        //		if ( ($age >= 65 && ($paye_salary * $tyear) < 88528) || ($paye_salary * $tyear) < 57000 ) {
        //2012
        if ($age >= 65 && $age < 75 && $paye_salary * $tyear < 99056 || $age >= 75 && $paye_salary * $tyear < 110889 || $paye_salary * $tyear < 63556) {
            $paye = "0.00";
        } else {
            if ($myEmp["payprd"] == "w" || $myEmp["payprd"] == "f") {
                $paye_prd = "{$MON}:{$week}";
            } else {
                if ($myEmp["payprd"] == "d") {
                    $paye_prd = "{$MON}:{$pday}";
                } else {
                    $paye_prd = "{$MON}";
                }
            }
            payedbg("paye salary: {$paye_salary}<br />", false);
            $paye = calculate_paye($myEmp, $paye_prd, $paye_salary, $tyear, $age);
            if ($annual > 0) {
                $tmp_bonpaye = calculate_paye($myEmp, $paye_prd, $paye_salary + $annual / 12, $tyear, $age);
                $paye += $tmp_bonpaye * $tyear - $paye * $tyear;
            }
        }
    }
    // fringe benefits
    $i = 0;
    $fringes = "";
    $fringes_desc = "";
    if (isset($fringebens)) {
        foreach ($fringebens as $key => $value) {
            if ($fringebens[$key] > 0) {
                $fringes_desc .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$fringename[$key]}</td>\n\t\t\t\t\t<td>" . CUR . " {$fringebens[$key]}</td>\n\t\t\t\t</tr>";
                $fringes .= "\n\t\t\t\t\t<input type='hidden' name='fringebens[]' value='{$fringebens[$key]}'>\n\t\t\t\t\t<input type='hidden' name='fringeid[]' value='{$fringeid[$key]}'>\n\t\t\t\t\t<input type='hidden' name='fringename[]' value='{$fringename[$key]}'>\n\t\t\t\t\t<input type='hidden' name='fringeaccs[]' value='{$fringeaccs[$key]}'>";
            }
        }
    }
    if (!empty($fringes_desc)) {
        $fringes_desc = "<tr><th colspan='2'>Fringe Benefits</th></tr>{$fringes_desc}";
    }
    $allow = "";
    # Get allowances names and value from array
    if (isset($allowances)) {
        foreach ($allowances as $key => $value) {
            if ($allowances[$key] > 0) {
                $allow .= "\n\t\t\t\t\t<input type='hidden' size='10' name='allowname[]' value='{$allowname[$key]}'>\n\t\t\t\t\t<input type='hidden' size='10' name='allowid[]' value='{$allowid[$key]}'>\n\t\t\t\t\t<input type='hidden' size='10' name='allowances[]' value='{$allowances[$key]}'>\n\t\t\t\t\t<input type='hidden' size='10' name='allowtax[]' value='{$allowtax[$key]}'>\n\t\t\t\t\t<input type='hidden' name='allowaccs[]' value='{$allowaccs[$key]}'>";
            }
        }
    }
    $deduct = "";
    if (isset($deductions)) {
        foreach ($deductions as $key => $value) {
            if ($deductions[$key] > 0) {
                $deduct .= "\n\t\t\t\t\t<input type='hidden' size='10' name='deductname[]' value='{$deductname[$key]}'>\n\t\t\t\t\t<input type='hidden' size='10' name='deductid[]' value='{$deductid[$key]}'>\n\t\t\t\t\t<input type='hidden' size='10' name='deductions[]' value='{$deductions[$key]}'>\n\t\t\t\t\t<input type='hidden' size='10' name='employer_deductions[]' value='{$employer_deductions[$key]}'>\n\t\t\t\t\t<input type='hidden' size='10' name='deducttax[]' value='{$deducttax[$key]}'>\n\t\t\t\t\t<input type='hidden' name='dedaccs[]' value='{$dedaccs[$key]}'>";
            }
        }
    }
    $nonretfunding = $basic_sal - $paye - $loaninstall - $de_afteramount + $de_afteramount_emp + $all_afteramount - $emp_pension - $emp_medical - $emp_uif - $emp_provident;
    /*$ret_max = (1800>($nonretfunding*0.15)) ? 1800 : ($nonretfunding*0.15);
    
    	if ( $comp_ret + $emp_ret > $ret_max ) {
    		$comp_ret = $ret_max - $emp_ret;
    
    		if ( $comp_ret < 0 ) {
    			$comp_ret = 0;
    			$emp_ret = $ret_max;
    		}
    	}*/
    $nettpay = $basic_sal + $overamt - $paye + $commission + $abonus - $loaninstall - $de_beforeamount - $de_afteramount + $all_afteramount + $all_beforeamount - $emp_pension - $emp_medical - $emp_ret - $emp_uif - $emp_provident - $emp_other + $annual + $bonus + $all_travel - $myEmp["fringe_car1_contrib"] - $myEmp["fringe_car2_contrib"] + $subs_total;
    $nettpay = sprint($nettpay);
    if (isset($rbsa)) {
        $nettpay += array_sum($rbsa);
        $nettpay = sprint($nettpay);
    }
    $rt = "";
    db_conn("cubit");
    $Sl = "SELECT * FROM cubit.rbs ORDER BY name";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    $i = 0;
    if (pg_num_rows($Ri) > 0) {
        while ($td = pg_fetch_array($Ri)) {
            if (!isset($rbsa[$td['id']]) || $rbsa[$td['id']] < 1) {
                continue;
            }
            $rbsa[$td['id']] = sprint($rbsa[$td['id']]);
            if ($i == 0) {
                $rt = "<tr><th colspan=2>Reimbursements</th></tr>";
            }
            $rt .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td><input type='hidden' name='rbs[{$td['id']}]' value='{$td['id']}'>{$td['name']}</td>\n\t\t\t\t\t<td>" . CUR . " <input type='hidden' name='rbsa[{$td['id']}]' value='" . $rbsa[$td['id']] . "'>" . $rbsa[$td['id']] . "</td>\n\t\t\t\t</tr>";
            $i++;
        }
    } else {
        $rt .= "<tr class='" . bg_class() . "'><td colspan='2'>There are no reimbursements</td></tr>";
    }
    db_conn("cubit");
    # Get bank account name
    $sql = "SELECT * FROM bankacct WHERE bankid = '{$accid}' AND div = '" . USER_DIV . "'";
    $bankRslt = db_exec($sql);
    $bank = pg_fetch_array($bankRslt);
    $basic_sal = sprint($basic_sal);
    $commission = sprint($commission);
    $abonus = sprint($abonus);
    $overamt = sprint($overamt);
    $paye = sprint($paye);
    $nettpay = sprint($nettpay);
    if ($myEmp['paytype'] == "Cash") {
        $paydetails = "<tr class='" . bg_class() . "'><td colspan=2>Pay Salary Cash</td></tr>";
    } else {
        $paydetails = "<tr class='" . bg_class() . "'><td>Bank Account</td><td>{$bank['accname']}</td></tr>";
    }
    vsprint($bonus);
    vsprint($annual);
    vsprint($comp_pension);
    vsprint($emp_medical);
    vsprint($comp_medical);
    vsprint($comp_ret);
    vsprint($emp_ret);
    vsprint($loaninstall);
    vsprint($emp_pension);
    vsprint($fringe_medical);
    if (!isset($account)) {
        $account = 0;
    } else {
        db_conn('core');
        $Sl = "SELECT * FROM accounts WHERE accid='{$account}'";
        $Ri = db_exec($Sl);
        $ad = pg_fetch_array($Ri);
        $paydetails = "<tr class='" . bg_class() . "'><td>Ledger Account</td><td>{$ad['accname']}</td></tr>";
    }
    if ($myEmp['payprd'] == "w") {
        $row = "\n\t\t\t<tr class='" . bg_class() . "'><td>Period</td><td>{$week}</td></tr>\n\t\t\t<input type='hidden' name='week' value='{$week}'>\n\t\t\t<input type='hidden' name='pday' value='0' />";
    } else {
        if ($myEmp['payprd'] == "f") {
            $row = "\n\t\t\t<tr class='" . bg_class() . "'><td>Period</td><td>{$week}</td></tr>\n\t\t\t<input type='hidden' name='week' value='{$week}'>\n\t\t\t<input type='hidden' name='pday' value='0' />";
        } else {
            if ($myEmp["payprd"] == "d") {
                $row = "\n\t\t\t<tr class='" . bg_class() . "'><td>Day of Payment</td><td>{$pday}</td></tr>\n\t\t\t<input type='hidden' name='week' value='0'>\n\t\t\t<input type='hidden' name='pday' value='{$pday}' />";
            } else {
                $row = "\n\t\t\t<input type='hidden' name='week' value='0'>\n\t\t\t<input type='hidden' name='pday' value='0' />";
            }
        }
    }
    $grossal = sprint($grossal);
    $OUTPUT = "\n\t    <form action='" . SELF . "' method='POST'>\n\t    <table " . TMPL_tblDflts . " width='300'>\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'><input type='submit' value='Write &raquo;'></td>\n\t\t\t</tr>\n\t\t\t<input type='hidden' name='proc_day' value='{$day}' />\n\t\t\t<input type='hidden' name='proc_month' value='{$mon}' />\n\t\t\t<input type='hidden' name='proc_year' value='{$year}' />\n\t\t\t<input type='hidden' name='key' value='pack'>\n\t\t\t<input type='hidden' name='grossal' value='{$grossal}'>\n\t\t\t<input type='hidden' name='grossal_nodedall' value='{$grossal_nodedall}'>\n\t\t\t<input type='hidden' name='empnum' value='{$empnum}'>\n\t\t\t<input type='hidden' name='account' value='{$account}'>\n\t\t\t<input type='hidden' name='MON' value={$MON}>\n\t\t\t<input type='hidden' name='basic_sal' value='{$basic_sal_save}'>\n\t\t\t<input type='hidden' name='multi' value='{$multi}'>\n\t\t\t<input type='hidden' name='tyear' value='{$tyear}'>\n\t\t\t<input type='hidden' name='commission' value='{$commission}'>\n\t\t\t<input type='hidden' name='abonus' value='{$abonus}'>\n\t\t\t<input type='hidden' name='overamt' value='{$overamt}'>\n\t\t\t<input type='hidden' name='loaninstall' value='{$loaninstall}'>\n\t\t\t<input type='hidden' name='paye' value='{$paye}'>\n\t\t\t<input type='hidden' name='accid' value='{$accid}'>\n\t\t\t<input type='hidden' name='income' value='{$nettpay}'>\n\t\t\t<input type='hidden' name='bonus' value='{$bonus}'>\n\t\t\t<input type='hidden' name='all_travel' value='{$all_travel}'>\n\t\t\t<input type='hidden' name='comp_pension' value='{$comp_pension}'>\n\t\t\t<input type='hidden' name='emp_pension' value='{$emp_pension}'>\n\t\t\t<input type='hidden' name='comp_medical' value='{$comp_medical}'>\n\t\t\t<input type='hidden' name='emp_medical' value='{$emp_medical}'>\n\t\t\t<input type='hidden' name='comp_ret' value='{$comp_ret}'>\n\t\t\t<input type='hidden' name='emp_ret' value='{$emp_ret}'>\n\t\t\t<input type='hidden' name='comp_uif' value='{$comp_uif}'>\n\t\t\t<input type='hidden' name='emp_uif' value='{$emp_uif}'>\n\t\t\t<input type='hidden' name='comp_sdl' value='{$comp_sdl}'>\n\t\t\t<input type='hidden' name='comp_other' value='{$comp_other}'>\n\t\t\t<input type='hidden' name='emp_other' value='{$emp_other}'>\n\t\t\t<input type='hidden' name='comp_provident' value='{$comp_provident}'>\n\t\t\t<input type='hidden' name='emp_provident' value='{$emp_provident}'>\n\t\t\t<input type='hidden' name='paye_salary' value='{$paye_salary}'>\n\t\t\t<input type='hidden' name='day' value='{$day}'>\n\t\t\t<input type='hidden' name='mon' value='{$mon}'>\n\t\t\t<input type='hidden' name='year' value='{$year}'>\n\t\t\t<input type='hidden' name='novert' value='{$novert}'>\n\t\t\t<input type='hidden' name='hovert' value='{$hovert}'>\n\t\t\t<input type='hidden' name='annual' value='{$annual}'>\n\t\t\t<input type='hidden' name='week' value='{$week}'>\n\t\t\t<input type='hidden' name='fringe_medical' value='{$fringe_medical}'>\n\t\t\t<input type='hidden' name='fringe_tot' value='{$tot_fringe}'>\n\t\t\t<input type='hidden' name='fringe_car1' value='{$fringe_car1}'>\n\t\t\t<input type='hidden' name='fringe_car2' value='{$fringe_car2}'>\n\t\t\t<input type='hidden' name='fringe_loan' value='{$fringe_loan}'>\n\t\t\t<input type='hidden' name='process_comp_deductions' value='{$process_comp_deductions}'>\n\t\t\t<input type='hidden' name='taxed_all' value='{$taxed_all}' />\n\t\t\t<input type='hidden' name='printslip' value='{$printslip}' />\n\t\t\t" . (isset($subs_exch) ? "<input type='hidden' name='subs_exch' value='{$subs_exch}'>" : "") . "\n\t\t\t{$fringes}\n\t\t\t{$allow}\n\t\t\t{$deduct}\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>Salary Details</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Basic salary</td>\n\t\t\t\t<td>" . CUR . " {$basic_sal}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Annual Bonus</td>\n\t\t\t\t<!--<td>Special Bonus/Additional Salary</td>-->\n\t\t\t\t<td>" . CUR . " {$abonus}</td>\n\t\t\t</tr>\n\t\t\t<!--<tr class='bg-odd'>\n\t\t\t\t<td>Bonus(Annual Payments)</td>\n\t\t\t\t<td>" . CUR . " {$annual}</td>\n\t\t\t</tr>-->\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Commission</td>\n\t\t\t\t<td>" . CUR . " {$commission}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Travel Allowance</td>\n\t\t\t\t<td>" . CUR . " {$all_travel}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Pension: Company Contribution</td>\n\t\t\t\t<td>" . CUR . " {$comp_pension}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Pension: Employee Deduction</td>\n\t\t\t\t<td>" . CUR . " {$emp_pension}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Provident Fund: Company Contribution</td>\n\t\t\t\t<td>" . CUR . " {$comp_provident}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Provident Fund: Employee Deduction</td>\n\t\t\t\t<td>" . CUR . " {$emp_provident}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>UIF: Company Contribution</td>\n\t\t\t\t<td>" . CUR . " {$comp_uif}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>UIF: Employee Deduction</td>\n\t\t\t\t<td>" . CUR . " {$emp_uif}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Retirement Annuity: Company Contribution</td>\n\t\t\t\t<td>" . CUR . " {$comp_ret}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Retirement Annuity: Employee Deduction</td>\n\t\t\t\t<td>" . CUR . " {$emp_ret}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Medical Contribution: Company</td>\n\t\t\t\t<td>" . CUR . " {$comp_medical}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Medical Contribution: Employee</td>\n\t\t\t\t<td>" . CUR . " {$emp_medical}</td>\n\t\t\t</tr>\n\t\t\t<br />\n\t\t\t<!--\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Other: Company Contribution</td>\n\t\t\t\t<td>" . CUR . " {$comp_other}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Other: Employee Deduction</td>\n\t\t\t\t<td>" . CUR . " {$emp_other}</td>\n\t\t\t</tr>\n\t\t\t//-->\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Overtime</td>\n\t\t\t\t<td>" . CUR . " {$overamt}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Medical Fringe Benefit</td>\n\t\t\t\t<td>" . CUR . " {$fringe_medical}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Motorcar 1 Fringe Benefit</td>\n\t\t\t\t<td>" . CUR . " {$fringe_car1}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Motorcar 1 Contribution for Use</td>\n\t\t\t\t<td>" . CUR . " {$myEmp['fringe_car1_contrib']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Motorcar 2 Fringe Benefit</td>\n\t\t\t\t<td>" . CUR . " {$fringe_car2}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Motorcar 2 Contribution for Use</td>\n\t\t\t\t<td>" . CUR . " {$myEmp['fringe_car2_contrib']}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Loan Interest Fringe Benefit</td>\n\t\t\t\t<td>" . CUR . " {$fringe_loan}</td>\n\t\t\t</tr>\n\t\t\t{$fringes_desc}\n\t\t\t{$all_before}\n\t\t\t{$de_before}\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>Gross Salary</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Gross Salary</td>\n\t\t\t\t<td>" . CUR . " {$grossal}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>SITE/PAYE</td>\n\t\t\t\t<td>" . CUR . " {$paye}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>Loans</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Loan Instalment</td>\n\t\t\t\t<td>" . CUR . " {$loaninstall}</td>\n\t\t\t</tr>\n\t\t\t{$all_after}\n\t\t\t{$subsistence}\n\t\t\t{$de_after}\n\t\t\t<tr>\n\t\t\t\t<th colspan='2'>Nett Pay</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Nett Pay + Reimbursements</td>\n\t\t\t\t<td>" . CUR . " {$nettpay}</td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Amount Paid now</td>\n\t\t\t\t<td><input type='text' size='10' name='paidamount' value='0'></td>\n\t\t\t</tr>\n\t\t\t{$paydetails}\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Date</td>\n\t\t\t\t<td>{$date}</td>\n\t\t\t</tr>\n\t\t\t{$row}\n\t\t\t{$rt}\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'><input type='submit' value='Write &raquo;'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>";
    return $OUTPUT;
}
function confirm($_POST)
{
    $showvat = TRUE;
    # get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    $v->isOk($comm, "string", 0, 255, "Invalid Comments.");
    $v->isOk($terms, "num", 1, 20, "Invalid terms.");
    $v->isOk($o_day, "num", 1, 2, "Invalid Invoice Date day.");
    $v->isOk($o_month, "num", 1, 2, "Invalid Invoice Date month.");
    $v->isOk($o_year, "num", 1, 5, "Invalid Invoice Date year.");
    $odate = mkdate($o_year, $o_month, $o_day);
    $v->isOk($odate, "date", 1, 1, "Invalid Invoice Date.");
    $v->isOk($traddisc, "float", 0, 20, "Invalid Trade Discount.");
    $v->isOk($delchrg, "float", 0, 20, "Invalid Delivery Charge.");
    if ($delchrg > $dct) {
        $v->isOk($delchrg, "float", 0, 0, "Error : Delivery Charge amount must not be more than the amount in the Invoice.");
    }
    # Used to generate errors
    $error = "asa@";
    # Check quantities
    if (isset($qtys)) {
        foreach ($qtys as $keys => $qty) {
            if ($qtys[$keys] > $qts[$keys]) {
                $v->isOk($qty, "float", 0, 0, "The Returned Quantity cannot be more than the quantity sold.");
            }
            $v->isOk($qty, "float", 1, 15, "Invalid Returned Quantity.");
            $v->isOk($disc[$keys], "float", 0, 20, "Invalid Discount.");
            $v->isOk($discp[$keys], "float", 0, 20, "Invalid Discount Percentage.");
        }
    } else {
        $v->isOk($error, "num", 0, 1, "Invalid Returned Quantity.");
    }
    # check stkids
    if (isset($stkids)) {
        foreach ($stkids as $keys => $stkid) {
            $v->isOk($stkid, "num", 1, 10, "Invalid Stock number, please enter all details.");
        }
    } else {
        $v->isOk($error, "num", 0, 1, "Invalid Stock number, please enter all details.");
    }
    # 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 details($_POST, $err);
    }
    # CHECK IF THIS DATE IS IN THE BLOCKED RANGE
    $blocked_date_from = getCSetting("BLOCKED_FROM");
    $blocked_date_to = getCSetting("BLOCKED_TO");
    if (strtotime($odate) >= strtotime($blocked_date_from) and strtotime($odate) <= 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>";
    }
    # 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 "<i class='err'>Not Found</i>";
    }
    $inv = pg_fetch_array($invRslt);
    # Keep the charge vat option stable
    if ($inv['chrgvat'] == "inc") {
        $vchrgvat = "Yes";
    } elseif ($inv['chrgvat'] == "exc") {
        $vchrgvat = "No";
    } else {
        $vchrgvat = "Non VAT";
    }
    /* --- 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>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>SERIAL NO.</TH>\n\t\t\t\t<th>QTY RETURNED</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<tr>";
    $vatamount = 0;
    $c = 0;
    $taxex = 0;
    $ai = 0;
    foreach ($qtys as $keys => $value) {
        if ($qtys[$keys] > 0) {
            db_connect();
            # 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);
            # get selected stock in this invoice
            $sql = "SELECT * FROM inv_items  WHERE id = '{$ids[$keys]}' AND invid ='{$invid}' AND div = '" . USER_DIV . "'";
            $stkdRslt = db_exec($sql);
            $stkd = pg_fetch_array($stkdRslt);
            if ($stkd['account'] == 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);
                # Calculate the Discount discount
                if ($disc[$keys] < 1) {
                    if ($discp[$keys] > 0) {
                        $disc[$keys] = $discp[$keys] / 100 * $stkd['unitcost'];
                    }
                } else {
                    $discp[$keys] = $disc[$keys] * 100 / $stkd['unitcost'];
                }
                # Calculate amount
                $amt[$keys] = $qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]);
                db_connect();
                $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 (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
                    $showvat = FALSE;
                }
                if ($stk['exvat'] == 'yes' || $vd['zero'] == "Yes") {
                    $excluding = "y";
                } else {
                    $excluding = "";
                }
                $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];
                }
                if (!isset($sers[$stk['stkid']][$keys])) {
                    $sers[$stk['stkid']][$keys] = "";
                }
                $serial = $sers[$stk['stkid']][$keys];
                if (!isset($sers[$stk['stkid']][$keys])) {
                    print "error";
                }
                $amt[$keys] = sprint($amt[$keys]);
                vsprint($discp[$keys]);
                # Put in product
                $products .= "\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><input type='hidden' name='ids[]' value='{$ids[$keys]}'><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='sers[{$stkd['stkid']}][]' value='{$serial}'>{$serial}</td>\n\t\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>" . sprint3($qtys[$keys]) . "</td>\n\t\t\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t\t\t<td><input type='hidden' size='4' name='disc[]' value='{$disc[$keys]}'>{$disc[$keys]} OR <input type='hidden' size='4' name='discp[]' value='{$discp[$keys]}' maxlength='5'>{$discp[$keys]}%</td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " " . sprint($amt[$keys]) . "</td>\n\t\t\t\t\t</tr>";
                $c++;
            } else {
                db_connect();
                # 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);
                # get warehouse name
                db_conn("core");
                $sql = "SELECT accname FROM accounts WHERE accid = '{$stkd['account']}'";
                $whRslt = db_exec($sql);
                $wh = pg_fetch_array($whRslt);
                $disc[$keys] = 0;
                # Calculate amount
                $amt[$keys] = sprint($qtys[$keys] * ($stkd['unitcost'] - $disc[$keys]));
                db_connect();
                $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 ($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;
                if ($stkd['account'] > 0) {
                    $wh['whname'] = "";
                    $stk['stkid'] = 0;
                    $stk['stkcod'] = $wh['accname'];
                    $stk['stkdes'] = $stkd['description'];
                }
                # Check Tax Excempt
                if ($vd['zero'] == "Yes") {
                    $taxex += $amt[$keys];
                }
                if (!isset($sers[$stk['stkid']][$keys])) {
                    $sers[$stk['stkid']][$keys] = "";
                }
                $serial = $sers[$stk['stkid']][$keys];
                if (!isset($sers[$stk['stkid']][$keys])) {
                    print "error";
                }
                # Put in product
                $products .= "\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><input type='hidden' name='ids[]' value='{$ids[$keys]}'><input type='hidden' name='stkids[]' value='{$stk['stkid']}'>{$stk['stkcod']}</td>\n\t\t\t\t\t\t<td>{$stk['stkdes']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='sers[{$stkd['stkid']}][]' value='{$serial}'>{$serial}</td>\n\t\t\t\t\t\t<td><input type='hidden' size='5' name='qtys[]' value='{$qtys[$keys]}'>" . sprint3($qtys[$keys]) . "</td>\n\t\t\t\t\t\t<td nowrap>" . CUR . " {$stkd['unitcost']}</td>\n\t\t\t\t\t\t<td><input type='hidden' size='4' name='disc[]' value='{$disc[$keys]}'>{$disc[$keys]} OR <input type='hidden' size='4' name='discp[]' value='{$discp[$keys]}' maxlength='5'>{$discp[$keys]}%</td>\n\t\t\t\t\t\t<td nowrap><input type='hidden' name='amt[]' value='{$amt[$keys]}'>" . CUR . " {$amt[$keys]}</td>\n\t\t\t\t\t</tr>";
                $c++;
            }
        }
    }
    $products .= "</table>";
    if ($c < 1) {
        $err = "<li class='err'>Please enter quantity.</li>";
        return details($_POST, $err);
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM vatcodes WHERE id='{$inv['delvat']}'";
    $Ri = db_exec($Sl);
    // 		if(pg_num_rows($Ri)>0) {
    // 			$taxex += $delchrg;
    // 		}
    $vd = pg_fetch_array($Ri);
    if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
        $showvat = FALSE;
    }
    if ($vd['zero'] == "Yes") {
        $excluding = "y";
    } else {
        $excluding = "";
    }
    $vr = vatcalc($delchrg, $inv['chrgvat'], $excluding, $inv['traddisc'], $vd['vat_amount']);
    $vrs = explode("|", $vr);
    $ivat = $vrs[0];
    $iamount = $vrs[1];
    /* --- ----------- Clac --------------------- */
    ##----------------------NEW----------------------
    $sub = 0.0;
    if (isset($amt)) {
        $sub = sprint(array_sum($amt));
    }
    $VATP = TAX_VAT;
    if ($inv['chrgvat'] == "exc") {
        $taxex = sprint($taxex - $taxex * $traddisc / 100);
        $subtotal = sprint($sub + $delchrg);
        $traddiscmt = sprint($subtotal * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        //	$VAT=sprint(($subtotal-$taxex)*$VATP/100);
        $VAT = sprint($vatamount + $ivat);
        $SUBTOT = $sub;
        $delexvat = sprint($delchrg);
        $TOTAL = sprint($subtotal + $VAT);
    } elseif ($inv['chrgvat'] == "inc") {
        $ot = $taxex;
        $taxex = sprint($taxex - $taxex * $traddisc / 100);
        $subtotal = sprint($sub + $delchrg);
        $traddiscmt = sprint($subtotal * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        //$VAT=sprint(($subtotal-$taxex)*$VATP/(100+$VATP));
        $VAT = sprint($vatamount + $ivat);
        $SUBTOT = sprint($sub);
        $TOTAL = sprint($subtotal);
        $delexvat = sprint($delchrg);
        $traddiscmt = sprint($traddiscmt);
    } else {
        $subtotal = sprint($sub + $delchrg);
        $traddiscmt = sprint($subtotal * $traddisc / 100);
        $subtotal = sprint($subtotal - $traddiscmt);
        $VAT = sprint(0);
        $SUBTOT = $sub;
        $TOTAL = $subtotal;
        $delexvat = sprint($delchrg);
    }
    /* --- ----------- Clac --------------------- */
    ##----------------------END----------------------
    /* --- ----------- Clac ---------------------
    	# calculate subtot
    	$SUBTOT = 0.00;
    	if(isset($amt))
    		$SUBTOT = array_sum($amt);
    
    	$SUBTOT -= $taxex;
    
    	# duplicate
    	$SUBTOTAL = $SUBTOT;
    
    	$VATP = TAX_VAT;
    	if($inv['chrgvat'] == "exc"){
    		$SUBTOTAL = $SUBTOTAL;
    		$delexvat= ($delchrg);
    	}elseif($inv['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($inv['chrgvat'] != "nov"){
    		$VAT = sprint($EXVATTOT * ($VATP/100));
    	}else{
    		$VAT = 0;
    	}
    
    	$TOTAL = sprint($EXVATTOT + $VAT + $taxext);
    	$SUBTOT += $taxex;
    
    /* --- ----------- Clac --------------------- */
    $traddiscmt = sprint($traddiscmt);
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    $Sl = "SELECT * FROM cubit.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\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Sales Person</td>\n\t\t\t\t<td valign='center'>{$inv['salespn']}</td>\n\t\t\t</tr>";
    } else {
        $sp = "";
    }
    /* -- Final Layout -- */
    $details = "\n\t\t<center>\n\t\t<h3>Credit Note</h3>\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='write' />\n\t\t\t<input type='hidden' name='invid' value='{$invid}' />\n\t\t\t<input type='hidden' name='o_day' value='{$o_day}' />\n\t\t\t<input type='hidden' name='o_month' value='{$o_month}' />\n\t\t\t<input type='hidden' name='o_year' value='{$o_year}' />\n\t\t\t<input type='hidden' name='tcosamt' value='{$tcosamt}' />\n\t\t\t<input type='hidden' name='odate' value='{$odate}' />\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>Department</td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['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>Customer</td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['cusname']} {$inv['surname']}</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($inv['cusaddr']) . "</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'>{$inv['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>{$inv['cusvatno']}</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 colspan='2' valign='top'>Comments</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 colspan='2' align='center'><input type='hidden' name='comm' value='{$comm}'>" . nl2br($comm) . "</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'> 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 Number</td>\n\t\t\t\t\t\t\t<td valign='center'>{$inv['invnum']}</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'>{$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'>{$vchrgvat}</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'><input type='hidden' size='7' name='terms' value='{$terms}'>{$terms} Days</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$sp}\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'>{$odate}</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='hidden' size='7' name='traddisc' value='{$traddisc}'>{$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='hidden' size='7' name='delchrg' value='{$delchrg}'>{$delchrg}</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<p>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th>Quick Links</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><a href='cust-credit-stockinv.php'>New Invoice</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='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'>\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><input type='hidden' name='SUBTOT' value='{$SUBTOT}'>" . CUR . " {$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 . " {$traddiscmt}</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 . " {$delexvat}</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><td></td></tr>\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><input type='submit' value='Write &raquo;'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>\n\t\t</center>";
    return $details;
}
function confirm($_POST)
{
    $_POST = var_makesafe($_POST);
    extract($_POST);
    if (!isset($date_day)) {
        exit;
    }
    if (isset($btn_back)) {
        header("Location: ../admin-employee-view.php?" . array2get($_POST));
        exit;
    }
    $ydate = "{$date_year}-{$date_month}-{$date_day}";
    # CHECK IF THIS DATE IS IN THE BLOCKED RANGE
    $blocked_date_from = getCSetting("BLOCKED_FROM");
    $blocked_date_to = getCSetting("BLOCKED_TO");
    if (strtotime($ydate) >= strtotime($blocked_date_from) and strtotime($ydate) <= 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>";
    }
    $week += 0;
    /* check for blocked accounts */
    $salconacc = gethook("accnum", "salacc", "name", "salaries control");
    $salconacc_orig = gethook("accnum", "salacc", "name", "salaries control original");
    if ($salconacc != $salconacc_orig) {
        block_check($salconacc);
    }
    block_check(gethook("accnum", "salacc", "name", "Commission"));
    block_check(gethook("accnum", "salacc", "name", "Bonus"));
    block_check(gethook("accnum", "salacc", "name", "interestreceived"));
    block_check(gethook("accnum", "salacc", "name", "PAYE"));
    block_check(gethook("accnum", "salacc", "name", "UIF"));
    block_check(gethook("accnum", "salacc", "name", "uifbal"));
    block_check(gethook("accnum", "salacc", "name", "sdlbal"));
    block_check(gethook("accnum", "salacc", "name", "pension"));
    block_check(gethook("accnum", "salacc", "name", "medical"));
    block_check(gethook("accnum", "salacc", "name", "cash"));
    block_check(gethook("accnum", "salacc", "name", "retire"));
    block_check(gethook("accnum", "salacc", "name", "provident"));
    global $global_empnum;
    db_conn('cubit');
    $Sl = "SELECT * FROM employees WHERE div='" . USER_DIV . "' ORDER BY sname,fnames";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    while ($data = pg_fetch_array($Ri)) {
        if (!isset($emps[$data['empnum']])) {
            continue;
        }
        $global_empnum = $id = $data["empnum"];
        $empname = "{$data['fnames']} {$data['sname']} ({$data['enum']})";
        // check for employee exp accs blocks
        block_check($data["expacc_provident"], $empname);
        block_check($data["expacc_ret"], $empname);
        block_check($data["expacc_pension"], $empname);
        block_check($data["expacc_uif"], $empname);
        block_check($data["expacc_medical"], $empname);
        block_check($data["expacc_other"], $empname);
        block_check($data["expacc_sdl"], $empname);
        block_check($data["expacc_salwages"], $empname);
        if ($data["expacc_loan"] > 0) {
            block_check($data["expacc_loan"], $empname);
        }
        if (isset($dedaccs[$id])) {
            foreach ($dedaccs[$id] as $checkacc) {
                block_check($checkacc, $empname);
            }
        }
        if (isset($allowaccs[$id])) {
            foreach ($allowaccs[$id] as $checkacc) {
                block_check($checkacc, $empname);
            }
        }
    }
    finish_block_check();
    /* check if hire date before pay date for any of the employees*/
    $sql = "SELECT * FROM employees WHERE div='" . USER_DIV . "' ORDER BY sname,fnames";
    $rslt = db_exec($sql) or errDie("Unable to get data.");
    $hderrs = array();
    while ($data = pg_fetch_array($rslt)) {
        if (!isset($emps[$data['empnum']])) {
            continue;
        }
        explodeDate($data["hiredate"], $hd_year, $hd_month, $hd_day);
        $MONempyear = getYearOfEmpMon($month);
        switch ($data["payprd"]) {
            case "m":
                $extra = false;
                break;
            case "d":
                $extra = $hd_year == $MONempyear && $hd_month == $month && $pday < $hd_day;
                break;
            case "w":
            case "f":
                $extra = $hd_year == $MONempyear && $hd_month == $month && $weekends[$week] < $hd_day;
                break;
        }
        if ($hd_year > $MONempyear || $hd_year == $MONempyear && $hd_month > $month || $extra) {
            $hderrs[] = "&nbsp; - &nbsp; {$data['sname']}, {$data['fnames']}<br />";
        }
    }
    if (count($hderrs) > 0) {
        $hderrs = "\n\t\t\t<li class='err'>\n\t\t\t\tThe following employees were not employed in the period requested.<br />\n\t\t\t\t" . implode("", $hderrs) . "\n\t\t\t</li>";
        return enter($_POST, $hderrs);
    }
    global $eMONPRD;
    $out = "\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t<input type='hidden' name='month' value='{$month}'>\n\t\t\t<input type='hidden' name='week' value='{$week}'>\n\t\t\t<input type='hidden' name='printslip' value='{$printslip}' />\n\t\t\t" . (isset($pday) ? "<input type='hidden' name='pday' value='{$pday}' />" : "") . "\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<td colspan='4' 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<td colspan='2'><h3>Processing Batch Salaries</h3></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>Salary Period:</th>\n\t\t\t\t\t\t\t<td>" . getMonthName($month) . " " . getYearOfEmpMon($month) . "</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>Processing Date:</th>\n\t\t\t\t\t\t\t<td nowrap>\n\t\t\t\t\t\t\t\t<input type='hidden' name='date_day' value='{$date_day}'> {$date_day} -\n\t\t\t\t\t\t\t\t<input type='hidden' name='date_month' value='{$date_month}'> {$date_month} -\n\t\t\t\t\t\t\t\t<input type='hidden' name='date_year' value='{$date_year}'> {$date_year}\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\t<tr>\n\t\t\t\t<td colspan='3'><input type='submit' value='&laquo; Correction'></td>\n\t\t\t\t<td colspan='5'><input type='button' value='Pay Selected Employees In Full After Processing' onClick='emp_payall();'></td>\n\t\t\t\t<td colspan='2' align=right><input type='submit' value='Process Salaries &raquo;' name='button'></td>\n\t\t\t\t<td colspan='10' align=right><input type='submit' value='Process Salaries &raquo;' name='button'></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Nr.</th>\n\t\t\t\t<th>Name</th>\n\t\t\t\t<th>Remuneration</th>\n\t\t\t\t<th>Amount Paid After Processing</th>\n\t\t\t\t<th>Annual Bonus</th>\n\t\t\t\t<!--\n\t\t\t\t<th>Special Bonus/Additional Salary</th>\n\t\t\t\t<th>Annual Bonus</th>\n\t\t\t\t-->\n\t\t\t\t<th>Commission</th>\n\t\t\t\t<th>Travel Allowance</th>\n\t\t\t\t<th>Loan Repayment</th>\n\t\t\t\t<th>Pension: Company Contribution</th>\n\t\t\t\t<th>Pension: Employee Deduction</th>\n\t\t\t\t<th>Provident: Company Contribution</th>\n\t\t\t\t<th>Provident: Employee Deduction</th>\n\t\t\t\t<th>UIF: Company Contribution</th>\n\t\t\t\t<th>UIF: Employee Deduction</th>\n\t\t\t\t<th>Retirement Annuity: Company Contribution</th>\n\t\t\t\t<th>Retirement Annuity: Employee Deduction</th>\n\t\t\t\t<th>Medical Contribution: Company</th>\n\t\t\t\t<th>Medical Contribution: Employee</th>\n\t\t\t\t<!--\n\t\t\t\t<th>Other: Company Contribution</th>\n\t\t\t\t<th>Other: Employee Deduction</th>\n\t\t\t\t//-->\n\t\t\t\t<th>Normal Overtime</th>\n\t\t\t\t<th>Public Holiday Overtime</th>\n\t\t\t\t<th>Method of Payment</th>\n\t\t\t\t<th>Medical Fringe Ben.</th>\n\t\t\t\t<th>Car 1 Fringe</th>\n\t\t\t\t<th>Car 2 Fringe</th>\n\t\t\t\t<th>Loan Fringe</th>\n\t\t\t\t<th>Fringe Ben.</th>\n\t\t \t\t<th>Allowances</th>\n\t\t \t\t<th>Subsistence</th>\n\t\t \t\t<th>Deductions</th>\n\t\t \t\t<th>Reimbursements</th>\n\t\t \t\t<th>Gross Salary</th>\n\t\t\t\t<th>PAYE</th>\n\t\t\t\t<th>Nett Pay + Reimbursements</th>\n\t\t\t</tr>";
    db_conn('cubit');
    $i = 0;
    $Sl = "SELECT * FROM employees WHERE div='" . USER_DIV . "' ORDER BY sname,fnames";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    $errout = "";
    $payall_js = "";
    while ($data = pg_fetch_array($Ri)) {
        if (!isset($emps[$data['empnum']])) {
            continue;
        }
        $id = $data['empnum'];
        $basic_sal_save[$id] = $basic_sal[$id];
        $send = "";
        if (isset($b)) {
            $send = "<input type='hidden' name='b' value=''>";
            if ($data["payprd"] != "f") {
                continue;
            }
        } elseif (isset($w)) {
            $send = "<input type='hidden' name='w' value=''>";
            if ($data['payprd'] != "w") {
                continue;
            }
        } elseif (isset($m)) {
            $send = "<input type='hidden' name='m' value=''>";
            if ($data['payprd'] != "m") {
                continue;
            }
        } elseif (isset($d)) {
            $send = "<input type='hidden' name='d' value=''>";
            if ($data['payprd'] != "d") {
                continue;
            }
        } else {
            continue;
        }
        $yy = date("Y");
        $mm = $month;
        $mm += 0;
        if (!isset($myEmp)) {
            $myEmp = array("payprd" => "");
        }
        db_conn("cubit");
        if ($data["payprd"] == "d") {
            $Sl = "SELECT * FROM salpaid WHERE empnum='{$data['empnum']}' AND month='{$mm}' AND week='{$pday}' AND cyear='" . EMP_YEAR . "'";
            $Rq = db_exec($Sl);
            $paid = pg_num_rows($Rq);
            $Sl = "SELECT * FROM salr WHERE empnum='{$data['empnum']}' AND month='{$mm}' AND week='{$pday}' AND cyear='" . EMP_YEAR . "'";
            $Rq = db_exec($Sl);
            $upaid = pg_num_rows($Rq);
            $upaid += 0;
            $paid -= $upaid;
        } else {
            if ($myEmp['payprd'] != "m") {
                $Sl = "SELECT * FROM salpaid WHERE empnum='{$data['empnum']}' AND month='{$mm}' AND week='{$week}' AND cyear='" . EMP_YEAR . "'";
                $Rq = db_exec($Sl);
                $paid = pg_num_rows($Rq);
                $Sl = "SELECT * FROM salr WHERE empnum='{$data['empnum']}' AND month='{$mm}' AND week='{$week}' AND cyear='" . EMP_YEAR . "'";
                $Rq = db_exec($Sl);
                $upaid = pg_num_rows($Rq);
                $upaid += 0;
                $paid -= $upaid;
            }
        }
        if (isset($paid) && $paid > 0) {
            $out .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='1000'>\n\t\t\t\t\t\t<li class='err'>You have already processed a salary for this period, for {$data['sname']}, {$data['fnames']}</li>\n\t\t\t\t\t\t<input type='hidden' name='emps[{$id}]' value='{$id}'>\n\t\t\t\t\t\t<input type='hidden' name='emps_already[{$id}]' value='{$id}'>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
            continue;
        }
        if ($divisor[$id] != 1 && round($divisor[$id], 2) != round(52 / 12, 2) && round($divisor[$id], 2) != round(26 / 12, 2)) {
            /*$out .= "<tr><td colspan=1000>
            					<li class=err>Error with pay period (DIVIS), for $data[sname], $data[fnames]</li>
            					<input type=hidden name='emps[$id]' value='$id'>
            					<input type=hidden name='emps_already[$id]' value='$id'>
            				</td></tr>";
            		continue;*/
        }
        if (isset($basic_sal[$id])) {
        } else {
            $annual[$id] = "";
            $novert[$id] = "";
            $hovert[$id] = "";
        }
        if ($data['paytype'] == "Cash") {
            $paydetails = "Cash\n\t\t\t\t<input type='hidden' name='accid[{$id}]' value='0'>";
        } elseif ($data['paytype'] == "Ledger Account") {
            db_conn('core');
            $account[$id] += 0;
            $Sl = "SELECT accid,accname FROM accounts WHERE accid='{$account[$id]}'";
            $Rl = db_exec($Sl);
            $accounts = "<input type='hidden' name='account[{$id}]' value='{$account[$id]}'>";
            $ad = pg_fetch_array($Rl);
            $accounts .= "{$ad['accname']}";
            $paydetails = "{$accounts}\n\t\t\t\t<input type='hidden' name='accid[{$id}]' value='0'>";
        } else {
            $accid[$id] += 0;
            db_conn('cubit');
            $Sl = "SELECT * FROM bankacct WHERE bankid='{$accid[$id]}'";
            $Ry = db_exec($Sl) or errDie("Unable to get bank account.");
            if (pg_numrows($Ry) < 1) {
                return "<li class='err'> There are no bank accounts found in Cubit.\n\t\t\t\t<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct Selection'>";
            }
            $banks = "<input type='hidden' name='accid[{$id}]' value='{$accid[$id]}'>";
            $acc = pg_fetch_array($Ry);
            $banks .= "{$acc['accname']} ({$acc['acctype']})";
            $paydetails = "{$banks}";
        }
        // fringe benefits
        $fringe_tot[$id] = 0;
        $c = 0;
        $fringes = "<table " . TMPL_tblDflts . ">";
        if (isset($fringeid[$id]) && is_array($fringeid[$id])) {
            foreach ($fringeid[$id] as $i => $fid) {
                $fringes .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>" . $fringename[$id][$i] . "</td>\n\t\t\t\t\t\t<td>" . CUR . "</td>\n\t\t\t\t\t\t<td>" . $fringebens[$id][$i] . "</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<input type='hidden' name='fringeid[{$id}][{$i}]' value='" . $fringeid[$id][$i] . "'>\n\t\t\t\t\t<input type='hidden' name='fringebens[{$id}][{$i}]' value='" . $fringebens[$id][$i] . "'>\n\t\t\t\t\t<input type='hidden' name='fringename[{$id}][{$i}]' value='" . $fringename[$id][$i] . "'>\n\t\t\t\t\t<input type='hidden' name='fringeaccs[{$id}][{$i}]' value='" . $fringeaccs[$id][$i] . "'>";
                $fringe_tot[$id] += $fringebens[$id][$i];
            }
        }
        $fringes .= "</table>";
        if ($fringe_tot[$id] == 0) {
            $fringes = "";
        }
        $fringes .= "<input type='hidden' name='fringe_tot[{$id}]' value='{$fringe_tot[$id]}'>";
        /* allowances */
        $all_beforeamount[$id] = 0;
        $all_afteramount[$id] = 0;
        $Allowances = "";
        /*		db_conn('cubit');
        		$sql = "SELECT * FROM allowances WHERE div = '".USER_DIV."' ORDER BY allowance";
        		$allowRslt = db_exec ($sql) or errDie ("Unable to select allowances from database.");
        		if (pg_numrows ($allowRslt) < 1) {
        			$Allowances = "None";
        		} else {
        
        			$Allowances = "<table border=0 cellpadding='".TMPL_tblCellPadding."' cellspacing='".TMPL_tblCellSpacing."'>";
        			while ($myAllow = pg_fetch_array ($allowRslt)) {
        				# check if employee has allowance
        				$sql = "SELECT * FROM empallow WHERE allowid='$myAllow[id]' AND empnum='$data[empnum]' AND div = '".USER_DIV."'";
        				$empAllowRslt = db_exec ($sql) or errDie ("Unable to select allowance info from database.");
        				if (pg_numrows ($empAllowRslt) > 0) {
        					$Allowances .= "<tr><td>$myAllow[allowance]</td>";
        					$dataAllow = pg_fetch_array ($empAllowRslt);
        					$dataAllow['amount']=sprint($dataAllow['amount']);
        
        					$allowances[$id][$i]=sprint($allowances[$id][$i]);
        					$Allowances .= "<td>R</td><td align=right>
        					<input type=hidden size=10 name='allowid[$id][]' value='$dataAllow[allowid]'>
        					<input type=hidden size=30 name='allowname[$id][]' value='$myAllow[allowance]'>
        					<input type=hidden size=10 name='allowtax[$id][]' value='$myAllow[add]'>
        					<input type=hidden name='allowaccs[$id][]' value='".$allowaccs[$id][$i]."'>
        					<input type=hidden name='allowances[$id][]' value='".$allowances[$id][$i]."'>".$allowances[$id][$i]."</td></tr>\n";
        
        					if($myAllow['add']=="Yes") {
        						$all_beforeamount[$id] += $allowances[$id][$i];
        					} else {
        						$all_afteramount[$id] += $allowances[$id][$i];
        					}
        				}
        				$i++;
        			}
        
        			$Allowances .= "</table>";
        		}*/
        if (isset($allowid[$id]) && is_array($allowid[$id]) && count($allowid[$id]) > 0) {
            $Allowances = "<table border='0' cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>";
            foreach ($allowid[$id] as $k => $dummy) {
                $Allowances .= "\n\t\t\t\t\t\t<input type='hidden' size='10' name='allowid[{$id}][{$k}]' value='" . $allowid[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' size='30' name='allowname[{$id}][{$k}]' value='" . $allowname[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' size='10' name='allowtax[{$id}][{$k}]' value='" . $allowtax[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' name='allowaccs[{$id}][{$k}]' value='" . $allowaccs[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' name='allowances[{$id}][{$k}]' value='" . $allowances[$id][$k] . "'>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td>" . $allowname[$id][$k] . "</td>\n\t\t\t\t\t\t\t<td>" . CUR . "</td>\n\t\t\t\t\t\t\t<td align='right'>" . $allowances[$id][$k] . "</td>\n\t\t\t\t\t\t</tr>";
                if ($allowtax[$id][$k] == "Yes") {
                    $all_beforeamount[$id] += $allowances[$id][$k];
                } else {
                    $all_afteramount[$id] += $allowances[$id][$k];
                }
            }
            $Allowances .= "</table>";
        } else {
            $Allowances = "";
        }
        $Allowances .= "\n\t\t\t<input type='hidden' name='all_beforeamount[{$id}]' value='{$all_beforeamount[$id]}'>\n\t\t\t<input type='hidden' name='all_afteramount[{$id}]' value='{$all_afteramount[$id]}'>";
        $subsistence = "";
        $subs_taxable[$id] = 0;
        $subs_total[$id] = 0;
        $i = 0;
        if (isset($subsname[$id])) {
            if (isset($subs_exch) && $subs_exch == 0) {
                $subs_exch = 1;
            }
            foreach ($subsname[$id] as $sid => $sn) {
                if ($subsrep[$id][$sid] == "yes") {
                    //2012
                    $nontax = $subsdays[$id][$sid] * ($subsmeal[$id][$sid] == "yes" ? 303 : 93);
                    $subs_total[$id] += $subsamt[$id][$sid];
                } else {
                    //TODO
                    //2012
                    // outside republic, 196 dollars
                    $nontax = $subsdays[$id][$sid] * (215 / $subs_exch);
                    $subs_total[$id] += $subsamt[$id][$sid] * $subs_exch;
                }
                $tmp = $subsamt[$id][$sid] - $nontax;
                if ($tmp > 0) {
                    $subs_taxable[$id] += $tmp / $divisor[$id];
                }
                $subsistence .= "\n\t\t\t\t\t<input type='hidden' name='subsname[{$id}][{$sid}]' value='" . $subsname[$id][$sid] . "'>\n\t\t\t\t\t<input type='hidden' name='subsacc[{$id}][{$sid}]' value='" . $subsacc[$id][$sid] . "'>\n\t\t\t\t\t<input type='hidden' name='subsamt[{$id}][{$sid}]' value='" . $subsamt[$id][$sid] . "'>\n\t\t\t\t\t<input type='hidden' name='subsrep[{$id}][{$sid}]' value='" . $subsrep[$id][$sid] . "'>\n\t\t\t\t\t<input type='hidden' name='subsmeal[{$id}][{$sid}]' value='" . $subsmeal[$id][$sid] . "'>\n\t\t\t\t\t<input type='hidden' name='subsdays[{$id}][{$sid}]' value='" . $subsdays[$id][$sid] . "'>\n\t\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t\t<td nowrap>" . $subsname[$id][$sid] . "</td>\n\t\t\t\t\t\t<td nowrap>" . CUR . " " . $subsamt[$id][$sid] . "</td>\n\t\t\t\t\t\t<td>" . $subsdays[$id][$sid] . "</td>\n\t\t\t\t\t</tr>";
            }
            if (!empty($subsistence)) {
                $subsistence = "\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>Name</th>\n\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t<th>Days</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t{$subsistence}\n\t\t\t\t\t</table>";
            }
        }
        # Deductions
        $Deductions = "";
        $de_beforeamount[$id] = 0;
        $de_afteramount[$id] = 0;
        $de_beforeamount_emp[$id] = 0;
        $de_afteramount_emp[$id] = 0;
        /*		db_conn('cubit');
        		$sql = "SELECT * FROM salded WHERE div = '".USER_DIV."' ORDER BY deduction";
        		$deductRslt = db_exec ($sql) or errDie ("Unable to select deductions from database.");
        		if (pg_numrows ($deductRslt) < 1) {
        			$Deductions = "None";
        		} else {
        			$Deductions = "<table border=0 cellpadding='".TMPL_tblCellPadding."' cellspacing='".TMPL_tblCellSpacing."'>";
        			while ($myDeduct = pg_fetch_array ($deductRslt)) {
        				# check if employee has deduction
        				$sql = "SELECT * FROM empdeduct WHERE dedid='$myDeduct[id]' AND empnum='$data[empnum]' AND div = '".USER_DIV."'";
        				$empDeductRslt = db_exec ($sql) or errDie ("Unable to select Deduction info from database.");
        				if (pg_numrows ($empDeductRslt) > 0) {
        					$Deductions .= "<tr><td>$myDeduct[deduction]</td>";
        					$dataDeduct = pg_fetch_array ($empDeductRslt);
        
        //					if($dataDeduct['type']=="Amount") {
        //						$dataDeduct['amount']=sprint($dataDeduct['amount']);
        //						$deductions[$id][$i]=sprint($deductions[$id][$i]);
        //					} else {
        //						$deductions[$id][$i]=sprint($data['basic_sal']*$deductions[$id][$i]/100);
        //						//$dataDeduct['amount']=sprint($data['basic_sal']*$dataDeduct['amount']/100);
        //					}
        					$Deductions .= "
        					<td>".CUR."</td><td align=right>
        						<input type=hidden size=10 name='deductid[$id][]' value='$myDeduct[id]'>
        						<input type=hidden size=30 name='deductname[$id][]' value='$myDeduct[deduction]'>
        						<input type=hidden name='deductions[$id][]' value='".$deductions[$id][$i]."'>".$deductions[$id][$i]."
        						<input type=hidden name='dedaccs[$id][]' value='".$dedaccs[$id][$i]."'>
        					</td>
        <!--					<td>".CUR."</td> //-->
        						<td>
        						<input type=hidden name='employer_deductions[$id][]' value='".$employer_deductions[$id][$i]."'>
        						<input type=hidden size=10 name='deducttax[$id][]' value='$myDeduct[add]'></td></tr>\n";
        
        
        					if($myDeduct['add']=="Yes") {
        						$de_beforeamount[$id] += $deductions[$id][$i]+$employer_deductions[$id][$i];
        						//$de_beforeamount_emp[$id] += $employer_deductions[$id][$i];
        					} else {
        						$de_afteramount[$id] += $deductions[$id][$i]+$employer_deductions[$id][$i];
        						//$de_afteramount_emp[$id] += $employer_deductions[$id][$i];
        					}
        
        					$i++;
        				}
        			}
        			$Deductions .= "</table>";
        		}*/
        if (isset($deductid[$id]) && is_array($deductid[$id]) && count($deductid[$id]) > 0) {
            $Deductions = "<table " . TMPL_tblDflts . ">";
            foreach ($deductid[$id] as $k => $dummy) {
                $Deductions .= "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<input type='hidden' name='deductid[{$id}][{$k}]' value='" . $deductid[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' name='deductname[{$id}][{$k}]' value='" . $deductname[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' name='deductions[{$id}][{$k}]' value='" . $deductions[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' name='dedaccs[{$id}][{$k}]' value='" . $dedaccs[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' name='employer_deductions[{$id}][{$k}]' value='" . $employer_deductions[$id][$k] . "'>\n\t\t\t\t\t\t<input type='hidden' name='deducttax[{$id}][{$k}]' value='" . $deducttax[$id][$k] . "'>\n\t\t\t\t\t\t<td>" . $deductname[$id][$k] . "</td>\n\t\t\t\t\t\t<td>" . CUR . "</td>\n\t\t\t\t\t\t<td>" . $deductions[$id][$k] . "</td>\n\t\t\t\t\t</tr>";
                if ($deducttax[$id][$k] == "Yes") {
                    $de_beforeamount[$id] += $deductions[$id][$k] + $employer_deductions[$id][$k];
                    //$de_beforeamount_emp[$id] += $employer_deductions[$id][$i];
                } else {
                    $de_afteramount[$id] += $deductions[$id][$k] + $employer_deductions[$id][$k];
                    //$de_afteramount_emp[$id] += $employer_deductions[$id][$i];
                }
            }
            $Deductions .= "</table>";
        } else {
            $Deductions = "None";
        }
        $Deductions .= "\n\t\t\t<input type='hidden' name='de_beforeamount[{$id}]' value='{$de_beforeamount[$id]}'>\n\t\t\t<input type='hidden' name='de_beforeamount_emp[{$id}]' value='{$de_beforeamount_emp[$id]}'>\n\t\t\t<input type='hidden' name='de_afteramount[{$id}]' value='{$de_afteramount[$id]}'>\n\t\t\t<input type='hidden' name='de_afteramount_emp[{$id}]' value='{$de_afteramount[$id]}'>";
        db_conn('cubit');
        $Sl = "SELECT * FROM rbs ORDER BY name";
        $Rl = db_exec($Sl) or errDie("Unable to get data.");
        $i = 0;
        if (pg_num_rows($Rl) > 0) {
            $rt = "<table " . TMPL_tblDflts . " width='100%'>";
            while ($td = pg_fetch_array($Rl)) {
                if (!isset($rbsa[$id][$td['id']])) {
                    $rbsa[$id][$td['id']] = "";
                }
                $rbsa[$id][$td['id']] = sprint($rbsa[$id][$td['id']]);
                $rt .= "\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td><input type='hidden' name='rbs[{$id}][{$td['id']}]' value='{$td['id']}'>{$td['name']}</td>\n\t\t\t\t\t\t<td>" . CUR . "</td>\n\t\t\t\t\t\t<td align='right'><input type='hidden' name='rbsa[{$id}][{$td['id']}]' value='" . $rbsa[$id][$td['id']] . "'>" . $rbsa[$id][$td['id']] . "</td>\n\t\t\t\t\t</tr>";
                $i++;
            }
            $rt .= "</table>";
        } else {
            $rt = "None";
        }
        // calculate age of employee (if intl., ie has passport num only), act asif under 65
        if (!empty($data["idnum"])) {
            // calculate age of employee
            $bd_year = 1900 + substr($data["idnum"], 0, 2);
            $bd_month = substr($data["idnum"], 2, 2);
            $bd_day = substr($data["idnum"], 4, 2);
            /* get the current financial year */
            db_conn("core");
            $sql = "SELECT yrname FROM active";
            $rslt = db_exec($sql) or errDie("Error fetching financial year.");
            if (pg_num_rows($rslt) < 1) {
                return "Please run quick setup first.";
            }
            $fin_year = substr(pg_fetch_result($rslt, 0, 0), 1);
            $sql = "SELECT EXTRACT('year' FROM AGE('{$fin_year}-02-28', '{$bd_year}-{$bd_month}-{$bd_day}'))";
            $rslt = db_exec($sql) or errDie("Error calculating age at financial year end.");
            $age[$id] = pg_fetch_result($rslt, 0, 0);
        } else {
            $age[$id] = 1;
        }
        # The Paye
        $tyear = 12;
        switch ($data["payprd"]) {
            case 'm':
                $tyear = 12;
                break;
            case 'w':
                $tyear = 52;
                break;
            case 'f':
                $tyear = 26;
                break;
            case 'd':
                $tyear = 5 * 52;
                break;
        }
        if ($data["saltyp"] != "h") {
            if ($myEmp["saltyp"] == "w") {
                $perhr = sprint($basic_sal / $wh_actual);
            } else {
                $perhr = sprint($basic_sal[$id] * $tyear / ($data['hpweek'] * 52));
            }
        } else {
            $perhr = $basic_sal[$id];
        }
        $overamt[$id] = $novert[$id] * ($perhr * $data['novert']);
        $overamt[$id] += sprint($hovert[$id] * ($perhr * $data['hovert']));
        # Multiply basic_sal add overtime
        if (isset($multi[$id])) {
            $basic_sal[$id] = sprint($basic_sal[$id] * $multi[$id]);
            //$tyear = ($tyear/$multi[$id]);
        }
        // calculate loan fringe benefit amount for this month
        if (!empty($data["loanamt"]) && $data["gotloan"] == "t" && $data["loanamt"] > 0) {
            $loanpart = $loaninstall[$id] / $data["loanamt"];
            $fringe_loan[$id] = sprint($data["loanfringe"] * $loanpart);
        } else {
            $fringe_loan[$id] = "0.00";
        }
        $fringe_tot[$id] += $fringe_loan[$id];
        $fringe_tot[$id] += $comp_other[$id];
        $fringe_tot[$id] += $comp_ret[$id];
        //2012
        // calculate motor car fringe benefit
        if ($data["fringe_car1"] > 0) {
            $deduct_perc = 0;
            // Employee has travel allowance?
            if ($data["all_travel"] > 0) {
                $deduct_perc = 0.0325;
            } else {
                $deduct_perc = 0.035;
            }
            $fringe_car1 = $data["fringe_car1"] * $deduct_perc;
        }
        // Second fringe car will always be 3.25%
        if ($data["fringe_car2"] > 0) {
            $fringe_car2 = $data["fringe_car2"] * 0.0325;
        }
        vsprint($fringe_car1[$id]);
        vsprint($fringe_car2[$id]);
        $fringe_tot[$id] += $fringe_car1[$id] + $fringe_car2[$id];
        $fringe_tot[$id] += $de_afteramount_emp[$id] + $de_beforeamount_emp[$id];
        $fringe_tot[$id] += $subs_taxable[$id];
        // calc medical fringe benefits
        if ($comp_medical[$id] > 0) {
            // calculate dependants after first one
            $tmp_deps = $data["emp_meddeps"] - 2;
            if ($tmp_deps < 0) {
                $tmp_deps = 0;
            }
            //2009
            // calculate paragraph 12A amount
            //first 2 dependants are 530 each (1060) rest is 320 each.
            //$p12A_amt = ($data["emp_meddeps"] > 1 ? 1060 : 530) + ($tmp_deps * 320);
            //2010
            // calculate paragraph 12A amount
            //first 2 dependants are 625 each (1250) rest is 380 each.
            //$p12A_amt = ($data["emp_meddeps"] > 1 ? 1250 : 625) + ($tmp_deps * 380);
            //2011
            // calculate paragraph 12A amount
            //first 2 dependants are 670 each (1340) rest is 410 each.
            //$p12A_amt = ($myEmp["emp_meddeps"] > 1 ? 1340 : 820) + ($tmp_deps * 410);
            //2012
            // calculate paragraph 12A amount
            //first 2 dependants are 230 each (460) rest is 154 each.
            $p12A_amt = ($myEmp["emp_meddeps"] > 1 ? 460 : 230) + $tmp_deps * 154;
            // calculate taxable fringe benefit amount
            $fringe_medical[$id] = sprint($comp_medical[$id] - $p12A_amt / $divisor[$id]);
            if ($fringe_medical[$id] < 0) {
                $fringe_medical[$id] = 0;
            }
            $fringe_tot[$id] += $fringe_medical[$id];
        } else {
            $fringe_medical[$id] = 0;
        }
        if ($emp_pension[$id] > $basic_sal[$id] * 7.5 / 100) {
            $emp_mpension[$id] = $basic_sal[$id] * 7.5 / 100;
        } else {
            $emp_mpension[$id] = $emp_pension[$id];
        }
        // calculate total gross salary
        $grossal[$id] = $basic_sal[$id] + $commission[$id] + $abonus[$id] + $overamt[$id] + $bonus[$id] + $annual[$id] + $all_beforeamount[$id] + $all_travel[$id] * 0.8 - $de_beforeamount[$id];
        // deductions deducted before paye (non taxible)
        $grossal_2 = $grossal[$id];
        $taxed_all[$id] = $all_afteramount[$id] + $all_travel[$id] * 0.8;
        $grossal_nodedall[$id] = $basic_sal[$id] + $overamt[$id] + $bonus[$id] + $annual[$id] + $all_travel[$id];
        #UIF HAX
        $uif_grossal[$id] = $grossal[$id];
        // pension/provident/ra: calculate deduction amounts, limiting them to maximum amount and only deducting
        // ONE of them for taxable income
        if ($comp_pension[$id] + $emp_pension[$id] > 0) {
            $tmp = ($grossal_2 + $fringe_tot[$id]) * $tyear;
            $maxallowed = $tmp * 0.075 > 1750 ? $tmp * 0.075 : 1750;
            if ($emp_mpension[$id] > $maxallowed) {
                $tmp_ded = $maxallowed;
            } else {
                $tmp_ded = $emp_mpension[$id];
            }
            $grossal[$id] -= $tmp_ded;
        }
        if ($comp_ret[$id] + $emp_ret[$id] > 0) {
            $tmp = ($grossal_2 + $fringe_tot[$id]) * $tyear;
            // if their is a pension contributions the percentage is 0
            if ($comp_pension[$id] + $emp_pension[$id] + $comp_provident[$id] + $emp_provident[$id] > 0) {
                $PERC = 0;
            } else {
                $PERC = 0.15;
            }
            $maxallowed = $tmp * $PERC > 1750 ? $tmp * $PERC : 1750;
            $maxallowed = $maxallowed > 3500 - $emp_pension[$id] * $divisor[$id] * 12 ? $maxallowed : 3500 - $emp_pension[$id] * 12;
            if (($emp_ret[$id] + $comp_ret[$id]) * $divisor[$id] > $maxallowed / 12) {
                $tmp_ded = $maxallowed / 12 / $divisor[$id];
            } else {
                $tmp_ded = $emp_ret[$id] + $comp_ret[$id];
            }
            $grossal[$id] -= $tmp_ded;
        }
        // calculate total paye salary
        // just remove annual this month, and add annual divided by 12
        // because paye is calculate for full twelve months and therefore
        // paye salary is average received each month
        $paye_salary[$id] = $grossal[$id] - $annual[$id] + $fringe_tot[$id];
        // total fringe benefits;
        #UIF HAX
        $uif_paye_salary[$id] = $uif_grossal[$id] - $annual[$id] + $fringe_tot[$id];
        /* calculate uif */
        $tmp_remun = $paye_salary[$id] + $annual[$id] - $commission[$id] - $abonus[$id];
        #UIF HAX
        $uif_tmp_remun = $uif_paye_salary[$id] + $annual[$id] - $commission[$id] - $abonus[$id];
        //		$comp_uif[$id] = sprint($tmp_remun * ($data["comp_uif"] / 100));
        //		$emp_uif[$id] = sprint($tmp_remun * ($data["emp_uif"] / 100));
        #UIF HAX
        $comp_uif[$id] = sprint($uif_tmp_remun * ($data["comp_uif"] / 100));
        $emp_uif[$id] = sprint($uif_tmp_remun * ($data["emp_uif"] / 100));
        $uifmax = getCSetting("UIF_MAX");
        if ($emp_uif[$id] > $uifmax) {
            $emp_uif[$id] = sprint($uifmax);
        }
        if ($comp_uif[$id] > $uifmax) {
            $comp_uif[$id] = sprint($uifmax);
        }
        /* calculate sdl */
        $tmp_remun = $paye_salary[$id] + $annual[$id];
        if (getCSetting("SDLPAYABLE") == "y") {
            $tmp_sdl = $tmp_remun;
            if ($age > 65) {
                $tmp_sdl -= $comp_medical[$id];
            }
            $comp_sdl[$id] = $tmp_sdl * ($data["comp_sdl"] / 100);
        } else {
            $comp_sdl[$id] = 0;
        }
        // a little hack, apparently the grossal is displayed wrong, in a strictly antisocial.co.za opinion,
        // i think the person who thinks that must suck
        $grossal[$id] += $comp_ret[$id];
        // add rest of travel allowance
        $grossal[$id] += $all_travel[$id] * 0.2;
        if (isset($mpaye[$id])) {
            $paye[$id] = $mpaye_amount[$id];
        } else {
            // calculate paye (take age of 65+ threshold into account)
            //2008
            //			if ( ($age[$id] >= 65 && ($paye_salary[$id] * $tyear) < 69000) || ($paye_salary[$id] * $tyear) < 43000 ) {
            //2009
            // 			if ( ($age[$id] >= 65 && ($paye_salary[$id] * $tyear) < 74000) || ($paye_salary[$id] * $tyear) < 46000 ) {
            //2010
            //			if ( ($age[$id] >= 65 && ($paye_salary[$id] * $tyear) < 84200) || ($paye_salary[$id] * $tyear) < 54200 ) {
            //2011
            //if ( ($age[$id] >= 65 && ($paye_salary[$id] * $tyear) < 88528) || ($paye_salary[$id] * $tyear) < 57000 ) {
            //2012
            if ($age[$id] >= 65 && $age[$id] < 75 && $paye_salary[$id] * $tyear < 99056 || $age[$id] >= 75 && $paye_salary[$id] * $tyear < 110889 || $paye_salary[$id] * $tyear < 63556) {
                $paye[$id] = "0.00";
            } else {
                if ($data["payprd"] == "w" || $data["payprd"] == "f") {
                    $paye_prd = "{$month}:{$week}";
                } else {
                    if ($data["payprd"] == "d") {
                        $paye_prd = "{$month}:{$pday}";
                    } else {
                        $paye_prd = "{$month}";
                    }
                }
                $paye[$id] = calculate_paye($data, $paye_prd, $paye_salary[$id], $tyear, $age[$id]);
                if ($annual[$id] > 0) {
                    $tmp_bonpaye = calculate_paye($data, $paye_prd, $paye_salary[$id] + $annual[$id] / 12, $tyear, $age[$id]);
                    $paye[$id] += $tmp_bonpaye * $tyear - $paye[$id] * $tyear;
                }
            }
        }
        $nonretfunding = $grossal[$id] - $paye[$id] - $loaninstall[$id] - $de_afteramount[$id] + $de_afteramount_emp[$id] + $all_afteramount[$id] - $emp_pension[$id] - $emp_medical[$id] - $emp_provident[$id] - $emp_uif[$id] - $emp_other[$id];
        /*		$ret_max = (1800>($nonretfunding*0.15))?1800:($nonretfunding*0.15);
        
        		if ( $comp_ret[$id] + $emp_ret[$id] > $ret_max ) {
        			$comp_ret[$id] = $ret_max - $emp_ret[$id];
        
        			if ( $comp_ret[$id] < 0 ) {
        				$comp_ret[$id] = 0;
        				$emp_ret[$id] = $ret_max;
        			}
        		}*/
        $nettpay[$id] = $basic_sal[$id] + $overamt[$id] - $paye[$id] + $commission[$id] + $abonus[$id] - $loaninstall[$id] - $de_afteramount[$id] - $de_beforeamount[$id] + $all_afteramount[$id] + $all_beforeamount[$id] - $emp_pension[$id] - $emp_medical[$id] - $emp_ret[$id] - $emp_uif[$id] - $emp_provident[$id] - $emp_other[$id] + $all_travel[$id] + $annual[$id] + $bonus[$id] - $data["fringe_car1_contrib"] - $data["fringe_car2_contrib"] + $subs_total[$id];
        if (isset($rbsa[$id])) {
            $nettpay[$id] += array_sum($rbsa[$id]);
        }
        $nettpay[$id] = sprint($nettpay[$id]);
        //<td><table><tr><td><input type=checkbox name='mpaye[$id]'></td><td><input type=text size=8 name='mpaye_amount[$id]'></td></tr></table></td>
        $totded[$id] = sprint($de_beforeamount[$id] + $de_afteramount[$id] + $emp_pension[$id] + $emp_medical[$id] + $emp_provident[$id] + $emp_ret[$id] + $emp_other[$id]);
        $totded_employer[$id] = sprint($de_beforeamount_emp[$id] + $de_afteramount_emp[$id] + $comp_pension[$id] + $comp_medical[$id] + $comp_provident[$id] + $comp_ret[$id] + $comp_other[$id]);
        $totall[$id] = sprint($all_beforeamount[$id] + $all_afteramount[$id] + $all_travel[$id]);
        if (isset($mpaye[$id])) {
            $che = "<input type='hidden' name='mpaye[{$id}]' value=''>";
        } else {
            $che = "";
        }
        vsprint($grossal[$id]);
        vsprint($basic_sal[$id]);
        vsprint($bonus[$id]);
        vsprint($annual[$id]);
        vsprint($commission[$id]);
        vsprint($abonus[$id]);
        vsprint($all_travel[$id]);
        vsprint($loaninstall[$id]);
        vsprint($comp_pension[$id]);
        vsprint($emp_pension[$id]);
        vsprint($comp_provident[$id]);
        vsprint($emp_provident[$id]);
        vsprint($comp_ret[$id]);
        vsprint($emp_ret[$id]);
        vsprint($comp_medical[$id]);
        vsprint($emp_medical[$id]);
        vsprint($comp_other[$id]);
        vsprint($emp_other[$id]);
        vsprint($novert[$id]);
        vsprint($novert[$id]);
        vsprint($fringe_medical[$id]);
        vsprint($paye[$id]);
        $out .= "\n\t\t\t<input type='hidden' name='mpaye_amount[{$id}]' value='{$mpaye_amount[$id]}'>\n\t\t\t{$che}\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<input type='hidden' name='overamt[{$id}]' value='{$overamt[$id]}'>\n\t\t\t\t<input type='hidden' name='comp_sdl[{$id}]' value='{$comp_sdl[$id]}'>\n\t\t\t\t<input type='hidden' name='process_comp_deductions[{$id}]' value='{$process_comp_deductions[$id]}'>\n\t\t\t\t<input type='hidden' name='grossal[{$id}]' value='{$grossal[$id]}'>\n\t\t\t\t<input type='hidden' name='grossal_nodedall[{$id}]' value='{$grossal_nodedall[$id]}'>\n\t\t\t\t<input type='hidden' name='totded[{$id}]' value='{$totded[$id]}'>\n\t\t\t\t<input type='hidden' name='totded_employer[{$id}]' value='{$totded_employer[$id]}'>\n\t\t\t\t<input type='hidden' name='totall[{$id}]' value='{$totall[$id]}'>\n\t\t\t\t<input type='hidden' name='emps[{$id}]' value='{$id}'>\n\t\t\t\t<input type='hidden' name='fringe_tot[{$id}]' value='{$fringe_tot[$id]}'>\n\t\t\t\t<input type='hidden' name='paye_salary[{$id}]' value='{$paye_salary[$id]}' />\n\t\t\t\t<input type='hidden' name='multi[{$id}]' value='{$multi[$id]}'>\n\t\t\t\t<input type='hidden' name='tyear[{$id}]' value='{$tyear}'>\n\t\t\t\t<input type='hidden' name='taxed_all[{$id}]' value='{$taxed_all[$id]}' />\n\t\t\t\t<td>{$data['enum']}</td>\n\t\t\t\t<td>{$data['sname']}, {$data['fnames']}</td>\n\t\t\t\t<td><input type='hidden' name='basic_sal[{$id}]' value='{$basic_sal_save[$id]}' class='right'>{$basic_sal[$id]}</td>\n\t\t\t\t<td><input type='text' size='8' name='paidamount[{$id}]' id='paidamount[{$id}]' value='0.00'></td>\n\t\t\t\t<td><input type='hidden' name='bonus[{$id}]' value='{$bonus[$id]}' class='right'><input type='hidden' name='abonus[{$id}]' value='{$abonus[$id]}'>{$abonus[$id]}</td>\n\t\t\t\t<input type='hidden' name='annual[{$id}]' value='{$annual[$id]}' />\n\t\t\t\t<!--<td><input type='hidden' name='annual[{$id}]' value='{$annual[$id]}' class='right'>{$annual[$id]}</td>-->\n\t\t\t\t<td><input type='hidden' name='commission[{$id}]' value='{$commission[$id]}' class='right'>{$commission[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='all_travel[{$id}]' value='{$all_travel[$id]}' class='right'>{$all_travel[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='loaninstall[{$id}]' value='{$loaninstall[$id]}' class='right'>{$loaninstall[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='comp_pension[{$id}]' value='{$comp_pension[$id]}' class='right'>{$comp_pension[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='emp_pension[{$id}]' value='{$emp_pension[$id]}' class='right'>{$emp_pension[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='comp_provident[{$id}]' value='{$comp_provident[$id]}' class='right'>{$comp_provident[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='emp_provident[{$id}]' value='{$emp_provident[$id]}' class='right'>{$emp_provident[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='comp_uif[{$id}]' value='{$comp_uif[$id]}' class='right'>{$comp_uif[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='emp_uif[{$id}]' value='{$emp_uif[$id]}' class='right'>{$emp_uif[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='comp_ret[{$id}]' value='{$comp_ret[$id]}' class='right'>{$comp_ret[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='emp_ret[{$id}]' value='{$emp_ret[$id]}' class='right'>{$emp_ret[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='comp_medical[{$id}]' value='{$comp_medical[$id]}' class='right'>{$comp_medical[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='emp_medical[{$id}]' value='{$emp_medical[$id]}' class='right'>{$emp_medical[$id]}</td>\n\n\t\t\t\t<input type='hidden' name='comp_other[{$id}]' value='{$comp_other[$id]}' class='right'>\n\t\t\t\t<input type='hidden' name='emp_other[{$id}]' value='{$emp_other[$id]}' class='right'>\n\t\t\t\t<!--\n\t\t\t\t<td><input type='hidden' name='comp_other[{$id}]' value='{$comp_other[$id]}' class='right'>{$comp_other[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='emp_other[{$id}]' value='{$emp_other[$id]}' class='right'>{$emp_other[$id]}</td>\n\t\t\t\t//-->\n\n\t\t\t\t<td><input type='hidden' name='novert[{$id}]' value='{$novert[$id]}'>{$novert[$id]}</td>\n\t\t\t\t<td><input type='hidden' name='hovert[{$id}]' value='{$hovert[$id]}'>{$hovert[$id]}</td>\n\t\t\t\t<td>{$paydetails}</td>\n\t\t\t\t<td nowrap><input type='hidden' name='fringe_medical[{$id}]' value='{$fringe_medical[$id]}'>" . CUR . " {$fringe_medical[$id]}</td>\n\t\t\t\t<td nowrap><input type='hidden' name='fringe_car1[{$id}]' value='{$fringe_car1[$id]}'>" . CUR . " {$fringe_car1[$id]}</td>\n\t\t\t\t<td nowrap><input type='hidden' name='fringe_car2[{$id}]' value='{$fringe_car2[$id]}'>" . CUR . " {$fringe_car2[$id]}</td>\n\t\t\t\t<td nowrap><input type='hidden' name='fringe_loan[{$id}]' value='{$fringe_loan[$id]}'>" . CUR . " {$fringe_loan[$id]}</td>\n\t\t\t\t<td>{$fringes}</td>\n\t\t\t\t<td>{$Allowances}</td>\n\t\t\t\t<td>{$subsistence}</td>\n\t\t\t\t<td>{$Deductions}</td>\n\t\t\t\t<td>{$rt}</td>\n\t\t\t\t<td>{$grossal[$id]}<input type='hidden' name='grossal[{$id}]' value='{$grossal[$id]}'></td>\n\t\t\t\t<td>{$paye[$id]}<input type='hidden' name='paye[{$id}]' value='{$paye[$id]}'></td>\n\t\t\t\t<td>{$nettpay[$id]}<input type='hidden' id='nettpay[{$id}]' name='nettpay[{$id}]' value='{$nettpay[$id]}'></td>\n\t\t\t</tr>";
        $payall_js .= "getObject('paidamount[{$id}]').value = getObject('nettpay[{$id}]').value;";
    }
    $out .= "\n\t\t\t<tr><td><br></td></tr>{$send}\n\t\t\t<script>\n\t\t\t\tfunction emp_payall() {\n\t\t\t\t\t{$payall_js}\n\t\t\t\t}\n\t\t\t</script>\n\t\t\t<tr>\n\t\t\t\t<td colspan='3'><input type='submit' value='&laquo; Correction'></td>\n\t\t\t\t<td colspan='5'><input type='button' value='Pay Selected Employees In Full After Processing' onClick='emp_payall();'></td>\n\t\t\t\t<td colspan='2' align='right'><input type='submit' value='Process Salaries &raquo;' name='button'></td>\n\t\t\t\t<td colspan='10' align='right'><input type='submit' value='Process Salaries &raquo;' name='button'></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t</form>";
    return $out;
}
function confirm_cusalloc($all, $k, $cusid, $totamt)
{
    $custinfo = qryCustomer($cusid);
    $OUT = "\n\t\t<input type='hidden' name='cusids[{$k}]' value='{$cusid}' />\n\t\t<input type='hidden' name='amts[{$k}]' value='{$totamt}' />";
    $OUT .= "<table " . TMPL_tblDflts . ">";
    /* OPTION 1 : AUTO ALLOCATE (allocate)
       OPTION 3 : ALLOCATE TO EACH INVOICE (allocate) */
    if ($all == 0 || $all == 2) {
        $amt = $totamt;
        /* stock invoices */
        $sql = "\n\t\t\tSELECT invnum,invid,balance,terms,odate FROM cubit.invoices \n\t\t\tWHERE cusnum = '{$cusid}' AND printed = 'y' AND balance > 0 AND div = '" . USER_DIV . "' \n\t\t\tORDER BY odate ASC";
        $rslt = db_exec($sql);
        if (pg_num_rows($rslt) > 0) {
            $OUT .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Outstanding Invoices</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Invoice</th>\n\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t<th>Terms</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>";
        }
        $i = 0;
        while (($inv = pg_fetch_array($rslt)) && $amt > 0) {
            $invid = $inv['invid'];
            if (!isset($_POST["invids"][$k][$invid])) {
                continue;
            }
            $amt -= $val = $_POST["paidamt"][$k][$invid];
            if ($val > $inv["balance"]) {
                return array(false, "Amount of " . CUR . " {$val} exceeds\n\t\t\t\t\tinvoice balance for invoice number {$inv['invnum']},\n\t\t\t\t\tcustomer: {$custinfo['surname']}, {$custinfo['cusname']}.");
            }
            $OUT .= "\n\t\t\t\t<input type='hidden' name='paidamt[{$k}][{$invid}]' value='{$val}' />\n\t\t\t\t<input type='hidden' name='invids[{$k}][{$invid}]' value='{$inv['invid']}' />\n\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t<td>{$inv['terms']} days</td>\n\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t<td>" . CUR . " {$val}</td>\n\t\t\t\t</tr>";
        }
        /* non stock invoices */
        $sql = "\n\t\t\tSELECT invnum,invid,balance,sdate as odate FROM cubit.nons_invoices \n\t\t\tWHERE cusid='{$cusid}' AND done='y' AND balance > 0 AND div='" . USER_DIV . "' \n\t\t\tORDER BY odate ASC";
        $rslt = db_exec($sql);
        if (pg_num_rows($rslt) > 0) {
            $OUT .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Outstanding Non-Stock Invoices</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Invoice</th>\n\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>";
        }
        $i = 0;
        while (($inv = pg_fetch_array($rslt)) && $amt > 0) {
            $invid = $inv['invid'];
            if (!isset($_POST["invids"][$k][$invid])) {
                continue;
            }
            $amt -= $val = $_POST["paidamt"][$k][$invid];
            if ($val > $inv["balance"]) {
                return array(false, "Amount of " . CUR . " {$val} exceeds\n\t\t\t\t\tinvoice balance for invoice number {$inv['invnum']},\n\t\t\t\t\tcustomer: {$custinfo['surname']}, {$custinfo['cusname']}.");
            }
            $OUT .= "\n\t\t\t\t<input type='hidden' name='paidamt[{$k}][{$invid}]' value='{$val}' />\n\t\t\t\t<input type='hidden' name='itype[{$k}][{$invid}]' value='Yes' />\n\t\t\t\t<input type='hidden' name='invids[{$k}][{$invid}]' value='{$inv['invid']}' />\n\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t<td>" . CUR . " {$val}</td>\n\t\t\t\t</tr>";
        }
        /* pos invoices */
        $sqls = array();
        for ($i = 1; $i <= 12; ++$i) {
            $sqls[] = "\n\t\t\t\tSELECT invnum,invid,balance,odate FROM \"{$i}\".pinvoices \n\t\t\t\tWHERE cusnum='{$cusid}' AND done='y' AND balance > 0 AND div='" . USER_DIV . "'";
        }
        $sql = implode(" UNION ", $sqls);
        $rslt = db_exec($sql);
        if (pg_num_rows($rslt) > 0) {
            $OUT .= "\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'><h3>Outstanding POS Invoices</h3></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Invoice</th>\n\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t<th></th>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t</tr>";
        }
        $i = 0;
        while ($inv = pg_fetch_array($rslt)) {
            $invid = $inv['invid'];
            if (!isset($_POST["invids"][$k][$invid])) {
                continue;
            }
            $amt -= $val = $_POST["paidamt"][$k][$invid];
            if ($val > $inv["balance"]) {
                return array(false, "Amount of " . CUR . " {$val} exceeds\n\t\t\t\t\tinvoice balance for invoice number {$inv['invnum']},\n\t\t\t\t\tcustomer: {$custinfo['surname']}, {$custinfo['cusname']}.");
            }
            $OUT .= "\n\t\t\t\t<input type='hidden' name='invids[{$k}][{$invid}]' value='{$inv['invid']}' />\n\t\t\t\t<input type='hidden' name='paidamt[{$k}][{$invid}]' value='{$val}' />\n\t\t\t\t<input type='hidden' name='ptype[{$k}][{$invid}]' value='YnYn' />\n\t\t\t\t<tr bgcolor='" . bgcolor($i) . "'>\n\t\t\t\t\t<td>{$inv['invnum']}</td>\n\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t<td>" . CUR . " {$val}</td>\n\t\t\t\t</tr>";
        }
        /* open items */
        if (sprint($amt) > 0) {
            $ox = "";
            $sql = "\n\t\t\t\tSELECT * FROM cubit.open_stmnt \n\t\t\t\tWHERE balance>0 AND cusnum='{$cusid}' AND type!='Invoice' AND type!='Non-Stock Invoice' \n\t\t\t\t\tAND type!='Interest on Outstanding balance' \n\t\t\t\tORDER BY date";
            $rslt = db_exec($sql) or errDie("Unable to get open items.");
            $open_out = $amt;
            $i = 0;
            while ($od = pg_fetch_array($rslt)) {
                if ($open_out == 0) {
                    continue;
                }
                $bgColor = bgcolor($i);
                $oid = $od['id'];
                $amt -= $val = $_POST["open_amount"][$k][$oid];
                $ox .= "\n\t\t\t\t\t<input type='hidden' name='open_amount[{$k}][{$oid}]' value='{$val}'>\n\t\t\t\t\t<input type='hidden' name='open[{$k}][{$oid}]' value='{$oid}'>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$od['type']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$od['balance']}</td>\n\t\t\t\t\t\t<td>{$od['date']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$val}</td>\n\t\t\t\t\t</tr>";
            }
            if (open()) {
                $OUT .= "\n\t\t\t\t\t<input type='hidden' name='bout[{$k}]' value='{$amt}'>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Transactions</h3></td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Description</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>";
                $OUT .= $ox;
                $bout = $amt;
                $amt = $open_out;
                if (sprint($amt) > 0) {
                    $amt = sprint($amt);
                    $OUT .= "\n\t\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t\t<td colspan='5'><b>A general transaction will credit the client's account with " . CUR . " {$amt}</b></td>\n\t\t\t\t\t\t</tr>";
                }
            } else {
                $amt = sprint($amt);
                $OUT .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td colspan='5'><b>A general transaction will credit the client's account with " . CUR . " {$amt}</b></td>\n\t\t\t\t\t</tr>";
            }
        }
    }
    vsprint($amt);
    $OUT .= "<input type='hidden' name='out[{$k}]' value='{$amt}'>";
    $OUT .= "</table>";
    return array($amt, $OUT);
}
Ejemplo n.º 14
0
function confirm($_POST)
{
    extract($_POST);
    if (isset($back)) {
        return view();
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($bankid, "num", 1, 20, "Invalid Bank ID.");
    foreach ($amount as $key => $value) {
        //	if($amount[$key] > 0){
        # check all vars
        $v->isOk($to[$key], "string", 0, 255, "Invalid receipient/depositor.");
        $v->isOk($trantype[$key], "string", 1, 20, "Invalid transaction type.");
        $v->isOk($descript[$key], "string", 0, 255, "Invalid description.");
        $v->isOk($ref[$key], "string", 0, 255, "Invalid reference <b>[{$key}]</b>.");
        $v->isOk($cheqnum[$key], "num", 0, 20, "Invalid cheque number <b>[{$key}]</b>.");
        $v->isOk($amount[$key], "float", 0, 8, "Invalid amount <b>[{$key}]</b>.");
        $v->isOk($chrgvat[$key], "string", 1, 4, "Invalid VAT option.");
        $v->isOk($accinv[$key], "num", 1, 20, "Invalid account involved <b>[{$key}]</b>.");
        if (empty($amount[$key])) {
            unset($amount[$key]);
        }
        # put date together and check
        $date[$key] = mkdate($o_year[$key], $o_month[$key], $o_day[$key]);
        $v->isOk($date[$key], "date", 1, 1, "Invalid date <b>[{$key}]</b>.");
        //	}
    }
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        return enter($_POST, $confirm);
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Get bank acc details
    $bankRslt = get("cubit", "*", "bankacct", "bankid", $bankid);
    $bank = pg_fetch_array($bankRslt);
    # Layout
    $confirm = "\n\t\t<center>\n\t\t<h3>Type in Bank Statement</h3>\n\t\t<h4>Confirm entry</h4>\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t<input type='hidden' name='bankid' value='{$bankid}'>\n\t\t\t<input type='hidden' name='number' value='{$number}'>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td align='center' colspan='4'>Bank Account : <b>({$bank['accnum']}) {$bank['accname']}</b></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Paid to/Received from</th>\n\t\t\t\t<th>Transaction type</th>\n\t\t\t\t<th>Transaction Description</th>\n\t\t\t\t<th>Reference</th>\n\t\t\t\t<th>Cheque Number</th>\n\t\t\t\t<th>Transaction Amount</th>\n\t\t\t\t<th>VAT</th>\n\t\t\t\t<th>VAT Code</th>\n\t\t\t\t<th>Contra Account</th>\n\t\t\t</tr>";
    # Display the trans
    $trans = "";
    foreach ($amount as $key => $value) {
        if ($amount[$key] > 0) {
            # get account name
            $accRslt = get("core", "accname,topacc,accnum", "accounts", "accid", $accinv[$key]);
            $acc = pg_fetch_array($accRslt);
            $vd = qryVatcode($vatcode[$key]);
            if ($vd["zero"] == "Yes") {
                $chrgvat[$key] = "no";
            }
            $vatp = $vd["vat_amount"];
            $totamt = $amount[$key];
            if ($chrgvat[$key] == "exc") {
                $vat = sprint($vatp / 100 * $amount[$key]);
                $totamt += $vat;
                $vatin = CUR . " <input type='text' size='6' name='vat[{$key}]' value='{$vat}' />";
            } elseif ($chrgvat[$key] == "inc") {
                $vat = sprint($amount[$key] / (100 + $vatp) * $vatp);
                $vatin = CUR . " <input type='text' size='6' name='vat[{$key}]' value='{$vat}' />";
            } else {
                $vat = "No VAT";
                $vatd = "{$vat}";
                $vatin = "No VAT";
            }
            # alternate bgcolor
            $bgColor = bgcolorc($key);
            vsprint($totamt);
            $trans .= "\n\t\t\t\t<input type='hidden' size='2' name='date[{$key}]' value='{$date[$key]}' />\n\t\t\t\t<input type='hidden' name='to[{$key}]' value='{$to[$key]}' />\n\t\t\t\t<input type='hidden' name='trantype[{$key}]' value='{$trantype[$key]}' />\n\t\t\t\t<input type='hidden' name='descript[{$key}]' value='{$descript[$key]}' />\n\t\t\t\t<input type='hidden' name='ref[{$key}]' value='{$ref[$key]}' />\n\t\t\t\t<input type='hidden' name='cheqnum[{$key}]' value='{$cheqnum[$key]}' />\n\t\t\t\t<input type='hidden' name='amount[{$key}]' value='{$amount[$key]}' />\n\t\t\t\t<input type='hidden' name='chrgvat[{$key}]' value='{$chrgvat[$key]}' />\n\t\t\t\t<input type='hidden' name='vatcode[{$key}]' value='{$vatcode[$key]}' />\n\t\t\t\t<input type='hidden' name='accinv[{$key}]' value='{$accinv[$key]}' />\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td align='center'>{$date[$key]}</td>\n\t\t\t\t\t<td align='center'>{$to[$key]}</td>\n\t\t\t\t\t<td align='center'>{$trantype[$key]}</td>\n\t\t\t\t\t<td align='center'>{$descript[$key]}</td>\n\t\t\t\t\t<td align='center'>{$ref[$key]}</td>\n\t\t\t\t\t<td align='center'>{$cheqnum[$key]}</td>\n\t\t\t\t\t<td align='center' nowrap='t'>" . CUR . " {$totamt}</td></td>\n\t\t\t\t\t<td align='center' nowrap='t'>{$vatin}</td>\n\t\t\t\t\t<td align='center'>{$vd['code']}</td>\n\t\t\t\t\t<td align='center'>{$acc['topacc']}/{$acc['accnum']} - {$acc['accname']}</td></td>\n\t\t\t\t</tr>";
        }
    }
    if (strlen($trans) < 5) {
        $err = "<li class='err'> - Please enter full transaction details";
        return enter($_POST, $err);
    }
    $confirm .= "\n\t\t\t{$trans}\n\t\t\t<tr>\n\t\t\t\t<td></td>\n\t\t\t\t<td align='right'><input type='submit' name='batch' value='Add to Batch &raquo'></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><input type='submit' name='back' value='&laquo; Correction'></td>\n\t\t\t\t<td align='right' colspan='4'><input type='submit' value='Write &raquo'></td>\n\t\t\t</tr>\n\t\t</form>\n\t\t</table>" . mkQuickLinks();
    return $confirm;
}
function cp2($id, $amount, $description, $contra, $refnum, $date, $cheque = 0, $bankid)
{
    $cheque += 0;
    $sdate = date("Y-m-d");
    $accdate = $date;
    if ($accdate == 0) {
        $accdate = date("Y-m-d");
    }
    $cus = qryCustomer($id, "cusnum, deptid, cusname, surname");
    $dept = qryDepartment($cus["deptid"], "debtacc");
    // 	db_connect();
    //
    // 	$Sl = "SELECT cusnum,deptid,cusname,surname FROM customers WHERE cusnum = '$id' AND div = '".USER_DIV."'";
    // 	$Ri = db_exec($Sl) or errDie("Unable to get data.");
    // 	$cus = pg_fetch_array($Ri);
    db_conn('core');
    $Sl = "SELECT * FROM bankacc WHERE accid='{$bankid}'";
    $Rx = db_exec($Sl) or errDie("Uanble to get bank acc.");
    if (pg_numrows($Rx) < 1) {
        return "Invalid bank acc.";
    }
    $link = pg_fetch_array($Rx);
    #######################################################################################################
    ########################################### COMPILE ###################################################
    #######################################################################################################
    $out = $amount;
    $invs_arr = array();
    // Connect to database
    db_connect();
    #####################[ GET OUTSTANDING INVOICES ]######################
    $sql = "\n\t\tSELECT invnum, invid, balance, terms, odate \n\t\tFROM invoices \n\t\tWHERE cusnum = '{$id}' AND printed = 'y' AND balance>0 AND div = '" . USER_DIV . "' ORDER BY odate ASC";
    $prnInvRslt = db_exec($sql);
    while (($inv = pg_fetch_array($prnInvRslt)) && $out > 0) {
        $invs_arr[] = array("s", $inv['odate'], "{$inv['invid']}", "{$inv['balance']}");
    }
    #####################[ GET OUTSTANDING NON STOCK INVOICES ]######################
    $sql = "\n\t\tSELECT invnum, invid, balance, odate \n\t\tFROM nons_invoices \n\t\tWHERE cusid='{$id}' AND done='y' AND balance>0 AND div='" . USER_DIV . "' ORDER BY odate ASC";
    $prnInvRslt = db_exec($sql);
    while (($inv = pg_fetch_array($prnInvRslt)) && $out > 0) {
        $invs_arr[] = array("n", $inv['odate'], "{$inv['invid']}", "{$inv['balance']}");
    }
    $out = sprint($out);
    #####################[ GET OUTSTANDING POS INVOICES ]######################
    $sqls = array();
    for ($i = 1; $i <= 12; ++$i) {
        $sqls[] = "\n\t\t\tSELECT invnum, invid, balance, odate \n\t\t\tFROM \"{$i}\".pinvoices \n\t\t\tWHERE cusnum='{$id}' AND done='y' AND balance > 0 AND div='" . USER_DIV . "'";
    }
    $sql = implode(" UNION ", $sqls);
    $prnInvRslt = db_exec($sql);
    while ($inv = pg_fetch_array($prnInvRslt)) {
        $invs_arr[] = array("p", $inv['odate'], "{$inv['invid']}", "{$inv['balance']}");
    }
    #compile results into an array we can sort by date
    $search_arr = array();
    foreach ($invs_arr as $key => $array) {
        $search_arr[$key] = $array[1];
    }
    #sort array by date
    asort($search_arr);
    #add sorted invoices to payment listing
    foreach ($search_arr as $key => $date) {
        $arr = $invs_arr[$key];
        if ($arr[0] == "s") {
            db_connect();
            $get_sql = "\n\t\t\t\tSELECT invnum, invid, balance, terms, odate \n\t\t\t\tFROM invoices \n\t\t\t\tWHERE cusnum = '{$id}' AND printed = 'y' AND balance>0 AND div = '" . USER_DIV . "' AND invid = '{$arr['2']}'  LIMIT 1";
            $run_sql = db_exec($get_sql) or errDie("Unable to get stock invoice information.");
            if (pg_numrows($run_sql) > 0) {
                $inv = pg_fetch_array($run_sql);
                $invid = $inv['invid'];
                $val = allocamt($out, $inv["balance"]);
                if ($val == 0.0) {
                    continue;
                }
                $inv['invnum'] += 0;
                // reduce invoice balance
                $sql = "\n\t\t\t\t\tUPDATE cubit.invoices \n\t\t\t\t\tSET balance = (balance - {$val}::numeric(13,2)) \n\t\t\t\t\tWHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
                $payRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF);
                $sql = "\n\t\t\t\t\tUPDATE cubit.open_stmnt \n\t\t\t\t\tSET balance = (balance - {$val}::numeric(13,2)) \n\t\t\t\t\tWHERE invid = '{$inv['invnum']}' AND div = '" . USER_DIV . "'";
                $payRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF);
                # record the payment on the statement
                $sql = "\n\t\t\t\t\tINSERT INTO cubit.stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, date, \n\t\t\t\t\t\ttype, div, allocation_date\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$id}','{$inv['invnum']}', '" . ($val - $val * 2) . "', '{$accdate}', \n\t\t\t\t\t\t'Payment for Invoice No. {$inv['invnum']}', '" . USER_DIV . "', '{$inv['odate']}'\n\t\t\t\t\t)";
                $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF);
                custledger($cus['cusnum'], $link['accnum'], $accdate, $inv['invnum'], "Payment for Invoice No. {$inv['invnum']}", $val, "c");
                $rinvids .= "|{$invids[$key]}";
                $amounts .= "|{$paidamt[$key]}";
                if ($inv['prd'] == "0") {
                    $inv['prd'] = PRD_DB;
                }
                $invprds .= "|{$inv['prd']}";
                $rages .= "|0";
                $invidsers .= " - {$inv['invnum']}";
            }
        } elseif ($arr[0] == "n") {
            db_connect();
            $get_sql = "\n\t\t\t\tSELECT invnum, invid, balance, odate \n\t\t\t\tFROM nons_invoices \n\t\t\t\tWHERE cusid='{$id}' AND done='y' AND balance>0 AND div='" . USER_DIV . "' AND invid = '{$arr['2']}' LIMIT 1";
            $run_sql = db_exec($get_sql) or errDie("Unable to get non stock information.");
            if (pg_numrows($run_sql) > 0) {
                $inv = pg_fetch_array($run_sql);
                $invid = $inv['invid'];
                $val = allocamt($out, $inv["balance"]);
                if ($val == 0.0) {
                    continue;
                }
                $inv['invnum'] += 0;
                # reduce the money that has been paid
                $sql = "\n\t\t\t\t\tUPDATE cubit.nons_invoices \n\t\t\t\t\tSET balance = (balance - {$val}::numeric(13,2)) \n\t\t\t\t\tWHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
                $payRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF);
                $sql = "\n\t\t\t\t\tUPDATE cubit.open_stmnt \n\t\t\t\t\tSET balance = (balance - {$val}::numeric(13,2)) \n\t\t\t\t\tWHERE invid = '{$inv['invnum']}' AND div = '" . USER_DIV . "'";
                $payRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF);
                # record the payment on the statement
                $sql = "\n\t\t\t\t\tINSERT INTO cubit.stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, date, \n\t\t\t\t\t\ttype, \n\t\t\t\t\t\tdiv, allocation_date\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$id}', '{$inv['invnum']}', '" . ($val - $val * 2) . "', '{$accdate}', \n\t\t\t\t\t\t'Payment for Non Stock Invoice No. {$inv['invnum']} - {$inv['descrip']}', \n\t\t\t\t\t\t'" . USER_DIV . "', '{$inv['odate']}'\n\t\t\t\t\t)";
                $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF);
                custledger($cus['cusnum'], $link['accnum'], $accdate, $inv['invnum'], "Payment for Non Stock Invoice No. {$inv['invnum']} - {$inv['descrip']}", $val, "c");
                $rinvids .= "|{$invids[$key]}";
                $amounts .= "|{$paidamt[$key]}";
                $invprds .= "|0";
                $rages .= "|{$inv['age']}";
                $invidsers .= " - {$inv['invnum']}";
            }
        } else {
            db_connect();
            $sqls = array();
            for ($i = 1; $i <= 12; ++$i) {
                $sqls[] = "\n\t\t\t\t\tSELECT invnum, invid, balance, odate, '{$i}' AS prd  \n\t\t\t\t\tFROM \"{$i}\".pinvoices \n\t\t\t\t\tWHERE cusnum='{$id}' AND done='y' AND balance > 0 AND div='" . USER_DIV . "' AND invid = '{$arr['2']}'";
            }
            $get_sql = implode(" UNION ", $sqls);
            $run_sql = db_exec($get_sql) or errDie("Unable to get pos invoice information.");
            if (pg_numrows($run_sql) > 0) {
                $inv = pg_fetch_array($run_sql);
                $invid = $inv['invid'];
                $val = allocamt($out, $inv["balance"]);
                if ($val == 0.0) {
                    continue;
                }
                // reduce the invoice balance
                $sql = "\n\t\t\t\t\tUPDATE \"{$inv['prd']}\".pinvoices \n\t\t\t\t\tSET balance = (balance - {$val}::numeric(13,2)) \n\t\t\t\t\tWHERE invid = '{$invid}' AND div = '" . USER_DIV . "'";
                $payRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF);
                $sql = "\n\t\t\t\t\tUPDATE cubit.open_stmnt \n\t\t\t\t\tSET balance = (balance - {$val}::numeric(13,2)) \n\t\t\t\t\tWHERE invid = '{$inv['invnum']}' AND div = '" . USER_DIV . "'";
                $payRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF);
                # record the payment on the statement
                $sql = "\n\t\t\t\t\tINSERT INTO cubit.stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, date, \n\t\t\t\t\t\ttype, div, allocation_date\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$cus['cusnum']}', '{$inv['invnum']}', '" . ($val - $val * 2) . "', '{$accdate}', \n\t\t\t\t\t\t'Payment for Non Stock Invoice No. {$inv['invnum']}', '" . USER_DIV . "', '{$inv['odate']}'\n\t\t\t\t\t)";
                $stmntRslt = db_exec($sql) or errDie("Unable to insert statement record in Cubit.", SELF);
                custledger($cus['cusnum'], $link['accnum'], $accdate, $inv['invnum'], "Payment for Non Stock Invoice No. {$inv['invnum']}", $val, "c");
                $rinvids .= "|{$invids[$key]}";
                $amounts .= "|{$paidamt[$key]}";
                $invprds .= "|{$inv['prd']}";
                $rages .= "|0";
                $invidsers .= " - {$inv['invnum']}";
            }
        }
    }
    #if there is any amount unallocated, it goes to general transaction
    $confirm .= "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td colspan='6'><b>A general transaction will credit the client's account with " . CUR . " {$out} </b></td>\n\t\t</tr>";
    vsprint($out);
    $confirm .= "<input type='hidden' name='out' value='{$out}'>";
    ###############################################################################################################################
    ###############################################################################################################################
    ###############################################################################################################################
    #######################################################################################################
    ########################################### PROCESS ###################################################
    #######################################################################################################
    # update the customer (make balance less)
    $sql = "\n\t\tUPDATE cubit.customers \n\t\tSET balance = (balance - '{$amount}'::numeric(13,2)) \n\t\tWHERE cusnum = '{$id}' AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to update invoice in Cubit.", SELF);
    $cols = grp(m("bankid", $bankid), m("trantype", "deposit"), m("date", $accdate), m("name", "{$cus['cusname']} {$cus['surname']}"), m("descript", "Payment for Invoices {$invidsers} from customer {$cus['cusname']} {$cus['surname']}"), m("cheqnum", $cheque), m("amount", $amount), m("banked", "no"), m("accinv", $dept["debtacc"]), m("cusnum", $cus["cusnum"]), m("rinvids", $rinvids), m("amounts", $amounts), m("invprds", $invprds), m("rages", $rages), m("reference", $reference), m("div", USER_DIV));
    $dbobj = new dbUpdate("cashbook", "cubit", $cols);
    $dbobj->run(DB_INSERT);
    $dbobj->free();
    writetrans($link['accnum'], $dept['debtacc'], $accdate, $refnum, $amount, "Payment for Invoices {$invidsers} from customer {$cus['cusname']} {$cus['surname']}");
    db_conn('cubit');
    if ($out > 0) {
        /* START OPEN ITEMS */
        $openstmnt = new dbSelect("open_stmnt", "cubit", grp(m("where", "balance>0 AND cusnum='{$id}'"), m("order", "date")));
        $openstmnt->run();
        $open_out = $out;
        $i = 0;
        $ox = "";
        while ($od = $openstmnt->fetch_array()) {
            if ($open_out == 0) {
                continue;
            }
            $oid = $od['id'];
            if ($open_out >= $od['balance']) {
                $open_amount[$oid] = $od['balance'];
                $open_out = sprint($open_out - $od['balance']);
                $ox .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' size='20' name='open[{$oid}]' value='{$oid}'>{$od['type']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$od['balance']}</td>\n\t\t\t\t\t\t<td>{$od['date']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='open_amount[{$oid}]' value='{$open_amount[$oid]}'>" . CUR . " {$open_amount[$oid]}</td>\n\t\t\t\t\t</tr>";
                $Sl = "UPDATE cubit.open_stmnt SET balance=balance-'{$open_amount[$oid]}' WHERE id='{$oid}'";
                $Ri = db_exec($Sl) or errDie("Unable to update statement.");
            } elseif ($open_out < $od['balance']) {
                $open_amount[$oid] = $open_out;
                $open_out = 0;
                $ox .= "\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td><input type='hidden' size='20' name='open[{$oid}]' value='{$od['id']}'>{$od['type']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$od['balance']}</td>\n\t\t\t\t\t\t<td>{$od['date']}</td>\n\t\t\t\t\t\t<td><input type='hidden' name='open_amount[{$oid}]' value='{$open_amount[$oid]}'>" . CUR . " {$open_amount[$oid]}</td>\n\t\t\t\t\t</tr>";
                $Sl = "UPDATE cubit.open_stmnt SET balance=balance-'{$open_amount[$oid]}' WHERE id='{$oid}'";
                $Ri = db_exec($Sl) or errDie("Unable to update statement.");
            }
            $i++;
        }
        if (open()) {
            $bout = $out;
            $out = $open_out;
            if ($out > 0) {
                $sql = "\n\t\t\t\t\tINSERT INTO cubit.open_stmnt (\n\t\t\t\t\t\tcusnum, invid, amount, balance, date, type, st, div\n\t\t\t\t\t) VALUES (\n\t\t\t\t\t\t'{$cus['cusnum']}', '0', '-{$out}', '-{$out}', '{$accdate}', 'Payment Received', 'n', '" . USER_DIV . "'\n\t\t\t\t\t)";
                $stmntRslt = db_exec($sql) or errDie("Unable to Insert statement record in Cubit.", SELF);
            }
            $out = $bout;
        }
        if ($out > 0) {
            recordCT($out, $cus['cusnum'], $accdate, 0);
            $cols = grp(m("cusnum", $cus["cusnum"]), m("invid", 0), m("amount", -$out), m("date", $accdate), m("type", "Payment Received"), m("div", USER_DIV), m("allocation_date", $accdate));
            $dbobj = new dbUpdate("stmnt", "cubit", $cols);
            $dbobj->run(DB_INSERT);
            $dbobj->free();
            custledger($cus['cusnum'], $link['accnum'], $accdate, "PAYMENT", "Payment received.", $out, "c");
        }
    }
    /* start moving invoices */
    // move invoices that are fully paid
    $sql = "SELECT * FROM cubit.invoices WHERE balance=0 AND printed = 'y' AND done = 'y' AND div = '" . USER_DIV . "'";
    $invbRslt = db_exec($sql) or errDie("Unable to update Invoice information in Cubit.", SELF);
    while ($x = pg_fetch_array($invbRslt)) {
        if (($prd = $x['prd']) == "0") {
            $prd = PRD_DB;
        }
        // move invoice
        $cols = grp(m("invid", $x["invid"]), m("invnum", $x["invnum"]), m("deptid", $x["deptid"]), m("cusnum", $x["cusnum"]), m("deptname", $x["deptname"]), m("cusacc", $x["cusacc"]), m("cusname", $x["cusname"]), m("surname", $x["surname"]), m("cusaddr", $x["cusaddr"]), m("cusvatno", $x["cusvatno"]), m("cordno", $x["cordno"]), m("ordno", $x["ordno"]), m("chrgvat", $x["chrgvat"]), m("terms", $x["terms"]), m("traddisc", $x["traddisc"]), m("salespn", $x["salespn"]), m("odate", $x["odate"]), m("delchrg", $x["delchrg"]), m("subtot", $x["subtot"]), m("vat", $x["vat"]), m("total", $x["total"]), m("age", $x["age"]), m("comm", $x["comm"]), m("discount", $x["discount"]), m("delivery", $x["delivery"]), m("docref", $x["docref"]), m("prd", $x["prd"]), m("delvat", $x["delvat"]), m("balance", 0), m("printed", "y"), m("done", "y"), m("username", USER_NAME), m("div", USER_DIV));
        $dbobj = new dbUpdate("invoices", $prd, $cols);
        $dbobj->run(DB_INSERT);
        $dbobj->free();
        // record movement
        $cols = grp(m("invtype", "inv"), m("invnum", $x["invnum"]), m("prd", $x["prd"]), m("docref", $x["docref"]), m("div", USER_DIV));
        $dbobj->setTable("movinv", "cubit");
        $dbobj->setOpt($cols);
        $dbobj->run();
        $dbobj->free();
        // move invoice items
        $inv_items = new dbSelect("inv_items", "cubit", grp(m("where", wgrp(m("invid", $x["invid"]), m("div", USER_DIV)))));
        $inv_items->run();
        while ($xi = $inv_items->fetch_array()) {
            $xi['vatcode'] += 0;
            $xi['account'] += 0;
            $xi['del'] += 0;
            $cols = grp(m("invid", $x["invid"]), m("whid", $xi["whid"]), m("stkid", $xi["stkid"]), m("qty", $xi["qty"]), m("unitcost", $xi["unitcost"]), m("amt", $xi["amt"]), m("disc", $xi["disc"]), m("discp", $xi["discp"]), m("vatcode", $xi["vatcode"]), m("account", $xi["account"]), m("description", $xi["description"]), m("del", $xi["del"]), m("noted", $xi["noted"]), m("serno", $xi["serno"]), m("div", USER_DIV));
            $dbobj->setTable("inv_items", $prd);
            $dbobj->setOpt($cols);
            $dbobj->run();
            $dbobj->free();
        }
        /* remove invoice from cubit schema */
        $dbobj = new dbDelete("invoices", "cubit", wgrp(m("invid", $x["invid"]), m("div", USER_DIV)));
        $dbobj->run();
        $dbobj->setTable("inv_items", "cubit");
        $dbobj->run();
    }
}
Ejemplo n.º 16
0
function confirm($_POST)
{
    extract($_POST);
    # check if anything is selected
    if (!isset($banked)) {
        $err = "<li class='err'> Please Select at least one entry to update.";
        return cashbook($_POST, $err);
    }
    /* - Start Hooks - */
    $vatacc = gethook("accnum", "salesacc", "name", "VAT");
    /* - End Hooks - */
    $refnum = getrefnum();
    /*refnum*/
    # Record all trans
    $hide = "";
    foreach ($banked as $key => $cashid) {
        $hide .= "<input type='hidden' name='banked[]' value='{$cashid}'>";
    }
    // Connect to database
    db_Connect();
    $sql = "SELECT * FROM cashbook WHERE bankid = '{$bankid}' AND banked = 'no' AND div = '" . USER_DIV . "' ORDER BY date DESC";
    $cashRslt = db_exec($sql) or errDie("ERROR: Unable to retrieve bank transactions from database.", SELF);
    $sql = "SELECT * FROM bankacct WHERE bankid= '{$bankid}' AND div = '" . USER_DIV . "'";
    $bankRslt = db_exec($sql);
    $bank = pg_fetch_array($bankRslt);
    $cur = CUR;
    $amtd = "amount";
    if ($bank['btype'] == 'int') {
        $currs = getSymbol($bank['fcid']);
        $cur = $currs['symbol'];
        $amtd = "famount";
    }
    $tot = 0;
    $totr = 0;
    $totp = 0;
    $recpts = "";
    $paymnts = "";
    while ($cash = pg_fetch_array($cashRslt)) {
        # skip rivals
        if (in_array($cash['cashid'], $banked)) {
            continue;
        }
        if ($cash['cheqnum'] == "0") {
            $cash['cheqnum'] = "";
        }
        vsprint($cash[$amtd]);
        if ($cash['trantype'] == "deposit") {
            $recpts .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$cash['date']}</td>\n\t\t\t\t\t<td>{$cash['descript']}</td>\n\t\t\t\t\t<td>{$cash['cheqnum']}</td>\n\t\t\t\t\t<td>{$cash['reference']}</td>\n\t\t\t\t\t<td align='right'>{$cur} {$cash[$amtd]}</td>\n\t\t\t\t</tr>";
            $totr += $cash[$amtd];
        } else {
            $paymnts .= "\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$cash['date']}</td>\n\t\t\t\t\t<td>{$cash['descript']}</td>\n\t\t\t\t\t<td>{$cash['cheqnum']}</td>\n\t\t\t\t\t<td>{$cash['reference']}</td>\n\t\t\t\t\t<td align='right'>{$cur} {$cash[$amtd]}</td>\n\t\t\t\t</tr>";
            $totp += $cash[$amtd];
        }
        $tot += $cash[$amtd];
    }
    $reconbal = sprint($cbal + ($totr - $totp));
    vsprint($totr);
    vsprint($totp);
    # get hook account number
    core_connect();
    $sql = "SELECT * FROM bankacc WHERE accid = '{$bankid}' AND div = '" . USER_DIV . "'";
    $rslt = db_exec($sql) or errDie("Unable to retrieve bank account link from Cubit", SELF);
    # check if link exists
    if (pg_numrows($rslt) < 1) {
        return "<li class='err'> ERROR : The bank account that you selected doesn't appear to have an account linked to it.";
    }
    $banklnk = pg_fetch_array($rslt);
    # Get bank balance
    $sql = "SELECT (debit - credit) as bal FROM trial_bal WHERE period='12' AND accid = '{$banklnk['accnum']}' AND div = '" . USER_DIV . "'";
    $brslt = db_exec($sql) or errDie("Unable to retrieve bank account link from Cubit", SELF);
    $bal = pg_fetch_array($brslt);
    if ($bank['btype'] == 'int') {
        $bal['bal'] = $bank['fbalance'];
    }
    $diff = sprint($reconbal - $bal['bal']);
    $derr = "";
    $conf = "<input type='submit' value='Write &raquo'>";
    if ($diff != 0) {
        $derr = "\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'><b class='err'>Bank statement and computer balance not balancing by</b></td>\n\t\t\t\t<td align='right'>{$cur} {$diff}</td>\n\t\t\t</tr>";
        $conf = "";
    }
    // Layout
    $update = "\n\t\t<center>\n\t\t<h3>Bank Reconciliation</h3>\n\t\t<h2>Confirm</h2>\n\t\t<form action='" . SELF . "' method='POST' name='form1'>\n\t\t\t<input type='hidden' name='key' value='confirmed' />\n\t\t\t<input type='hidden' name='bankid' value='{$bankid}' />\n\t\t\t{$hide}\n\t\t\t<input type='hidden' name='cbal' value='{$cbal}' />\n\t\t\t<input type='hidden' name='sbal' value='{$sbal}' />\n\t\t\t<input type='hidden' name='oput' value='{$oput}' />\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<td colspan='10'>\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<td><b>Bank Account : </b>{$bank['accname']}</td>\n\t\t\t\t\t\t\t<td>&nbsp;</td>\n\t\t\t\t\t\t\t<td align='right'><b>Prepared By : </b>" . USER_NAME . "</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>Closing Balance As per Bank Statement : </b>{$cur} {$cbal}</td>\n\t\t\t\t\t\t\t<td>&nbsp;</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><b>Plus Outstanding Receipts :</b></td>\n\t\t\t</tr>\n\t\t\t{$recpts}\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'>&nbsp;</td>\n\t\t\t\t<td align='right'>____________</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4' align='right'><b>Sub Total</b></td>\n\t\t\t\t<td align='right'>{$cur} {$totr}</td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td><b>Less Outstanding Payments :</b></td>\n\t\t\t</tr>\n\t\t\t{$paymnts}\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'>&nbsp;</td>\n\t\t\t\t<td align='right'>____________</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4' align='right'><b>Sub Total</b></td>\n\t\t\t\t<td align='right'>{$cur} {$totp}</td>\n\t\t\t</tr>\n\t\t\t" . TBL_BR . "\n\t\t\t{$derr}\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'>&nbsp;</td>\n\t\t\t\t<td align='right'>____________</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'><b>Reconciled Bank Balance</b></td>\n\t\t\t\t<td align='right'>{$cur} {$reconbal}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'><b>Computer Bank Balance</b></td>\n\t\t\t\t<td align='right'>{$cur} {$bal['bal']}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'><br></td>\n\t\t\t\t<td align='right'>____________</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'><b>Diff</b></td>\n\t\t\t\t<td align='right'>{$cur} {$diff}</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan='4'>&nbsp;</td>\n\t\t\t\t<td align='right'>____________</td>\n\t\t\t</tr>";
    $button = TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td align=right><input type='button' value='&laquo Back' onClick='javascript:history.back()' /></td>\n\t\t\t\t<td>{$conf}</td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<p>\n\t\t<table class='quicklinks' " . TMPL_tblDflts . ">\n\t\t\t<tr><th>Quick Links</th></tr>\n\t\t\t<tr><td><a href='index-reports.php'>Financials</a></td></tr>\n\t\t\t<tr><td><a href='index-reports-banking.php'>Banking Reports</a></td></tr>\n\t\t\t<tr><td><a href='../main.php'>Main Menu</a></td></tr>\n\t\t</table>\n\t\t</p>\n\t\t</form>";
    $update .= $button;
    $OUTPUT = $update;
    require "../tmpl-print.php";
}
function confirm($_POST)
{
    # get vars
    extract($_POST);
    if (isset($back)) {
        return alloc($_POST);
    }
    if (!isset($out1)) {
        $out1 = '';
    }
    if (!isset($out2)) {
        $out2 = '';
    }
    if (!isset($out3)) {
        $out3 = '';
    }
    if (!isset($out4)) {
        $out4 = '';
    }
    if (!isset($out5)) {
        $out5 = '';
    }
    $OUT1 = $out1;
    $OUT2 = $out2;
    $OUT3 = $out3;
    $OUT4 = $out4;
    $OUT5 = $out5;
    if (!isset($overpay)) {
        $overpay = 0;
    }
    if (!isset($stock_setamt) or !is_array($stock_setamt)) {
        $setamt = 0;
        $stock_setamt = array(0);
    } else {
        $setamt = array_sum($stock_setamt);
    }
    if (!isset($paidamt) or !is_array($paidamt)) {
        $amt = 0;
        $paidamt = array(0);
    } else {
        $amt = array_sum($paidamt);
    }
    #add the overpay amount to the total ?
    //	$amt += $overpay;
    #handle missing description
    if (!isset($descript) or strlen($descript) < 1) {
        $descript = $reference;
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($all, "num", 1, 1, "Invalid allocation.");
    $v->isOk($bankid, "num", 1, 30, "Invalid Bank Account.");
    $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", 1, 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, 15, "Invalid amount.");
    $v->isOk($overpay, "float", 1, 15, "Invalid unallocated payment amount.");
    $v->isOk($setamt, "float", 1, 40, "Invalid Settlement Discount Amount.");
    $v->isOk($setvat, "string", 1, 10, "Invalid Settlement VAT Option.");
    $v->isOk($setvatcode, "string", 1, 40, "Invalid Settlement VAT code");
    $v->isOk($out, "float", 1, 10, "Invalid out amount.");
    $v->isOk($out1, "float", 0, 10, "Invalid paid amount(currant).");
    $v->isOk($out2, "float", 0, 10, "Invalid paid amount(30).");
    $v->isOk($out3, "float", 0, 10, "Invalid paid amount(60).");
    $v->isOk($out4, "float", 0, 10, "Invalid paid amount(90).");
    $v->isOk($out5, "float", 0, 10, "Invalid paid amount(120).");
    $v->isOk($process_type, "string", 1, 6, "Invalid Payment Process Type.");
    $v->isOk($supid, "num", 1, 10, "Invalid Supplier number.");
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$key] < 0.01) {
                continue;
            }
            if (!isset($stock_setamt[$key]) or strlen($stock_setamt[$key]) < 1) {
                $stock_setamt[$key] = 0;
            }
            $v->isOk($invids[$key], "num", 1, 50, "Invalid Invoice No. [{$key}]");
            $v->isOk($paidamt[$key], "float", 1, 20, "Invalid amount to be paid. [{$key}]");
            $v->isOk($stock_setamt[$key], "float", 1, 20, "Invalid settlement discount amount.");
            if (sprint($paidamt[$key] + $stock_setamt[$key]) > sprint($totamt[$key])) {
                $v->addError($paidamt[$key], "Total Paid Amount For Purchase: {$invids[$key]} Is More Than Total Outstanding Amount. (" . sprint($totamt[$key]) . ")");
            }
        }
    }
    # 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 alloc($_POST, $confirm . "<br>");
    }
    #set some vars, after validation of course ...
    $overpay = sprint($overpay + 0);
    $setamt = array_sum($stock_setamt);
    $date = "{$date_year}-{$date_month}-{$date_day}";
    # CHECK IF THIS DATE IS IN THE BLOCKED RANGE
    $blocked_date_from = getCSetting("BLOCKED_FROM");
    $blocked_date_to = getCSetting("BLOCKED_TO");
    if (strtotime($date) >= strtotime($blocked_date_from) and strtotime($date) <= 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>";
    }
    $out1 += 0;
    $out2 += 0;
    $out3 += 0;
    $out4 += 0;
    $out5 += 0;
    # check invoice payments
    $tot = 0;
    if (isset($invids)) {
        foreach ($invids as $key => $value) {
            if ($paidamt[$key] < 0.01) {
                continue;
            }
            $tot += $paidamt[$key];
        }
    }
    if (sprint($tot + $out + $out1 + $out2 + $out3 + $out4 + $out5 - $amt) > sprint(0)) {
        return "<li class='err'>The total amount for invoices is greater than the amount received.\n\t\tPlease check the details.</li>" . alloc($_POST);
    }
    if (sprint($setamt) > 0) {
        if (array_sum($stock_setamt) != $setamt) {
            return "<li class='err'>The total settlement amount for invoices is not equal to the amount received.\n\t\t\tPlease check the details.</li>" . alloc($_POST);
        }
    }
    vsprint($out);
    $confirm = "\n\t\t<h3>New Bank Payment</h3>\n\t\t<h4>Confirm entry (Please check the details)</h4>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t<form action='" . SELF . "' method='POST'>\n\t\t\t<input type='hidden' name='key' value='write'>\n\t\t\t<input type='hidden' name='bankid' value='{$bankid}'>\n\t\t\t<input type='hidden' name='date' value='{$date}'>\n\t\t\t<input type='hidden' name='supid' value='{$supid}'>\n\t\t\t<input type='hidden' name='descript' value='{$descript}'>\n\t\t\t<input type='hidden' name='reference' value='{$reference}'>\n\t\t\t<input type='hidden' name='cheqnum' value='{$cheqnum}'>\n\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t<input type='hidden' name='out' value='{$out}'>\n\t\t\t<input type='hidden' name='amt' value='{$amt}'>\n\t\t\t<input type='hidden' name='overpay' value='{$overpay}'>\n\t\t\t<input type='hidden' name='setamt' value='{$setamt}'>\n\t\t\t<input type='hidden' name='setvat' value='{$setvat}'>\n\t\t\t<input type='hidden' name='setvatcode' value='{$setvatcode}'>\n\t\t\t<input type='hidden' name='process_type' value='{$process_type}'>";
    # Get bank account name
    db_connect();
    $sql = "SELECT accname,bankname FROM bankacct WHERE bankid = '{$bankid}' AND div = '" . USER_DIV . "'";
    $bankRslt = db_exec($sql);
    $bank = pg_fetch_array($bankRslt);
    if (pg_num_rows($bankRslt) < 1) {
        $bank['accname'] = "Cash";
        $bank['bankname'] = "";
    }
    # Supplier name
    $sql = "SELECT supno,supname FROM suppliers WHERE supid = '{$supid}' AND div = '" . USER_DIV . "'";
    $supRslt = db_exec($sql);
    $sup = pg_fetch_array($supRslt);
    $amt = sprint($amt);
    if ($setvat == "inc") {
        $showsetvat = "VAT Inclusive";
    } else {
        $showsetvat = "No VAT";
    }
    //	$overpay = sprint ($amt - array_sum($paidamt));
    if ($overpay < 0) {
        $overpay = 0.0;
    }
    $confirm .= "\n\t\t<tr>\n\t\t\t<th colspan='2'>Payment Details</th>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Account</td>\n\t\t\t<td>{$bank['accname']} - {$bank['bankname']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Payment Date</td>\n\t\t\t<td valign='center'>{$date}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Paid To</td>\n\t\t\t<td valign='center'>({$sup['supno']}) {$sup['supname']}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Description</td>\n\t\t\t<td valign='center'>{$descript}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Reference</td>\n\t\t\t<td valign='center'>{$reference}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Cheque Number</td>\n\t\t\t<td valign='center'>{$cheqnum}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Amount</td>\n\t\t\t<td valign='center'>" . CUR . " {$amt}</td>\n\t\t</tr>\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>Settlement Discount</td>\n\t\t\t<td valign='center'>" . CUR . " " . sprint($setamt) . " {$showsetvat}</td>\n\t\t</tr>\n\t\t" . TBL_BR . "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td colspan='5'><b>A general transaction will credit the client's account with " . CUR . " {$overpay} </b></td>\n\t\t</tr>";
    if (sprint($setamt) > 0) {
        $doset = TRUE;
    } else {
        $doset = FALSE;
    }
    if ($all == 2) {
        if ($doset) {
            $showsethead = "<th>Settlement</th>";
        } else {
            $showsethead = "";
        }
        // Layout
        $confirm .= "\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t</tr>\n\t\t\t<!--<table " . TMPL_tblDflts . " width='90%'>-->\n\t\t\t<tr>\n\t\t\t\t<th>Purchase</th>\n\t\t\t\t<th>Outstanding amount</th>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t\t{$showsethead}\n\t\t\t</tr>";
        $i = 0;
        // for bgcolor
        if (isset($invids)) {
            foreach ($invids as $key => $value) {
                if ($paidamt[$key] < 0.01) {
                    continue;
                }
                $paidamt[$key] = sprint($paidamt[$key]);
                db_conn("cubit");
                # Get all the details
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE purid='{$invids[$key]}' AND div = '" . USER_DIV . "'";
                $invRslt = db_exec($sql) or errDie("Unable to access database.");
                if (pg_numrows($invRslt) < 1) {
                    $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE intpurid='{$invids[$key]}' AND div = '" . USER_DIV . "'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        return "<li class='err'> - Invalid ord number {$invids[$key]}.</li>";
                    }
                }
                $inv = pg_fetch_array($invRslt);
                if ($inv['invid2'] > 0) {
                    $inv['invid'] = $inv['invid2'];
                }
                $invid = $inv['invid'];
                #handle warnings ...
                if ($paidamt[$key] + $stock_setamt[$key] < sprint($inv['balance'])) {
                    $warning = "<td><li class='err'>Paying Less Than Total Amount.</li></td>";
                } elseif ($paidamt[$key] + $stock_setamt[$key] > sprint($inv['balance'])) {
                    $warning = "<td><li class='err'>Paying More Than Total Amount Outstanding.</li></td>";
                } else {
                    $warning = "";
                }
                if ($doset) {
                    if (!isset($stock_setamt[$invid])) {
                        $stock_setamt[$invid] = "";
                    }
                    $showset = "<td><input type='hidden' name='stock_setamt[{$key}]' value='{$stock_setamt[$key]}'>" . CUR . " " . sprint($stock_setamt[$key]) . "</td>";
                } else {
                    $showset = "<td><input type='hidden' name='stock_setamt[{$key}]' value='0'></td>";
                }
                $confirm .= "\n\t\t\t\t\t<input type='hidden' size='20' name='invids[{$key}]' value='{$inv['invid']}'>\n\t\t\t\t\t<input type='hidden' name='paidamt[{$key}]' size='7' value='{$paidamt[$key]}'>\n\t\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t\t<td>{$inv['invid']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t<td>" . CUR . " {$paidamt[$key]}</td>\n\t\t\t\t\t\t{$showset}\n\t\t\t\t\t\t{$warning}\n\t\t\t\t\t</tr>";
                $i++;
            }
        } else {
            $confirm .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td colspan='4'>No Payments Made</td>\n\t\t\t\t</tr>";
        }
        // 0.01 because of high precisions like 0.0000000001234 still matching
        //		if ($out >= 0.01) {
        //			$confirm .= "
        //			<tr class='".bg_class()."'>
        //				<td colspan='5'><b>A general transaction will debit the supplier's account
        //					with ".CUR." ".sprint($out)." </b>
        //				</td>
        //			</tr>";
        //		}
    }
    vsprint($out1);
    vsprint($out2);
    vsprint($out3);
    vsprint($out4);
    vsprint($out5);
    vsprint($OUT1);
    vsprint($OUT2);
    vsprint($OUT3);
    vsprint($OUT4);
    vsprint($OUT5);
    # Supplier name
    $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 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.");
        $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 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) = 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</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</tr>";
    }
    #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</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=''></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>";
    }
    $confirm .= "\n\t\t\t\t<input type='hidden' name='out1' value='{$out1}'>\n\t\t\t\t<input type='hidden' name='out2' value='{$out2}'>\n\t\t\t\t<input type='hidden' name='out3' value='{$out3}'>\n\t\t\t\t<input type='hidden' name='out4' value='{$out4}'>\n\t\t\t\t<input type='hidden' name='out5' value='{$out5}'>\n\t\t\t\t<input type='hidden' name='OUT1' value='{$OUT1}'>\n\t\t\t\t<input type='hidden' name='OUT2' value='{$OUT2}'>\n\t\t\t\t<input type='hidden' name='OUT3' value='{$OUT3}'>\n\t\t\t\t<input type='hidden' name='OUT4' value='{$OUT4}'>\n\t\t\t\t<input type='hidden' name='OUT5' value='{$OUT5}'>\n\t\t\t\t<input type='hidden' name='date_day' value='{$date_day}'>\n\t\t\t\t<input type='hidden' name='date_month' value='{$date_month}'>\n\t\t\t\t<input type='hidden' name='date_year' value='{$date_year}'>\n\t\t\t</table>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign='top'>\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='3'>Reconciliation to statement supplied by supplier:</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<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Reason</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t{$balance_out}\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td valign='top'>\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'>Comments</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<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Comment</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t{$comments_out}\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</table>\n\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Balance According to Cubit</td>\n\t\t\t\t\t<td align='right'>" . CUR . " {$sup['balance']}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Total Of This Payment</td>\n\t\t\t\t\t<td align='right'>" . CUR . " " . sprint($amt + array_sum($stock_setamt)) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Balance According to Supplier</td>\n\t\t\t\t\t<td align='right'>" . CUR . " " . sprint($creditor_balance) . "</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>Difference in amount</td>\n\t\t\t\t\t<td align='right'><li class='err'>" . CUR . " {$diff_balance}</li></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<table " . TMPL_tblDflts . " width='40%'>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='submit' name='back' value='&laquo; Correction'></td>\n\t\t\t\t\t<td align='right'><input type='submit' value='Write &raquo'></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t</form>";
    return $confirm;
}
Ejemplo n.º 18
0
function confirm($_POST)
{
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($id, "num", 1, 100, "Invalid num.");
    $v->isOk($depamt, "float", 0, 14, "Invalid Depreciation Amount.");
    $v->isOk($depmonths, "num", 0, 3, "Invalid auto depreciation period.");
    $v->isOk("{$depmonths}{$depamt}", "float", 1, 14, "Enter one of Depreciation amount or period.");
    if (!empty($depamt) && $netval < $depamt) {
        $v->isOk("###", "float", 1, 1, "Error : Depreciation amount must not be more than the Net Value.");
    } else {
        if (!empty($depmonths) && $depperc <= 0) {
            $v->addError("###", "Depriaction percentage has to be more than 0 if depreciating by period.");
        }
    }
    $date = mkdate($date_year, $date_month, $date_day);
    $v->isOk($date, "date", 1, 1, "Invalid date.");
    # display errors, if any
    if ($v->isError()) {
        $confirmCust = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirmCust .= "<li class=err>" . $e["msg"];
        }
        return $confirmCust . "</li>" . view_data($_POST);
    }
    db_conn('cubit');
    $user = USER_NAME;
    $Sql = "SELECT * FROM assets WHERE (id='{$id}' AND div = '" . USER_DIV . "')";
    $Rslt = db_exec($Sql) or errDie("Unable to access database.");
    if (pg_numrows($Rslt) < 1) {
        return "Asset not Found";
    }
    $led = pg_fetch_array($Rslt);
    if (empty($depamt)) {
        $ml_perc = $depperc * ($depmonths % 12 / 12);
        $years = ($depmonths - $depmonths % 12) / 12;
        $baseamt = $led["amount"] - $led["accdep"];
        $depamt = 0;
        /* yearly depreciations */
        for ($i = 1; $i <= $years; ++$i) {
            $depamt += ($baseamt - $depamt) * ($depperc / 100);
        }
        /* monthly depreciation */
        $depamt += ($baseamt - $depamt) * ($ml_perc / 100);
    }
    vsprint($depamt);
    # Get group
    $sql = "SELECT * FROM assetgrp WHERE grpid = '{$led['grpid']}' AND div = '" . USER_DIV . "'";
    $grpRslt = db_exec($sql);
    $grp = pg_fetch_array($grpRslt);
    $led['amount'] = sprint($led['amount']);
    $netval = sprint($led['amount'] - $led['accdep']);
    $view_data = "\r\n\t\t\t\t<h3>Asset Depreciation</h3>\r\n\t\t\t\t<h4>Confirm</h4>\r\n\t\t\t\t<form action='" . SELF . "' method='POST'>\r\n\t\t\t\t\t<input type='hidden' name='key' value='write'>\r\n\t\t\t\t\t<input type='hidden' name='id' value='{$id}'>\r\n\t\t\t\t\t<input type='hidden' name='cosamt' value='{$led['amount']}'>\r\n\t\t\t\t\t<input type='hidden' name='depamt' value='{$depamt}'>\r\n\t\t\t\t\t<input type='hidden' name='depmonths' value='{$depmonths}' />\r\n\t\t\t\t\t<input type='hidden' name='depperc' value='{$depperc}' />\r\n\t\t\t\t\t<input type='hidden' name='date' value='{$date}'>\r\n\t\t\t\t\t<input type='hidden' name='date_day' value='{$date_day}'>\r\n\t\t\t\t\t<input type='hidden' name='date_month' value='{$date_month}'>\r\n\t\t\t\t\t<input type='hidden' name='date_year' value='{$date_year}'>\r\n\t\t\t\t<table " . TMPL_tblDflts . ">\r\n\t\t\t\t\t<tr valign='top'>\r\n\t\t\t\t\t\t<td>\r\n\t\t\t\t\t\t\t<table " . TMPL_tblDflts . ">\r\n\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t<th colspan='2'>Asset Details</th>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Group</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$grp['grpname']}</td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Serial Number</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$led['serial']}</td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Location</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$led['locat']}</td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Description</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$led['des']}</td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Date Bought</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$led['bdate']}</td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Cost Amount</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$led['amount']}</td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Net Value</td>\r\n\t\t\t\t\t\t\t\t\t<td><input type='hidden' name='netval' value='{$netval}'>{$netval}</td>\r\n\t\t\t\t\t\t\t\t</tr><tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Depreciation Amount</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$depamt}</td>\r\n\t\t\t\t\t\t\t\t</tr>";
    if (!empty($depamt)) {
        $view_data .= "\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Depreciation Period</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$depmonths}</td>\r\n\t\t\t\t\t\t\t\t</tr>";
    }
    $view_data .= "\r\n\t\t\t\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t\t\t\t<td>Date</td>\r\n\t\t\t\t\t\t\t\t\t<td>{$date}</td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t<td><input type='submit' name='back' value='&laquo; Correction'></td>\r\n\t\t\t\t\t\t\t\t\t<td valign='bottom' align='right'><input type='submit' value='Write &raquo;'></td>\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t</table>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<tr><td><br></td></tr>\r\n\t\t\t\t</table>\r\n\t\t\t\t</form>\r\n\t\t\t\t<p>\r\n\t\t\t\t<table " . TMPL_tblDflts . ">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th>Quick Links</th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t\t<td><a href='asset-view.php'>View Assets</a></td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\r\n\t\t\t\t</table>";
    return $view_data;
}
function confirm($_POST)
{
    # get vars
    extract($_POST);
    if (isset($back)) {
        return method($supid);
    }
    # 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++) {
        if (!isset($out1[$t])) {
            $out1[$t] = '';
        }
        if (!isset($out2[$t])) {
            $out2[$t] = '';
        }
        if (!isset($out3[$t])) {
            $out3[$t] = '';
        }
        if (!isset($out4[$t])) {
            $out4[$t] = '';
        }
        if (!isset($out5[$t])) {
            $out5[$t] = '';
        }
        // 	$OUT1=$out1;
        // 	$OUT2=$out2;
        // 	$OUT3=$out3;
        // 	$OUT4=$out4;
        // 	$OUT5=$out5;
        $v->isOk($bankid[$t], "num", 1, 30, "Invalid Bank Account.");
        $v->isOk($date[$t], "date", 1, 14, "Invalid Date.");
        $v->isOk($descript[$t], "string", 0, 255, "Invalid Description.");
        $v->isOk($reference[$t], "string", 0, 50, "Invalid Reference Name/Number.");
        $v->isOk($cheqnum[$t], "num", 0, 30, "Invalid Cheque number.");
        $v->isOk($amt[$t], "float", 1, 10, "Invalid amount.");
        $v->isOk($out[$t], "float", 1, 10, "Invalid out amount.");
        $v->isOk($out1[$t], "float", 0, 10, "Invalid paid amount(currant).");
        $v->isOk($out2[$t], "float", 0, 10, "Invalid paid amount(30).");
        $v->isOk($out3[$t], "float", 0, 10, "Invalid paid amount(60).");
        $v->isOk($out4[$t], "float", 0, 10, "Invalid paid amount(90).");
        $v->isOk($out5[$t], "float", 0, 10, "Invalid paid amount(120).");
        $v->isOk($supid[$t], "num", 1, 10, "Invalid Supplier number.");
        if (isset($invids[$t])) {
            foreach ($invids[$t] as $key => $value) {
                if ($paidamt[$t][$invids[$t][$key]] < 0.01) {
                    continue;
                }
                $v->isOk($invids[$t][$key], "num", 1, 50, "Invalid Invoice No. [{$key}]");
                $v->isOk($paidamt[$t][$invids[$t][$key]], "float", 1, 20, "Invalid amount to be paid. [{$key}]");
            }
        }
        $out1[$t] += 0;
        $out2[$t] += 0;
        $out3[$t] += 0;
        $out4[$t] += 0;
        $out5[$t] += 0;
    }
    # 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;
    }
    for ($t = 0; $t < $rec_amount; $t++) {
        # check invoice payments
        $tot[$t] = 0;
        if (isset($invids[$t])) {
            foreach ($invids[$t] as $key => $value) {
                if ($paidamt[$t][$invids[$t][$key]] < 0.01) {
                    continue;
                }
                $tot[$t] += $paidamt[$t][$invids[$t][$key]];
            }
        }
        if (sprint($tot[$t] + $out[$t] + $out1[$t] + $out2[$t] + $out3[$t] + $out4[$t] + $out5[$t] - $amt[$t]) != 0) {
            //				return "<li class='err'>$tot[$t] - $amt[$t] The total amount is not equal to the amount paid. Please check the details.</li>".alloc($_POST);
        }
        vsprint($out[$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='out[{$t}]' value='{$out[$t]}'>\n\t\t\t\t<input type='hidden' name='amt[{$t}]' value='{$amt[$t]}'>";
        $passon2 = "";
    }
    $confirm = "\n\t\t\t<h3>New Bank Payment</h3>\n\t\t\t<h4>Confirm entry (Please check the details)</h4>\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='write'>\n\t\t\t\t<input type='hidden' name='all' value='{$all}'>\n\t\t\t\t<input type='hidden' name='rec_amount' value='{$rec_amount}'>\n\t\t\t\t{$passon}";
    for ($t = 0; $t < $rec_amount; $t++) {
        # 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 = 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" . TBL_BR . "\n\t\t\t" . TBL_BR . "\n\t\t\t<tr>\n\t\t\t\t<td colspan='2'><h3>Supplier</h3></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th>Supplier</th>\n\t\t\t\t<th>Account</th>\n\t\t\t\t<th>Date</th>\n\t\t\t\t<th>Description</th>\n\t\t\t\t<th>Reference</th>\n\t\t\t\t<th>Cheque Number</th>\n\t\t\t\t<th>Amount</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td valign='center'>({$sup['supno']}) {$sup['supname']}</td>\n\t\t\t\t<td>{$bank1} - {$bank2}</td>\n\t\t\t\t<td valign='center'>{$date[$t]}</td>\n\t\t\t\t<td valign='center'>{$descript[$t]}</td>\n\t\t\t\t<td valign='center'>{$reference[$t]}</td>\n\t\t\t\t<td valign='center'>{$cheqnum[$t]}</td>\n\t\t\t\t<td valign='center'>" . CUR . " {$amt[$t]}</td>\n\t\t\t</tr>";
        if ($all == 0) {
            // Layout
            $confirm .= "\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<!--<table " . TMPL_tblDflts . " width='90%'>-->\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>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>";
            $i = 0;
            // for bgcolor
            if (isset($invids[$t])) {
                foreach ($invids[$t] as $key => $value) {
                    if ($paidamt[$t][$invids[$t][$key]] < 0.01) {
                        continue;
                    }
                    db_conn("cubit");
                    # Get all the details
                    $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE purid='{$invids[$t]}[{$key}]' AND div = '" . USER_DIV . "'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE intpurid='{$invids[$t]}[{$key}]' AND div = '" . USER_DIV . "'";
                        $invRslt = db_exec($sql) or errDie("Unable to access database.");
                        if (pg_numrows($invRslt) < 1) {
                            return "<li class=err> - Invalid ord number {$invids[$t]}[{$key}].";
                        }
                    }
                    $inv = pg_fetch_array($invRslt);
                    if ($inv['invid2'] > 0) {
                        $inv['invid'] = $inv['invid2'];
                    }
                    $invid = $inv['invid'];
                    $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>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>\n\t\t\t\t\t\t\t<td>" . CUR . " <input type='hidden' name='paidamt[{$t}][]' size='7' value='{$paidamt[$t]}[{$invid}]'>{$paidamt[$t]}[{$invid}]</td>\n\t\t\t\t\t\t</tr>";
                    $i++;
                }
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out[$t] >= 0.01) {
                $confirm .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\twith " . CUR . " " . sprint($out[$t]) . " </b>\n\t\t\t\t</td>\n\t\t\t</tr>";
            }
        }
        if ($all == 1) {
            $age30[$t] = sage($supid[$t], 59);
            $age60[$t] = sage($supid[$t], 89);
            $age90[$t] = sage($supid[$t], 119);
            $age120[$t] = sage($supid[$t], 149);
            $bgColor = bgcolorg();
            $i = 0;
            if ($out1[$t] > 0) {
                // Connect to database
                db_conn("cubit");
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid[$t]}' AND balance>0 AND pdate >='" . extlib_ago(29) . "' AND pdate <='" . extlib_ago(-1) . "'  AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
                $prnInvRslt = db_exec($sql);
                while ($inv = pg_fetch_array($prnInvRslt) and $out1[$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>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'];
                    $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>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                    if ($out1[$t] >= $inv['balance']) {
                        $val = $inv['balance'];
                        $out1[$t] = $out1[$t] - $inv['balance'];
                    } else {
                        $val = $out1[$t];
                        $out1[$t] = 0;
                    }
                    $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[{$t}][]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                    $i++;
                }
                // 0.01 because of high precisions like 0.0000000001234 still matching
                if ($out1[$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 ($out2[$t] > 0) {
                if ($out2[$t] > $age30[$t]) {
                    $_POST["out1[{$t}]"] = $out1[$t];
                    $_POST["out2[{$t}]"] = $out2[$t];
                    $_POST["out3[{$t}]"] = $out3[$t];
                    $_POST["out4[{$t}]"] = $out4[$t];
                    $_POST["out5[{$t}]"] = $out5[$t];
                    return "<li class='err'>You cannot allocate " . CUR . " {$out2[$t]} to 30 days, you only owe " . CUR . " {$age30[$t]}</li>" . alloc($_POST);
                }
                // Connect to database
                db_conn("cubit");
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid[$t]}' AND balance>0 AND pdate >='" . extlib_ago(59) . "' AND pdate <='" . extlib_ago(29) . "'  AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
                $prnInvRslt = db_exec($sql);
                while ($inv = pg_fetch_array($prnInvRslt) and $out2[$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\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                    }
                    $invid = $inv['invid'];
                    $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>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                    if ($out2[$t] >= $inv['balance']) {
                        $val = $inv['balance'];
                        $out2[$t] = $out2[$t] - $inv['balance'];
                    } else {
                        $val = $out2[$t];
                        $out2[$t] = 0;
                    }
                    $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[{$t}][]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                    $i++;
                }
                // 0.01 because of high precisions like 0.0000000001234 still matching
                if ($out2[$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 ($out3[$t] > 0) {
                if ($out3[$t] > $age60[$t]) {
                    $_POST["out1[{$t}]"] = $out1[$t];
                    $_POST["out2[{$t}]"] = $out2[$t];
                    $_POST["out3[{$t}]"] = $out3[$t];
                    $_POST["out4[{$t}]"] = $out4[$t];
                    $_POST["out5[{$t}]"] = $out5[$t];
                    return "<li class='err'>You cannot allocate " . CUR . " {$out3[$t]} to 60 days, you only owe " . CUR . " {$age60[$t]} </li>" . alloc($_POST);
                }
                // Connect to database
                db_conn("cubit");
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid[$t]}' AND balance>0 AND pdate >='" . extlib_ago(89) . "' AND pdate <='" . extlib_ago(59) . "' AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
                $prnInvRslt = db_exec($sql);
                while ($inv = pg_fetch_array($prnInvRslt) and $out3[$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\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                    }
                    $invid = $inv['invid'];
                    $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>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                    if ($out3[$t] >= $inv['balance']) {
                        $val = $inv['balance'];
                        $out3[$t] = $out3[$t] - $inv['balance'];
                    } else {
                        $val = $out3[$t];
                        $out3[$t] = 0;
                    }
                    $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                    $i++;
                }
                // 0.01 because of high precisions like 0.0000000001234 still matching
                if ($out3[$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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
                }
            }
            if ($out4[$t] > 0) {
                if ($out4[$t] > $age90[$t]) {
                    $_POST["out1[{$t}]"] = $out1[$t];
                    $_POST["out2[{$t}]"] = $out2[$t];
                    $_POST["out3[{$t}]"] = $out3[$t];
                    $_POST["out4[{$t}]"] = $out4[$t];
                    $_POST["out5[{$t}]"] = $out5[$t];
                    return "<li class='err'>You cannot allocate " . CUR . " {$out4[$t]} to 90 days, you only owe " . CUR . " {$age90[$t]}</li>" . alloc($_POST);
                }
                // Connect to database
                db_conn("cubit");
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid[$t]}' AND balance>0 AND pdate >='" . extlib_ago(119) . "' AND pdate <='" . extlib_ago(89) . "' AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
                $prnInvRslt = db_exec($sql);
                while ($inv = pg_fetch_array($prnInvRslt) and $out4[$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\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                    }
                    $invid = $inv['invid'];
                    $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>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                    if ($out4[$t] >= $inv['balance']) {
                        $val = $inv['balance'];
                        $out4[$t] = $out4[$t] - $inv['balance'];
                    } else {
                        $val = $out4[$t];
                        $out4[$t] = 0;
                    }
                    $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                    $i++;
                }
                // 0.01 because of high precisions like 0.0000000001234 still matching
                if ($out4[$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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
                }
            }
            if ($out5[$t] > 0) {
                if ($out5[$t] > $age120[$t]) {
                    $_POST["out1[{$t}]"] = $out1[$t];
                    $_POST["out2[{$t}]"] = $out2[$t];
                    $_POST["out3[{$t}]"] = $out3[$t];
                    $_POST["out4[{$t}]"] = $out4[$t];
                    $_POST["out5[{$t}]"] = $out5[$t];
                    return "<li class='err'>You cannot allocate " . CUR . " {$out5[$t]} to 120 days, you only owe " . CUR . " {$age120[$t]}</li>" . alloc($_POST);
                }
                // Connect to database
                db_conn("cubit");
                $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE supid = '{$supid[$t]}' AND balance>0 AND pdate >='" . extlib_ago(149) . "' AND pdate <='" . extlib_ago(119) . "' AND div = '" . USER_DIV . "' ORDER BY pdate ASC";
                $prnInvRslt = db_exec($sql);
                while ($inv = pg_fetch_array($prnInvRslt) and $out5[$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\t\t<tr><td><br></td></tr>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></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>Purchase</th>\n\t\t\t\t\t\t\t\t<th>Outstanding Amount</th>\n\t\t\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t\t</tr>";
                    }
                    $invid = $inv['invid'];
                    $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>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                    if ($out5[$t] >= $inv['balance']) {
                        $val = $inv['balance'];
                        $out5[$t] = $out5[$t] - $inv['balance'];
                    } else {
                        $val = $out5[$t];
                        $out5[$t] = 0;
                    }
                    $confirm .= "\n\t\t\t\t\t\t\t<td><input type='hidden' name='paidamt[]' size='10' value='{$val}'>" . CUR . " {$val}</td>\n\t\t\t\t\t\t</tr>";
                    $i++;
                }
                // 0.01 because of high precisions like 0.0000000001234 still matching
                if ($out5[$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) . " </b>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>";
                }
            }
        }
        if ($all == 2) {
            // Layout
            $confirm .= "\n\t\t\t\t<tr><td><br></td></tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td colspan='2'><h3>Outstanding Purchases</h3></td>\n\t\t\t\t</tr>\n\t\t\t\t<!--<table " . TMPL_tblDflts . " width='90%'>-->\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Purchase</th>\n\t\t\t\t\t<th>Outstanding amount</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th>Amount</th>\n\t\t\t\t</tr>";
            $i = 0;
            // for bgcolor
            if (isset($invids[$t])) {
                foreach ($invids[$t] as $key => $value) {
                    if ($paidamt[$t][$invids[$t][$key]] < 0.01) {
                        continue;
                    }
                    $ii = $invids[$t][$key];
                    $pp = $paidamt[$t][$key];
                    db_conn("cubit");
                    # Get all the details
                    $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE purid='{$ii}' AND div = '" . USER_DIV . "'";
                    $invRslt = db_exec($sql) or errDie("Unable to access database.");
                    if (pg_numrows($invRslt) < 1) {
                        $sql = "SELECT purid as invid,intpurid as invid2,balance,pdate as odate FROM suppurch WHERE intpurid='{$ii}' AND div = '" . USER_DIV . "'";
                        $invRslt = db_exec($sql) or errDie("Unable to access database.");
                        if (pg_numrows($invRslt) < 1) {
                            return "<li class='err'> - Invalid ord number {$ii}.</li>";
                        }
                    }
                    $inv = pg_fetch_array($invRslt);
                    if ($inv['invid2'] > 0) {
                        $inv['invid'] = $inv['invid2'];
                    }
                    $invid = $inv['invid'];
                    $ppp = $paidamt[$t][$invid];
                    $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>" . CUR . " {$inv['balance']}</td>\n\t\t\t\t\t\t\t<td>{$inv['odate']}</td>";
                    $confirm .= "\n\t\t\t\t\t\t\t<td>" . CUR . " <input type='hidden' name='paidamt[{$t}][]' size='7' value='{$ppp}'>{$ppp}</td>\n\t\t\t\t\t\t</tr>";
                    $i++;
                }
            }
            // 0.01 because of high precisions like 0.0000000001234 still matching
            if ($out[$t] >= 0.01) {
                $confirm .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td colspan='5'><b>A general transaction will debit the supplier's account\n\t\t\t\t\twith " . CUR . " " . sprint($out) . " </b>\n\t\t\t\t</td>\n\t\t\t</tr>";
            }
        }
        vsprint($out1[$t]);
        vsprint($out2[$t]);
        vsprint($out3[$t]);
        vsprint($out4[$t]);
        vsprint($out5[$t]);
        // 	vsprint($OUT1);
        // 	vsprint($OUT2);
        // 	vsprint($OUT3);
        // 	vsprint($OUT4);
        // 	vsprint($OUT5);
        $passon2 .= "\n\t\t<input type='hidden' name='out1[{$t}]' value='{$out1[$t]}'>\n\t\t<input type='hidden' name='out2[{$t}]' value='{$out2[$t]}'>\n\t\t<input type='hidden' name='out3[{$t}]' value='{$out3[$t]}'>\n\t\t<input type='hidden' name='out4[{$t}]' value='{$out4[$t]}'>\n\t\t<input type='hidden' name='out5[{$t}]' value='{$out5[$t]}'>\n\t\t<input type='hidden' name='date_day[{$t}]' value='{$date_day[$t]}'>\n\t\t<input type='hidden' name='date_month[{$t}]' value='{$date_month[$t]}'>\n\t\t<input type='hidden' name='date_year[{$t}]' value='{$date_year[$t]}'>";
    }
    /*
    				<input type='hidden' name='OUT1' value='$OUT1'>
    				<input type='hidden' name='OUT2' value='$OUT2'>
    				<input type='hidden' name='OUT3' value='$OUT3'>
    				<input type='hidden' name='OUT4' value='$OUT4'>
    				<input type='hidden' name='OUT5' value='$OUT5'>
    */
    $confirm .= "\n\t\t\t\t{$passon2}\n\t\t\t\t" . TBL_BR . "\n\t\t\t\t<tr>\n\t\t\t\t\t<td><input type='submit' name='back' value='&laquo; Correction'></td>\n\t\t\t\t\t<td align='right' colspan='3'><input type='submit' value='Write &raquo'></td>\n\t\t\t\t</tr>\n\t\t\t</form>\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='bank-pay-supp.php'>Add supplier payment</a></td>\n\t\t\t\t</tr>\n\t\t\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t\t\t</table>";
    return $confirm;
}