mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
307 lines
11 KiB
PHP
307 lines
11 KiB
PHP
<?php
|
|
|
|
$bill_id = mres($vars['bill_id']);
|
|
|
|
if ($_SESSION['userlevel'] >= "10")
|
|
{
|
|
include("pages/bill/actions.inc.php");
|
|
}
|
|
|
|
if (bill_permitted($bill_id))
|
|
{
|
|
$bill_data = dbFetchRow("SELECT * FROM bills WHERE bill_id = ?", array($bill_id));
|
|
|
|
$bill_name = $bill_data['bill_name'];
|
|
|
|
$today = str_replace("-", "", dbFetchCell("SELECT CURDATE()"));
|
|
$yesterday = str_replace("-", "", dbFetchCell("SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)"));
|
|
$tomorrow = str_replace("-", "", dbFetchCell("SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY)"));
|
|
$last_month = str_replace("-", "", dbFetchCell("SELECT DATE_SUB(CURDATE(), INTERVAL 1 MONTH)"));
|
|
|
|
$rightnow = $today . date(His);
|
|
$before = $yesterday . date(His);
|
|
$lastmonth = $last_month . date(His);
|
|
|
|
$bill_name = $bill_data['bill_name'];
|
|
$dayofmonth = $bill_data['bill_day'];
|
|
|
|
$day_data = getDates($dayofmonth);
|
|
|
|
$datefrom = $day_data['0'];
|
|
$dateto = $day_data['1'];
|
|
$lastfrom = $day_data['2'];
|
|
$lastto = $day_data['3'];
|
|
|
|
$rate_95th = $bill_data['rate_95th'];
|
|
$dir_95th = $bill_data['dir_95th'];
|
|
$total_data = $bill_data['total_data'];
|
|
$rate_average = $bill_data['rate_average'];
|
|
|
|
if ($rate_95th > $paid_kb)
|
|
{
|
|
$over = $rate_95th - $paid_kb;
|
|
$bill_text = $over . "Kbit excess.";
|
|
$bill_color = "#cc0000";
|
|
}
|
|
else
|
|
{
|
|
$under = $paid_kb - $rate_95th;
|
|
$bill_text = $under . "Kbit headroom.";
|
|
$bill_color = "#0000cc";
|
|
}
|
|
|
|
$fromtext = dbFetchCell("SELECT DATE_FORMAT($datefrom, '%M %D %Y')");
|
|
$totext = dbFetchCell("SELECT DATE_FORMAT($dateto, '%M %D %Y')");
|
|
$unixfrom = dbFetchCell("SELECT UNIX_TIMESTAMP('$datefrom')");
|
|
$unixto = dbFetchCell("SELECT UNIX_TIMESTAMP('$dateto')");
|
|
|
|
$unix_prev_from = dbFetchCell("SELECT UNIX_TIMESTAMP('$lastfrom')");
|
|
$unix_prev_to = dbFetchCell("SELECT UNIX_TIMESTAMP('$lastto')");
|
|
# Speeds up loading for other included pages by setting it before progessing of mysql data!
|
|
|
|
$ports = dbFetchRows("SELECT * FROM `bill_ports` AS B, `ports` AS P, `devices` AS D
|
|
WHERE B.bill_id = ? AND P.port_id = B.port_id
|
|
AND D.device_id = P.device_id", array($bill_id));
|
|
|
|
echo("<font face=\"Verdana, Arial, Sans-Serif\"><h2>
|
|
Bill : " . $bill_data['bill_name'] . "</h2>");
|
|
|
|
print_optionbar_start();
|
|
|
|
echo("<span style='font-weight: bold;'>Bill</span> » ");
|
|
|
|
if (!$vars['view']) { $vars['view'] = "quick"; }
|
|
|
|
if ($vars['view'] == "quick") { echo("<span class='pagemenu-selected'>"); }
|
|
echo('<a href="'.generate_url($vars, array('view' => 'quick')).'">Quick Graphs</a>');
|
|
if ($vars['view'] == "quick") { echo("</span>"); }
|
|
|
|
echo(" | ");
|
|
|
|
if ($vars['view'] == "accurate") { echo("<span class='pagemenu-selected'>"); }
|
|
echo('<a href="'.generate_url($vars, array('view' => 'accurate')).'">Accurate Graphs</a>');
|
|
if ($vars['view'] == "accurate") { echo("</span>"); }
|
|
|
|
echo(" | ");
|
|
|
|
if ($vars['view'] == "transfer") { echo("<span class='pagemenu-selected'>"); }
|
|
echo('<A href="'.generate_url($vars, array('view' => 'transfer')).'">Transfer Graphs</a>');
|
|
if ($vars['view'] == "transfer") { echo("</span>"); }
|
|
|
|
echo(" | ");
|
|
|
|
if ($vars['view'] == "history") { echo("<span class='pagemenu-selected'>"); }
|
|
echo('<A href="'.generate_url($vars, array('view' => 'history')).'">Historical Usage</a>');
|
|
if ($vars['view'] == "history") { echo("</span>"); }
|
|
|
|
if ($_SESSION['userlevel'] >= "10")
|
|
{
|
|
echo(" | ");
|
|
if ($vars['view'] == "edit") { echo("<span class='pagemenu-selected'>"); }
|
|
echo('<A href="'.generate_url($vars, array('view' => 'edit')).'">Edit</a>');
|
|
if ($vars['view'] == "edit") { echo("</span>"); }
|
|
|
|
echo(" | ");
|
|
if ($vars['view'] == "delete") { echo("<span class='pagemenu-selected'>"); }
|
|
echo('<A href="'.generate_url($vars, array('view' => 'delete')).'">Delete</a>');
|
|
if ($vars['view'] == "delete") { echo("</span>"); }
|
|
|
|
echo(" | ");
|
|
if ($vars['view'] == "reset") { echo("<span class='pagemenu-selected'>"); }
|
|
echo('<A href="'.generate_url($vars, array('view' => 'reset')).'">Reset</a>');
|
|
if ($vars['view'] == "reset") { echo("</span>"); }
|
|
}
|
|
|
|
echo('<div style="font-weight: bold; float: right;"><a href="'.generate_url(array('page' => "bills")).'/"><img align=absmiddle src="/images/16/arrow_left.png"> Back to Bills</a></div>');
|
|
|
|
print_optionbar_end();
|
|
|
|
if ($vars['view'] == "edit" && $_SESSION['userlevel'] >= "10")
|
|
{
|
|
include("pages/bill/edit.inc.php");
|
|
}
|
|
elseif ($vars['view'] == "delete" && $_SESSION['userlevel'] >= "10")
|
|
{
|
|
include("pages/bill/delete.inc.php");
|
|
}
|
|
elseif ($vars['view'] == "reset" && $_SESSION['userlevel'] >= "10")
|
|
{
|
|
include("pages/bill/reset.inc.php");
|
|
}
|
|
elseif ($vars['view'] == "history")
|
|
{
|
|
include("pages/bill/history.inc.php");
|
|
}
|
|
elseif ($vars['view'] == "transfer")
|
|
{
|
|
include("pages/bill/transfer.inc.php");
|
|
}
|
|
elseif ($vars['view'] == "quick" || $vars['view'] == "accurate") {
|
|
|
|
echo("<h3>Billed Ports</h3>");
|
|
|
|
// Collected Earlier
|
|
foreach ($ports as $port)
|
|
{
|
|
echo(generate_port_link($port) . " on " . generate_device_link($port) . "<br />");
|
|
}
|
|
|
|
echo("<h3>Bill Summary</h3>");
|
|
|
|
if ($bill_data['bill_type'] == "quota")
|
|
{
|
|
// The Customer is billed based on a pre-paid quota with overage in xB
|
|
|
|
echo("<h4>Quota Bill</h4>");
|
|
|
|
$percent = round(($total_data) / $bill_data['bill_quota'] * 100, 2);
|
|
$unit = "MB";
|
|
$total_data = round($total_data, 2);
|
|
echo("Billing Period from " . $fromtext . " to " . $totext);
|
|
echo("<br />Transferred ".format_bytes_billing($total_data)." of ".format_bytes_billing($bill_data['bill_quota'])." (".$percent."%)");
|
|
echo("<br />Average rate " . formatRates($rate_average));
|
|
|
|
$background = get_percentage_colours($percent);
|
|
|
|
echo("<p>".print_percentage_bar (350, 20, $perc, NULL, "ffffff", $background['left'], $percent . "%", "ffffff", $background['right'])."</p>");
|
|
|
|
$type="&ave=yes";
|
|
}
|
|
elseif ($bill_data['bill_type'] == "cdr")
|
|
{
|
|
// The customer is billed based on a CDR with 95th%ile overage
|
|
|
|
echo("<h4>CDR / 95th Bill</h4>");
|
|
|
|
$unit = "kbps";
|
|
$cdr = $bill_data['bill_cdr'];
|
|
$rate_95th = round($rate_95th, 2);
|
|
|
|
$percent = round(($rate_95th) / $cdr * 100, 2);
|
|
|
|
$type="&95th=yes";
|
|
|
|
echo("<strong>" . $fromtext . " to " . $totext . "</strong>
|
|
<br />Measured ".format_si($rate_95th)."bps of ".format_si($cdr)."bps (".$percent."%) @ 95th %ile");
|
|
|
|
$background = get_percentage_colours($percent);
|
|
|
|
echo("<p>".print_percentage_bar (350, 20, $percent, NULL, "ffffff", $background['left'], $percent . "%", "ffffff", $background['right'])."</p>");
|
|
|
|
# echo("<p>Billing Period : " . $fromtext . " to " . $totext . "<br />
|
|
# " . $paidrate_text . " <br />
|
|
# " . $total_data . "MB transfered in the current billing cycle. <br />
|
|
# " . $rate_average . "Kbps Average during the current billing cycle. </p>
|
|
# <font face=\"Trebuchet MS, Verdana, Arial, Sans-Serif\" color=" . $bill_color . "><B>" . $rate_95th . "Kbps @ 95th Percentile.</b> (" . $dir_95th . ") (" . $bill_text . ")</font>
|
|
# </td><td><img src=\"images/billing-key.png\"></td></tr></table>
|
|
# <br />");
|
|
}
|
|
|
|
$lastmonth = dbFetchCell("SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))");
|
|
$yesterday = dbFetchCell("SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))");
|
|
$rightnow = date(U);
|
|
|
|
if ($vars['view'] == "accurate") {
|
|
|
|
$bi = "<img src='billing-graph.php?bill_id=" . $bill_id . "&bill_code=" . $_GET['bill_code'];
|
|
$bi .= "&from=" . $unixfrom . "&to=" . $unixto;
|
|
// $bi .= "&x=800&y=250";
|
|
$bi .= "&x=1190&y=250";
|
|
$bi .= "$type'>";
|
|
|
|
$li = "<img src='billing-graph.php?bill_id=" . $bill_id . "&bill_code=" . $_GET['bill_code'];
|
|
$li .= "&from=" . $unix_prev_from . "&to=" . $unix_prev_to;
|
|
// $li .= "&x=800&y=250";
|
|
$li .= "&x=1190&y=250";
|
|
$li .= "$type'>";
|
|
|
|
$di = "<img src='billing-graph.php?bill_id=" . $bill_id . "&bill_code=" . $_GET['bill_code'];
|
|
$di .= "&from=" . $config['time']['day'] . "&to=" . $config['time']['now'];
|
|
// $di .= "&x=800&y=250";
|
|
$di .= "&x=1190&y=250";
|
|
$di .= "$type'>";
|
|
|
|
$mi = "<img src='billing-graph.php?bill_id=" . $bill_id . "&bill_code=" . $_GET['bill_code'];
|
|
$mi .= "&from=" . $lastmonth . "&to=" . $rightnow;
|
|
// $mi .= "&x=800&y=250";
|
|
$mi .= "&x=1190&y=250";
|
|
$mi .= "$type'>";
|
|
|
|
} else {
|
|
|
|
$bi = "<img src='graph.php?type=bill_bits&id=" . $bill_id;
|
|
$bi .= "&from=" . $unixfrom . "&to=" . $unixto;
|
|
$bi .= "&width=1000&height=200&total=1'>";
|
|
|
|
$li = "<img src='graph.php?type=bill_bits&id=" . $bill_id;
|
|
$li .= "&from=" . $unix_prev_from . "&to=" . $unix_prev_to;
|
|
$li .= "&width=1000&height=200&total=1'>";
|
|
|
|
$di = "<img src='graph.php?type=bill_bits&id=" . $bill_id;
|
|
$di .= "&from=" . $config['time']['day'] . "&to=" . $config['time']['now'];
|
|
$di .= "&width=1000&height=200&total=1'>";
|
|
|
|
$mi = "<img src='graph.php?type=bill_bits&id=" . $bill_id;
|
|
$mi .= "&from=" . $lastmonth . "&to=" . $rightnow;
|
|
$mi .= "&width=1000&height=200&total=1'>";
|
|
|
|
}
|
|
|
|
if ($null)
|
|
{
|
|
echo("
|
|
<script type='text/javascript' src='js/calendarDateInput.js'>
|
|
</script>
|
|
|
|
<FORM action='/' method='get'>
|
|
<INPUT type='hidden' name='bill' value='".$_GET['bill']."'>
|
|
<INPUT type='hidden' name='code' value='".$_GET['code']."'>
|
|
<INPUT type='hidden' name='page' value='bills'>
|
|
<INPUT type='hidden' name='custom' value='yes'>
|
|
|
|
From:
|
|
<script>DateInput('fromdate', true, 'YYYYMMDD')</script>
|
|
|
|
To:
|
|
<script>DateInput('todate', true, 'YYYYMMDD')</script>
|
|
<INPUT type='submit' value='Generate Graph'>
|
|
|
|
</FORM>
|
|
|
|
");
|
|
|
|
}
|
|
|
|
if ($_GET['all'])
|
|
{
|
|
$ai = "<img src=\"billing-graph.php?bill_id=" . $bill_id . "&bill_code=" . $_GET['bill_code'];
|
|
$ai .= "&from=0&to=" . $rightnow;
|
|
$ai .= "&x=715&y=250";
|
|
$ai .= "&count=60\">";
|
|
echo("<h3>Entire Data View</h3>$ai");
|
|
}
|
|
elseif ($_GET['custom'])
|
|
{
|
|
$cg = "<img src=\"billing-graph.php?bill_id=" . $bill_id . "&bill_code=" . $_GET['bill_code'];
|
|
$cg .= "&from=" . $_GET['fromdate'] . "000000&to=" . $_GET['todate'] . "235959";
|
|
$cg .= "&x=715&y=250";
|
|
$cg .= "&count=60\">";
|
|
echo("<h3>Custom Graph</h3>$cg");
|
|
}
|
|
else
|
|
{
|
|
echo("<h3>Billing View</h3>$bi");
|
|
# echo("<h3>Previous Bill View</h3>$li");
|
|
echo("<h3>24 Hour View</h3>$di");
|
|
echo("<h3>Monthly View</h3>$mi");
|
|
# echo("<br /><a href=\"rate.php?" . $_SERVER['QUERY_STRING'] . "&all=yes\">Graph All Data (SLOW)</a>");
|
|
}
|
|
} # End if details
|
|
}
|
|
else
|
|
{
|
|
include("includes/error-no-perm.inc.php");
|
|
}
|
|
|
|
?>
|