| Current Path : /var/www/html/crm/views/salestarget/ |
| Current File : /var/www/html/crm/views/salestarget/report.php |
<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\helpers\Url;
use app\models\Menu;
use yii\widgets\ActiveForm;
use app\models\ParamList;
use app\assets\AmchartsAsset;
use app\models\SalesTarget;
AmchartsAsset::register($this);
$Menu = new Menu();
$this->title = $Menu->getmenutitle($menu_id);
$ParamList = new ParamList();
$SalesTarget = new SalesTarget();
$target_year = 0;
$target_half1 = 0;
$target_half2 = 0;
$target_q1 = 0;
$target_q2 = 0;
$target_q3 = 0;
$target_q4 = 0;
$target_month1 = 0;
$target_month2 = 0;
$target_month3 = 0;
$target_month4 = 0;
$target_month5 = 0;
$target_month6 = 0;
$target_month7 = 0;
$target_month8 = 0;
$target_month9 = 0;
$target_month10 = 0;
$target_month11 = 0;
$target_month12 = 0;
if (($model = SalesTarget::findOne(['year' => $search_year, 'dept_id' => $search_dept])) !== null) {
$target_year = $model->target_year;
if (!empty($model->target_half1))
$target_half1 = $model->target_half1;
else
$target_half1 = $target_year / 2;
if (!empty($model->target_half2))
$target_half2 = $model->target_half2;
else
$target_half2 = $target_year / 2;
if (!empty($model->target_q1))
$target_q1 = $model->target_q1;
else
$target_q1 = $target_year / 4;
if (!empty($model->target_q2))
$target_q2 = $model->target_q2;
else
$target_q2 = $target_year / 4;
if (!empty($model->target_q3))
$target_q3 = $model->target_q3;
else
$target_q3 = $target_year / 4;
if (!empty($model->target_q4))
$target_q4 = $model->target_q4;
else
$target_q4 = $target_year / 4;
if (!empty($model->target_month1))
$target_month1 = $model->target_month1;
else
$target_month1 = $target_year / 12;
if (!empty($model->target_month2))
$target_month2 = $model->target_month2;
else
$target_month2 = $target_year / 12;
if (!empty($model->target_month3))
$target_month3 = $model->target_month3;
else
$target_month3 = $target_year / 12;
if (!empty($model->target_month4))
$target_month4 = $model->target_month4;
else
$target_month4 = $target_year / 12;
if (!empty($model->target_month5))
$target_month5 = $model->target_month5;
else
$target_month5 = $target_year / 12;
if (!empty($model->target_month6))
$target_month6 = $model->target_month6;
else
$target_month6 = $target_year / 12;
if (!empty($model->target_month7))
$target_month7 = $model->target_month7;
else
$target_month7 = $target_year / 12;
if (!empty($model->target_month8))
$target_month8 = $model->target_month8;
else
$target_month8 = $target_year / 12;
if (!empty($model->target_month9))
$target_month9 = $model->target_month9;
else
$target_month9 = $target_year / 12;
if (!empty($model->target_month10))
$target_month10 = $model->target_month10;
else
$target_month10 = $target_year / 12;
if (!empty($model->target_month11))
$target_month11 = $model->target_month11;
else
$target_month11 = $target_year / 12;
if (!empty($model->target_month12))
$target_month12 = $model->target_month12;
else
$target_month12 = $target_year / 12;
}
$chartdata = '
{cat: "January",target:' . $target_month1 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='01'")->queryScalar() . ',},
{cat: "February",target:' . $target_month2 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='02'")->queryScalar() . ',},
{cat: "March",target:' . $target_month3 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='03'")->queryScalar() . ',},
{cat: "April",target:' . $target_month4 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='04'")->queryScalar() . ',},
{cat: "May",target:' . $target_month5 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='05'")->queryScalar() . ',},
{cat: "June",target:' . $target_month6 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='06'")->queryScalar() . ',},
{cat: "July",target:' . $target_month7 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='07'")->queryScalar() . ',},
{cat: "August",target:' . $target_month8 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='08'")->queryScalar() . ',},
{cat: "September",target:' . $target_month9 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='09'")->queryScalar() . ',},
{cat: "October",target:' . $target_month10 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='10'")->queryScalar() . ',},
{cat: "November",target:' . $target_month11 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='11'")->queryScalar() . ',},
{cat: "December",target:' . $target_month12 . ',sales:' . (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year' AND MONTH(sales_dt)='12'")->queryScalar() . ',},
';
$this->registerJs('am4core.ready(function() {
am4core.useTheme(am4themes_animated);
var chart = am4core.create("graph", am4charts.XYChart);
chart.colors.step = 2;
chart.data = [' . $chartdata . '];
var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.renderer.grid.template.location = 0;
categoryAxis.dataFields.category = "cat";
categoryAxis.renderer.minGridDistance = 40;
function createAxisAndSeries(field, name, opposite, bullet) {
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
if(chart.yAxes.indexOf(valueAxis) != 0){
valueAxis.syncWithAxis = chart.yAxes.getIndex(0);
}
var series = chart.series.push(new am4charts.LineSeries());
series.dataFields.valueY = field;
series.dataFields.categoryX = "cat";
series.strokeWidth = 2;
series.yAxis = valueAxis;
series.name = name;
series.tooltipText = "{name}: [bold]{valueY}[/]";
series.tensionX = 0.8;
series.showOnInit = true;
var interfaceColors = new am4core.InterfaceColorSet();
switch(bullet) {
case "triangle":
var bullet = series.bullets.push(new am4charts.Bullet());
bullet.width = 12;
bullet.height = 12;
bullet.horizontalCenter = "middle";
bullet.verticalCenter = "middle";
var triangle = bullet.createChild(am4core.Triangle);
triangle.stroke = interfaceColors.getFor("background");
triangle.strokeWidth = 2;
triangle.direction = "top";
triangle.width = 12;
triangle.height = 12;
break;
case "rectangle":
var bullet = series.bullets.push(new am4charts.Bullet());
bullet.width = 10;
bullet.height = 10;
bullet.horizontalCenter = "middle";
bullet.verticalCenter = "middle";
var rectangle = bullet.createChild(am4core.Rectangle);
rectangle.stroke = interfaceColors.getFor("background");
rectangle.strokeWidth = 2;
rectangle.width = 10;
rectangle.height = 10;
break;
default:
var bullet = series.bullets.push(new am4charts.CircleBullet());
bullet.circle.stroke = interfaceColors.getFor("background");
bullet.circle.strokeWidth = 2;
break;
}
valueAxis.renderer.line.strokeOpacity = 1;
valueAxis.renderer.line.strokeWidth = 2;
valueAxis.renderer.line.stroke = series.stroke;
valueAxis.renderer.labels.template.fill = series.stroke;
valueAxis.renderer.opposite = opposite;
}
createAxisAndSeries("target", "Target (MYR)", false, "circle");
createAxisAndSeries("sales", "Sales (MYR)", true, "triangle");
chart.legend = new am4charts.Legend();
chart.cursor = new am4charts.XYCursor();
});');
?>
<div class="kt-subheader kt-grid__item" id="kt_subheader">
<div class="kt-container kt-container--fluid ">
<div class="kt-subheader__main">
<h3 class="kt-subheader__title"><?= $this->title ?></h3>
<div class="kt-subheader__breadcrumbs">
<?= $Menu->getbreadcrumbs($menu_id, ''); ?>
</div>
</div>
</div>
</div>
<div class="kt-container kt-grid__item kt-grid__item--fluid">
<div class="kt-portlet">
<div class="kt-portlet__body">
<div class="kt-portlet__content">
<?php $form = ActiveForm::begin(['action' => ['report'], 'method' => 'get', 'options' => ['class' => 'form-inline form-search']]); ?>
Year
<?=
Html::dropDownList('search_year', $search_year, $SalesTarget->yearlist(), [
'class' => 'ml-3 form-control kt-selectpicker mr-3',
'data-width' => '300px',
'data-live-search' => 'true']);
?>
Department
<?=
Html::dropDownList('search_dept', $search_dept, $ParamList->getparamlist(37), [
'class' => 'ml-3 form-control kt-selectpicker mr-3',
'data-width' => '300px',
'data-live-search' => 'true']);
?>
<div class="form-group">
<?= Html::submitButton('Search', ['class' => 'btn btn-brand']) ?>
<?= Html::a('Reset', ['report'], ['class' => 'btn btn-outline-brand']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="kt-portlet kt-portlet--height-fluid">
<div class="kt-portlet__body kt-portlet__body--fit">
<div class="kt-portlet__content">
<div class="kt-widget1">
<div class="kt-widget1__item">
<div class="kt-widget1__info">
<h3 class="kt-widget1__title"><?= $search_year ?> Target</h3>
<span class="kt-widget1__desc">Target per year</span>
</div>
<span class="kt-widget1__number kt-font-brand"><small>MYR</small> <?= number_format((float) $target_year, 2, '.', ',') ?></span>
</div>
<div class="kt-widget1__item">
<div class="kt-widget1__info">
<h3 class="kt-widget1__title">Sales</h3>
<span class="kt-widget1__desc">Sales collected for <?= $search_year ?></span>
</div>
<span class="kt-widget1__number kt-font-brand"><small>MYR</small>
<?php
$sales_year = (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE dept='$search_dept' AND YEAR(sales_dt)='$search_year'")->queryScalar();
echo number_format($sales_year, 2, '.', ',');
$balance_year = (float) $sales_year - (float) $target_year;
$balance_year_status = 'kt-font-danger';
$balance_year_status2 = 'under';
if ($balance_year > 0) {
$balance_year_status = 'kt-font-success';
$balance_year_status2 = 'over';
}
?>
</span>
</div>
<div class="kt-widget1__item">
<div class="kt-widget1__info">
<h3 class="kt-widget1__title">Remaining</h3>
<span class="kt-widget1__desc">Balance until achieve target</span>
</div>
<span class="kt-widget1__number <?= $balance_year_status ?>">
<small>(<?= $balance_year_status2 ?>) MYR</small>
<?php
echo number_format(abs($balance_year), 2, '.', ',');
?>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="kt-portlet kt-portlet--height-fluid">
<div class="kt-portlet__body">
<div class="kt-portlet__content">
<div class="kt-widget4">
<h6 class="m-0 p-0">1st half year</h6>
<div class="kt-widget4__item">
<span class="kt-widget4__title kt-widget4__title--light">
Target<br>
Sales<br>
Remaining
</span>
<?php
$sales_half1 = (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE
dept='$search_dept' AND
sales_dt BETWEEN '" . $search_year . "-01-01' AND '" . $search_year . "-06-30'")->queryScalar();
$balance_half1 = (float) $sales_half1 - (float) $target_half1;
$balance_half1_status = 'kt-font-danger';
$balance_half1_status2 = 'under';
if ($balance_half1 > 0) {
$balance_half1_status = 'kt-font-success';
$balance_half1_status2 = 'over';
}
?>
<span class="kt-widget4__number kt-font-brand">
<small>MYR</small> <?= number_format((float) $target_half1, 2, '.', ',') ?><br>
<small>MYR</small> <?= number_format($sales_half1, 2, '.', ','); ?><br>
<b class="<?= $balance_half1_status ?>"><small>(<?= $balance_half1_status2 ?>) MYR</small> <?= number_format(abs($balance_half1), 2, '.', ','); ?></b>
</span>
</div>
<h6 class="m-0 p-0 mt-3">2nd half year</h6>
<div class="kt-widget4__item">
<span class="kt-widget4__title kt-widget4__title--light">
Target<br>
Sales<br>
Remaining
</span>
<?php
$sales_half2 = (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE
dept='$search_dept' AND
sales_dt BETWEEN '" . $search_year . "-07-01' AND '" . $search_year . "-12-31'")->queryScalar();
$balance_half2 = (float) $sales_half2 - (float) $target_half2;
$balance_half2_status = 'kt-font-danger';
$balance_half2_status2 = 'under';
if ($balance_half2 > 0) {
$balance_half2_status = 'kt-font-success';
$balance_half2_status2 = 'over';
}
?>
<span class="kt-widget4__number kt-font-brand">
<small>MYR</small> <?= number_format((float) $target_half2, 2, '.', ',') ?><br>
<small>MYR</small> <?= number_format($sales_half2, 2, '.', ','); ?><br>
<b class="<?= $balance_half2_status ?>"><small>(<?= $balance_half2_status2 ?>) MYR</small> <?= number_format(abs($balance_half2), 2, '.', ','); ?></b>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="kt-portlet kt-portlet--height-fluid">
<div class="kt-portlet__body">
<div class="kt-portlet__content">
<div class="kt-widget6">
<div class="kt-widget6__head">
<div class="kt-widget6__item">
<span></span>
<span>Target</span>
<span>Sales</span>
<span>Remaining</span>
</div>
</div>
<div class="kt-widget6__body">
<?php
$sales_q1 = (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE
dept='$search_dept' AND
sales_dt BETWEEN '" . $search_year . "-01-01' AND '" . $search_year . "-03-31'")->queryScalar();
$balance_q1 = (float) $sales_q1 - (float) $target_q1;
$balance_q1_status = 'kt-font-danger';
$balance_q1_status2 = 'under';
if ($balance_q1 > 0) {
$balance_q1_status = 'kt-font-success';
$balance_q1_status2 = 'over';
}
?>
<div class="kt-widget6__item">
<span>Q1</span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format((float) $target_q1, 2, '.', ',') ?></span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format($sales_q1, 2, '.', ','); ?></span>
<span class="<?=$balance_q1_status?> kt-font-bold"><small>(<?= $balance_q1_status2 ?>) MYR</small><br><?= number_format(abs($balance_q1), 2, '.', ','); ?></span>
</div>
<?php
$sales_q2 = (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE
dept='$search_dept' AND
sales_dt BETWEEN '" . $search_year . "-04-01' AND '" . $search_year . "-06-30'")->queryScalar();
$balance_q2 = (float) $sales_q2 - (float) $target_q2;
$balance_q2_status = 'kt-font-danger';
$balance_q2_status2 = 'under';
if ($balance_q2 > 0) {
$balance_q2_status = 'kt-font-success';
$balance_q2_status2 = 'over';
}
?>
<div class="kt-widget6__item">
<span>Q2</span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format((float) $target_q2, 2, '.', ',') ?></span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format($sales_q2, 2, '.', ','); ?></span>
<span class="<?=$balance_q2_status?> kt-font-bold"><small>(<?= $balance_q2_status2 ?>) MYR</small><br><?= number_format(abs($balance_q2), 2, '.', ','); ?></span>
</div>
<?php
$sales_q3 = (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE
dept='$search_dept' AND
sales_dt BETWEEN '" . $search_year . "-07-01' AND '" . $search_year . "-09-30'")->queryScalar();
$balance_q3 = (float) $sales_q3 - (float) $target_q3;
$balance_q3_status = 'kt-font-danger';
$balance_q3_status2 = 'under';
if ($balance_q3 > 0) {
$balance_q3_status = 'kt-font-success';
$balance_q3_status2 = 'over';
}
?>
<div class="kt-widget6__item">
<span>Q3</span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format((float) $target_q3, 2, '.', ',') ?></span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format($sales_q3, 2, '.', ','); ?></span>
<span class="<?=$balance_q3_status?> kt-font-bold"><small>(<?= $balance_q3_status2 ?>) MYR</small><br><?= number_format(abs($balance_q3), 2, '.', ','); ?></span>
</div>
<?php
$sales_q4 = (float) Yii::$app->db->createCommand("SELECT SUM(total) FROM sales WHERE
dept='$search_dept' AND
sales_dt BETWEEN '" . $search_year . "-10-01' AND '" . $search_year . "-12-31'")->queryScalar();
$balance_q4 = (float) $sales_q4 - (float) $target_q4;
$balance_q4_status = 'kt-font-danger';
$balance_q4_status2 = 'under';
if ($balance_q4 > 0) {
$balance_q4_status = 'kt-font-success';
$balance_q4_status2 = 'over';
}
?>
<div class="kt-widget6__item">
<span>Q4</span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format((float) $target_q4, 2, '.', ',') ?></span>
<span class="kt-font-brand kt-font-bold"><small>MYR</small><br><?= number_format($sales_q4, 2, '.', ','); ?></span>
<span class="<?=$balance_q4_status?> kt-font-bold"><small>(<?= $balance_q4_status2 ?>) MYR</small><br><?= number_format(abs($balance_q4), 2, '.', ','); ?></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="kt-portlet">
<div class="kt-portlet__body">
<div class="kt-portlet__content">
<div id="graph" style="height: 500px;width:100%;"></div>
</div>
</div>
</div>
</div>