function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = date("d");
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    extract($fields, EXTR_SKIP);
    $OUTPUT = "<center>\r\n\t<h3>Equipment to be Returned</h3>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='4'>Date Range</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\r\n\t\t\t<td><b> To </b></td>\r\n\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t\t<td>\r\n\t\t\t\t<input type='submit' value='Continue' style='text-weight: bold' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>";
    // Retrieve equipment to be returned
    $sql = "SELECT *,\r\n\t\t\t\t(SELECT des FROM cubit.assets WHERE id=asset_id) AS des,\r\n\t\t\t\t(SELECT serial FROM cubit.assets WHERE id=asset_id) AS serial\r\n\t\t\tFROM hire.hire_invitems\r\n\t\t\tORDER BY des ASC";
    $items_rslt = db_exec($sql) or errDie("Unable to retrieve items.");
    $items_out = "";
    while ($items_data = pg_fetch_array($items_rslt)) {
        $sql = "SELECT * FROM hire.hire_invoices WHERE invid='{$items_data['invid']}'";
        $inv_rslt = db_exec($sql) or errDie("Unable to retrieve invoice.");
        $inv_data = pg_fetch_array($inv_rslt);
        $sql = "SELECT * FROM cubit.customers WHERE cusnum='{$inv_data['cusnum']}'";
        $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer.");
        $cust_data = pg_fetch_array($cust_rslt);
        if (!hiredDate($items_data["id"])) {
            continue;
        }
        $items_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . hiredDate($items_data["id"]) . "</td>\r\n\t\t\t<td>" . returnDate($items_data["id"]) . "</td>\r\n\t\t\t<td>{$items_data['des']}</td>\r\n\t\t\t<td>" . getSerial($items_data["asset_id"]) . "</td>\r\n\t\t\t<td>{$items_data['qty']}</td>\r\n\t\t\t<td>{$cust_data['surname']} {$cust_data['cusname']}</td>\r\n\t\t\t<td>\r\n\t\t\t\t<a href='hire-invoice-new.php?invid={$items_data['invid']}'>\r\n\t\t\t\t\tView Hire\r\n\t\t\t\t</a>\r\n\t\t\t</td>\r\n\t\t</tr>";
    }
    $OUTPUT .= "<p></p>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Hired</th>\r\n\t\t\t<th>To Be Returned</th>\r\n\t\t\t<th>Plant</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Qty</th>\r\n\t\t\t<th>Customer</th>\r\n\t\t\t<th>Options</th>\r\n\t\t</tr>\r\n\t\t{$items_out}\r\n\t</table>\r\n\t</center>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = "01";
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    extract($fields, EXTR_SKIP);
    $from_date = "{$from_year}-{$from_month}-{$from_day}";
    $to_date = "{$to_year}-{$to_month}-{$to_day}";
    $sql = "SELECT assets.id, des, description, service_description,\r\n\t\t\t\textract('epoch' FROM timestamp) AS e_time\r\n\t\t\tFROM hire.service_history\r\n\t\t\t\tLEFT JOIN cubit.assets ON service_history.asset_id=assets.id\r\n\t\t\tWHERE timestamp BETWEEN '{$from_date} 0:00:00' AND '{$to_date} 23:59:59'";
    $hist_rslt = db_exec($sql) or errDie("Unable to retrieve service history.");
    $hist_out = "";
    while ($hist_data = pg_fetch_array($hist_rslt)) {
        $hist_out .= "\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . date("d-m-Y G:i:s", $hist_data["e_time"]) . "</td>\r\n\t\t\t<td>{$hist_data['des']}</td>\r\n\t\t\t<td>" . getSerial($hist_data["id"]) . "</td>\r\n\t\t\t<td>{$hist_data['service_description']}</td>\r\n\t\t</tr>";
    }
    if (empty($hist_out)) {
        $hist_out = "\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='4'><li>No results found.</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT = "<center>\r\n\t<h3>Service History Report</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr><th colspan='4'>Date Range</th></tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\r\n\t\t\t<td>&nbsp; <b>To</b> &nbsp;</td>\r\n\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t\t<td><input type='submit' value='Select' style='font-weight:bold' /></td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Date/Time</th>\r\n\t\t\t<th>Asset</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Service Description</th>\r\n\t\t</tr>\r\n\t\t{$hist_out}\r\n\t</table>";
    return $OUTPUT;
}
function display($message = "")
{
    extract($_REQUEST);
    $fields = array();
    $fields["search"] = "";
    extract($fields, EXTR_SKIP);
    $description = array();
    $OUTPUT = "<center>\r\n\t<h3>Service Settings</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='2'>Search</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td><input type='text' name='search' value='{$search}' /></td>\r\n\t\t\t<td><input type='submit' value='Search &raquo' /></td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>";
    // Retrieve assets
    $sql = "SELECT * FROM cubit.assets\r\n\t\t\tWHERE des ILIKE '%{$search}%' OR serial ILIKE '%{$search}%'\r\n\t\t\t\tOR locat ILIKE '%{$search}%'\r\n\t\t\tORDER BY des ASC";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
    $service_out = "";
    while ($asset_data = pg_fetch_array($asset_rslt)) {
        if (!isOurs($asset_data["id"])) {
            continue;
        }
        if (!isset($description[$asset_data["id"]])) {
            $description[$asset_data["id"]] = "";
        }
        $service_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t<td>" . getSerial($asset_data["id"]) . "</td>\r\n\t\t\t<td>{$asset_data['locat']}</td>\r\n\t\t\t<td>\r\n\t\t\t\t<input type='text' name='days[" . $asset_data["id"] . "]'\r\n\t\t\t\tvalue='{$asset_data['days']}' size='3'\r\n\t\t\t\tstyle='text-align: center' />\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t\t<input type='text' name='description[{$asset_data['id']}]'\r\n\t\t\t\tvalue='" . $description[$asset_data["id"]] . "' />\r\n\t\t\t</td>\r\n\t\t</tr>";
    }
    if (empty($service_out)) {
        $service_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='5'><li>No service days found.</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT .= "<form method='post' action='" . SELF . "'>\r\n\t<input type='hidden' name='key' value='save' />\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='5'><li>Amount of hire days before warning.</li></td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td colspan='5'>{$message}</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<th>Description</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Location</th>\r\n\t\t\t<th>Days</th>\r\n\t\t\t<th>Description</th>\r\n\t\t</tr>\r\n\t\t{$service_out}\r\n\t\t<tr>\r\n\t\t\t<td colspan='5' align='center'>\r\n\t\t\t\t<input type='submit' value='Save &raquo' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>\r\n\t</center>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = "01";
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    extract($fields, EXTR_SKIP);
    $from_date = "{$from_year}-{$from_month}-{$from_day}";
    $to_date = "{$to_year}-{$to_month}-{$to_day}";
    $sql = "SELECT assets.id, assets.des AS asset_des, asset_svdates.svdate,\r\n\t\t\t\tasset_svdates.des AS sv_des\r\n\t\t\tFROM cubit.asset_svdates\r\n\t\t\t\tLEFT JOIN cubit.assets\r\n\t\t\t\t\tON asset_svdates.asset_id=assets.id\r\n\t\t\tWHERE asset_svdates.svdate BETWEEN '{$from_date}' AND '{$to_date}'";
    $sv_rslt = db_exec($sql) or errDie("Unable to retrieve asset services.");
    $service_out = "";
    while ($sv_data = pg_fetch_array($sv_rslt)) {
        if (empty($sv_data["id"])) {
            continue;
        }
        $service_out .= "\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>{$sv_data['asset_des']}</td>\r\n\t\t\t<td>" . getSerial($sv_data["id"]) . "</td>\r\n\t\t\t<td>{$sv_data['sv_des']}</td>\r\n\t\t\t<td>{$sv_data['svdate']}</td>\r\n\t\t</tr>";
    }
    if (empty($service_out)) {
        $service_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='4'><li>No results found</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT = "<center>\r\n\t<h3>Service Report</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='4'>Date Range</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\r\n\t\t\t<td>&nbsp; <b>To</b> &nbsp;</td>\r\n\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t\t<td>\r\n\t\t\t\t<input type='submit' value='Select' style='font-weight: bold' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Asset</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Service Description</th>\r\n\t\t\t<th>Service Date</th>\r\n\t\t</tr>\r\n\t\t{$service_out}\r\n\t</table>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["search"] = "";
    $fields["type_id"] = 0;
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = date("d");
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("t");
    extract($fields, EXTR_SKIP);
    if ($type_id) {
        $type_sql = "AND assets.type_id='{$type_id}'";
    } else {
        $type_sql = "";
    }
    $sql = "SELECT qty, des, serial, customers.cusnum, customers.cusname,\r\n\t\t\t\tcustomers.surname, to_date, invnum, hire_invitems.invid,\r\n\t\t\t\thire_invitems.id, done, printed, grpname, name\r\n\t\t\t\tFROM hire.hire_invitems\r\n\t\t\t\t\tLEFT JOIN cubit.assets\r\n\t\t\t\t\t\tON hire_invitems.asset_id = assets.id\r\n\t\t\t\t\tLEFT JOIN hire.hire_invoices\r\n\t\t\t\t\t\tON hire_invitems.invid = hire_invoices.invid\r\n\t\t\t\t\tLEFT JOIN cubit.customers\r\n\t\t\t\t\t\tON hire_invoices.cusnum = customers.cusnum\r\n\t\t\t\t\tLEFT JOIN cubit.assetgrp\r\n\t\t\t\t\t\tON assets.grpid=assetgrp.grpid\r\n\t\t\t\t\tLEFT JOIN cubit.asset_types\r\n\t\t\t\t\t\tON assets.type_id=asset_types.id\r\n\t\t\t\tWHERE done='y' {$type_sql} AND remaction IS NULL AND\r\n\t\t\t\t\tprinted='y' AND (cast(qty as text) ILIKE '%{$search}%' OR\r\n\t\t\t\t\tserial ILIKE '%{$search}%' OR\r\n\t\t\t\t\tcustomers.cusname ILIKE '{$search}%' OR\r\n\t\t\t\t\tcustomers.surname ILIKE '{$search}%' OR\r\n\t\t\t\t\tcast(to_date as text) ILIKE '%{$search}%' OR\r\n\t\t\t\t\tcast(invnum as text) ILIKE '%{$search}%'\r\n\t\t\t\t\tOR grpname ILIKE '%{$search}%' OR name ILIKE '%{$search}%')\r\n\t\t\t\tORDER BY des ASC";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
    $sql = "SELECT id, name FROM cubit.asset_types";
    $type_rslt = db_exec($sql) or errDie("Unable to retrieve asset types.");
    $type_sel = "<select name='type_id' onchange='javascript:document.form.submit()'\r\n\t\t\t\t  style='width: 100%'>";
    $type_sel .= "<option value='0'>[All]</option>";
    while ($type_data = pg_fetch_array($type_rslt)) {
        if ($type_data["id"] == $type_id) {
            $sel = "selected='t'";
        } else {
            $sel = "";
        }
        $type_sel .= "\r\n\t\t<option value='{$type_data['id']}' {$sel}>\r\n\t\t\t{$type_data['name']}\r\n\t\t</option>";
    }
    $type_sel .= "</select>";
    $hired_out = "";
    while ($asset_data = pg_fetch_array($asset_rslt)) {
        $hired_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td align='center'>\r\n\t\t\t\t<a href='javascript:popupOpen" . "(\"hire-invoice-new.php?invid={$asset_data['invid']}\")'>\r\n\t\t\t\t\tH" . getHirenum($asset_data["invid"], 1) . "\r\n\t\t\t\t</a>\r\n\t\t\t</td>\r\n\t\t\t<td>{$asset_data['grpname']}</td>\r\n\t\t\t<td>{$asset_data['name']}</td>\r\n\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t<td>{$asset_data['serial']}</td>\r\n\t\t\t<td align='center'>{$asset_data['qty']}</td>\r\n\t\t\t<td>{$asset_data['cusname']} {$asset_data['surname']}</td>\r\n\t\t\t<td align='center'>" . returnDate($asset_data["id"]) . "</td>\r\n\t\t</tr>";
    }
    // Display something atleast, even though we've got no results.
    if (empty($hired_out)) {
        $hired_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='8'><li>No results found.</li></td>\r\n\t\t</tr>";
    }
    // Available assets -------------------------------------------------------
    $sql = "SELECT grpname, name, des, assets.id, serial2\r\n\t\t\tFROM cubit.assets\r\n\t\t\t\tLEFT JOIN cubit.assetgrp ON assets.grpid=assetgrp.grpid\r\n\t\t\t\tLEFT JOIN cubit.asset_types ON assets.type_id=asset_types.id\r\n\t\t\tWHERE remaction is NULL AND (grpname ILIKE '%{$search}%' OR\r\n\t\t\t\tname ILIKE '%{$search}%' OR des ILIKE '%{$search}%') {$type_sql}\r\n\t\t\tORDER BY des ASC";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
    $available_out = "";
    while ($asset_data = pg_fetch_array($asset_rslt)) {
        if (isHired($asset_data["id"])) {
            continue;
        }
        $available_out .= "\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>{$asset_data['grpname']}</td>\r\n\t\t\t<td>{$asset_data['name']}</td>\r\n\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t<td>" . getSerial($asset_data["id"]) . "</td>\r\n\t\t\t<td>" . getUnits($asset_data["id"]) . "</td>\r\n\t\t</tr>";
    }
    if (empty($available_out)) {
        $available_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='5'><li>No results found.</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT = "<center>\r\n\t<h3>Asset Report</th>\r\n\t<br /><br />\r\n\t<form method='post' action='" . SELF . "' name='form'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='4'>Date Range</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\r\n\t\t\t<td>&nbsp; <b>To</b> &nbsp;</td>\r\n\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t\t<td><input type='submit' value='Select' /></td>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'><td colspan='4' align='center'>\r\n\t\t<table " . TMPL_tblDflts . ">\r\n\t\t\t<tr>\r\n\t\t\t\t<th colspan='2'>Search</th>\r\n\t\t\t\t<th>Asset Type</th>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><input type='text' name='search' value='{$search}' /></td>\r\n\t\t\t\t<td><input type='submit' value='Search' /></td>\r\n\t\t\t\t<td>{$type_sel}</td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t\t</td></tr>\r\n\t</table>\r\n\t</form>\r\n\t<h3>Hired Out</h3>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Hire No</th>\r\n\t\t\t<th>Asset Group</th>\r\n\t\t\t<th>Asset Type</th>\r\n\t\t\t<th>Asset</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Qty</th>\r\n\t\t\t<th>Customer</th>\r\n\t\t\t<th>Expected Return</th>\r\n\t\t</tr>\r\n\t\t{$hired_out}\r\n\t</table>\r\n\t<h3>Available</h3>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Asset Group</th>\r\n\t\t\t<th>Asset Type</th>\r\n\t\t\t<th>Asset</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Qty</th>\r\n\t\t</tr>\r\n\t\t{$available_out}\r\n\t</table>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $sql = "SELECT * FROM hire.hire_return WHERE invid='{$invid}'";
    $inv_rslt = db_exec($sql) or errDie("Unable to retrieve returns.");
    while ($inv_data = pg_fetch_array($inv_rslt)) {
        $sql = "SELECT * FROM cubit.assets WHERE id='{$inv_data['asset_id']}'";
        $asset_rslt = db_exec($sql) or errDie("Unable to retrieve asset.");
        $asset_data = pg_fetch_array($asset_rslt);
        $items_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . getSerial($asset_data["id"], 1) . " {$asset_data['des']}</td>\r\n\t\t\t<td align='center'>\r\n\t\t\t\t<input type='checkbox' name='workshop[{$asset_data['id']}]'\r\n\t\t\t\tvalue='{$item_data['id']}' />\r\n\t\t\t</td>\r\n\t\t\t<td><input type='text' name='description[{$asset_data['id']}]' /></td>\r\n\t\t</tr>";
    }
    $OUTPUT = "<h3>Return</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Plant</th>\r\n\t\t\t<th>Return to<br />Workshop</th>\r\n\t\t</tr>\r\n\t\t{$items_out}\r\n\t\t<tr>\r\n\t\t\t<td colspan='2' align='center'>\r\n\t\t\t\t<input type='submit' value='Return' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>";
    return $OUTPUT;
}
function hireNotes($errors = "")
{
    extract($_REQUEST);
    $fields = array();
    $fields["date_year"] = date("Y");
    $fields["date_month"] = date("m");
    $fields["date_day"] = date("d");
    extract($fields, EXTR_SKIP);
    // Retrieve monthly hire notes for this customer
    $sql = "SELECT * FROM hire.monthly_invoices WHERE invnum>0 AND invoiced='0'\r\n\t\t\tORDER BY invnum DESC";
    $mi_rslt = db_exec($sql) or errDie("Unable to retrieve monthly hire notes.");
    $mi_out = "";
    while ($mi_data = pg_fetch_array($mi_rslt)) {
        $sql = "SELECT *,\r\n\t\t\t\t\t(SELECT serial FROM cubit.assets WHERE id=asset_id) AS serial,\r\n\t\t\t\t\t(SELECT des FROM cubit.assets WHERE id=asset_id) as des\r\n\t\t\t\tFROM hire.monthly_invitems\r\n\t\t\t\tWHERE invid='{$mi_data['hire_invid']}'";
        $mii_rslt = db_exec($sql) or errDie("Unable to retrieve items.");
        if (!pg_num_rows($mii_rslt)) {
            $sql = "DELETE FROM hire.monthly_invoices WHERE invid='{$mi_data['invid']}'";
            db_exec($sql) or errDie("Unable to remove monthly invoice.");
            continue;
        }
        $mi_out .= "<tr>\r\n\t\t\t<th colspan='5'>Monthly Hire No: {$mi_data['invnum']}</th>\r\n\t\t\t<th align='right'>\r\n\t\t\t\t<input type='submit' name='invoice[{$mi_data['invid']}]'\r\n\t\t\t\tvalue='Invoice' />\r\n\t\t\t</th>\r\n\t\t</tr>";
        $sql = "SELECT surname, cusname FROM cubit.customers\r\n\t\t\t\t\tWHERE cusnum='{$mi_data['cusnum']}'";
        $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customers.");
        $cust_data = pg_fetch_array($cust_rslt);
        while ($mii_data = pg_fetch_array($mii_rslt)) {
            if (!isset($mii_data["invoiced_month"])) {
                $mii_data["invoiced_month"] = 0;
            }
            if ($mii_data["invoiced_month"] == date("m")) {
                continue;
            }
            if (empty($mii_data["e_invoiced"])) {
                $invoiced = "Never";
            } else {
                $invoiced = date("d-m-Y", $mii_data["e_invoiced"]);
            }
            $basis = ucwords(implode(" ", explode("_", $mii_data["basis"])));
            $mi_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t\t<td>{$cust_data['surname']} {$cust_data['cusname']}</td>\r\n\t\t\t\t<td>{$basis}</td>\r\n\t\t\t\t<td>" . getSerial($mii_data["asset_id"], true) . " {$mii_data['des']}</td>\r\n\t\t\t\t<td>{$mii_data['qty']}</td>\r\n\t\t\t\t<td>" . sprint($mii_data["amt"]) . "</td>\r\n\t\t\t\t<td>&nbsp;</td>\r\n\t\t\t</tr>";
        }
    }
    if (empty($mi_out)) {
        $mi_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='6'>No invoices found.</td>\r\n\t\t</tr>";
    }
    if (!isset($cust_id)) {
        $cust_id = 0;
    }
    $OUTPUT = "<center>\r\n\t<h3>Monthly Processing</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr><td colspan='2'>{$errors}</td></tr>\r\n\t\t<tr><th colspan='2'>Processing Date</th></tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td align='center'>" . mkDateSelect("date", $date_year, $date_month, $date_day) . "</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t<input type='hidden' name='cust_id' value='{$cust_id}' />\r\n\t<input type='hidden' name='key' value='invoice' />\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Customer</th>\r\n\t\t\t<th>Basis</th>\r\n\t\t\t<th>Item</th>\r\n\t\t\t<th>Qty</th>\r\n\t\t\t<th>Amount</th>\r\n\t\t\t<th>&nbsp;</th>\r\n\t\t</tr>\r\n\t\t{$mi_out}\r\n\t\t</form>\r\n\t\t<form method='post' action='" . SELF . "'>\r\n\t\t<input type='hidden' name='cust_id' value='{$cust_id}' />\r\n\t\t<input type='hidden' name='key' value='reset' />\r\n\t\t<tr>\r\n\t\t\t<td colspan='6' align='center'>\r\n\t\t\t\t<input type='submit' value='Reset' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["date_year"] = date("Y");
    $fields["date_month"] = date("m");
    $fields["date_day"] = date("d");
    extract($fields, EXTR_SKIP);
    $date = dateFmt($date_year, $date_month, $date_day);
    for ($i = 0; $i < 2; $i++) {
        if ($i) {
            $collection = "collect";
        } else {
            $collection = "deliver";
        }
        $sql = "SELECT * FROM hire.collection\r\n\t\t\t\tWHERE {$collection}='1'\r\n\t\t\t\t\tAND time BETWEEN '{$date} 0:00:00' AND '{$date} 23:59:59'";
        $clct_rslt = db_exec($sql) or errDie("Unable to retrieve collection.");
        while ($clct_data = pg_fetch_array($clct_rslt)) {
            if (!$clct_data["item_id"]) {
                continue;
            }
            $sql = "SELECT * FROM cubit.assets WHERE id='{$clct_data['asset_id']}'";
            $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
            $sql = "SELECT * FROM hire.hire_invitems WHERE id='{$clct_data['item_id']}'";
            $item_rslt = db_exec($sql) or errDie("Unable to retrieve items.");
            $item_data = pg_fetch_array($item_rslt);
            if (empty($item_data["invid"])) {
                continue;
            }
            $sql = "SELECT * FROM hire.hire_invoices WHERE invid='{$item_data['invid']}'";
            $inv_rslt = db_exec($sql) or errDie("Unable to retrieve invoices.");
            $inv_data = pg_fetch_array($inv_rslt);
            while ($asset_data = pg_fetch_array($asset_rslt)) {
                ${$collection} .= "<tr class='" . bg_class() . "'>\r\n\t\t\t\t\t<td>H" . getHirenum($inv_data["invid"], 1) . "</td>\r\n\t\t\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t\t\t<td>{$inv_data['cusname']} {$inv_data['surname']}</td>\r\n\t\t\t\t\t<td>" . hireAddress($inv_data["invid"]) . "</td>\r\n\t\t\t\t\t<td>" . getSerial($asset_data["id"]) . "</td>\r\n\t\t\t\t</tr>";
            }
        }
        if (empty(${$collection})) {
            ${$collection} = "<tr class='" . bg_class() . "'>\r\n\t\t\t\t<td colspan='5'><li>No results found.</li></td>\r\n\t\t\t</tr>";
        }
    }
    $OUTPUT = "<center>\r\n\t<h3>Collect and Deliver Report</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr><th colspan='2'>Date</th></tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("date", $date_year, $date_month, $date_day) . "</td>\r\n\t\t\t<td><input type='submit' value='Select' style='font-weight: bold' /></td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>\r\n\t<p></p>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='5'>Deliver</th>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<th>Hire No</th>\r\n\t\t\t<th>Asset</th>\r\n\t\t\t<th>Customer</th>\r\n\t\t\t<th>Address</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t</tr>\r\n\t\t{$deliver}\r\n\t\t<tr>\r\n\t\t\t<th colspan='5'>Collect</th>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<th>Hire No</th>\r\n\t\t\t<th>Asset</th>\r\n\t\t\t<th>Customer</th>\r\n\t\t\t<th>Address</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t</tr>\r\n\t\t{$collect}\r\n\t</table>\r\n\t</center>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["frm_year"] = date("Y");
    $fields["frm_month"] = date("m");
    $fields["frm_day"] = date("d");
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("t");
    extract($fields, EXTR_SKIP);
    // Dates from date range
    $frm_date = dateFmt($frm_year, $frm_month, $frm_day);
    $to_date = dateFmt($to_year, $to_month, $to_day);
    $OUTPUT = "<center>\r\n\t<h3>View Bookings</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='4'>Date Range</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("frm", $frm_year, $frm_month, $frm_day) . "</td>\r\n\t\t\t<td><b>&nbsp; To &nbsp;</b></td>\r\n\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t\t<td><input type='submit' value='Continue &raquo' /></td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>";
    // Retrieve bookings
    $sql = "SELECT *,\r\n\t\t\t\textract('epoch' FROM from_date) AS e_from,\r\n\t\t\t\textract('epoch' FROM to_date) AS e_to\r\n\t\t\t\tFROM hire.bookings\r\n\t\t\t\tWHERE from_date BETWEEN '{$frm_date}' AND '{$to_date}' OR\r\n\t\t\t\t\tto_date BETWEEN '{$frm_date}' AND '{$to_date}'";
    $booking_rslt = db_exec($sql) or errDie("Unable to retrieve bookings.");
    $booking_out = "";
    while ($booking_data = pg_fetch_array($booking_rslt)) {
        // Retrieve asset
        $sql = "SELECT * FROM cubit.assets WHERE id='{$booking_data['asset_id']}'";
        $asset_rslt = db_exec($sql) or errDie("Unable to retrieve asset.");
        $asset_data = pg_fetch_array($asset_rslt);
        if (!isOurs($asset_data["id"])) {
            continue;
        }
        // Retrieve customer
        $sql = "SELECT * FROM cubit.customers WHERE cusnum='{$booking_data['cust_id']}'";
        $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer.");
        $cust_data = pg_fetch_array($cust_rslt);
        // Create the output
        $booking_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td align='center'>{$booking_data['id']}</td>\r\n\t\t\t<td>" . date("d-m-Y", $booking_data["e_from"]) . "</td>\r\n\t\t\t<td>" . date("d-m-Y", $booking_data["e_to"]) . "</td>\r\n\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t<td>" . getSerial($asset_data["id"]) . "</td>\r\n\t\t\t<td>\r\n\t\t\t\t<a href='../cust-det.php?cusnum={$cust_data['cusnum']}'>\r\n\t\t\t\t\t{$cust_data['surname']}\r\n\t\t\t\t</a>\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t\t<a href='booking_save.php?id={$booking_data['id']}&page_option=edit'>\r\n\t\t\t\t\tEdit Booking\r\n\t\t\t\t</a>\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t\t<a href='booking_remove.php?id={$booking_data['id']}'>\r\n\t\t\t\t\tRemove Booking\r\n\t\t\t\t</a>\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t\t<a href='" . SELF . "?key=hire&id={$booking_data['id']}'\r\n\t\t\t\tstyle='font-size: 1.2em; padding: 0 1em'>\r\n\t\t\t\t\t<b>Hire</b></a>\r\n\t\t\t</td>\r\n\t\t</tr>";
    }
    if (empty($booking_out)) {
        $booking_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='7'><li>No bookings found.</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT .= "<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Booking No.</th>\r\n\t\t\t<th>From Date</th>\r\n\t\t\t<th>To Date</th>\r\n\t\t\t<th>Small Plant</th>\r\n\t\t\t<th>Serial No.</th>\r\n\t\t\t<th>Customer</th>\r\n\t\t\t<th colspan='3'>Options</th>\r\n\t\t</tr>\r\n\t\t{$booking_out}\r\n\t</table>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $sql = "SELECT * FROM cubit.assets ORDER BY des ASC";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
    $service_out = "";
    while ($asset_data = pg_fetch_array($asset_rslt)) {
        if (!isOurs($asset_data["id"])) {
            continue;
        }
        // Retrieve the service date
        $sql = "SELECT svdate, des FROM cubit.asset_svdates\r\n\t\t\t\tWHERE asset_id='{$asset_data['id']}'";
        $svdate_rslt = db_exec($sql) or errDie("Unable to retrieve service date.");
        list($svdate, $des) = pg_fetch_array($svdate_rslt);
        $service_out .= "\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . getSerial($asset_data["id"]) . "</td>\r\n\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t<td>{$svdate}</td>\r\n\t\t\t<td>{$des}</td>\r\n\t\t</tr>";
    }
    if (empty($service_out)) {
        $service_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='3'><li>No results found.</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT = "<center>\r\n\t<h3>Plant Service Dates</h3>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Description</th>\r\n\t\t\t<th>Service Date</th>\r\n\t\t\t<th>Service Description</th>\r\n\t\t</tr>\r\n\t\t{$service_out}\r\n\t</table>\r\n\t</center>";
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = "01";
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    $fields["perc_search"] = "100";
    $fields["export"] = 0;
    extract($fields, EXTR_SKIP);
    $from_date = dateFmt($from_year, $from_month, $from_day);
    $to_date = dateFmt($to_year, $to_month, $to_day);
    $sql = "SELECT id, serial, des, grpname\r\n\t\t\tFROM cubit.assets\r\n\t\t\t\tLEFT JOIN cubit.assetgrp ON assets.grpid=assetgrp.grpid\r\n\t\t\tORDER BY serial ASC";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
    $asset_out = "";
    while ($asset_data = pg_fetch_array($asset_rslt)) {
        $percentage = utilisationPerc($asset_data["id"], $from_date, $to_date);
        if (!is_numeric($perc_search) || $percentage > $perc_search) {
            continue;
        }
        $asset_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td>{$asset_data['grpname']}</td>\r\n\t\t\t<td>" . getSerial($asset_data["id"]) . "</td>\r\n\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t<td align='center'>\r\n\t\t\t\t<b>" . utilisationDays($asset_data["id"], $from_date, $to_date) . "</b>\r\n\t\t\t</td>\r\n\t\t\t<td align='center' >\r\n\t\t\t\t<b>{$percentage}%</b>\r\n\t\t\t</td>\r\n\t\t\t<td width='2%' bgcolor='" . ext_progressColor($percentage) . "'>&nbsp;</td>\r\n\t\t</tr>";
    }
    if (empty($asset_out)) {
        $asset_out = "<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='6'><li>No results found</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT = "<center>\r\n\t<h3>Hire Utilisation Report</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='3'>Date Range</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\r\n\t\t\t<td>&nbsp; <b> To </b> &nbsp;</td>\r\n\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<th colspan='3'>Utilisation Percentage Filter (Less Than or Equal)</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='3' align='center'>\r\n\t\t\t\t<input type='text' name='perc_search' value='{$perc_search}'\r\n\t\t\t\tsize='2' style='text-align: center' />%\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td colspan='3' align='center'>\r\n\t\t\t\t<input type='submit' value='Apply to Report'\r\n\t\t\t\tstyle='font-weight: bold; font-size: 1.1em' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>";
    $OUTPUT .= $xls_out = "\r\n\t<h3>Hire Utilisation Report For {$from_date} to {$to_date}</h3>\r\n\t<table " . TMPL_tblDflts . " width='70%'>\r\n\t\t<tr>\r\n\t\t\t<th>Group</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Description</th>\r\n\t\t\t<th>Days Hired</th>\r\n\t\t\t<th>Utilisation Percentage</th>\r\n\t\t\t<th width='2%'>&nbsp;</th>\r\n\t\t</tr>\r\n\t\t{$asset_out}\r\n\t</table>";
    $OUTPUT .= "\r\n\t<form method='post' action='" . SELF . "'>\r\n\t\t<input type='hidden' name='export' value='1' />\r\n\t\t<input type='submit' value='Export to Spreadsheet' />\r\n\t</form>\r\n\t</center>";
    if ($export) {
        $xls_out = clean_html($xls_out);
        require_lib("xls");
        StreamXLS("hire_utilisation", $xls_out);
    }
    return $OUTPUT;
}
Example #12
0
 /**
  * update zone serial
  *
  *@access private
  *@param $zoneid int zone id
  *@return int 0 if error, 1 if success
  */
 function updateSerial($zoneid)
 {
     global $db, $l;
     $result = "";
     // retrieve zone serial
     $query = sprintf("SELECT serial FROM dns_confprimary WHERE zoneid='%d'", $zoneid);
     $res = $db->query($query);
     if ($db->error()) {
         $this->error = $l['str_trouble_with_db'];
         return 0;
     }
     $line = $db->fetch_row($res);
     $serial = getSerial($line[0]);
     $query = sprintf("UPDATE dns_confprimary SET serial='%d' WHERE zoneid='%d'", $serial, $zoneid);
     $res = $db->query($query);
     if ($db->error()) {
         $this->error = $l['str_trouble_with_db'];
         return 0;
     }
     return 1;
 }
function basis()
{
    extract($_REQUEST);
    $fields = array();
    $fields["asset_search"] = "";
    extract($fields, EXTR_SKIP);
    // Retrieve assets
    $sql = "SELECT * FROM cubit.assets\r\n\t\t\tWHERE des ILIKE '%{$asset_search}%' OR serial ILIKE '%{$asset_search}%'\r\n\t\t\t\tOR locat ILIKE '%{$asset_search}%'\r\n\t\t\tORDER BY des ASC";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
    $asset_out = "";
    while ($asset_data = pg_fetch_array($asset_rslt)) {
        if (!isOurs($asset_data["id"])) {
            continue;
        }
        $sql = "SELECT * FROM hire.cust_basis\r\n\t\t\t\tWHERE cust_id='{$cust_id}' AND asset_id='{$asset_data['id']}'";
        $basis_rslt = db_exec($sql) or errDie("Unable to retrieve basis.");
        $basis_data = pg_fetch_array($basis_rslt);
        $sql = "SELECT * FROM hire.basis_prices WHERE assetid='{$asset_data['id']}'";
        $bp_rslt = db_exec($sql) or errDie("Unable to retrieve default basis.");
        $bp_data = pg_fetch_array($bp_rslt);
        if (!isset($day[$asset_data["id"]])) {
            $day[$asset_data["id"]] = sprint($basis_data["day"]);
            if (!(double) $day[$asset_data["id"]] && (double) $bp_data["per_day"]) {
                $day[$asset_data["id"]] = $bp_data["per_day"];
            }
        }
        if (!isset($hour[$asset_data["id"]])) {
            $hour[$asset_data["id"]] = sprint($basis_data["hour"]);
            if (!(double) $hour[$asset_data["id"]] && (double) $bp_data["per_hour"]) {
                $hour[$asset_data["id"]] = $bp_data["per_hour"];
            }
        }
        if (!isset($week[$asset_data["id"]])) {
            $week[$asset_data["id"]] = sprint($basis_data["week"]);
            if (!(double) $week[$asset_data["id"]] && (double) $bp_data["per_week"]) {
                $week[$asset_data["id"]] = $bp_data["per_week"];
            }
        }
        $asset_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td>{$asset_data['des']}</td>\r\n\t\t\t<td>" . getSerial($asset_data["id"]) . "</td>\r\n\t\t\t<td>{$asset_data['locat']}</td>\r\n\t\t\t<td>\r\n\t\t\t\t" . CUR . "\r\n\t\t\t\t<input type='text' name='hour[{$asset_data['id']}]'\r\n\t\t\t\tvalue='" . sprint($hour[$asset_data["id"]]) . "' size='5'\r\n\t\t\t\tstyle='text-align: right' />\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t\t" . CUR . "\r\n\t\t\t\t<input type='text' name='day[{$asset_data['id']}]'\r\n\t\t\t\tvalue='" . sprint($day[$asset_data["id"]]) . "' size='5'\r\n\t\t\t\tstyle='text-align: right' />\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t\t" . CUR . "\r\n\t\t\t\t<input type='text' name='week[{$asset_data['id']}]'\r\n\t\t\t\tvalue='" . sprint($week[$asset_data["id"]]) . "' size='5'\r\n\t\t\t\tstyle='text-align: right' />\r\n\t\t\t</td>\r\n\t\t</tr>";
    }
    // Retrieve customer details
    $sql = "SELECT * FROM cubit.customers WHERE cusnum='{$cust_id}'";
    $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer.");
    $cust_data = pg_fetch_array($cust_rslt);
    $OUTPUT = "<center>\r\n\t<h3>Basis</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<input type='hidden' name='cust_id' value='{$cust_id}' />\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='2'>Search</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td><input type='text' name='asset_search' value='{$asset_search}' /></td>\r\n\t\t\t<td><input type='submit' value='Search &raquo' /></td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<th colspan='2'>Customer</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>\r\n\t\t\t\t<a href='javascript:" . "popupOpen(\"../cust-det.php?cusnum={$cust_data['cusnum']}\");'>\r\n\t\t\t\t\t{$cust_data['surname']} {$cust_data['cusname']}\r\n\t\t\t\t</a>\r\n\t\t\t</td>\r\n\t\t\t<td>\r\n\t\t\t\t<a href='" . SELF . "'>Change</a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t<p></p>\r\n\t</table>\r\n\t</form>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<input type='hidden' name='key' value='save' />\r\n\t<input type='hidden' name='cust_id' value='{$cust_id}' />\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Plant</th>\r\n\t\t\t<th>Serial</th>\r\n\t\t\t<th>Location</th>\r\n\t\t\t<th>Hour</th>\r\n\t\t\t<th>Day</th>\r\n\t\t\t<th>Week</th>\r\n\t\t</tr>\r\n\t\t{$asset_out}\r\n\t\t<tr>\r\n\t\t\t<td colspan='6' align='center'>\r\n\t\t\t\t<input type='submit' value='Set Basis &raquo'\r\n\t\t\t\tstyle='font-size: 1.1em; font-weight: bold;' />\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>";
    return $OUTPUT;
}
Example #14
0
 /**
  * Fill in new zone with template content
  *
  *@access private
  *@param string $template zone template to be used
  *@return int 1 if success, 0 if error
  */
 function fillinWithTemplate($templatezone, $templatetype)
 {
     global $db, $l;
     $this->error = "";
     $templatetype = $templatetype[0];
     switch ($templatetype) {
         case 'S':
             $query = "SELECT c.masters,c.xfer FROM dns_confsecondary c, dns_zone z\n            WHERE c.zoneid=z.id AND z.zone='" . mysql_real_escape_string($templatezone) . "' AND z.zonetype='S'";
             $res = $db->query($query);
             $line = $db->fetch_row($res);
             if ($db->error()) {
                 $this->error = $l['str_trouble_with_db'];
                 return 0;
             } else {
                 $query = sprintf("INSERT INTO dns_confsecondary (zoneid,masters,xfer)\n            VALUES('%s', %s, %s)", $this->zoneid, $this->_f($line[0]), $this->_f($line[1]));
                 $res = $db->query($query);
                 if ($db->error()) {
                     $this->error = $l['str_trouble_with_db'];
                     return 0;
                 }
             }
             break;
             // case 'S'
         // case 'S'
         case 'P':
             $query = "SELECT c.refresh,c.retry,c.expiry,c.minimum,c.xfer,c.defaultttl\n          FROM dns_confprimary c, dns_zone z\n          WHERE c.zoneid=z.id AND z.zone='" . mysql_real_escape_string($templatezone) . "'\n          AND z.zonetype='P'";
             $res = $db->query($query);
             $line = $db->fetch_row($res);
             if ($db->error()) {
                 $this->error = $l['str_trouble_with_db'];
                 return 0;
             } else {
                 $query = sprintf("INSERT INTO dns_confprimary\n            (zoneid,refresh,retry,expiry,minimum,xfer,defaultttl,serial)\n            VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $this->zoneid, mysql_real_escape_string($line[0]), mysql_real_escape_string($line[1]), mysql_real_escape_string($line[2]), mysql_real_escape_string($line[3]), mysql_real_escape_string($line[4]), mysql_real_escape_string($line[5]), getSerial());
                 $res = $db->query($query);
                 if ($db->error()) {
                     $this->error = $l['str_trouble_with_db'];
                     return 0;
                 }
             }
             // fill in records
             $query = "SELECT r.type,r.val1,r.val2,r.val3,r.val4,r.val5,r.ttl\n            FROM dns_record r, dns_zone z\n            WHERE r.zoneid=z.id AND z.zone='" . mysql_real_escape_string($templatezone) . "'\n            AND z.zonetype='P'";
             $res = $db->query($query);
             if ($db->error()) {
                 $this->error = $l['str_trouble_with_db'];
                 return 0;
             } else {
                 $listofrecords = array();
                 while ($line = $db->fetch_row($res)) {
                     array_push($listofrecords, $line);
                 }
                 while ($line = array_pop($listofrecords)) {
                     // NS - simple copy
                     // MX - simple copy
                     // A - if domain name itself, substitute
                     // AAAA - if domain name itself, substitute
                     // WWW - if domain name itself, substitute
                     // CNAME - simple copy
                     // sub zones - simple copy
                     switch ($line[0]) {
                         case "WWW":
                             $line[2] = ereg_replace($templatezone . "/", $this->zonename . "/", $line[2]);
                         case "A":
                         case "AAAA":
                         case "TXT":
                         case "MX":
                             $line[1] = ereg_replace($templatezone . "\\.\$", $this->zonename . ".", $line[1]);
                         case "NS":
                         case "CNAME":
                         case "SUBNS":
                         case "PTR":
                         case "SRV":
                             $line[1] = ereg_replace("\\." . $templatezone . "\\.\$", "", $line[1]);
                             $line[1] = ereg_replace("^" . $this->zonename . "\\.\$", "@", $line[1]);
                             break;
                     }
                     // end switch
                     $query = sprintf("INSERT INTO dns_record\n              (zoneid,type,val1,val2,val3,val4,val5,ttl)\n              VALUES ('%s', '%s', %s, %s, %s, %s, %s, %s)", $this->zoneid, $line[0], $this->_f($line[1]), $this->_f($line[2]), $this->_f($line[3]), $this->_f($line[4]), $this->_f($line[5]), $this->_f($line[6]));
                     $db->query($query);
                     if ($db->error()) {
                         $this->error = $l['str_trouble_with_db'];
                         return 0;
                     }
                 }
                 // end while
             }
             // end no DB error
             break;
             // case 'P'
         // case 'P'
         default:
             break;
     }
     return 1;
 }
function display()
{
    extract($_REQUEST);
    define("HOUR", 60 * 60);
    define("DAY", HOUR * 24);
    define("WEEK", DAY * 7);
    define("TOMMOROW", time() + DAY);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = date("d") <= 7 ? "01" : date("d") - 7;
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("d");
    $fields["total_invoiced"] = 0;
    $fields["total_not_invoiced"] = 0;
    extract($fields, EXTR_SKIP);
    $from_time = mktime(0, 0, 0, $from_month, $from_day, $from_year);
    $to_time = mktime(0, 0, 0, $to_month, $to_day, $to_year);
    $from_date = date("Y-m-d", $from_time);
    $to_date = date("Y-m-d", $to_time);
    // Make sure the date selection is not the same
    if ($from_date == $to_date) {
        $to_date = date("Y-m-d", TOMMOROW);
    }
    $OUTPUT = "\r\n\t\t<center>\r\n\t\t<style>\r\n\t\t\ttd, th { font-size: 0.7em; }\r\n\t\t</style>\r\n\t\t<h3>Hire by Period Detail Report</h3>\r\n\t\t<form method='POST' action='" . SELF . "'>\r\n\t\t<table " . TMPL_tblDflts . ">\r\n\t\t\t<tr>\r\n\t\t\t\t<th colspan='4'>Date Range</th>\r\n\t\t\t</tr>\r\n\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\r\n\t\t\t\t<td>&nbsp; <b>To</b> &nbsp;</td>\r\n\t\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t\t\t<td><input type='submit' value='Select' style='font-weight: bold' /></td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t\t</form>";
    $sql = "SELECT assets_hired.id, invnum, assets.id AS asset_id, des, surname,\r\n\t\t\t\thired_time, return_time, inv_invnum, value, item_id, cust_id,\r\n\t\t\t\tassets.grpid, grpname, assets_hired.invid, qty, basis, weekends,\r\n\t\t\t\textract('epoch' FROM hired_time) AS e_hired,\r\n\t\t\t\textract('epoch' FROM return_time) AS e_return\r\n\t\t\tFROM hire.assets_hired\r\n\t\t\t\tLEFT JOIN cubit.assets ON assets_hired.asset_id=assets.id\r\n\t\t\t\tLEFT JOIN cubit.customers ON assets_hired.cust_id=customers.cusnum\r\n\t\t\t\tLEFT JOIN cubit.assetgrp ON assets.grpid=assetgrp.grpid\r\n\t\t\tWHERE\r\n\t\t\t\thired_time BETWEEN '{$from_date} 0:00:00' AND '{$to_date} 23:59:59'\r\n\t\t\t\tOR return_time BETWEEN '{$from_date} 0:00:00' AND '{$to_date} 23:59:59'\r\n\t\t\t\tOR (hired_time BETWEEN '{$from_date} 0:00:00' AND '{$to_date} 23:59:59'\r\n\t\t\t\t\tAND return_time IS NULL)\r\n\t\t\tORDER BY invid ASC";
    $details_rslt = db_exec($sql) or errDie("Unable to retrieve details.");
    $items_out = array();
    while ($details_data = pg_fetch_array($details_rslt)) {
        // Is this within one of the valid asset hire groups
        if (!preg_match("/(Equipment|Plant)/", $details_data["grpname"])) {
            continue;
        }
        if (!$details_data["inv_invnum"]) {
            $sql = "SELECT amt, basis, extract('epoch' FROM to_date) AS e_to\r\n\t\t\t\t\tFROM hire.hire_invitems\r\n\t\t\t\t\tWHERE id='{$details_data['item_id']}'";
            $item_rslt = db_exec($sql) or errDie("Unable to retrieve amount.");
            list($value, $basis, $e_to) = pg_fetch_array($item_rslt);
            $expected_disp = "";
            // Calculate the amounts for items not yet returned
            switch ($basis) {
                case "per_hour":
                    $hours_beyond_expected = ($to_time - $e_to) / HOUR;
                    if ($hours_beyond_expected) {
                        $basis_per_hour = basisPrice($details_data["cust_id"], $details_data["id"], $basis);
                        $value_beyond = $basis_per_day * $days_beyond_expected;
                        $details_data["value"] = $value + $value_beyond;
                    } else {
                        $details_data["value"] = $value;
                    }
                case "per_day":
                    $days_beyond_expected = $to_time - $e_to;
                    $sundays = 0;
                    for ($i = $details_data["e_hired"]; $i <= $days_beyond_expected; $i += 60 * 60 * 24) {
                        if (date("w", $i) == 0) {
                            $sundays++;
                        }
                    }
                    if ($details_data["weekends"]) {
                        $show_sundays = $sundays + 0.6 * $sundays;
                    } else {
                        $show_sundays = 0;
                    }
                    $days_beyond_expected /= DAY - $show_sundays;
                    if ($days_beyond_expected) {
                        $basis_per_day = basisPrice($details_data["cust_id"], $details_data["id"], $basis);
                        $value_beyond = $basis_per_day * $days_beyond_expected;
                        $details_data["value"] = $value + $value_beyond;
                    } else {
                        $details_data["value"] = $value;
                    }
                    break;
                case "per_week":
                    $weeks_beyond_expected = ($to_time - $e_to) / WEEK;
                    if ($weeks_beyond_expected) {
                        $basis_per_week = basis_price($details_data["cust_id"], $details_data["id"], $basis);
                        $value_beyond = $basis_per_day * $days_beyond_expected;
                        $details_data["value"] = $value + $value_beyond;
                    } else {
                        $details_data["value"] = $value;
                    }
                    break;
            }
            $total_not_invoiced += $details_data["value"];
        } else {
            $total_invoiced += $details_data["value"];
        }
        $total_hire = $total_invoiced + $total_not_invoiced;
        if (empty($details_data["return_time"])) {
            $return_disp = "\r\n\t\t\t<span style='color: #f00'>\r\n\t\t\t\t(Still on Hire) " . date("d-m-Y", $to_time) . "\r\n\t\t\t</span>";
        } else {
            $return_disp = date("d-m-Y G:i:s", $details_data["e_return"]);
        }
        // Units Days / Hours
        $days_hours = "";
        if ($details_data["basis"] == "per_day" || $details_data["basis"] == "per_week") {
            $days_hours = "DAY";
        } else {
            $days_hours = "HOUR";
        }
        // Invoiced / Forecasted
        if (!isset($totals[$details_data["grpid"]]["forecast"])) {
            $totals[$details_data["grpid"]]["forecast"] = 0.0;
        }
        if (!isset($totals[$details_data["grpid"]]["invoiced"])) {
            $totals[$details_data["grpid"]]["invoiced"] = 0.0;
        }
        if (empty($details_data["return_time"])) {
            $forecast_value = $details_data["value"];
            $invoiced_value = "";
            $totals[$details_data["grpid"]]["forecast"] += $details_data["value"];
        } else {
            $forecast_value = "";
            $invoiced_value = $details_data["value"];
            $totals[$details_data["grpid"]]["invoiced"] += $details_data["value"];
        }
        // Weekends
        if ($details_data["weekends"]) {
            $weekends = "w/e charge";
        } else {
            $weekends = "";
        }
        $sql = "\r\n\t\tSELECT qty FROM hire.hire_nons_inv_items\r\n\t\tWHERE invid='{$details_data['inv_invnum']}' AND\r\n\t\t\tasset_id='{$details_data['asset_id']}'";
        $invqty_rslt = db_exec($sql) or errDie("Unable to retrieve items.");
        $invqty = pg_fetch_result($invqty_rslt, 0);
        if (empty($invqty)) {
            $invqty = 0;
        }
        $items_out[$details_data["grpid"]][] = "\r\n\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t<td align='center'>H" . getHirenum($details_data["invid"], 1) . "</td>\r\n\t\t\t\t<td align='center'>{$details_data['inv_invnum']}</td>\r\n\t\t\t\t<td align='center'>{$details_data['surname']}</td>\r\n\t\t\t\t<td>" . getSerial($details_data["asset_id"], 1) . " {$details_data['des']}</td>\r\n\t\t\t\t<td align='center'>{$days_hours}</td>\r\n\t\t\t\t<td>" . date("d-m-Y", $details_data["e_hired"]) . "</td>\r\n\t\t\t\t<td>" . returnDate($details_data["item_id"]) . "</td>\r\n\t\t\t\t<td align='right'>" . sprint($invoiced_value) . "</td>\r\n\t\t\t\t<td>{$weekends}</td>\r\n\t\t\t\t<td align='right'>" . sprint($forecast_value) . "</td>\r\n\t\t\t\t<!--\r\n\t\t\t\t<td align='center'>" . detailsHoursHired($details_data["id"]) . "</td>\r\n\t\t\t\t<td align='center'>" . detailsDaysHired($details_data["id"]) . "</td>\r\n\t\t\t\t<td align='center'>" . detailsWeeksHired($details_data["id"]) . "</td>\r\n\t\t\t\t<td align='center'>" . date("d-m-Y G:i:s", $details_data["e_hired"]) . "</td>\r\n\t\t\t\t<td align='center'>{$return_disp}</td>\r\n\t\t\t\t<td align='right'>" . sprint($details_data["value"]) . "</td>\r\n\t\t\t\t-->\r\n\t\t\t</tr>";
    }
    if (!count($items_out)) {
        $details_out = "\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td colspan='7'><li>No results found.</li></td>\r\n\t\t</tr>";
    }
    if (!isset($total_hire)) {
        $total_hire = 0;
    }
    $OUTPUT .= "\r\n\t\t<table " . TMPL_tblDflts . ">\r\n\t\t\t<tr>\r\n\t\t\t\t<th style='padding-right: 10px'>Total Invoiced Hire</th>\r\n\t\t\t\t<th style='padding-left: 10px'>Total Non Invoiced Hire</th>\r\n\t\t\t</tr>\r\n\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t<td align='center'>" . sprint($total_invoiced) . "</td>\r\n\t\t\t\t<td align='center'>" . sprint($total_not_invoiced) . "</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<th colspan='2'>Total Hire</th>\r\n\t\t\t</tr>\r\n\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t<td align='center' colspan='2'><b>" . sprint($total_hire) . "</b></td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t\t<br />";
    foreach ($items_out as $grpid => $lv2) {
        $sql = "SELECT grpname FROM cubit.assetgrp WHERE grpid='{$grpid}'";
        $group_rslt = db_exec($sql) or errDie("Unable to retrieve asset groups.");
        $group_name = pg_fetch_result($group_rslt, 0);
        $OUTPUT .= "<h3>{$group_name} Hire Revenue</h3>\r\n\t\t\t<table " . TMPL_tblDflts . " width='100%'>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<th>Hire Number</th>\r\n\t\t\t\t\t<th>Invoice Number</th>\r\n\t\t\t\t\t<th>Customer</th>\r\n\t\t\t\t\t<th>Asset</th>\r\n\t\t\t\t\t<th>Units Days / Hours</th>\r\n\t\t\t\t\t<th>Date Out</th>\r\n\t\t\t\t\t<th>Expect / Actual</th>\r\n\t\t\t\t\t<th>Rand (Ex VAT) Invoiced\r\n\t\t\t\t\t<th>&nbsp;</th>\r\n\t\t\t\t\t<th>Rand (Ex VAT) Forecast</th>\r\n\t\t\t\t\t<!--\r\n\t\t\t\t\t<th>Hours Hired</th>\r\n\t\t\t\t\t<th>Days Hired</th>\r\n\t\t\t\t\t<th>Weeks Hired</th>\r\n\t\t\t\t\t<th>Date Hired</th>\r\n\t\t\t\t\t<th>Date Returned</th>\r\n\t\t\t\t\t<th>Value (Ex VAT)</th>\r\n\t\t\t\t\t-->\r\n\t\t\t\t</tr>";
        foreach ($items_out[$grpid] as $line_disp) {
            $OUTPUT .= $line_disp;
        }
        $OUTPUT .= "</table>";
    }
    return $OUTPUT;
}
function display()
{
    extract($_REQUEST);
    $fields = array();
    $fields["from_year"] = date("Y");
    $fields["from_month"] = date("m");
    $fields["from_day"] = date("d");
    $fields["to_year"] = date("Y");
    $fields["to_month"] = date("m");
    $fields["to_day"] = date("t");
    $fields["group_id"] = -1;
    $fields["type_id"] = -1;
    extract($fields, EXTR_SKIP);
    $from_date = dateFmt($from_year, $from_month, $from_day);
    $to_date = dateFmt($to_year, $to_month, $to_day);
    $sql = "SELECT * FROM cubit.assetgrp ORDER BY grpname ASC";
    $group_rslt = db_exec($sql) or errDie("Unable to retrieve asset group.");
    if ($group_id == -1) {
        $none_sel = "selected='selected'";
        $all_sel = "";
    } elseif ($group_id == 0) {
        $none_sel = "";
        $all_sel = "selected='selected'";
    } else {
        $none_sel = "";
        $all_sel = "";
    }
    $group_sel = "<select name='group_id' style='width: 100%'\r\n\t\t\t\t  onchange='javascript:document.form.submit()'>";
    $group_sel .= "<option value='-1' {$none_sel}>[None]</option>";
    $group_sel .= "<option value='0' {$all_sel}>[All]</option>";
    while ($group_data = pg_fetch_array($group_rslt)) {
        if ($group_id == $group_data["grpid"]) {
            $sel = "selected='selected'";
        } else {
            $sel = "";
        }
        $group_sel .= "<option value='{$group_data['grpid']}' {$sel}>\r\n\t\t\t{$group_data['grpname']}\r\n\t\t</option>";
    }
    $group_sel .= "</select>";
    $sql = "SELECT * FROM cubit.asset_types ORDER BY name ASC";
    $type_rslt = db_exec($sql) or errDie("Unable to retrieve asset type.");
    if ($type_id == -1) {
        $none_sel = "selected='selected'";
        $all_sel = "";
    } elseif ($type_id == 0) {
        $none_sel = "";
        $all_sel = "selected='selected'";
    } else {
        $none_sel = "";
        $all_sel = "";
    }
    $type_sel = "<select name='type_id' style='width: 100%'\r\n\t\t\t\t onchange='javascript:document.form.submit()'>";
    $type_sel .= "<option value='-1' {$none_sel}>[None]</option>";
    $type_sel .= "<option value='0' {$all_sel}>[All]</option>";
    while ($type_data = pg_fetch_array($type_rslt)) {
        if ($type_id == $type_data["id"]) {
            $sel = "selected='selected'";
        } else {
            $sel = "";
        }
        $type_sel .= "<option value='{$type_data['id']}' {$sel}>\r\n\t\t\t\t\t\t{$type_data['name']}\r\n\t\t\t\t\t  </option>";
    }
    $type_sel .= "</select>";
    $OUTPUT = "\r\n\t<center>\r\n\t<h3>Availability Report</h3>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td bgcolor='#ff0000'>&nbsp;</td><td>Hired Out</td>\r\n\t\t\t<td bgcolor='#00ff00'>&nbsp;</td><td>Available</td>\r\n\t\t\t<td bgcolor='#ffa200'>&nbsp;</td><td>Booked</td>\r\n\t\t\t<td bgcolor='#ffff00'>&nbsp;</td><td>In Workshop</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t<p></p>\r\n\t<form method='post' action='" . SELF . "' name='form'>\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='4'>Date Range</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>" . mkDateSelect("from", $from_year, $from_month, $from_day) . "</td>\r\n\t\t\t<td><b> To </b></td>\r\n\t\t\t<td>" . mkDateSelect("to", $to_year, $to_month, $to_day) . "</td>\r\n\t\t\t<td><input type='submit' value='Select &raquo' /></td>\r\n\t\t</tr>\r\n\t\t<tr><td colspan='4'>\r\n\t\t<table " . TMPL_tblDflts . " width='100%'>\r\n\t\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t\t<td colspan='2' width='50%'>{$group_sel}</td>\r\n\t\t\t\t<td colspan='2' width='50%'>{$type_sel}</td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t\t</td></tr>\r\n\t</table>\r\n\t</form>";
    $where = array();
    if ($group_id) {
        $where[] = "grpid='{$group_id}'";
    }
    if ($type_id) {
        $where[] = "type_id='{$type_id}'";
    }
    if (count($where)) {
        $where = "WHERE " . implode(" AND ", $where);
    } else {
        $where = "";
    }
    // Retrieve assets
    $sql = "SELECT * FROM cubit.assets {$where}";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve assets.");
    $assets_out = "";
    while ($asset_data = pg_fetch_array($asset_rslt)) {
        if (!isOurs($asset_data["id"])) {
            continue;
        }
        $assets_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td align='center'>\r\n\t\t\t\t" . getSerial($asset_data["id"], 1) . "<br />\r\n\t\t\t\t{$asset_data['des']}\r\n\t\t\t</td>\r\n\t\t\t" . availability($from_date, $to_date, $asset_data["id"]) . "\r\n\t\t</tr>";
    }
    // Do the headers here so we can choose not to show it when no results found
    $headers = date_headers($from_date, $to_date);
    if (empty($assets_out)) {
        $headers = "";
        $assets_out .= "<tr class='" . bg_class() . "'>\r\n\t\t\t<td><li>No results found.</li></td>\r\n\t\t</tr>";
    }
    $OUTPUT .= "<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th>Plant</th>\r\n\t\t\t{$headers}\r\n\t\t</tr>\r\n\t\t{$assets_out}\r\n\t</table>";
    return $OUTPUT;
}
function details($_GET)
{
    $showvat = TRUE;
    # get vars
    extract($_GET);
    # validate input
    require_lib("validate");
    $v = new validate();
    $v->isOk($invid, "num", 1, 20, "Invalid invoice number.");
    # display errors, if any
    if ($v->isError()) {
        $err = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $err .= "<li class='err'>{$e['msg']}</li>";
        }
        $confirm .= "<p><input type='button' onClick='JavaScript:history.back();' value='&laquo; Correct submission'>";
        return $confirm;
    }
    updateTotals($invid);
    # Get invoice info
    $sql = "SELECT *, extract('epoch' from timestamp) AS e_time\r\n\t\t\t\tFROM hire.reprint_invoices\r\n\t\t\t\tWHERE 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[1]</i>";
    }
    $inv = pg_fetch_array($invRslt);
    # get department
    db_conn("exten");
    $sql = "SELECT * FROM departments WHERE deptid = '{$inv['deptid']}' AND div = '" . USER_DIV . "'";
    $deptRslt = db_exec($sql);
    if (pg_numrows($deptRslt) < 1) {
        $dept['deptname'] = "<i class='err'>Not Found[2]</i>";
    } else {
        $dept = pg_fetch_array($deptRslt);
    }
    /* --- Start some checks --- */
    # check if stock was selected(yes = put done button)
    $sql = "SELECT asset_id FROM hire.reprint_invitems WHERE invid = '{$inv['invid']}'";
    $crslt = db_exec($sql);
    if (pg_numrows($crslt) < 1) {
        $error = "<li class='err'> Error : Invoice number <b>{$invid}</b> has no items.</li>";
        return $error;
    }
    /* --- End some checks --- */
    /* --- Start Products Display --- */
    # Products layout
    $products = "";
    $disc = 0;
    # get selected stock in this invoice
    $sql = "SELECT * FROM hire.reprint_invitems  WHERE invid = '{$invid}'";
    $stkdRslt = db_exec($sql);
    $tcosamt = 0;
    while ($stkd = pg_fetch_array($stkdRslt)) {
        # get selected stock in this warehouse
        db_connect();
        $sql = "SELECT * FROM assets WHERE id = '{$stkd['asset_id']}'";
        $stkRslt = db_exec($sql);
        $stk = pg_fetch_array($stkRslt);
        $sp = "&nbsp;&nbsp;&nbsp;&nbsp;";
        # keep track of discounts
        $disc += $stkd['disc'];
        if ($stkd['account'] != 0) {
            $stk['stkcod'] = $stkd['description'];
            $stk['stkdes'] = "";
        }
        $Sl = "SELECT * FROM vatcodes WHERE id='{$stkd['vatcode']}'";
        $Ri = db_exec($Sl);
        $vd = pg_fetch_array($Ri);
        if (TAX_VAT != $vd['vat_amount'] and $vd['vat_amount'] != "0.00") {
            $showvat = FALSE;
        }
        # put in product
        $stkd['unitcost'] = $stkd['unitcost'] - $stkd['disc'];
        $return = returnDate($stkd["item_id"]);
        $hired = hiredDate($stkd["item_id"]);
        $products .= "\r\n\t\t\t\t<tr valign=top>\r\n\t\t\t\t\t<td>" . getSerial($stk["id"], 1) . " {$stk['des']} ({$stkd['collection']})</td>\r\n\t\t\t\t\t<td>{$stkd['qty']}</td>\r\n\t\t\t\t\t<td>{$hired}</td>\r\n\t\t\t\t\t<td>{$return}</td>\r\n\t\t\t\t\t<td align=right>" . sprint($stkd["amt"]) . "</td>\r\n\t\t\t\t</tr>";
        $client_collect = 0;
        $collect = 0;
        $deliver = 0;
        if (preg_match("/(Client Collect|collect)/", $stkd["collection"])) {
            $client_collect = 1;
        }
        if (preg_match("/(^Collect|, Collect)/", $stkd["collection"])) {
            $collect = 1;
        }
        if (preg_match("/Deliver/", $stkd["collection"])) {
            $deliver = 1;
        }
    }
    /* --- Start Some calculations --- */
    # subtotal
    $SUBTOT = sprint($inv['subtot']);
    # Calculate tradediscm
    $traddiscm = $inv["discount"];
    // 	if(strlen($inv['traddisc']) > 0){
    // 		$traddiscm = sprint((($inv['traddisc']/100) * $SUBTOT));
    // 	}else{
    // 		$traddiscm = "0.00";
    // 	}
    # Calculate subtotal
    $VATP = TAX_VAT;
    $SUBTOT = sprint($inv['subtot']);
    $VAT = sprint($inv['vat']);
    $TOTAL = sprint($inv['total']);
    $inv['delchrg'] = sprint($inv['delchrg']);
    # Update number of prints
    // 	$inv['prints']++;
    // 	db_conn($prd);
    // 	$Sql = "UPDATE hire.reprint_invitems SET prints = '$inv[prints]' WHERE invid = '$invid' AND div = '".USER_DIV."'";
    // 	$upRslt = db_exec($Sql) or errDie ("Unable to update invoice information");
    # todays date
    $date = date("d-m-Y");
    $sdate = date("Y-m-d");
    if (strlen($inv['comm']) > 0) {
        $Com = "\r\n\t\t\t\t<table>\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<td>" . nl2br($inv['comm']) . "</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</table>";
    } else {
        $Com = "";
    }
    $time = date("G:i:s", $inv["e_time"]);
    if (isset($cccc)) {
        $cc = "<script> sCostCenter('dt', 'Sales', '{$date}', 'Invoice No.{$inv['invnum']} for Customer {$inv['cusname']} {$inv['surname']}', '" . ($TOTAL - $VAT) . "', 'Cost Of Sales for Invoice No.{$inv['invnum']}', '{$tcosamt}', ''); </script>";
    } else {
        $cc = "";
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM settings WHERE constant='PSALES'";
    $Ri = db_exec($Sl) or errDie("Unable to get settings.");
    $data = pg_fetch_array($Ri);
    if ($data['value'] == "Yes") {
        $sp = "<tr><td>Sales Person</td><td>{$inv['salespn']}</td></tr>";
    } else {
        $sp = "";
    }
    $Sl = "SELECT * FROM pc WHERE inv='{$inv['invnum']}'";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    if (pg_num_rows($Ri) > 0) {
        $pd = pg_fetch_array($Ri);
        //$pc="<tr><td>Change</td><td align=right><b>".CUR." $pd[amount]</b></td></tr>";
        $pc = "";
        $change = $pd['amount'];
    } else {
        $pc = "";
        $change = 0;
    }
    $Sl = "SELECT * FROM payrec WHERE inv='{$inv['invnum']}' AND method='Cash'";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    if (pg_num_rows($Ri) > 0) {
        $pd = pg_fetch_array($Ri);
        $pd['amount'] = sprint($pd['amount'] + $change);
        $pcash = "<!--<tr><td>Paid Cash</td><td align=right><b>" . CUR . " {$pd['amount']}</b></td></tr>-->";
    } else {
        $pcash = "";
    }
    $Sl = "SELECT * FROM payrec WHERE inv='{$inv['invnum']}' AND method='Cheque'";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    if (pg_num_rows($Ri) > 0) {
        $pd = pg_fetch_array($Ri);
        $pcheque = "<tr><td>Paid Cheque</td><td align=right><b>" . CUR . " {$pd['amount']}</b></td></tr>";
    } else {
        $pcheque = "";
    }
    $Sl = "SELECT * FROM payrec WHERE inv='{$inv['invnum']}' AND method='Credit Card'";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    if (pg_num_rows($Ri) > 0) {
        $pd = pg_fetch_array($Ri);
        $pcc = "<tr><td>Paid Credit Card</td><td align=right><b>" . CUR . " {$pd['amount']}</b></td></tr>";
    } else {
        $pcc = "";
    }
    $Sl = "SELECT * FROM payrec WHERE inv='{$inv['invnum']}' AND method='Credit'";
    $Ri = db_exec($Sl) or errDie("Unable to get data.");
    if (pg_num_rows($Ri) > 0) {
        $pd = pg_fetch_array($Ri);
        $pcc .= "<tr><td>On Credit</td><td align=right><b>" . CUR . " {$pd['amount']}</b></td></tr>";
    } else {
        $pcc .= "";
    }
    // 	$Sl="SELECT * FROM varrec WHERE inv='$inv[invnum]'";
    // 	$Ri=db_exec($Sl);
    //
    // 	if(pg_num_rows($Ri)>0) {
    // 		$rd=pg_fetch_array($Ri);
    //
    // 		$rounding="<tr><td>Rounding</td><td align=right>".CUR." $rd[amount]</td></tr>";
    // 	} else {
    // 		$rounding="";
    // 	}
    //
    if ($inv['rounding'] > 0) {
        $due = sprint($inv['total'] - $inv['rounding']);
        $rounding = "\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>Rounding</td>\r\n\t\t\t\t\t<td align='right'>" . CUR . " {$inv['rounding']}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>Amount Due</td>\r\n\t\t\t\t\t<td align='right'>" . CUR . " {$due}</td>\r\n\t\t\t\t</tr>";
    } else {
        $rounding = "";
    }
    $cusinfo = "";
    if ($inv['cusnum'] > 0) {
        db_conn('cubit');
        $Sl = "SELECT * FROM customers WHERE cusnum='{$inv['cusnum']}'";
        $Ri = db_exec($Sl) or errDie("Unable to get data.");
        $cd = pg_fetch_array($Ri);
        $inv['cusname'] = $cd['surname'] . " (VAT No. {$cd['vatnum']})";
        $cusinfo .= "<p>" . hireAddress($inv["invid"]) . "</p>";
        $cusinfo .= "Tel: {$cd['bustel']}<br />";
        $cusinfo .= "Order No: {$inv['cordno']}";
    } else {
        if (strlen($inv['vatnum']) > 1) {
            $inv['cusname'] = "{$inv['cusname']} (VAT No. {$inv['vatnum']})<br />";
            $cusinfo .= "Order No: {$inv['cordno']}";
        }
    }
    db_conn('cubit');
    $Sl = "SELECT img2 FROM compinfo";
    $Ri = db_exec($Sl);
    $id = pg_fetch_array($Ri);
    if (strlen($id['img2']) > 0) {
        $logo = "<tr>\r\n\t\t\t<td valign='top' width='100%' align=center><img src='compinfo/getimg2.php' width='230' height='47'></td>\r\n\t\t</tr>";
    } else {
        $logo = "";
    }
    $sql = "SELECT value FROM cubit.settings WHERE constant='CONTRACT_TEXT'";
    $contract_rslt = db_exec($sql) or errDie("Unable to retrieve contract.");
    $contract_text = nl2br(base64_decode(pg_fetch_result($contract_rslt, 0)));
    if (!isset($showvat)) {
        $showvat = TRUE;
    }
    if ($showvat == TRUE) {
        $vat14 = AT14;
    } else {
        $vat14 = "";
    }
    $sql = "SELECT text FROM hire.thanks_text";
    $thanks_rslt = db_exec($sql) or errDie("Unable to retrieve thank you text.");
    $thank_you = pg_fetch_result($thanks_rslt, 0);
    $details = "<center>\r\n\t<style>\r\n\t\th2 {\r\n\t\t\tfont-size: 2em;\r\n\t\t\tpadding: 0;\r\n\t\t\tmargin: 0;\r\n\t\t}\r\n\t\tth {\r\n\t\t\tfont-weight: bold;\r\n\t\t\ttext-align: left;\r\n\t\t}\r\n\t\t.print_input {\r\n\t\t\tfont-family: monospace;\r\n\t\t\tfont-weight: bold;\r\n\t\t}\r\n\t</style>\r\n\t<table cellpadding='0' cellspacing='1' border=1 width='97%'>\r\n\t<tr><td>\r\n\t\t<table cellpadding='5' cellspacing='0' width='100%'>\r\n\t\t\t<tr>\r\n\t\t\t\t<td><img src='../compinfo/getimg.php' width='230' height='47' /></td>\r\n\t\t\t\t<td align='right'><h2>HIRE NOTE</h2></td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t</tr></td>\r\n\t<tr><td>\r\n\t\t<table border='1' width='100%'>\r\n\t\t<tr>\r\n\t\t\t<td valign=top width='50%'>\r\n\t\t\t\t" . COMP_NAME . "<br />\r\n\t\t\t\t" . COMP_ADDRESS . "<br />\r\n\t\t\t\tTEL: " . COMP_TEL . "<br />\r\n\t\t\t\tFAX: " . COMP_FAX . "<br />\r\n\t\t\t\tRegistration Number: " . COMP_REGNO . "<br />\r\n\t\t\t\tVAT Registration Number: " . COMP_VATNO . "<br />\r\n\t\t\t</td>\r\n\t\t\t<td valign='top' width='50%'>\r\n\t\t\t\t{$inv['cusname']}<br />\r\n\t\t\t\t{$cusinfo}\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t</table>\r\n\t</td></tr>\r\n\t<tr><td>\r\n\t\t<table " . TMPL_tblDflts . " width='100%'>\r\n\t\t\t<tr>\r\n\t\t\t\t<td align='left' width='25%'>\r\n\t\t\t\t\tNote: H{$inv['invnum']}" . rrev($inv["invid"]) . "\r\n\t\t\t\t</td>\r\n\t\t\t\t<td align='center' width='25%'>CASHIER: {$inv['username']}</td>\r\n\t\t\t\t<td width='25%' align='center'>Time: {$time}</td>\r\n\t\t\t\t<td width='25%' align='right'>{$inv['odate']}</td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t</td></tr>\r\n\t<tr><td>\r\n\t<table cellpadding='5' cellspacing='0' border='0' width='100%' bordercolor='#000000'>\r\n\t\t<tr>\r\n\t\t\t<th>CODE</th>\r\n\t\t\t<th>QTY</th>\r\n\t\t\t<th>HIRE DATE</th>\r\n\t\t\t<th>RETURN</th>\r\n\t\t\t<th style='text-align: right'>TOTAL</th>\r\n\t\t<tr>\r\n\t\t{$products}\r\n\t</table>\r\n\t</td></tr>\r\n\t<tr>\r\n\t\t<td valign='top'>\r\n\t\t<table width='100%'>\r\n\t\t<tr><td valign='top'>\r\n\t\t<table cellpadding='2' cellspacing='0' width='80%'>\r\n\t\t\t<tr><td colspan='2'>{$thank_you}</td></tr>\r\n\t\t\t<tr><td>{$Com}</td></tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>\r\n\t\t\t\t<font style='font-size: 0.75em'>" . nl2br($inv["custom_txt"]) . "<br />\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr><td>&nbsp;</td></tr>\r\n\t\t</table>\r\n\t\t</td>\r\n\t\t<td align=right valign='top'>\r\n\t\t<table cellpadding='2' cellspacing='0' width='50%'>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Delivery Charge</td>\r\n\t\t\t\t<td align='right' nowrap>" . CUR . " {$inv['delchrg']}</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Trade Discount</td>\r\n\t\t\t\t<td align='right' nowrap>" . CUR . " {$traddiscm}</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>SUBTOTAL</td>\r\n\t\t\t\t<td align='right' nowrap>" . CUR . " {$SUBTOT}</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>VAT {$vat14}</td>\r\n\t\t\t\t<td align='right' nowrap>" . CUR . " {$VAT}</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td nowrap>GRAND TOTAL</td>\r\n\t\t\t\t<td align='right' nowrap><b>" . CUR . " {$TOTAL}</b></td>\r\n\t\t\t</tr>\r\n\t\t\t{$sp}\r\n\t\t</table>\r\n\t</td></tr>\r\n\t\t<table cellpadding='2' cellspacing='0' width='100%' border='1'>\r\n\t\t\t<tr><td colspan='2'>\r\n\t\t\t<div style='font-size: .80em;'>" . stripslashes($contract_text) . "</div></div>\r\n\t\t\t</td></tr>\r\n\t\t\t<tr><td colspan='2'>&nbsp;</td></tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Full Names (Print) ____________________________</td>\r\n\t\t\t\t<td>Identity Number ____________________________</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr><td colspan='2'>&nbsp;</td></tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Signature - Customer ____________________________</td>\r\n\t\t\t\t<td>Signature - Authorized Agent ____________________________</td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t</td></tr>\r\n\t</td></tr>\r\n\t</table>\r\n\t</table>\r\n\t</center>";
    $OUTPUT = $details;
    require "../tmpl-print.php";
}
function invoiceHire()
{
    extract($_REQUEST);
    pglib_transaction("BEGIN");
    $sql = "SELECT * FROM hire.hire_invoices WHERE invid='{$invid}'";
    $hi_rslt = db_exec($sql) or errDie("Unable to retrieve invoice.");
    $hi_data = pg_fetch_array($hi_rslt);
    $sql = "SELECT * FROM cubit.customers WHERE cusnum='{$hi_data['cusnum']}'";
    $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer.");
    $cust_data = pg_fetch_array($cust_rslt);
    $sql = "SELECT * FROM core.accounts WHERE topacc='1050' AND accnum='000'";
    $acc_rslt = db_exec($sql) or errDie("Unable to retrieve account.");
    $acc_data = pg_fetch_array($acc_rslt);
    // 	$sql = "
    // 	INSERT INTO hire.hire_invoices (deptid, cusnum,
    // 		deptname, cusacc, cusname, surname, cusaddr, cusvatno, cordno,
    // 		ordno, chrgvat, terms, traddisc, salespn, odate, delchrg, subtot,
    // 		vat, total, balance, comm, printed, done, div, username, rounding,
    // 		delvat, vatnum, pcash, pcheque, pcc, pcredit, invnum)
    // 	VALUES('$hi_data[deptid]', '$hi_data[cusnum]',
    // 		'$hi_data[deptname]', '$hi_data[cusacc]', '$hi_data[cusname]',
    // 		'$hi_data[surname]', '$hi_data[cusaddr]', '$hi_data[cusvatno]',
    // 		'$hi_data[cordno]', '$hi_data[ordno]', '$hi_data[chrgvat]',
    // 		'$hi_data[terms]', '$hi_data[traddisc]', '$hi_data[salespn]',
    // 		'$hi_data[odate]', '$hi_data[delchrg]', '$hi_data[subtot]',
    // 		'$hi_data[vat]' , '$hi_data[total]', '$hi_data[balance]',
    // 		'$hi_data[comm]', 'y', 'y', '".USER_DIV."', '".USER_NAME."',
    // 		'$hi_data[rounding]', '$hi_data[delvat]', '$hi_data[vatnum]',
    // 		'$hi_data[pcash]', '$hi_data[pcheque]', '$hi_data[pcc]',
    // 		'$hi_data[pcredit]', '$hi_data[invnum]')";
    // 	db_exec($sql) or errDie("Unable to create new hire note.");
    // 	$in_invid = pglib_lastid("hire.hire_invoices", "invid");
    //
    // 	$in_invnum = $hi_data["invnum"];
    //
    // 	$sql = "UPDATE hire.hire_invoices SET invnum='$in_invnum'
    // 			WHERE invid='$in_invid'";
    // 	db_exec($sql) or errDie("Unable to update hire no.");
    $hire_invnum = "{$hi_data['invnum']}" . rev($hi_data["invid"]);
    # Insert invoice to DB
    $sql = "\r\n\t\tINSERT INTO cubit.nons_invoices (\r\n\t\t\tcusnum, cusname, cusaddr, chrgvat, sdate, odate, \r\n\t\t\tsubtot, balance, vat, total, done, username, prd, \r\n\t\t\tinvnum, typ, div, accid, discount, delivery, \r\n\t\t\thire_invid, hire_invnum\r\n\t\t) VALUES (\r\n\t\t\t'{$cust_data['cusnum']}', '{$cust_data['surname']}', '{$cust_data['paddr1']}', 'yes', CURRENT_DATE, CURRENT_DATE, \r\n\t\t\t'{$hi_data['subtot']}', '{$hi_data['total']}', '{$hi_data['vat']}', '{$hi_data['total']}', 'n', '" . USER_NAME . "', '" . PRD_DB . "', \r\n\t\t\t'{$hi_data['invnum']}',  'inv', '" . USER_DIV . "','{$acc_data['accid']}', '{$hi_data['discount']}', '{$hi_data['delivery']}', \r\n\t\t\t'{$hi_data['invid']}', '{$hire_invnum}'\r\n\t\t)";
    $rslt = db_exec($sql) or errDie("Unable to create template Non-Stock Invoice.", SELF);
    db_conn("hire");
    $nons_invid = lastinvid();
    db_conn("cubit");
    $sql = "SELECT * FROM hire.hire_invitems WHERE invid='{$invid}'";
    $hire_rslt = db_exec($sql) or errDie("Unable to retrieve hire items.");
    while ($hire_data = pg_fetch_array($hire_rslt)) {
        $sql = "SELECT des FROM cubit.assets WHERE id='{$hire_data['asset_id']}'";
        $des_rslt = db_exec($sql) or errDie("Unable to retrieve asset.");
        $itemdes = pg_fetch_result($des_rslt, 0);
        if ($hire_data["basis"] == "per_hour") {
            $des = getSerial($hire_data["asset_id"], 1) . " {$itemdes} hired for {$hire_data['hours']} hours.";
        } elseif ($hire_data["basis"] == "per_day") {
            $des = getSerial($hire_data["asset_id"], 1) . " {$itemdes} hired from {$hire_data['from_date']} to {$hire_data['to_date']}.";
        } else {
            $des = getSerial($hire_data["asset_id"], 1) . " {$itemdes} hired for {$hire_data['weeks']} weeks.";
        }
        $sql = "\r\n\t\t\tINSERT INTO hire.hire_nons_inv_items (\r\n\t\t\t\tinvid, qty, description, div, amt, unitcost, vatex, \r\n\t\t\t\taccid, item_id, asset_id\r\n\t\t\t) VALUES (\r\n\t\t\t\t'{$nons_invid}', '{$hire_data['qty']}', '{$des}', " . USER_DIV . ", '{$hire_data['amt']}', '{$hire_data['amt']}', '2', \r\n\t\t\t\t'{$acc_data['accid']}', '{$hire_data['id']}', '{$hire_data['asset_id']}'\r\n\t\t\t)";
        db_exec($sql) or errDie("Unable to add non stock items.");
        /*		$sql = "
        		INSERT INTO hire.hire_invitems (invid, qty, ss, div, amt, discp, disc,
        			unitcost, noted, serno, vatcode, description, account, from_date,
        			to_date, asset_id, basis, hours, stkid, collection, weeks, days)
        		VALUES ('$in_invid', '$hire_data[qty]', '$hire_data[ss]',
        			'$hire_data[div]', '$hire_data[amt]', '$hire_data[discp]',
        			'$hire_data[disc]', '$hire_data[unitcost]', '$hire_data[noted]',
        			'$hire_data[serno]', '$hire_data[vatcode]', '$hire_data[description]',
        			'$hire_data[account]', '$hire_data[from_date]', '$hire_data[to_date]',
        			'$hire_data[asset_id]', '$hire_data[basis]', '$hire_data[hours]',
        			'$hire_data[stkid]', '$hire_data[collection]', '$hire_data[weeks]',
        			'$hire_data[days]')";
        		db_exec($sql) or errDie("Unable to create new hire note items.");*/
    }
    pglib_transaction("COMMIT");
    header("Location: hire-nons-invoice-print.php?invid={$nons_invid}&key=cconfirm&ctyp=s&cusnum={$hi_data['cusnum']}&post=true&monthly=1");
    return $OUTPUT;
}
function confirm()
{
    extract($_REQUEST);
    require_lib("validate");
    $v = new validate();
    $v->isOk($asset_id, "num", 1, 9, "Invalid asset selection.");
    $v->isOk($cust_id, "num", 1, 9, "Invalid customer selection.");
    $v->isOk($from_year, "num", 4, 4, "Invalid from date (year).");
    $v->isOk($from_month, "num", 1, 2, "Invalid from date (month).");
    $v->isOk($from_day, "num", 1, 2, "Invalid from date (day).");
    $v->isOk($to_year, "num", 4, 4, "Invalid to date (year).");
    $v->isOk($to_month, "num", 1, 2, "Invalid to date (month).");
    $v->isOk($to_day, "num", 1, 2, "Invalid to date (day).");
    $e_from = getDTEpoch("{$from_year}-{$from_month}-{$from_day} 0:00:00");
    $e_to = getDTEpoch("{$to_year}-{$to_month}-{$to_day} 23:59:59");
    for ($i = $e_from; $i < $e_to; $i += DAYS) {
        if (isHired($asset_id, date("Y-m-d", $i))) {
            $v->addError(0, "Asset is hired out on " . date("d-m-Y", $i) . ".");
        }
    }
    if (!$asset_id) {
        $v->addError(0, "Please select an asset first.");
    }
    if (!$cust_id) {
        $v->addError(0, "Please select a customer first.");
    }
    if ($v->isError()) {
        return enter($v->genErrors());
    }
    // Booking Date
    $from_date = "{$from_day}-{$from_month}-{$from_year}";
    $from_date_db = dateFmt($from_year, $from_month, $from_day);
    $to_date = "{$to_day}-{$to_month}-{$to_year}";
    $to_date_db = dateFmt($to_year, $to_month, $to_day);
    if (!isset($units)) {
        $units = 1;
    }
    $sql = "SELECT * FROM hire.bookings\r\n\t\t\tWHERE asset_id='{$asset_id}' AND\r\n\t\t\t\t('{$from_date_db}' BETWEEN from_date AND to_date OR\r\n\t\t\t\t '{$to_date_db}' BETWEEN from_date AND to_date)";
    $bk_rslt = db_exec($sql) or errDie("Unable to retrieve bookings.");
    if (pg_num_rows($bk_rslt) && isSerialized($asset_id)) {
        return enter("<li class='err'>Item has already been booked in the\r\n\t\t\tspecified date range</li>");
    }
    // Retrieve the asset description
    $sql = "SELECT * FROM cubit.assets WHERE id='{$asset_id}'";
    $asset_rslt = db_exec($sql) or errDie("Unable to retrieve asset.");
    $asset_data = pg_fetch_array($asset_rslt);
    $asset_name = getSerial($asset_data["id"], 1) . " " . $asset_data["des"];
    // Retrieve the customer name
    $sql = "SELECT surname FROM cubit.customers WHERE cusnum='{$cust_id}'";
    $cust_rslt = db_exec($sql) or errDie("Unable to retrieve customer.");
    $cust_name = pg_fetch_result($cust_rslt, 0);
    if (!isSerialized($asset_id)) {
        $units_input = "<input type='text' name='units' value='{$units}' size='2' />";
    } else {
        $units_input = "1";
    }
    $OUTPUT = "<h3>" . ucfirst($page_option) . " Booking</h3>\r\n\t<form method='post' action='" . SELF . "'>\r\n\t<input type='hidden' name='key' value='write' />\r\n\t<input type='hidden' name='page_option' value='{$page_option}' />\r\n\t<input type='hidden' name='id' value='{$id}' />\r\n\t<input type='hidden' name='asset_id' value='{$asset_id}' />\r\n\t<input type='hidden' name='cust_id' value='{$cust_id}' />\r\n\t<input type='hidden' name='from_year' value='{$from_year}' />\r\n\t<input type='hidden' name='from_month' value='{$from_month}' />\r\n\t<input type='hidden' name='from_day' value='{$from_day}' />\r\n\t<input type='hidden' name='to_year' value='{$to_year}' />\r\n\t<input type='hidden' name='to_month' value='{$to_month}' />\r\n\t<input type='hidden' name='to_day' value='{$to_day}' />\r\n\t<input type='hidden' name='units' value='1' />\r\n\t<table " . TMPL_tblDflts . ">\r\n\t\t<tr>\r\n\t\t\t<th colspan='2'>Confirm</th>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>Small Plant</td>\r\n\t\t\t<td>{$asset_name}</td>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>Customer</td>\r\n\t\t\t<td>{$cust_name}</td>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>Units</td>\r\n\t\t\t<td>{$units_input}</td>\r\n\t\t</tr>\r\n\t\t<tr class='" . bg_class() . "'>\r\n\t\t\t<td>Booking Date</td>\r\n\t\t\t<td>{$from_date} &nbsp; <b>To</b> &nbsp; {$to_date}</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td><input type='submit' name='key' value='&laquo Correction' /></td>\r\n\t\t\t<td align='right'><input type='submit' value='Write &raquo ' /></td>\r\n\t\t</tr>\r\n\t</table>\r\n\t</form>";
    return $OUTPUT;
}