Файл: whmcs/modules/reports/income_forecast.php
Строк: 152
<?php
if (!defined("WHMCS"))
die("This file cannot be accessed directly");
$months = array('January','February','March','April','May','June','July','August','September','October','November','December');
$reportdata["title"] = "Income Forecast";
$reportdata["description"] = "This report shows the projected income for each month of the year if all active services are renewed within that month";
$reportdata["currencyselections"] = true;
$reportdata["tableheadings"] = array("Month","Monthly","Quarterly","Semi-Annual","Annual","Biennial","Total");
$totals = array();
$result = select_query("tblhosting","",array("domainstatus"=>"Active","currency"=>(int)$currencyid),"","","","tblclients ON tblclients.id=tblhosting.userid");
while ($data = mysql_fetch_array($result)) {
$recurringamount = $data["amount"];
$nextduedate = $data["nextduedate"];
$billingcycle = $data["billingcycle"];
$nextduedate = explode("-",$nextduedate);
$year = $nextduedate[0];
$month = $nextduedate[1];
if ($billingcycle=="Monthly") {
$recurrence = 1;
} elseif ($billingcycle=="Quarterly") {
$recurrence = 3;
} elseif ($billingcycle=="Semi-Annually") {
$recurrence = 6;
} elseif ($billingcycle=="Annually") {
$recurrence = 12;
} elseif ($billingcycle=="Biennially") {
$recurrence = 24;
} else {
$recurrence = 24;
}
$recurrences = 24/$recurrence;
for ($i=0;$i<=24;$i+=$recurrence) {
$new_time = mktime(0,0,0,$month+$i,1,$year);
$totals[date("Y",$new_time)][date("m",$new_time)][$recurrence] += $recurringamount;
}
}
$result = select_query("tbldomains","",array("tbldomains.status"=>"Active","currency"=>(int)$currencyid),"","","","tblclients ON tblclients.id=tbldomains.userid");
while ($data = mysql_fetch_array($result)) {
$recurringamount = $data["recurringamount"];
$nextduedate = $data["nextduedate"];
$regperiod = $data["registrationperiod"];
$nextduedate = explode("-",$nextduedate);
$year = $nextduedate[0];
$month = $nextduedate[1];
if (!$regperiod) $regperiod = 1;
$recurrence = $regperiod*12;
$recurrences = 24/$recurrence;
for ($i=0;$i<=24;$i+=$recurrence) {
$new_time = mktime(0,0,0,$month+$i,1,$year);
$totals[date("Y",$new_time)][date("m",$new_time)][$recurrence] += $recurringamount;
}
}
for ($i=0;$i<=24;$i++) {
$new_time = mktime(0,0,0,date("m")+$i,1,date("Y"));
$months_array[date("Y",$new_time)][date("m",$new_time)] = "x";
}
$overallincome = 0;
foreach ($months_array AS $year=>$month) {
foreach ($month AS $mon=>$x) {
$monthlyincome = $totals[$year][$mon][1]+$totals[$year][$mon][3]+$totals[$year][$mon][6]+$totals[$year][$mon][12]+$totals[$year][$mon][24];
$overallincome += $monthlyincome;
$chartdata['rows'][] = array('c'=>array(array('v'=>$months[$mon-1]." ".$year),array('v'=>$overallincome,'f'=>formatCurrency($overallincome))));
$reportdata["tablevalues"][] = array($months[$mon-1]." ".$year,formatCurrency($totals[$year][$mon][1]),formatCurrency($totals[$year][$mon][3]),formatCurrency($totals[$year][$mon][6]),formatCurrency($totals[$year][$mon][12]),formatCurrency($totals[$year][$mon][24]),formatCurrency($monthlyincome));
}
}
$reportdata["footertext"] = "<p align="center"><b>Total Projected Income: ".formatCurrency($overallincome)."</b></p>";
$chartdata['cols'][] = array('label'=>'Month','type'=>'string');
$chartdata['cols'][] = array('label'=>'Cumulative Income Forecast Total','type'=>'number');
#$args['colors'] = '#80D044,#F9D88C,#CC0000';
$reportdata["headertext"] = $chart->drawChart('Area',$chartdata,$args,'450px');
?>