Your IP : 216.73.216.79


Current Path : /var/www/html/crm/views/salestarget/
Upload File :
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">
                    &nbsp;&nbsp;<?= Html::submitButton('Search', ['class' => 'btn btn-brand']) ?>
                    &nbsp;&nbsp;<?= 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>