Files
2026-01-22 15:30:17 +07:00

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);
?>