function printyr()
{
    // Set up table to display in
    // Connect to database
    core_Connect();
    $sql = "SELECT * FROM year ORDER BY yrname";
    $Rslt = db_exec($sql) or errDie("ERROR: Unable to get Financial year details from database.", SELF);
    $numrows = pg_numrows($Rslt);
    if ($numrows < 1) {
        $OUTPUT = "There are no Financial years defined in Cubit.";
        require "template.php";
    }
    # display all Accounts
    $yrs = "";
    for ($i = 0; $i < $numrows; $i++) {
        $yr = pg_fetch_array($Rslt, $i);
        if (!isset($thisyear) && $yr["closed"] == "n") {
            $thisyear = $yr["yrname"];
        }
        # alternate bgcolor
        $bgColor = bgcolorc($i);
        if (PRD_STATE != "py" && $yr["closed"] == "y") {
            $status = "Closed";
        } else {
            if (PRD_STATE == "py" && $yr["yrname"] == YR_NAME) {
                $status = "Closed (In Use)";
            } else {
                if (PRD_STATE != "py" && $yr["yrname"] == YR_NAME || PRD_STATE == "py" && $yr["yrname"] == PYR_NAME) {
                    $status = "Current";
                } else {
                    $status = "";
                }
            }
        }
        $yrs .= "\n\t\t<tr class='" . bg_class() . "'>\n\t\t\t<td>{$yr['yrname']}</td>\n\t\t\t<td align='right'>{$yr['yrdb']}</td>\n\t\t\t<td align='center'>{$status}</td>\n\t\t</tr>\n";
    }
    if (!isset($thisyear)) {
        $thisyear = "All financial years have been closed.";
    } else {
        $thisyear = substr($thisyear, 1);
    }
    global $PRDMON, $MONPRD;
    $pmon = 0;
    $fyear = getFinYear() - (int) ($PRDMON[1] > 1);
    $prddesc = array();
    for ($i = 1; $i <= 12; $i++) {
        $mon = $PRDMON[$i];
        if ($mon < $pmon) {
            ++$fyear;
        }
        $pmon = $mon;
        if ($i == 1 || $i == 12) {
            $prddesc[] = getMonthName($mon) . " {$fyear}";
        }
    }
    $prddesc = implode(" to ", $prddesc);
    $OUTPUT = "\n\t<h3>Financial Years</h3>\n\t<table " . TMPL_tblDflts . ">\n\t<tr>\n\t\t<th colspan='3'>Current Financial Year: {$thisyear}</th>\n\t</tr>\n\t<tr class='" . bg_class() . "'>\n\t\t<th colspan='3'>Period Range: {$prddesc}</td>\n\t</tr>\n\t<tr>\n\t\t<th>Year Name</th>\n\t\t<th>Year Database</th>\n\t\t<th>Status</th>\n\t</tr>\n\t{$yrs}\n\t</table>\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' width=15%>\n\t\t<tr><td><br></td></tr>\n\t\t<tr><th>Quick Links</th></tr>\n\t\t<tr class=datacell><td align=center><a href='finyearnames-new.php'>Set Financial Year</td></tr>\n\t\t<script>document.write(getQuicklinkSpecial());</script>\n\t</table>";
    // all template to display the info and die
    require "template.php";
}
function remcat($catid, $type)
{
    // Limit field lengths as per database settings ( Regex method doesn't work :-/ )
    require_lib("validate");
    $v = new validate();
    $v->isOk($catid, "string", 1, 20, "Invalid category ID.");
    $v->isOk($type, "string", 1, 2, "Invalid category Type .");
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class=err>" . $e["msg"];
        }
        $confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # Switch type
    switch ($type) {
        case "I":
            $tab = "income";
            break;
        case "E":
            $tab = "expenditure";
            break;
        case "B":
            $tab = "balance";
            break;
        default:
            return "<li>Invalid Category type";
    }
    // Connect to database
    core_Connect();
    $sql = "SELECT * FROM {$tab} WHERE catid = '{$catid}' AND div = '" . USER_DIV . "'";
    $catRslt = db_exec($sql) or errDie("ERROR: Unable to Retrive Payable Account Categories details from database.", SELF);
    $numrows = pg_numrows($catRslt);
    if ($numrows > 1) {
        $OUTPUT = "There are more than one categories with the same Category ID number.";
        require "template.php";
    }
    if ($numrows < 1) {
        $OUTPUT = "Category with number, <b>{$catid}</b> was not found in Cubit.";
        require "template.php";
    }
    $cat = pg_fetch_array($catRslt);
    $rem = "<h3>Delete Account Category</h3>\n<h4>Confirm entry</h4>\n<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n<form action='" . SELF . "' method=post>\n<input type=hidden name=key value=write>\n<input type=hidden name=catid value='{$cat['catid']}'>\n<input type=hidden name=catname value='{$cat['catname']}'>\n<input type=hidden name=tab value='{$tab}'>\n<tr><th>Field</th><th>Value</th></tr>\n<tr class='bg-even'><td>Category ID</td><td>{$cat['catid']}</td></tr>\n<tr class='bg-odd'><td>Category Name</td><td>{$cat['catname']}</td></tr>\n<tr><td align=right><input type=button value='&laquo Back' onClick='javascript:history.back()'></td><td align=right><input type=submit value='Delete Category&raquo'></td></tr>\n<tr><th>Quick Links</th></tr>\n<script>document.write(getQuicklinkSpecial());</script>\n</tr>\n</table>\n\n\n</form>\n</table>\n";
    return $rem;
}
function printyr()
{
    // Set up table to display in
    $OUTPUT = "\n\t<h3>View active year and period</h3>\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' width=30%>\n        <tr><th>Year Name</th><th>Period Name</th></tr>\n\t";
    // Connect to database
    core_Connect();
    $sql = "SELECT * FROM active";
    $Rslt = db_exec($sql) or errDie("ERROR: Uable to get active period details from database.", SELF);
    $numrows = pg_numrows($Rslt);
    if ($numrows < 1) {
        $OUTPUT = "<li>There are no Active periods/years defined in Cubit.";
        require "template.php";
    }
    $act = pg_fetch_array($Rslt);
    $OUTPUT .= "<tr class='bg-odd'><td align=center>{$act['yrname']}</td><td align=center>{$act['prdname']}</td></tr>\n\t\t</table>\n\t\t<p>\n\t\t<table border=0 cellpadding='2' cellspacing='1'>\n\t\t<tr><th>Quick Links</th></tr>\n\t\t<tr class='bg-odd'><td><a href='../reporting/index-reports.php'>Financials</a></td></tr>\n\t\t<tr class='bg-odd'><td><a href='../reporting/index-reports-other.php'>Other Reports</a></td></tr>\n\t\t<tr bgcolor='#88BBFF'><td><a href='../main.php'>Main Menu</a></td></tr>\n\t</table>";
    // all template to display the info and die
    require "template.php";
}
function view()
{
    core_Connect();
    $sql = "SELECT * FROM save_bal_sheet WHERE div = '" . USER_DIV . "'";
    $Rslt = db_exec($sql) or errDie("ERROR: Unable to Balance Sheets", SELF);
    if (pg_numrows($Rslt) < 1) {
        $OUTPUT = "<li class='err'> There are no saved Balance Sheets.</li>";
    } else {
        // Set up table to display in
        $OUTPUT = "\n\t\t\t<h3>View Saved Balance Sheets</h3>\n\t\t\t<table " . TMPL_tblDflts . " width='300'>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>Balance Sheet No.</th>\n\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t<th colspan='2'>Options</th>\n\t\t\t\t</tr>";
        // display all statements
        for ($i = 0; $sheet = pg_fetch_array($Rslt); $i++) {
            $OUTPUT .= "\n\t\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t\t<td>{$sheet['id']}({$sheet['des']})</td>\n\t\t\t\t\t<td>{$sheet['gendate']}</td>\n\t\t\t\t\t<td><a target='_blank' href='bal-sheet-print.php?id={$sheet['id']}'>Print</a></td>\n\t\t\t\t\t<td><a href='../xls/bal-xls.php?id={$sheet['id']}'>Spreadsheet</a></td>\n\t\t\t\t</tr>";
        }
        $OUTPUT .= "</table>";
    }
    $OUTPUT .= "\n\t\t<p>\n\t\t<table " . TMPL_tblDflts . ">\n\t\t\t<tr>\n\t\t\t\t<th>Quick Links</th>\n\t\t\t</tr>\n\t\t\t<tr class='datacell'>\n\t\t\t\t<td><a href='index-reports.php'>Financials</a></td>\n\t\t\t</tr>\n\t\t\t<tr class='datacell'>\n\t\t\t\t<td><a href='index-reports-stmnt.php'>Current Year Financial Statements</a></td>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td><a href='../main.php'>Main Menu</a></td>\n\t\t\t</tr>\n\t\t</table>";
    return $OUTPUT;
}
function view()
{
    // Connect to database
    core_Connect();
    // Query server
    $cf = new dbSelect("save_cashflow", "core", grp(m("where", "div='" . USER_DIV . "'")));
    $cf->run();
    if ($cf->num_rows() < 1) {
        $OUTPUT = "<li> There are no saved Cash Flow Statements.";
    } else {
        // Set up table to display in
        $OUTPUT = "\n\t\t<h3>View Saved Cash Flow Statements</h3>\n\t\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' width=300>\n\t\t<tr>\n\t\t\t<th>Statement No.</th>\n\t\t\t<th>Generated</th>\n\t\t\t<th colspan=2>Options</th>\n\t\t</tr>";
        // display all statements
        while ($stmnt = $cf->fetch_array()) {
            $OUTPUT .= "\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>{$stmnt['id']}({$stmnt['des']})</td>\n\t\t\t\t<td>{$stmnt['gentime']}</td>\n\t\t\t\t<td><a target='_blank' href='cash-flow-print.php?id={$stmnt['id']}'>Print</a></td>\n\t\t\t\t<td><a href='cash-flow-print.php?id={$stmnt['id']}&xls=t'>Spreadsheet</a></td>\n\t\t\t</tr>";
        }
        $OUTPUT .= "</table>";
    }
    $OUTPUT .= "\n\t<p>\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n\t<tr><th>Quick Links</th></tr>\n\t<tr class=datacell><td><a href='index-reports.php'>Financials</a></td></tr>\n\t<tr class=datacell><td><a href='index-reports-stmnt.php'>Current Year Financial Statements</a></td></tr>\n\t<tr class='bg-odd'><td><a href='../main.php'>Main Menu</a></td></tr>\n\t</table>";
    // call template to display the info and die
    return $OUTPUT;
}
function view()
{
    // Connect to database
    core_Connect();
    // Query server
    $sql = "SELECT * FROM save_income_stmnt WHERE div = '" . USER_DIV . "'";
    $Rslt = db_exec($sql) or errDie("ERROR: Unable to view users", SELF);
    // Die with custom error if failed
    if (pg_numrows($Rslt) < 1) {
        $OUTPUT = "<li> There are no saved Income Statements.";
    } else {
        // Set up table to display in
        $OUTPUT = "\n\t\t<h3>View Saved Income Statements</h3>\n\t\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' width=300>\n\t\t<tr><th>Statement No.</th><th>Date</th><th colspan=2>Options</th></tr>";
        // display all statements
        for ($i = 0; $st = pg_fetch_array($Rslt); $i++) {
            $OUTPUT .= "<tr class='" . bg_class() . "'><td>{$st['id']}({$st['des']})</td><td>{$st['gendate']}</td>\n\t\t\t<td><a target='_blank' href='income-stmnt-print.php?id={$st['id']}'>Print</a></td>\n\t\t\t<td><a href='../xls/income-xls.php?id={$st['id']}'>Spreadsheet</a></td></tr>";
        }
        $OUTPUT .= "</table>";
    }
    $OUTPUT .= "\n\t<p>\n\t<table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n\t<tr><th>Quick Links</th></tr>\n\t<tr class='datacell'><td align='center'><a target=_blank href='../core/acc-new2.php'>Add account (New Window)</a></td></tr>\n\t<tr class='datacell'><td align='center'><a href='index-reports.php'>Financials</a></td></tr>\n\t<tr class='datacell'><td align='center'><a href='index-reports-stmnt.php'>Current Year Financial Statements</a></td></tr>\n\t<tr class='bg-odd'><td align=center><a href='../main.php'>Main Menu</a></td></tr>\n\t</table>";
    // call template to display the info and die
    return $OUTPUT;
}
function confirm($_POST)
{
    # Get vars
    foreach ($_POST as $key => $value) {
        ${$key} = $value;
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    foreach ($ord as $key => $value) {
        $v->isOk($ord[$key], "num", 1, 50, "Invalid order No. [{$key}]");
        $v->isOk($paidamt[$key], "float", 1, 20, "Invalid amount to be paid. [{$key}]");
        $v->isOk($accpaid[$key], "num", 1, 255, "Invalid account paid to. [{$key}]");
    }
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class=err>" . $e["msg"];
        }
        $confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # connect to core
    core_Connect();
    $pay = "";
    $tot = 0;
    # Debtors
    foreach ($ord as $key => $value) {
        db_connect();
        # Get all the details
        $sql = "SELECT * FROM credit_invoices WHERE ordnum = '{$ord[$key]}'";
        $invRslt = db_exec($sql) or errDie("Unable to access database.");
        if (pg_numrows($invRslt) < 1) {
            return "<li class=err> - Invalid ord number {$ord[$key]}.";
        }
        $inv = pg_fetch_array($invRslt);
        # Get debt invoice info
        $sql = "SELECT * FROM debtors WHERE ordnum ='{$ord[$key]}'";
        $dtRslt = db_exec($sql) or errDie("Unable to retrieve invoice details from database.");
        if (pg_numrows($dtRslt) < 1) {
            return "<li class=err>Invalid Invoice Number.";
        }
        $dt = pg_fetch_array($dtRslt);
        foreach ($inv as $keys => $values) {
            ${$keys} = $values;
        }
        # get paid account name
        core_connect();
        $sql = "SELECT accname FROM accounts WHERE accid = '{$accpaid[$key]}'";
        $accRslt = db_exec($sql);
        $acc = pg_fetch_array($accRslt);
        foreach ($inv as $keys => $values) {
            ${$keys} = $values;
        }
        $pay .= "<tr class='bg-odd'>\r\n                                <td><input type=hidden size=20 name=ord[] value='{$ord[$key]}'>{$cusname}</td>\r\n                                <td align=center>{$orddate}</td>\r\n                                <td align=center>{$invdate}</td>\r\n                                <td align=center>" . CUR . " {$dt['amount']}</td>\r\n                                <td align=center>{$dt['terms']} days</td>\r\n                                <td align=center>" . CUR . " <input type=hidden name='paidamt[]' value='{$paidamt[$key]}'>{$paidamt[$key]}</td>\r\n                                <td align=center><input type=hidden name='accpaid[]' value='{$accpaid[$key]}'>{$acc['accname']}</td>\r\n                            </tr>";
        $tot += $paidamt[$key];
    }
    $confirm = "<center>\r\n        <h3>Add Multiple Debtors Payments to batch file</h3>\r\n        <form action='" . SELF . "' method=post>\r\n        <input type=hidden name=key value=write>\r\n        <table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\r\n        <tr><th>Customer Name</th><th>Order Date</th><th>Invoice Date</th><th>Outstanding Amount</th><th>Terms</th><th>Amount Paid</th><th>Account Paid</th></tr>\r\n        {$pay}\r\n        <tr><td><br></td></tr>\r\n        <tr class='bg-even'><td colspan=5>Total Amount Received</td><td colspan=2>" . CUR . " " . round($tot, 2) . "</td></tr>\r\n        <tr><td align=right colspan=6><input type=button value='&laquo Back' onClick='javascript:history.back()'></td><td align=right colspan=1><input type=submit value='Confirm &raquo'></td></tr>\r\n        </form></table>\r\n        <table border=0 cellpadding='2' cellspacing='1' width=15%>\r\n                <tr><th>Quick Links</th></tr>\r\n                <tr bgcolor='#88BBFF'><td><a href='debtors-view.php'>View Debtors</a></td></tr>\r\n                <script>document.write(getQuicklinkSpecial());</script>\r\n                <tr bgcolor='#88BBFF'><td><a href='main.php'>Main Menu</a></td></tr>\r\n        </table>";
    return $confirm;
}
function writerem($_POST)
{
    # Get vars
    extract($_POST);
    # validate input
    require_lib("validate");
    $v = new validate();
    if (isset($bank)) {
        foreach ($bank as $key => $value) {
            $v->isOk($bank[$key], "num", 1, 50, "Invalid Batch ID.");
        }
    } else {
        return "<li> - No Batch Entries Seleted. Please select at least one batch entry.</li>";
    }
    # display errors, if any
    if ($v->isError()) {
        $write = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $write .= "<li class='err'>" . $e["msg"] . "</li>";
        }
        $write .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $write;
    }
    db_conn('core');
    foreach ($bank as $key => $value) {
        # Get all the details
        $sql = "SELECT * FROM batch WHERE batchid = '{$value}' AND div = '" . USER_DIV . "'";
        $rslt = db_exec($sql) or errDie("Unable to access database.");
        $tran = pg_fetch_array($rslt);
        // Accounts details
        $dtaccRs = get("core", "accname, topacc, accnum", "accounts", "accid", $tran['debit']);
        $dtacc[$key] = pg_fetch_array($dtaccRs);
        $ctaccRs = get("core", "accname, topacc, accnum", "accounts", "accid", $tran['credit']);
        $ctacc[$key] = pg_fetch_array($ctaccRs);
        $date[$key] = $tran['date'];
        $refnum[$key] = $tran['refnum'];
        $amount[$key] = $tran['amount'];
        $descript[$key] = $tran['details'];
        # Remove the entries one by one
        core_Connect();
        $query = "DELETE FROM batch WHERE batchid = '{$bank[$key]}'";
        $Ex = db_exec($query) or errDie("Unable to delete batch file entries.", SELF);
    }
    // Start layout
    $write = "\n\t\t\t\t<center>\n\t\t\t\t<h3>Journal transactions entries have been removed from batch file</h3>\n\t\t\t\t<table " . TMPL_tblDflts . ">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>Date</th>\n\t\t\t\t\t\t<th>Ref num</th>\n\t\t\t\t\t\t<th>Debit</th>\n\t\t\t\t\t\t<th>Credit</th>\n\t\t\t\t\t\t<th>Amount</th>\n\t\t\t\t\t\t<th>Description</th>\n\t\t\t\t\t</tr>";
    foreach ($bank as $key => $value) {
        $write .= "\n    \t\t\t\t<tr bgcolor=" . bgcolorg() . ">\n    \t\t\t\t\t<td>{$date[$key]}</td>\n    \t\t\t\t\t<td>{$refnum[$key]}</td>\n                        <td valign='center'>" . $dtacc[$key]['topacc'] . "/" . $dtacc[$key]['accnum'] . " " . $dtacc[$key]['accname'] . "</td>\n                        <td valign='center'>" . $ctacc[$key]['topacc'] . "/" . $ctacc[$key]['accnum'] . " " . $ctacc[$key]['accname'] . "</td>\n                        <td>" . CUR . " {$amount[$key]}</td>\n                        <td>{$descript[$key]}</td>\n\t\t\t\t\t</tr>";
    }
    $write .= "\n\t\t\t\t\t\t</table>\n\t\t\t        <br>\n\t\t\t        <table " . TMPL_tblDflts . " width='25%'>\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='datacell'>\n\t\t\t\t\t\t\t<td align='center'><a href='trans-batch.php'>Add Journal Transactions to batch</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr class='datacell'>\n\t\t\t\t\t\t\t<td align='center'><a href='batch-view.php'>View batch Entries</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        </table>";
    return $write;
}
function pay($_POST)
{
    //processes
    db_connect();
    # get vars
    foreach ($_POST as $key => $value) {
        ${$key} = $value;
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($purchid, "num", 1, 20, "Invalid Purchase ID.");
    $v->isOk($paidamt, "float", 1, 20, "Invalid amount to be paid.");
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class=err>" . $e["msg"];
        }
        $confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    // Connect to database
    core_Connect();
    # get purchase info
    $sql = "SELECT * FROM purchases WHERE purchid = '{$purchid}'";
    $purchRslt = db_exec($sql) or errDie("ERROR: Unable to retrieve purchase details from database.", SELF);
    $numrows = pg_numrows($purchRslt);
    if ($numrows < 1) {
        $OUTPUT = "<li clss=err>Invalid purchase ID.";
        require "template.php";
    }
    $purch = pg_fetch_array($purchRslt);
    # reduce the money that has been paid
    $sql = "UPDATE credit_purch SET amount = (amount - cast(float8 '{$paidamt}' as numeric)) WHERE purchid = '{$purchid}'";
    $payRslt = db_exec($sql) or errDie("Unable to update credit purchases table.", SELF);
    # get creditors account
    $creditacc = gethook("accnum", "pchsacc", "name", "Creditors");
    $refnum = getrefnum(date('d-m-Y'));
    writetrans($creditacc, $purch['usedacc'], date('d-m-Y'), $refnum, $paidamt, 'Pay Purchase Credit.');
    # status report
    $pay = "\r\n        <table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' width='100%'>\r\n        <tr><th>Credit Paid</th></tr>\r\n        <tr class=datacell><td>Credit for,<b> {$purch['itemname']}</b> bought From <b>{$purch['retailer']}</b>, was successfully paid.</td></tr>\r\n        </table>";
    # main table (layout with menu)
    $OUTPUT = "<center>\r\n        <table width = 90%>\r\n        <tr valign=top><td width=60%>{$pay}</td>\r\n        <td align=center>\r\n        <table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' width=80%>\r\n        <tr><th>Quick Navigation</th></tr>\r\n        <tr class=datacell><td align=center><a href='purchase-view.php'>View Other Purchases</td></tr>\r\n        <tr class=datacell><td align=center><a href='purchase-new.php'>Add New Purchase</td></tr>\r\n        </table>\r\n        </td></tr></table>";
    return $OUTPUT;
}
function confirmbat($_POST)
{
    # Get vars
    foreach ($_POST as $key => $value) {
        ${$key} = $value;
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    foreach ($pay as $key => $value) {
        $v->isOk($pay[$key], "num", 1, 50, "Invalid purchase No.");
        $v->isOk($paidamt[$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"];
        }
        $confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # connect to core
    core_Connect();
    $tot = 0;
    # Creditors
    $pays = "";
    foreach ($pay as $key => $value) {
        core_connect();
        # get purchase info
        $sql = "SELECT * FROM purchases WHERE purchid = '{$pay[$key]}'";
        $purchRslt = db_exec($sql) or errDie("ERROR: Unable to retrieve purchase details from database.", SELF);
        if (pg_numrows($purchRslt) < 1) {
            $OUTPUT = "<li clss=err>Invalid purchase ID.";
            return $OUTPUT;
        }
        $purch = pg_fetch_array($purchRslt);
        # get credit purchase info
        $sql = "SELECT amount FROM credit_purch WHERE purchid = '{$pay[$key]}'";
        $ctpRslt = db_exec($sql);
        $ctp = pg_fetch_array($ctpRslt);
        # get account name for account paid
        $accRslt = get("core", "accname", "accounts", "accid", $purch['paidacc']);
        $acc = pg_fetch_array($accRslt);
        $paidacc = $acc['accname'];
        # get account name for account used
        $accRslt = get("core", "accname", "accounts", "accid", $purch['usedacc']);
        $acc = pg_fetch_array($accRslt);
        $usedacc = $acc['accname'];
        $pays .= "<tr class='bg-odd'>\n                                <input type=hidden name=pay[] value='{$pay[$key]}'>\n                                <td>{$purch['retailer']}</td>\n                                <td>{$purch['itemname']}</td>\n                                <td>{$purch['descript']}</td>\n                                <td>{$purch['quantity']}</td>\n                                <td>" . CUR . " {$ctp['amount']}</td>\n                                <td>" . CUR . " <input type=hidden name='paidamt[]' value='{$paidamt[$key]}'>{$paidamt[$key]}</td>\n                                <td>{$usedacc}</td>\n                                <td>{$paidacc}</td>\n                        </tr>";
        $tot += $paidamt[$key];
    }
    $confirm = "<center>\n        <h3>Add Multiple Credits Payments to Batch</h3>\n        <h4>Confirm Entry</h4>\n        <form action='" . SELF . "' method=post>\n        <input type=hidden name=key value=writebat>\n        <table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n                <tr><th>Retailer</th><th>Item Name</th><th>Description</th><th>Quantity</th><th>Outstanding amount</th><th>Amount Paid</th><th>Account used</th><th>Account paid</th></tr>\n                {$pays}\n                <tr><td><br></td></tr>\n                <tr class='bg-even'><td colspan=5><b>Total Amount Paid</b></td><td colspan=2><b>" . CUR . " " . sprintf("%01.2f", round($tot, 2)) . "</b></td></tr>\n                <tr><td align=right colspan=6><input type=button value='&laquo Back' onClick='javascript:history.back()'></td><td align=right colspan=1><input type=submit value='Confirm &raquo'></td></tr>\n        </form></table>\n        <br><br><br>\n        <table border=0 cellpadding='2' cellspacing='1' width=15%>\n                <tr><th>Quick Links</th></tr>\n                <tr bgcolor='#88BBFF'><td><a href='creditors-view.php'>View Creditors</a></td></tr>\n                <script>document.write(getQuicklinkSpecial());</script>\n        </table>";
    return $confirm;
}
function write($_POST)
{
    # Get vars
    foreach ($_POST as $key => $value) {
        ${$key} = $value;
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    if (isset($bank)) {
        foreach ($bank as $key => $value) {
            $v->isOk($bank[$key], "num", 1, 50, "Invalid Batch ID.");
        }
    } else {
        return "<li> - No Batch Entries Seleted. Please select at least one batch entry.";
    }
    # display errors, if any
    if ($v->isError()) {
        $write = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $write .= "<li class=err>" . $e["msg"];
        }
        $write .= "<p><input type=button onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $write;
    }
    foreach ($bank as $key => $value) {
        // Accounts details
        $dtaccRs = get("core", "accname, topacc, accnum", "accounts", "accid", $dtaccid[$key]);
        $dtacc[$key] = pg_fetch_array($dtaccRs);
        $ctaccRs = get("core", "accname, topacc, accnum", "accounts", "accid", $ctaccid[$key]);
        $ctacc[$key] = pg_fetch_array($ctaccRs);
        # Get all the details
        $sql = "SELECT * FROM batch WHERE batchid = '{$value}'";
        $rslt = db_exec($sql) or errDie("Unable to access database.");
        $tran = pg_fetch_array($rslt);
        $date[$key] = $tran['date'];
        $refnum[$key] = $tran['refnum'];
        $amount[$key] = $tran['amount'];
        $descript[$key] = $tran['descript'];
        # Remove the entries one by one
        core_Connect();
        $query = "DELETE FROM batch WHERE batchid = '{$bank[$key]}'";
        $Ex = db_exec($query) or errDie("Unable to delete batch file entries.", SELF);
    }
    // Start layout
    $write = "\n        <center>\n        <h3>Batch Journal transactions entries have been removed</h3>\n        <table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\n        <tr><th>Date</th><th>Ref num</th><th>Debit</th><th>Credit</th><th>Amount</th><th>Description</th></tr>";
    foreach ($bank as $key => $value) {
        $write .= "<tr class='bg-odd'><td>{$date[$key]}</td><td>{$refnum[$key]}</td>\n                        <td valign=center>" . $dtacc[$key]['topacc'] . "/" . $dtacc[$key]['accnum'] . " " . $dtacc[$key]['accname'] . "</td>\n                        <td valign=center>" . $ctacc[$key]['topacc'] . "/" . $ctacc[$key]['accnum'] . " " . $ctacc[$key]['accname'] . "</td>\n                        <td>" . CUR . " {$amount[$key]}</td><td>{$descript[$key]}</td></tr>";
    }
    $write .= "</table>\n        <br>\n        <table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "' width=25%>\n        <tr><th>Quick Links</th></tr>\n        <tr class=datacell><td align=center><a href='trans-batch.php'>Add Journal Transactions to batch</td></tr>\n        <tr class=datacell><td align=center><a href='batch-view.php'>View batch Entries</td></tr>\n        <script>document.write(getQuicklinkSpecial());</script>\n        </table>";
    return $write;
}
function writerem($_POST)
{
    # Get vars
    foreach ($_POST as $key => $value) {
        ${$key} = $value;
    }
    # validate input
    require_lib("validate");
    $v = new validate();
    foreach ($bats as $key => $value) {
        $v->isOk($bats[$key], "num", 1, 50, "Invalid batch No.");
    }
    # display errors, if any
    if ($v->isError()) {
        $confirm = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirm .= "<li class=err>" . $e["msg"];
        }
        $confirm .= "<p><input type=button onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    # connect to core
    core_Connect();
    $pay = "";
    # Debtors
    foreach ($bats as $key => $value) {
        db_connect();
        $sql = "SELECT * FROM debtors_batch WHERE batchid = '{$bats[$key]}'";
        $batRslt = db_exec($sql);
        $bat = pg_fetch_array($batRslt);
        # Get all the details
        $sql = "SELECT cusname, orddate, invdate FROM credit_invoices WHERE ordnum = '{$bat['ordnum']}'";
        $invRslt = db_exec($sql) or errDie("Unable to access database.");
        if (pg_numrows($invRslt) < 1) {
            return "<li class=err> - Invalid Invoice Number. 1";
        }
        $inv = pg_fetch_array($invRslt);
        # Get debt invoice info
        $sql = "SELECT amount,terms FROM debtors WHERE ordnum ='{$bat['ordnum']}'";
        $dtRslt = db_exec($sql) or errDie("Unable to retrieve invoice details from database.");
        if (pg_numrows($dtRslt) < 1) {
            return "<li class=err> - Invalid Invoice Number. 2";
        }
        $dt = pg_fetch_array($dtRslt);
        foreach ($inv as $keys => $values) {
            ${$keys} = $values;
        }
        # get paid account name
        core_connect();
        $sql = "SELECT accname FROM accounts WHERE accid = '{$bat['accpaid']}'";
        $accRslt = db_exec($sql);
        $acc = pg_fetch_array($accRslt);
        foreach ($inv as $keys => $values) {
            ${$keys} = $values;
        }
        db_connect();
        $sql = "DELETE FROM debtors_batch WHERE batchid = '{$bat['batchid']}'";
        $Rs = db_exec($sql);
        $pay .= "<tr class='bg-odd'>\r\n                                <td>{$cusname}</td>\r\n                                <td align=center>{$orddate}</td>\r\n                                <td align=center>{$invdate}</td>\r\n                                <td align=center>" . CUR . " {$dt['amount']}</td>\r\n                                <td align=center>{$dt['terms']} days</td>\r\n                                <td align=center>" . CUR . " {$bat['paidamt']}</td>\r\n                                <td align=center>{$acc['accname']}</td>\r\n                            </tr>";
    }
    $det = "<center><h3>Debtors Batch Entries Removed</h3>\r\n                <table border=0 cellpadding='" . TMPL_tblCellPadding . "' cellspacing='" . TMPL_tblCellSpacing . "'>\r\n                        <tr><th>Customer Name</th><th>Order Date</th><th>Invoice Date</th><th>Outstanding Amount</th><th>Terms</th><th>Amount Paid</th><th>Account Paid</th></tr>\r\n                        {$pay}\r\n                </table>\r\n                <br><br><br>\r\n                <table border=0 cellpadding='2' cellspacing='1' width=15%>\r\n                        <tr><th>Quick Links</th></tr>\r\n                        <tr bgcolor='#88BBFF'><td><a href='debtors-batch-view.php'>View Debtors batch</a></td></tr>\r\n                        <tr bgcolor='#88BBFF'><td><a href='debtors-view.php'>View Debtors</a></td></tr>\r\n                        <script>document.write(getQuicklinkSpecial());</script>\r\n                        <tr bgcolor='#88BBFF'><td><a href='main.php'>Main Menu</a></td></tr>\r\n                </table>";
    return $det;
}