105 lines
4.2 KiB
PHP
105 lines
4.2 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
Module : /apps/php/index.php
|
|
Desc. : PHP - Halaman Utama Desktop
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : May 24th, 2010.
|
|
Last Modified : March 21st, 2023.
|
|
|
|
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
require_once(__DIR__."/../../../../vendor/autoload.php");
|
|
|
|
use siaupheng\fonia3\DB\MySQL;
|
|
use siaupheng\fonia3\Web\Param;
|
|
use siaupheng\fonia3\Web\Register;
|
|
|
|
function random_color($trans = "0.6") {
|
|
$col_r = mt_rand( 0, 255 );
|
|
$col_g = mt_rand( 0, 255 );
|
|
$col_b = mt_rand( 0, 255 );
|
|
return "rgba(".$col_r.",".$col_g.",".$col_b.",".$trans.")";
|
|
}
|
|
|
|
$db = (is_resource($db)) ? $db : new MySQL();
|
|
$ajson = [];
|
|
$data = Param::Get("data");
|
|
|
|
if ( $data == "jual-chart" ) {
|
|
$agrup = [];
|
|
$db->Query("SELECT * FROM inv_produk_grup WHERE Aktif=1 ORDER BY Grup_InvID");
|
|
while ($db->Next()) $agrup[$db->Row("Grup_InvID")] = $db->Row("Kode_Grup");
|
|
|
|
$db->Query("SELECT A.*,P.Grup_InvID FROM (SELECT CONCAT(YEAR(Tgl_Ref),'-',LPAD(MONTH(Tgl_Ref),2,'0')) Thn_Bln,InvID,SUM(-Qty*Harga_Jual) Jumlah FROM inv_detail WHERE NotaID=5 AND Tgl_Ref>=(LAST_DAY((SELECT Tgl_Jual FROM inv_jual ORDER BY Tgl_Jual DESC LIMIT 1)) + INTERVAL 1 DAY - INTERVAL 6 MONTH) GROUP BY YEAR(Tgl_Ref),MONTH(Tgl_Ref),InvID) A LEFT JOIN inv_produk P ON (P.InvID=A.InvID) ORDER BY A.Thn_Bln,P.Grup_InvID");
|
|
|
|
$ajson['tipe'] = "chart";
|
|
$adata['datasets'] = [];
|
|
$adata['labels'] = ["Belum Ada Penjualan"];
|
|
if ($db->RecordCount()>0) {
|
|
$adata['labels'] = [];
|
|
}
|
|
$ajual = []; $abln = [];
|
|
while ($db->Next()){
|
|
$ajual[$db->Row("Grup_InvID")][$db->Row("Thn_Bln")] = $db->Row("Jumlah", 0) / 1000000;
|
|
if (!in_array($db->Row("Thn_Bln"), $abln, true)) array_push($abln, $db->Row("Thn_Bln"));
|
|
}
|
|
asort($abln);
|
|
foreach ($abln as $_val) {
|
|
$adata['labels'][] = bulan_array()[intval(explode("-",$_val)[1])];
|
|
}
|
|
|
|
foreach ($agrup as $id_grup => $n_grup) {
|
|
$atmp = [];
|
|
foreach ($abln as $_val) {
|
|
$atmp[] = $ajual[$id_grup][$_val] ?? 0;
|
|
}
|
|
$adata['datasets'][] = ['data'=>$atmp, 'label'=>$n_grup, 'backgroundColor'=>random_color(), 'datalabels'=>['align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"]];
|
|
}
|
|
|
|
$ajson['chart'] = ['type' => "bar",
|
|
'data' => $adata,
|
|
'options' => [
|
|
'responsive' => true,
|
|
'aspectRatio' => 1.5,
|
|
'plugins' => [
|
|
'legend' => ['position' => "bottom"],
|
|
'title' => ['display' => true, 'font' => ['size' => 20, 'weight' => 'normal'], 'text' => 'Penjualan 6 Bulan Terakhir'],
|
|
'subtitle' => ['display' => true, 'position' => "top", 'text' => '(dalam jutaan)']
|
|
],
|
|
'scales' => ['y' => ['min' => 0, 'ticks' => ['stepSize' => 1], 'title' => ['display' => true, 'font' => ['size' => 16], 'text' => "Nilai Penjualan"]]],
|
|
'layout' => ['padding' => ['top' => 10]]
|
|
]
|
|
];
|
|
|
|
} else if ( $data == "default" ) {
|
|
$aapp = $_SESSION['__WEB_APP'];
|
|
$ajson['content'] = '
|
|
<div class="row">
|
|
<div class="col-sm-12 col-md-6 d-flex align-items-stretch">
|
|
<div class="card w-100 h-100"><div class="card-body d-flex flex-column" id="divHome1">
|
|
<div class="my-auto text-center"><img class="img-fluid" src="'.$aapp['WEB_PATH'].'assets/images/logo300.png" title="'.$aapp['REG_NAME'].'">
|
|
<p class="mt-2">'.$aapp['REG_ADDRESS'].'<br>
|
|
'.$aapp['REG_CITY'].' '.$aapp['REG_POSTCODE'].'</p>
|
|
<p class="mt-3 mb-3"><i>Register ID : '.Register::reg_id().'</i></p>
|
|
<p>'.$aapp['APP_NAMES'].'<br>'.$aapp['APP_NAME'].' Ver. '.$aapp['APP_VER'].'<br>
|
|
Updated : '.$aapp['APP_UPDATED'].'</p></div>
|
|
</div></div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-6 d-flex align-items-stretch">
|
|
<div class="card w-100 h-100"><div class="card-body d-flex flex-column" id="divHome2">
|
|
<div class="chart-wrapper pb-2">
|
|
<canvas id="barChart"></canvas>
|
|
</div>
|
|
</div></div>
|
|
</div>
|
|
</div>
|
|
';
|
|
}
|
|
|
|
send_json($ajson);
|
|
?>
|