mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
280 lines
9.7 KiB
PHP
280 lines
9.7 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, '".$config['dateformat']['mysql']['date']."')");
|
|
$totext = dbFetchCell("SELECT DATE_FORMAT($dateto, '".$config['dateformat']['mysql']['date']."')");
|
|
$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)
|
|
);
|
|
|
|
if (!$vars['view']) {
|
|
$vars['view'] = 'quick';
|
|
}
|
|
|
|
function print_port_list() {
|
|
global $ports;
|
|
?> <div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">Billed Ports</h3>
|
|
</div>
|
|
<div class="list-group">
|
|
<?php
|
|
// Collected Earlier
|
|
foreach ($ports as $port) {
|
|
$portalias = (empty($port['ifAlias']) ? '' : ' - '.$port['ifAlias'].'');
|
|
?>
|
|
<div class="list-group-item">
|
|
<?php echo generate_port_link($port, $port['ifName'] . $portalias) ?> on <?php echo generate_device_link($port) ?>
|
|
</div>
|
|
<?php }
|
|
?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}//end print_port_list
|
|
|
|
?>
|
|
|
|
<h2><?php echo "Bill: ${bill_data['bill_name']}"; ?></h2>
|
|
|
|
<?php
|
|
print_optionbar_start();
|
|
echo "<strong>Bill</strong> » ";
|
|
$menu_options = array(
|
|
'quick' => 'Quick Graphs',
|
|
'accurate' => 'Accurate Graphs',
|
|
'transfer' => 'Transfer Graphs',
|
|
'history' => 'Historical Graphs'
|
|
);
|
|
if($_SESSION['userlevel'] >= '10')
|
|
{
|
|
$menu_options['edit'] = 'Edit';
|
|
$menu_options['delete'] = 'Delete';
|
|
$menu_options['reset'] = 'Reset';
|
|
}
|
|
$sep = '';
|
|
foreach ($menu_options as $option => $text) {
|
|
echo $sep;
|
|
if ($vars['view'] == $option) {
|
|
echo "<span class='pagemenu-selected'>";
|
|
}
|
|
|
|
echo generate_link($text, $vars, array('view' => $option));
|
|
if ($vars['view'] == $option) {
|
|
echo '</span>';
|
|
}
|
|
|
|
$sep = ' | ';
|
|
}
|
|
|
|
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';
|
|
}
|
|
else if ($vars['view'] == 'delete' && $_SESSION['userlevel'] >= '10') {
|
|
include 'pages/bill/delete.inc.php';
|
|
}
|
|
else if ($vars['view'] == 'reset' && $_SESSION['userlevel'] >= '10') {
|
|
include 'pages/bill/reset.inc.php';
|
|
}
|
|
else if ($vars['view'] == 'history') {
|
|
include 'pages/bill/history.inc.php';
|
|
}
|
|
else if ($vars['view'] == 'transfer') {
|
|
include 'pages/bill/transfer.inc.php';
|
|
}
|
|
else if ($vars['view'] == 'quick' || $vars['view'] == 'accurate') {
|
|
?>
|
|
|
|
<?php if ($bill_data['bill_type'] == 'quota') { ?>
|
|
<h3>Quota Bill</h3>
|
|
<?php }
|
|
else if ($bill_data['bill_type'] == 'cdr') { ?>
|
|
<h3>
|
|
CDR / 95th Bill
|
|
</h3>
|
|
<?php } ?>
|
|
<strong>Billing Period from <?php echo $fromtext ?> to <?php echo $totext ?></strong>
|
|
<br /><br />
|
|
|
|
<div class="row">
|
|
<div class="col-lg-6 col-lg-push-6">
|
|
<?php print_port_list() ?>
|
|
</div>
|
|
<div class="col-lg-6 col-lg-pull-6">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">
|
|
Bill Summary
|
|
</h3>
|
|
</div>
|
|
<table class="table">
|
|
<tr>
|
|
<?php if ($bill_data['bill_type'] == 'quota') {
|
|
// The Customer is billed based on a pre-paid quota with overage in xB
|
|
$percent = round((($total_data) / $bill_data['bill_quota'] * 100), 2);
|
|
$unit = 'MB';
|
|
$total_data = round($total_data, 2);
|
|
$background = get_percentage_colours($percent);
|
|
$type = '&ave=yes';
|
|
?>
|
|
<td>
|
|
<?php echo format_bytes_billing($total_data) ?> of <?php echo format_bytes_billing($bill_data['bill_quota']).' ('.$percent.'%)' ?>
|
|
- Average rate <?php echo formatRates($rate_average) ?>
|
|
</td>
|
|
<td style="width: 210px;"><?php echo print_percentage_bar(200, 20, $percent, null, 'ffffff', $background['left'], $percent.'%', 'ffffff', $background['right']) ?></td>
|
|
<?php
|
|
}
|
|
else if ($bill_data['bill_type'] == 'cdr') {
|
|
// The customer is billed based on a CDR with 95th%ile overage
|
|
$unit = 'kbps';
|
|
$cdr = $bill_data['bill_cdr'];
|
|
$rate_95th = round($rate_95th, 2);
|
|
$percent = round((($rate_95th) / $cdr * 100), 2);
|
|
$type = '&95th=yes';
|
|
?>
|
|
<td>
|
|
<?php echo format_si($rate_95th) ?> of <?php echo format_si($cdr).'bps ('.$percent.'%)' ?> (95th%ile)
|
|
</td>
|
|
<td style="width: 210px;">
|
|
<?php echo print_percentage_bar(200, 20, $percent, null, 'ffffff', $background['left'], $percent.'%', 'ffffff', $background['right']) ?>
|
|
</td>
|
|
|
|
<?php }//end if
|
|
?>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
|
|
$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=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=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=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=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'>";
|
|
}//end if
|
|
|
|
?>
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">Billing View</h3>
|
|
</div>
|
|
<?php echo $bi ?>
|
|
</div>
|
|
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">24 Hour View</h3>
|
|
</div>
|
|
<?php echo $di ?>
|
|
</div>
|
|
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">Monthly View</h3>
|
|
</div>
|
|
<?php echo $mi ?>
|
|
</div>
|
|
<?php
|
|
} //end if
|
|
}
|
|
else {
|
|
include 'includes/error-no-perm.inc.php';
|
|
}//end if
|
|
?>
|