2011-11-02 18:26:57 +00:00
#!/usr/bin/env php
< ? php
2012-05-09 10:01:42 +00:00
/**
2013-10-28 12:01:36 -07:00
* Observium
2012-05-09 10:01:42 +00:00
*
2013-10-28 12:01:36 -07:00
* This file is part of Observium .
2012-05-09 10:01:42 +00:00
*
2013-10-28 12:01:36 -07:00
* @ package observium
* @ subpackage billing
* @ author Adam Armstrong < adama @ memetic . org >
* @ copyright ( C ) 2006 - 2012 Adam Armstrong
2012-05-09 10:01:42 +00:00
*/
2011-12-06 22:17:37 +00:00
2012-04-08 10:44:41 +00:00
chdir ( dirname ( $argv [ 0 ]));
2015-07-13 20:10:26 +02:00
require 'includes/defaults.inc.php' ;
require 'config.php' ;
require 'includes/definitions.inc.php' ;
require 'includes/functions.php' ;
$options = getopt ( 'r' );
if ( isset ( $options [ 'r' ])) {
echo " Clearing history table. \n " ;
dbQuery ( 'TRUNCATE TABLE `bill_history`' );
2011-12-06 22:17:37 +00:00
}
2011-11-02 18:26:57 +00:00
2015-07-13 20:10:26 +02:00
foreach ( dbFetchRows ( 'SELECT * FROM `bills` ORDER BY `bill_id`' ) as $bill ) {
echo str_pad ( $bill [ 'bill_id' ] . ' ' . $bill [ 'bill_name' ], 30 ) . " \n " ;
$i = 0 ;
while ( $i <= 24 ) {
unset ( $class );
unset ( $rate_data );
$day_data = getDates ( $bill [ 'bill_day' ], $i );
$datefrom = $day_data [ '0' ];
$dateto = $day_data [ '1' ];
$check = dbFetchRow ( 'SELECT * FROM `bill_history` WHERE bill_id = ? AND bill_datefrom = ? AND bill_dateto = ? LIMIT 1' , array ( $bill [ 'bill_id' ], $datefrom , $dateto ));
$period = getPeriod ( $bill [ 'bill_id' ], $datefrom , $dateto );
$date_updated = str_replace ( '-' , '' , str_replace ( ':' , '' , str_replace ( ' ' , '' , $check [ 'updated' ])));
if ( $period > 0 && $dateto > $date_updated ) {
$rate_data = getRates ( $bill [ 'bill_id' ], $datefrom , $dateto );
$rate_95th = $rate_data [ 'rate_95th' ];
$dir_95th = $rate_data [ 'dir_95th' ];
$total_data = $rate_data [ 'total_data' ];
$rate_average = $rate_data [ 'rate_average' ];
if ( $bill [ 'bill_type' ] == 'cdr' ) {
$type = 'CDR' ;
$allowed = $bill [ 'bill_cdr' ];
$used = $rate_data [ 'rate_95th' ];
$allowed_text = format_si ( $allowed ) . 'bps' ;
$used_text = format_si ( $used ) . 'bps' ;
$overuse = ( $used - $allowed );
$overuse = (( $overuse <= 0 ) ? '0' : $overuse );
$percent = round ((( $rate_data [ 'rate_95th' ] / $bill [ 'bill_cdr' ]) * 100 ), 2 );
}
else if ( $bill [ 'bill_type' ] == 'quota' ) {
$type = 'Quota' ;
$allowed = $bill [ 'bill_quota' ];
$used = $rate_data [ 'total_data' ];
$allowed_text = format_bytes_billing ( $allowed );
$used_text = format_bytes_billing ( $used );
$overuse = ( $used - $allowed );
$overuse = (( $overuse <= 0 ) ? '0' : $overuse );
$percent = round ((( $rate_data [ 'total_data' ] / $bill [ 'bill_quota' ]) * 100 ), 2 );
}
echo strftime ( '%x @ %X' , strtotime ( $datefrom )) . ' to ' . strftime ( '%x @ %X' , strtotime ( $dateto )) . ' ' . str_pad ( $type , 8 ) . ' ' . str_pad ( $allowed_text , 10 ) . ' ' . str_pad ( $used_text , 10 ) . ' ' . $percent . '%' ;
if ( $i == '0' ) {
$update = array (
'rate_95th' => $rate_data [ 'rate_95th' ],
'rate_95th_in' => $rate_data [ 'rate_95th_in' ],
'rate_95th_out' => $rate_data [ 'rate_95th_out' ],
'dir_95th' => $rate_data [ 'dir_95th' ],
'total_data' => $rate_data [ 'total_data' ],
'total_data_in' => $rate_data [ 'total_data_in' ],
'total_data_out' => $rate_data [ 'total_data_out' ],
'rate_average' => $rate_data [ 'rate_average' ],
'rate_average_in' => $rate_data [ 'rate_average_in' ],
'rate_average_out' => $rate_data [ 'rate_average_out' ],
'bill_last_calc' => array ( 'NOW()' ),
);
dbUpdate ( $update , 'bills' , '`bill_id` = ?' , array ( $bill [ 'bill_id' ]));
echo ' Updated! ' ;
}
if ( $check [ 'bill_id' ] == $bill [ 'bill_id' ]) {
$update = array (
'rate_95th' => $rate_data [ 'rate_95th' ],
'rate_95th_in' => $rate_data [ 'rate_95th_in' ],
'rate_95th_out' => $rate_data [ 'rate_95th_out' ],
'dir_95th' => $rate_data [ 'dir_95th' ],
'rate_average' => $rate_data [ 'rate_average' ],
'rate_average_in' => $rate_data [ 'rate_average_in' ],
'rate_average_out' => $rate_data [ 'rate_average_out' ],
'traf_total' => $rate_data [ 'total_data' ],
'traf_in' => $rate_data [ 'total_data_in' ],
'traf_out' => $rate_data [ 'total_data_out' ],
'bill_used' => $used ,
'bill_overuse' => $overuse ,
'bill_percent' => $percent ,
'updated' => array ( 'NOW()' ),
);
dbUpdate ( $update , 'bill_history' , '`bill_hist_id` = ?' , array ( $check [ 'bill_hist_id' ]));
echo ' Updated history! ' ;
}
else {
$update = array (
'rate_95th' => $rate_data [ 'rate_95th' ],
'rate_95th_in' => $rate_data [ 'rate_95th_in' ],
'rate_95th_out' => $rate_data [ 'rate_95th_out' ],
'dir_95th' => $rate_data [ 'dir_95th' ],
'rate_average' => $rate_data [ 'rate_average' ],
'rate_average_in' => $rate_data [ 'rate_average_in' ],
'rate_average_out' => $rate_data [ 'rate_average_out' ],
'traf_total' => $rate_data [ 'total_data' ],
'traf_in' => $rate_data [ 'total_data_in' ],
'traf_out' => $rate_data [ 'total_data_out' ],
'bill_datefrom' => $datefrom ,
'bill_dateto' => $dateto ,
'bill_type' => $type ,
'bill_allowed' => $allowed ,
'bill_used' => $used ,
'bill_overuse' => $overuse ,
'bill_percent' => $percent ,
'bill_datefrom' => $datefrom ,
'bill_dateto' => $dateto ,
'bill_id' => $bill [ 'bill_id' ],
);
dbInsert ( $update , 'bill_history' );
echo ' Generated history! ' ;
} //end if
echo " \n \n " ;
} //end if
$i ++ ;
} //end while
} //end foreach