2340 lines
99 KiB
PHP
2340 lines
99 KiB
PHP
<?php
|
|
class RegionalSales extends MY_Controller
|
|
{
|
|
var $db;
|
|
public function index()
|
|
{
|
|
echo "SALES API";
|
|
}
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
// $this->db = $this->load->database("default", true);
|
|
$this->db->query("use one_dash");
|
|
}
|
|
|
|
function corss()
|
|
{
|
|
global $_SERVER;
|
|
if (isset($_SERVER["HTTP_ORIGIN"])) {
|
|
header("Access-Control-Allow-Origin: " . $_SERVER["HTTP_ORIGIN"]);
|
|
} else {
|
|
header("Access-Control-Allow-Origin: */*");
|
|
}
|
|
header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS");
|
|
header(
|
|
"Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization"
|
|
);
|
|
if (
|
|
isset($_SERVER["REQUEST_METHOD"]) &&
|
|
$_SERVER["REQUEST_METHOD"] == "OPTIONS"
|
|
) {
|
|
http_response_code(200);
|
|
echo json_encode("OK");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
public function getClassificationNumber($number_param_x)
|
|
{
|
|
$this->corss();
|
|
// $number_fix = 0;
|
|
// if ($number_param < 0) {
|
|
// $number_fix = $number_param * -1;
|
|
// } else {
|
|
// $number_fix = $number_param;
|
|
// }
|
|
|
|
$number_param = abs($number_param_x);
|
|
$string = "Puluhan";
|
|
|
|
if ($number_param >= 1000000000) {
|
|
// echo "Angka ini dalam miliar";
|
|
$number_format = $number_param / 1000000000;
|
|
$formatted_number_fix = number_format($number_format, 2);
|
|
$string = ($number_param_x >= 0 ? '' : '-') . $formatted_number_fix . " M";
|
|
} elseif ($number_param >= 1000000) {
|
|
// echo "Angka ini dalam juta";
|
|
$number_format = $number_param / 1000000;
|
|
$formatted_number_fix = number_format($number_format, 2);
|
|
$string = ($number_param_x >= 0 ? '' : '-') . $formatted_number_fix . " Juta";
|
|
} elseif ($number_param >= 1000) {
|
|
// echo "Angka ini dalam ribuan";
|
|
$number_format = $number_param / 1000;
|
|
$formatted_number_fix = number_format($number_format, 2);
|
|
$string = ($number_param_x >= 0 ? '' : '-') . $formatted_number_fix . " Ribu";
|
|
} elseif ($number_param >= 100) {
|
|
$number_format = $number_param / 100;
|
|
$formatted_number_fix = number_format($number_format, 2);
|
|
$string = ($number_param_x >= 0 ? '' : '-') . $formatted_number_fix . " Ratus";
|
|
} else {
|
|
// echo "Angka ini dalam ratusan";
|
|
$number_format = $number_param / 10;
|
|
$formatted_number_fix = number_format($number_format, 2);
|
|
$string = ($number_param_x >= 0 ? '' : '-') . $formatted_number_fix . " Puluh";
|
|
}
|
|
|
|
return $string;
|
|
}
|
|
|
|
public function list_color_pie_chart($index, $tingkat, $list_data)
|
|
{
|
|
$this->corss();
|
|
// Tingkat 1 diurutkan Lab dan Non Lab
|
|
// Tingkat 2 diurutkan Nat_GroupName ASC
|
|
// Tingkat 3 diurutkan Nat_SubGroupName ASC
|
|
|
|
$listColorLabNonLab = [
|
|
"#F9D8CC", // lab
|
|
"#DF4836", // nonlab
|
|
];
|
|
|
|
$listColorNatGroup = [
|
|
"#0E713E", //[Laboratorium] =>
|
|
"#49CDF5", // [Elektromedis] =>
|
|
"#F9BE42", // [Radiologi] =>
|
|
"#930907" //[Layanan Medis lainnya] =>
|
|
];
|
|
|
|
$listColorNatSubGroup = [
|
|
"#1BD875", //[Hematologi] =>
|
|
"#17B562", //[Urinalisis] =>
|
|
"#15A75B", //[Faeces & Parasitologi] =>
|
|
"#139A54", //[Analisa Klinik Rutin] =>
|
|
"#118D4D", //[Kimia Klinik] =>
|
|
"#107F45", //[Immunologi] =>
|
|
"#0E713E", //[Mikrobiologi] =>
|
|
"#0C6437", //[Molekuler Diagnostik] =>
|
|
"#0A5730", //[Pathologi Anatomi] =>
|
|
"#094929", //[Pemeriksaan Lab Lainnya] =>
|
|
"#052E1A", //[Riset] =>
|
|
"#92DAF2", //[Pemeriksaan Syaraf] =>
|
|
"#73CFED", //[Elektromedis Jantung & Pembuluh Darah] =>
|
|
"#53C5EA", //[Fungsi Pendengaran] =>
|
|
"#41BFE7", //[Fungsi Paru-paru] =>
|
|
'#1BABDA', //[Otot] =>
|
|
"#F4DBA4", //[Foto Polos] =>
|
|
"#EEC877", //[Panoramic & Dental] =>
|
|
"#EBBF60", //[Foto Kontras] =>
|
|
"#E6AD33", //[Bonedensitometri] =>
|
|
"#DEA11B", //[CT Scan] =>
|
|
"#B68416", //[USG] =>
|
|
"#916912", //[MRI] =>
|
|
"#ED7F6E", //[Layanan Klinik] =>
|
|
"#E95F49", //[Pemeriksaan K3] =>
|
|
"#E43F25", //[Vaksin] =>
|
|
"#CC3219", //[Layanan Alat & Farmasi] =>
|
|
"#912312", //[Layanan Jasa] =>
|
|
"#64180C", //[Dental Lab] =>
|
|
];
|
|
|
|
// define default color grey jika list scope != listColor
|
|
// nonlab & lab
|
|
if (($list_data != count($listColorLabNonLab))) {
|
|
if (($list_data > count($listColorLabNonLab))) {
|
|
$greyCount = $list_data - count($listColorLabNonLab);
|
|
$greyColors = array_fill(0, $greyCount, "#888888");
|
|
$resultColor = array_merge($listColorLabNonLab, $greyColors);
|
|
$listColorLabNonLab = $resultColor;
|
|
}
|
|
}
|
|
|
|
// nat group
|
|
if (($list_data != count($listColorNatGroup))) {
|
|
if (($list_data > count($listColorNatGroup))) {
|
|
$greyCount = $list_data - count($listColorNatGroup);
|
|
$greyColors = array_fill(0, $greyCount, "#888888");
|
|
$resultColor = array_merge($listColorNatGroup, $greyColors);
|
|
$listColorNatGroup = $resultColor;
|
|
}
|
|
}
|
|
|
|
// nat sub group
|
|
if (($list_data != count($listColorNatSubGroup))) {
|
|
if (($list_data > count($listColorNatSubGroup))) {
|
|
$greyCount = $list_data - count($listColorNatSubGroup);
|
|
$greyColors = array_fill(0, $greyCount, "#888888");
|
|
$resultColor = array_merge($listColorNatSubGroup, $greyColors);
|
|
$listColorNatSubGroup = $resultColor;
|
|
}
|
|
}
|
|
|
|
// if (
|
|
// ($list_data != count($listColorLabNonLab)) ||
|
|
// ($list_data != count($listColorNatGroup)) ||
|
|
// ($list_data != count($listColorNatSubGroup))
|
|
// ) {
|
|
// if (($list_data > count($listColorLabNonLab)) ||
|
|
// ($list_data > count($listColorNatGroup)) ||
|
|
// ($list_data > count($listColorNatSubGroup))
|
|
// ) {
|
|
// $greyCount = $list_data - count($listColorLabNonLab);
|
|
// $greyColors = array_fill(0, $greyCount, "#888888");
|
|
// $resultColor = array_merge($listColorLabNonLab, $greyColors);
|
|
// $listColorLabNonLab = $resultColor;
|
|
// $listColorNatGroup = $resultColor;
|
|
// $listColorNatSubGroup = $resultColor;
|
|
// }
|
|
// }
|
|
|
|
if ($tingkat == 'tingkat1') {
|
|
return $listColorLabNonLab[$index];
|
|
} else {
|
|
if ($tingkat == 'tingkat2') {
|
|
return $listColorNatGroup[$index];
|
|
} else {
|
|
if ($tingkat == 'tingkat3') {
|
|
return $listColorNatSubGroup[$index];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function list_color_bar_chart_v1($index, $list_scope)
|
|
{
|
|
$this->corss();
|
|
// diurutkan S_RegionalName ASC
|
|
$listColor = [
|
|
"#100003",
|
|
"#39000B",
|
|
"#49000F",
|
|
"#610014",
|
|
"#720017",
|
|
"#6A0000",
|
|
"#820000",
|
|
"#9B0000",
|
|
"#B30000",
|
|
"#C00",
|
|
"#D40026",
|
|
"#EC0030",
|
|
"#E40000",
|
|
"#FC0000",
|
|
"#FF0606",
|
|
"#FF1E1E",
|
|
"#FF4747",
|
|
"#FF2E2E",
|
|
"#FF4747",
|
|
"#FF5757",
|
|
"#FF5F5F",
|
|
"#FF7070",
|
|
"#FF8080",
|
|
"#FF9090",
|
|
];
|
|
|
|
// define default color grey jika list scope != listColor
|
|
if ($list_scope != count($listColor)) {
|
|
if ($list_scope > count($listColor)) {
|
|
$greyCount = $list_scope - count($listColor);
|
|
$greyColors = array_fill(0, $greyCount, "#888888");
|
|
$resultColor = array_merge($listColor, $greyColors);
|
|
$listColor = $resultColor;
|
|
} else {
|
|
$listColor[$index];
|
|
}
|
|
} else {
|
|
$listColor[$index];
|
|
}
|
|
|
|
return $listColor[$index];
|
|
}
|
|
|
|
public function list_color_bar_chart($index, $list_scope)
|
|
{
|
|
$this->corss();
|
|
// diurutkan S_RegionalName ASC
|
|
$listColor = [
|
|
"#D00000",
|
|
"#FFBA08",
|
|
"#1B998B",
|
|
"#5D2E8C",
|
|
"#3185FC",
|
|
"#FF7B9C",
|
|
];
|
|
|
|
// define default color grey jika list scope != listColor
|
|
if ($list_scope != count($listColor)) {
|
|
if ($list_scope > count($listColor)) {
|
|
$greyCount = count($list_scope) - count($listColor);
|
|
$greyColors = array_fill(0, $greyCount, "#888888");
|
|
$resultColor = array_merge($listColor, $greyColors);
|
|
$listColor = $resultColor;
|
|
} else {
|
|
$listColor[$index];
|
|
}
|
|
} else {
|
|
$listColor[$index];
|
|
}
|
|
|
|
return $listColor[$index];
|
|
}
|
|
|
|
public function formatAngkaJuta($angka)
|
|
{
|
|
return "Rp " . number_format($angka / 1000000, 2, ',', '.') . ' Juta';
|
|
}
|
|
|
|
public function formatAngkaJutaTanpaAkhiran($angka)
|
|
{
|
|
// return "Rp " . number_format($angka / 1000000, 2, ',', '.');
|
|
$formattedAngka = number_format($angka, 2, ',', '.');
|
|
|
|
// Mengganti koma menjadi titik untuk memisahkan ribuan
|
|
// $formattedAngka = str_replace(',', '.', $formattedAngka);
|
|
|
|
return "Rp " . $formattedAngka;
|
|
}
|
|
|
|
public function formatAngkaPemeriksaanPieChart($angka)
|
|
{
|
|
if ($angka >= 1000000000) {
|
|
// Lebih dari satu miliar
|
|
return number_format($angka / 1000000000, 2, ',', '.') . ' Miliar';
|
|
} elseif ($angka >= 1000000) {
|
|
// Lebih dari satu juta
|
|
return number_format($angka / 1000000, 2, ',', '.') . ' Juta';
|
|
} elseif ($angka >= 1000) {
|
|
// Lebih dari seribu
|
|
return number_format($angka / 1000, 2, ',', '.') . ' Ribu';
|
|
} else {
|
|
// Kurang dari seribu
|
|
return number_format($angka, 2, ',', '.');
|
|
}
|
|
}
|
|
|
|
public function formatAngkaPemeriksaanPieChartTanpaAkhiran($angka)
|
|
{
|
|
if ($angka >= 1000000000) {
|
|
// Lebih dari satu miliar
|
|
// return number_format($angka / 1000000000, 2, ',', '.');
|
|
return number_format($angka, 2, ',', '.');
|
|
} elseif ($angka >= 1000000) {
|
|
// Lebih dari satu juta
|
|
// return number_format($angka / 1000000, 2, ',', '.');
|
|
return number_format($angka, 2, ',', '.');
|
|
} elseif ($angka >= 1000) {
|
|
// Lebih dari seribu
|
|
// return number_format($angka / 1000, 2, ',', '.');
|
|
return number_format($angka, 2, ',', '.');
|
|
} else {
|
|
// Kurang dari seribu
|
|
return number_format($angka, 2, ',', '.');
|
|
}
|
|
}
|
|
|
|
public function getQuarterByFilter($waktu)
|
|
{
|
|
if ($waktu == "Q1") {
|
|
$quarterResult = "1";
|
|
} elseif ($waktu == "Q2") {
|
|
$quarterResult = "2";
|
|
} elseif ($waktu == "Q3") {
|
|
$quarterResult = "3";
|
|
} elseif ($waktu == "Q4") {
|
|
$quarterResult = "4";
|
|
} else {
|
|
$quarterResult = "";
|
|
}
|
|
|
|
$result = $quarterResult;
|
|
|
|
return $result;
|
|
}
|
|
|
|
// regional start
|
|
public function reg_total_count_order($debug = "", $debugRegID = "0", $debugfilter_waktu = "")
|
|
{
|
|
$this->corss();
|
|
// total order = count nat_sales
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$date_now = date('Y-m-d');
|
|
$end_date_year_min_1 = date('Y-m-d', strtotime($date_now . ' -1 year'));
|
|
|
|
$prm = $this->sys_input;
|
|
// $regID adalah filter scope
|
|
$regID = "0";
|
|
$filter_waktu = "";
|
|
$where_tahun_berjalan = " AND `Nat_SalesYear` = year('$date_now')
|
|
AND Nat_SalesIsActive = 'Y' ";
|
|
$where_year_min_1 = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now') - 1
|
|
AND Nat_SalesDay <= DATE(NOW() - INTERVAL 1 YEAR) ";
|
|
|
|
// debug only
|
|
if ($debug != "") {
|
|
$regID = $debugRegID;
|
|
$filter_waktu = $debugfilter_waktu;
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_tahun_berjalan .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
$where_year_min_1 .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
$end_date_a = date('Y-01-01', strtotime('-1 year'));
|
|
$end_date_b = date('Y-m-d', strtotime('-1 year'));
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_tahun_berjalan = " AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
|
|
// end date year - 1
|
|
// Nat_SalesDay >= '2022-01-01' AND Nat_SalesDay <= '2022-10-04'
|
|
|
|
$where_year_min_1 = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now') - 1
|
|
AND (`Nat_SalesDay` >= '$end_date_a' AND `Nat_SalesDay` <= DATE(NOW() - INTERVAL 1 YEAR))";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($prm['filter_scope'])) {
|
|
$regID = $prm["filter_scope"];
|
|
}
|
|
|
|
if (isset($prm['filter_waktu'])) {
|
|
$filter_waktu = $prm["filter_waktu"];
|
|
}
|
|
|
|
if ($debugRegID != "0") {
|
|
$regID = $debugRegID;
|
|
}
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_tahun_berjalan .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
$where_year_min_1 .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
$end_date_a = date('Y-01-01', strtotime('-1 year'));
|
|
$end_date_b = date('Y-m-d', strtotime('-1 year'));
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_tahun_berjalan = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
|
|
// end date year - 1
|
|
// Nat_SalesDay >= '2022-01-01' AND Nat_SalesDay <= '2022-10-04'
|
|
|
|
$where_year_min_1 = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now') - 1
|
|
AND (`Nat_SalesDay` >= '$end_date_a' AND `Nat_SalesDay` <= DATE(NOW() - INTERVAL 1 YEAR))";
|
|
}
|
|
}
|
|
}
|
|
|
|
// tahun berjalan
|
|
// sebagai a
|
|
$sql_tahun_berjalan = "
|
|
SELECT ifnull(count(*),0) AS total_order_tahun_berjalan
|
|
FROM `nat_sales`
|
|
JOIN m_branch ON M_BranchID = Nat_SalesM_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
$where_tahun_berjalan
|
|
JOIN s_regional ON S_RegionalID = M_BranchS_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
";
|
|
|
|
$qry_tahun_berjalan = $this->db->query($sql_tahun_berjalan);
|
|
if (!$qry_tahun_berjalan) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$last_qry_tahun_berjalan = $this->db->last_query();
|
|
|
|
// if($debug != ""){
|
|
// echo $last_qry_tahun_berjalan;
|
|
// }
|
|
|
|
$rst_tahun_berjalan = $qry_tahun_berjalan->result_array();
|
|
|
|
// tahun min 1
|
|
// sebagai b
|
|
$sql_year_min_1 = "
|
|
SELECT ifnull(count(*),0) AS total_order_year_min_1
|
|
FROM `nat_sales`
|
|
JOIN m_branch ON M_BranchID = Nat_SalesM_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
$where_year_min_1
|
|
JOIN s_regional ON S_RegionalID = M_BranchS_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
";
|
|
$qry_year_min_1 = $this->db->query($sql_year_min_1);
|
|
if (!$qry_year_min_1) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$last_qry_year_min_1 = $this->db->last_query();
|
|
// if($debug != ""){
|
|
// echo $last_qry_year_min_1;
|
|
// }
|
|
$rst_year_min_1 = $qry_year_min_1->result_array();
|
|
|
|
// diff dalam persen
|
|
|
|
// diff sales = a - b
|
|
$diff_total_order = ($rst_tahun_berjalan[0]['total_order_tahun_berjalan']) - ($rst_year_min_1[0]['total_order_year_min_1']);
|
|
$diff_persen = 0.0;
|
|
$keterangan = "-";
|
|
|
|
// $formatted_number = $this->getClassificationNumber($diff_total_order);
|
|
$formatted_number = $this->getClassificationNumber($rst_tahun_berjalan[0]['total_order_tahun_berjalan']);
|
|
|
|
// kalau tahun lalu 0 maka 100%
|
|
if (($rst_year_min_1[0]['total_order_year_min_1']) == 0) {
|
|
$diff_persen = 100;
|
|
} else {
|
|
// $persentase = (($tahun_sekarang - $tahun_lalu) / $tahun_lalu) * 100;
|
|
$diff_persen_calculate = ($diff_total_order / ($rst_year_min_1[0]['total_order_year_min_1'])) * 100;
|
|
$diff_persen = number_format($diff_persen_calculate, 0);
|
|
}
|
|
|
|
// set keterangan & prefix
|
|
if (($rst_year_min_1[0]['total_order_year_min_1']) < 1) {
|
|
$keterangan = "-";
|
|
} else {
|
|
if (($rst_tahun_berjalan[0]['total_order_tahun_berjalan']) > ($rst_year_min_1[0]['total_order_year_min_1'])) {
|
|
$keterangan = "up";
|
|
} else {
|
|
if (($rst_year_min_1[0]['total_order_year_min_1']) > ($rst_tahun_berjalan[0]['total_order_tahun_berjalan'])) {
|
|
$keterangan = "down";
|
|
}
|
|
}
|
|
}
|
|
|
|
$total_count_order = $formatted_number;
|
|
|
|
$result = array(
|
|
"total" => $total_count_order,
|
|
"persen" => $diff_persen . " %",
|
|
"keterangan" => $keterangan,
|
|
"last_qry_tahun_berjalan" => $last_qry_tahun_berjalan,
|
|
"last_qry_year_min_1" => $last_qry_year_min_1
|
|
);
|
|
|
|
if ($debug != "") {
|
|
$result = array(
|
|
"total_asli" => $rst_tahun_berjalan[0]['total_order_tahun_berjalan'],
|
|
"total" => $total_count_order,
|
|
"persen" => $diff_persen . " %",
|
|
"keterangan" => $keterangan,
|
|
"last_qry_tahun_berjalan" => $last_qry_tahun_berjalan,
|
|
"last_qry_year_min_1" => $last_qry_year_min_1
|
|
);
|
|
|
|
echo "<pre>";
|
|
print_r($result);
|
|
echo "</pre>";
|
|
exit;
|
|
}
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_total($debug = "", $debugRegID = "0", $debugfilter_waktu = "")
|
|
{
|
|
$this->corss();
|
|
// total pendapatan nat_sales
|
|
// *) di tambah dengan tahun - 1
|
|
// di berikan diff dalam persen , jika sebelumnya 0 ( belum ada data ) di kasih 100
|
|
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$date_now = date('Y-m-d');
|
|
$end_date_year_min_1 = date('Y-m-d', strtotime($date_now . ' -1 year'));
|
|
|
|
$prm = $this->sys_input;
|
|
// $regID adalah filter_scope
|
|
$regID = "0";
|
|
$filter_waktu = "";
|
|
$where_tahun_berjalan = " AND `Nat_SalesYear` = year('$date_now') ";
|
|
$where_year_min_1 = " AND `Nat_SalesYear` = year('$date_now') - 1
|
|
AND Nat_SalesDay <= DATE(NOW() - INTERVAL 1 YEAR) ";
|
|
|
|
if (isset($prm['filter_scope'])) {
|
|
$regID = $prm["filter_scope"];
|
|
}
|
|
|
|
if (isset($prm['filter_waktu'])) {
|
|
$filter_waktu = $prm["filter_waktu"];
|
|
}
|
|
|
|
if ($debugRegID != "0") {
|
|
$regID = $debugRegID;
|
|
}
|
|
|
|
if ($debug != "") {
|
|
$regID = $debugRegID;
|
|
$filter_waktu = $debugfilter_waktu;
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_tahun_berjalan .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
$where_year_min_1 .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
$end_date_a = date('Y-01-01', strtotime('-1 year'));
|
|
$end_date_b = date('Y-m-d', strtotime('-1 year'));
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_tahun_berjalan = " AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
|
|
// end date year - 1
|
|
// Nat_SalesDay >= '2022-01-01' AND Nat_SalesDay <= '2022-10-04'
|
|
|
|
$where_year_min_1 = " AND `Nat_SalesYear` = year('$date_now') - 1
|
|
AND (`Nat_SalesDay` >= '$end_date_a' AND `Nat_SalesDay` <= DATE(NOW() - INTERVAL 1 YEAR))";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_tahun_berjalan .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
$where_year_min_1 .= " AND Nat_SalesQuarter = ($quarterResult)";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
$end_date_a = date('Y-01-01', strtotime('-1 year'));
|
|
$end_date_b = date('Y-m-d', strtotime('-1 year'));
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_tahun_berjalan = " AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
|
|
// end date year - 1
|
|
// Nat_SalesDay >= '2022-01-01' AND Nat_SalesDay <= '2022-10-04'
|
|
|
|
$where_year_min_1 = " AND `Nat_SalesYear` = year('$date_now') - 1
|
|
AND (`Nat_SalesDay` >= '$end_date_a' AND `Nat_SalesDay` <= DATE(NOW() - INTERVAL 1 YEAR))";
|
|
}
|
|
}
|
|
}
|
|
|
|
// tahun berjalan
|
|
// sebagai a
|
|
$sql_tahun_berjalan = "
|
|
SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan
|
|
FROM `nat_sales`
|
|
JOIN m_branch ON M_BranchID = Nat_SalesM_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
$where_tahun_berjalan
|
|
JOIN s_regional ON S_RegionalID = M_BranchS_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
";
|
|
|
|
$qry_tahun_berjalan = $this->db->query($sql_tahun_berjalan);
|
|
if (!$qry_tahun_berjalan) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$last_qry_tahun_berjalan = $this->db->last_query();
|
|
|
|
// if($debug != ""){
|
|
// echo $last_qry_tahun_berjalan;
|
|
// }
|
|
|
|
$rst_tahun_berjalan = $qry_tahun_berjalan->result_array();
|
|
|
|
// tahun min 1
|
|
// sebagai b
|
|
$sql_year_min_1 = "
|
|
SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_year_min_1
|
|
FROM `nat_sales`
|
|
JOIN m_branch ON M_BranchID = Nat_SalesM_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
$where_year_min_1
|
|
JOIN s_regional ON S_RegionalID = M_BranchS_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
";
|
|
$qry_year_min_1 = $this->db->query($sql_year_min_1);
|
|
if (!$qry_year_min_1) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$last_qry_year_min_1 = $this->db->last_query();
|
|
// if($debug != ""){
|
|
// echo $last_qry_year_min_1;
|
|
// }
|
|
$rst_year_min_1 = $qry_year_min_1->result_array();
|
|
|
|
// diff dalam persen
|
|
|
|
// diff sales = a - b
|
|
$diff_total_sales = ($rst_tahun_berjalan[0]['total_sales_tahun_berjalan']) - ($rst_year_min_1[0]['total_sales_year_min_1']);
|
|
$diff_persen = 0.0;
|
|
$keterangan = "-";
|
|
|
|
// $formated_number = $this->getClassificationNumber($diff_total_sales);
|
|
$formated_number = $this->getClassificationNumber($rst_tahun_berjalan[0]['total_sales_tahun_berjalan']);
|
|
|
|
// kalau tahun lalu 0 maka 100%
|
|
if (($rst_year_min_1[0]['total_sales_year_min_1']) == 0) {
|
|
$diff_persen = 100;
|
|
} else {
|
|
// $persentase = (($tahun_sekarang - $tahun_lalu) / $tahun_lalu) * 100;
|
|
$diff_persen_calculate = ($diff_total_sales / ($rst_year_min_1[0]['total_sales_year_min_1'])) * 100;
|
|
$diff_persen = number_format($diff_persen_calculate, 0);
|
|
}
|
|
|
|
// set keterangan & prefix
|
|
if (($rst_year_min_1[0]['total_sales_year_min_1']) < 1) {
|
|
$keterangan = "-";
|
|
} else {
|
|
if (($rst_tahun_berjalan[0]['total_sales_tahun_berjalan']) > ($rst_year_min_1[0]['total_sales_year_min_1'])) {
|
|
$keterangan = "up";
|
|
} else {
|
|
if (($rst_year_min_1[0]['total_sales_year_min_1']) > ($rst_tahun_berjalan[0]['total_sales_tahun_berjalan'])) {
|
|
$keterangan = "down";
|
|
}
|
|
}
|
|
}
|
|
|
|
$total_pendapatan_fix = "Rp. " . $formated_number;
|
|
|
|
$result = array(
|
|
"total" => $total_pendapatan_fix,
|
|
"persen" => $diff_persen . " %",
|
|
"keterangan" => $keterangan,
|
|
"last_qry_tahun_berjalan" => $last_qry_tahun_berjalan,
|
|
"last_qry_year_min_1" => $last_qry_year_min_1
|
|
);
|
|
|
|
if ($debug != "") {
|
|
$result = array(
|
|
"total_reformat" => $rst_tahun_berjalan[0]['total_sales_tahun_berjalan'],
|
|
"total" => $total_pendapatan_fix,
|
|
"persen" => $diff_persen . " %",
|
|
"keterangan" => $keterangan,
|
|
"last_qry_tahun_berjalan" => $last_qry_tahun_berjalan,
|
|
"last_qry_year_min_1" => $last_qry_year_min_1
|
|
);
|
|
|
|
echo "<pre>";
|
|
print_r($result);
|
|
echo "</pre>";
|
|
exit;
|
|
}
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_total_pendapatan_bar_chart_no_group($debug = "", $debugRegID = "0", $debugfilter_waktu = "")
|
|
{
|
|
$this->corss();
|
|
// total pendapatan nat_sales
|
|
// *) di tambah dengan tahun - 1
|
|
// di berikan diff dalam persen , jika sebelumnya 0 ( belum ada data ) di kasih 100
|
|
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$date_now = date('Y-m-d');
|
|
|
|
$prm = $this->sys_input;
|
|
$regID = "0";
|
|
$filter_waktu = "";
|
|
$where_tahun_berjalan = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')";
|
|
|
|
if (isset($prm['filter_scope'])) {
|
|
$regID = $prm["filter_scope"];
|
|
}
|
|
|
|
if (isset($prm['filter_waktu'])) {
|
|
$filter_waktu = $prm["filter_waktu"];
|
|
}
|
|
|
|
if ($debugRegID != "0") {
|
|
$regID = $debugRegID;
|
|
}
|
|
|
|
if ($debug != "") {
|
|
$regID = $debugRegID;
|
|
$filter_waktu = $debugfilter_waktu;
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_tahun_berjalan = " AND Nat_SalesIsActive = 'Y'
|
|
AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_tahun_berjalan = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_tahun_berjalan = " AND Nat_SalesIsActive = 'Y'
|
|
AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_tahun_berjalan = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
|
|
// tahun berjalan
|
|
// sebagai a
|
|
$sql_tahun_berjalan = "
|
|
SELECT ifnull(SUM(`Nat_SalesTotal`), 0) AS total_sales_tahun_berjalan,
|
|
M_BranchID, M_BranchName
|
|
FROM `nat_sales`
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
$where_tahun_berjalan
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY M_BranchID
|
|
ORDER BY M_BranchName ASC
|
|
";
|
|
|
|
$qry_tahun_berjalan = $this->db->query($sql_tahun_berjalan);
|
|
if (!$qry_tahun_berjalan) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_tahun_berjalan = $qry_tahun_berjalan->result_array();
|
|
$last_qry_tahun_berjalan = $this->db->last_query();
|
|
|
|
$list_scope = [];
|
|
$value_of_scope = [];
|
|
$result = [];
|
|
$list_color = [];
|
|
|
|
if (count($rst_tahun_berjalan) > 0) {
|
|
for ($i = 0; $i < count($rst_tahun_berjalan); $i++) {
|
|
$value_of_scope[] = $rst_tahun_berjalan[$i]['total_sales_tahun_berjalan'];
|
|
$list_scope[] = $rst_tahun_berjalan[$i]['M_BranchName'];
|
|
$list_color[] = $this->list_color_bar_chart($i, count($list_scope));
|
|
}
|
|
|
|
// // TESTING COLOR DEFAULT
|
|
// $x1 = [
|
|
// 'Bali Raya',
|
|
// 'Balikpapan Raya',
|
|
// 'Bandung Raya',
|
|
// 'Cirebon Raya',
|
|
// 'Jakarta Raya',
|
|
// 'Madiun Raya',
|
|
// 'Magelang Raya',
|
|
// 'Makassar Raya',
|
|
// 'Manado Raya',
|
|
// 'Medan Raya',
|
|
// 'Padang Raya',
|
|
// 'Palembang Raya',
|
|
// 'Pekanbaru Raya',
|
|
// 'Pontianak Raya',
|
|
// 'Prospek',
|
|
// 'Salatiga Raya',
|
|
// 'Semarang Raya',
|
|
// 'Sima Jember',
|
|
// 'Sima Kediri',
|
|
// 'Sima Malang',
|
|
// 'Surabaya Raya',
|
|
// 'Tasik Raya',
|
|
// 'Tegal Raya',
|
|
// 'Yogyaraya',
|
|
// 'Bali Raya',
|
|
// 'Balikpapan Raya',
|
|
// 'Bandung Raya',
|
|
// 'Cirebon Raya',
|
|
// 'Jakarta Raya',
|
|
// 'Madiun Raya',
|
|
// 'Magelang Raya',
|
|
// 'Makassar Raya',
|
|
// 'Manado Raya',
|
|
// 'Medan Raya',
|
|
// 'Padang Raya',
|
|
// 'Palembang Raya',
|
|
// 'Pekanbaru Raya',
|
|
// 'Pontianak Raya',
|
|
// 'Prospek',
|
|
// 'Salatiga Raya',
|
|
// 'Semarang Raya',
|
|
// 'Sima Jember',
|
|
// 'Sima Kediri',
|
|
// 'Sima Malang',
|
|
// 'Surabaya Raya',
|
|
// 'Tasik Raya',
|
|
// 'Tegal Raya',
|
|
// 'Yogyaraya',
|
|
// ];
|
|
|
|
// for ($i = 0; $i < count($x1); $i++) {
|
|
// // $value_of_scope[] = $rst_tahun_berjalan[$i]['total_sales_tahun_berjalan'];
|
|
// // $list_scope[] = $rst_tahun_berjalan[$i]['S_RegionalName'];
|
|
// $list_color[] = $this->list_color_bar_chart($i, count($x1));
|
|
// }
|
|
}
|
|
|
|
$result = array(
|
|
"value_of_scope" => $value_of_scope,
|
|
"list_scope" => $list_scope,
|
|
"bar_chart_color" => $list_color,
|
|
"last_qry_tahun_berjalan" => $last_qry_tahun_berjalan,
|
|
);
|
|
|
|
if ($debug != "") {
|
|
$result = array(
|
|
"value_of_scope" => $value_of_scope,
|
|
"list_scope" => $list_scope,
|
|
"bar_chart_color" => $list_color,
|
|
"last_qry_tahun_berjalan" => $last_qry_tahun_berjalan,
|
|
);
|
|
|
|
echo "<pre>";
|
|
print_r($result);
|
|
echo "</pre>";
|
|
exit;
|
|
}
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// analisa produk start
|
|
public function reg_analisa_produk_nat_subgroup($date_now, $regID, $filter_waktu)
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$date_now = date('Y-m-d');
|
|
$where_nat_subgroup = "";
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_nat_subgroup = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_nat_subgroup = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
|
|
// NAT_SUBGROUP
|
|
// $sql_natsubgroup = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
// CONCAT(Nat_SubGroupNat_GroupID,Nat_SubGroupCode) as code,
|
|
// Nat_SubGroupID, Nat_SubGroupName, '' as color
|
|
// FROM `nat_sales`
|
|
// join nat_group
|
|
// ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
// AND Nat_GroupIsActive = 'Y'
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// join nat_subgroup
|
|
// ON Nat_SalesNat_SubGroupID = Nat_SubGroupID
|
|
// AND Nat_SubGroupIsActive = 'Y'
|
|
// $where_nat_subgroup
|
|
// JOIN m_branch
|
|
// ON Nat_SalesM_BranchID = M_BranchID
|
|
// AND M_BranchIsActive = 'Y'
|
|
// AND `Nat_SalesYear` = YEAR('$date_now')
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// JOIN s_regional
|
|
// ON M_BranchS_RegionalID = S_RegionalID
|
|
// AND S_RegionalIsActive = 'Y'
|
|
// AND S_RegionalID = $regID
|
|
// GROUP BY Nat_SalesNat_SubGroupID
|
|
// order by Nat_GroupCode ASC, Nat_SubGroupCode ASC";
|
|
|
|
$sql_natsubgroup = "SELECT
|
|
ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
ifnull(SUM(`Nat_SalesCountPx`),0) AS total_count_pemeriksaan,
|
|
CONCAT(Nat_SubGroupNat_GroupID,Nat_SubGroupCode) as code,
|
|
Nat_SubGroupID, Nat_SubGroupName, '' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
join nat_subgroup
|
|
ON Nat_SalesNat_SubGroupID = Nat_SubGroupID
|
|
AND Nat_SubGroupIsActive = 'Y'
|
|
$where_nat_subgroup
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY Nat_SalesNat_SubGroupID
|
|
order by Nat_GroupCode ASC, Nat_SubGroupCode ASC";
|
|
|
|
$qry_natsubgroup = $this->db->query($sql_natsubgroup);
|
|
if (!$qry_natsubgroup) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_natsubgroup = $qry_natsubgroup->result_array();
|
|
$last_qry_natsubgroup = $this->db->last_query();
|
|
|
|
$result = [];
|
|
|
|
$total_value = 0.0;
|
|
$sum_natsubgroup = 0.0;
|
|
|
|
// Count Pemeriksaan
|
|
$total_value_pemeriksaan = 0.0;
|
|
$sum_natsubgroup_pemeriksaan = 0.0;
|
|
|
|
// calculate value persen
|
|
if (count($rst_natsubgroup) > 0) {
|
|
foreach ($rst_natsubgroup as $key => $value) {
|
|
$sum_natsubgroup += $value['total_sales_tahun_berjalan'];
|
|
$sum_natsubgroup_pemeriksaan += $value['total_count_pemeriksaan'];
|
|
}
|
|
}
|
|
|
|
$total_value = $sum_natsubgroup;
|
|
$total_value_pemeriksaan = $sum_natsubgroup_pemeriksaan;
|
|
|
|
|
|
if (count($rst_natsubgroup) > 0) {
|
|
foreach ($rst_natsubgroup as $key => $value) {
|
|
$persen_natsubgroup = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$persen_natsubgroup_pemeriksaan = round($value['total_count_pemeriksaan'] / $total_value_pemeriksaan * 100, 0);
|
|
|
|
$result[] = [
|
|
"code" => $value['code'],
|
|
"name" => $value['Nat_SubGroupName'],
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_format_rupiah_v2" => $this->formatAngkaJutaTanpaAkhiran($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_natsubgroup . ' %',
|
|
"count_pemeriksaan" => $value['total_count_pemeriksaan'],
|
|
"count_pemeriksaan_format" => $this->formatAngkaPemeriksaanPieChart($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_format_v2" => $this->formatAngkaPemeriksaanPieChartTanpaAkhiran($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_persen" => $persen_natsubgroup_pemeriksaan . ' %',
|
|
"rst_natsubgroup" => $rst_natsubgroup,
|
|
"last_qry_natsubgroup" => $last_qry_natsubgroup,
|
|
];
|
|
}
|
|
}
|
|
|
|
// $result = array(
|
|
// "lab" => $rst_lab,
|
|
// "last_qry_lab" => $last_qry_lab,
|
|
// "non_lab" => $rst_non_lab,
|
|
// "last_qry_non_lab" => $last_qry_non_lab
|
|
// );
|
|
|
|
return $result;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_analisa_produk_nat_group($date_now, $regID, $filter_waktu)
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$date_now = date('Y-m-d');
|
|
$where_filter_natgroup = "";
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_filter_natgroup = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_filter_natgroup = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
|
|
// NAT_GROUP
|
|
// $sql_natgroup = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
// Nat_GroupCode,
|
|
// Nat_GroupID, Nat_GroupName, '' as color
|
|
// FROM `nat_sales`
|
|
// join nat_group
|
|
// ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
// AND Nat_GroupIsActive = 'Y'
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// $where_filter_natgroup
|
|
// JOIN m_branch
|
|
// ON Nat_SalesM_BranchID = M_BranchID
|
|
// AND M_BranchIsActive = 'Y'
|
|
// AND `Nat_SalesYear` = YEAR('$date_now')
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// JOIN s_regional
|
|
// ON M_BranchS_RegionalID = S_RegionalID
|
|
// AND S_RegionalIsActive = 'Y'
|
|
// AND S_RegionalID = $regID
|
|
// GROUP BY Nat_SalesNat_GroupID
|
|
// order by Nat_GroupCode ASC";
|
|
|
|
$sql_natgroup = "SELECT
|
|
ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
ifnull(SUM(`Nat_SalesCountPx`),0) AS total_count_pemeriksaan,
|
|
Nat_GroupCode,
|
|
Nat_GroupID, Nat_GroupName, '' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
$where_filter_natgroup
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY Nat_SalesNat_GroupID
|
|
order by Nat_GroupCode ASC";
|
|
|
|
$qry_natgroup = $this->db->query($sql_natgroup);
|
|
if (!$qry_natgroup) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_natgroup = $qry_natgroup->result_array();
|
|
$last_qry_natgroup = $this->db->last_query();
|
|
|
|
$result = [];
|
|
|
|
$total_value = 0.0;
|
|
$sum_natgroup = 0.0;
|
|
|
|
// Count Pemeriksaan
|
|
$total_value_pemeriksaan = 0.0;
|
|
$sum_natgroup_pemeriksaan = 0.0;
|
|
|
|
// calculate value persen
|
|
if (count($rst_natgroup) > 0) {
|
|
foreach ($rst_natgroup as $key => $value) {
|
|
$sum_natgroup += $value['total_sales_tahun_berjalan'];
|
|
$sum_natgroup_pemeriksaan += $value['total_count_pemeriksaan'];
|
|
}
|
|
}
|
|
|
|
$total_value = $sum_natgroup;
|
|
$total_value_pemeriksaan = $sum_natgroup_pemeriksaan;
|
|
|
|
if (count($rst_natgroup) > 0) {
|
|
foreach ($rst_natgroup as $key => $value) {
|
|
$persen_natgroup = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$persen_natgroup_pemeriksaan = round($value['total_count_pemeriksaan'] / $total_value_pemeriksaan * 100, 0);
|
|
|
|
$result[] = [
|
|
"code" => $value['Nat_GroupCode'],
|
|
"name" => $value['Nat_GroupName'],
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_format_rupiah_v2" => $this->formatAngkaJutaTanpaAkhiran($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_natgroup . ' %',
|
|
"count_pemeriksaan" => $value['total_count_pemeriksaan'],
|
|
"count_pemeriksaan_format" => $this->formatAngkaPemeriksaanPieChart($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_format_v2" => $this->formatAngkaPemeriksaanPieChartTanpaAkhiran($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_persen" => $persen_natgroup_pemeriksaan . ' %',
|
|
"rst_natgroup" => $rst_natgroup,
|
|
"last_qry_natgroup" => $last_qry_natgroup,
|
|
];
|
|
}
|
|
}
|
|
|
|
// $result = array(
|
|
// "lab" => $rst_lab,
|
|
// "last_qry_lab" => $last_qry_lab,
|
|
// "non_lab" => $rst_non_lab,
|
|
// "last_qry_non_lab" => $last_qry_non_lab
|
|
// );
|
|
|
|
return $result;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_analisa_produk_lab_nonlab($date_now, $regID, $filter_waktu)
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$date_now = date('Y-m-d');
|
|
|
|
$where_lab = "";
|
|
$where_nonlab = "";
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_lab = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
$where_nonlab = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
$berjalan_a = date('Y-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_lab = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
|
|
$where_nonlab = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
|
|
// LAB
|
|
// $sql_lab = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
// '' as color
|
|
// FROM `nat_sales`
|
|
// join nat_group
|
|
// ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
// AND Nat_GroupIsActive = 'Y'
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// AND Nat_SalesNat_GroupID IN (1)
|
|
// $where_lab
|
|
// JOIN m_branch
|
|
// ON Nat_SalesM_BranchID = M_BranchID
|
|
// AND M_BranchIsActive = 'Y'
|
|
// AND `Nat_SalesYear` = YEAR('$date_now')
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// JOIN s_regional
|
|
// ON M_BranchS_RegionalID = S_RegionalID
|
|
// AND S_RegionalIsActive = 'Y'
|
|
// AND S_RegionalID = $regID
|
|
// GROUP BY S_RegionalID";
|
|
|
|
$sql_lab = "SELECT
|
|
ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
ifnull(SUM(`Nat_SalesCountPx`),0) AS total_count_pemeriksaan,
|
|
'' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
AND Nat_SalesNat_GroupID IN (1)
|
|
$where_lab
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY S_RegionalID";
|
|
|
|
$qry_lab = $this->db->query($sql_lab);
|
|
if (!$qry_lab) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_lab = $qry_lab->result_array();
|
|
$last_qry_lab = $this->db->last_query();
|
|
|
|
// NON LAB
|
|
// $sql_non_lab = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
// '' as color
|
|
// FROM `nat_sales`
|
|
// join nat_group
|
|
// ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
// AND Nat_GroupIsActive = 'Y'
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// AND Nat_SalesNat_GroupID NOT IN (1)
|
|
// $where_nonlab
|
|
// JOIN m_branch
|
|
// ON Nat_SalesM_BranchID = M_BranchID
|
|
// AND M_BranchIsActive = 'Y'
|
|
// AND `Nat_SalesYear` = YEAR('$date_now')
|
|
// AND Nat_SalesIsActive = 'Y'
|
|
// JOIN s_regional
|
|
// ON M_BranchS_RegionalID = S_RegionalID
|
|
// AND S_RegionalIsActive = 'Y'
|
|
// AND S_RegionalID = $regID
|
|
// GROUP BY S_RegionalID";
|
|
|
|
$sql_non_lab = "SELECT
|
|
ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
ifnull(SUM(`Nat_SalesCountPx`),0) AS total_count_pemeriksaan,
|
|
'' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
AND Nat_SalesNat_GroupID NOT IN (1)
|
|
$where_nonlab
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY S_RegionalID";
|
|
|
|
$qry_non_lab = $this->db->query($sql_non_lab);
|
|
if (!$qry_non_lab) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_non_lab = $qry_non_lab->result_array();
|
|
$last_qry_non_lab = $this->db->last_query();
|
|
|
|
$result = [];
|
|
$total_value = 0.0;
|
|
$sum_lab = 0.0;
|
|
$sum_non_lab = 0.0;
|
|
|
|
// Count pemeriksaan
|
|
$total_value_pemeriksaan = 0.0;
|
|
$sum_lab_pemeriksaan = 0.0;
|
|
$sum_non_lab_pemeriksaan = 0.0;
|
|
|
|
// calculate value persen
|
|
if (count($rst_lab) > 0) {
|
|
foreach ($rst_lab as $key => $value) {
|
|
$sum_lab += $value['total_sales_tahun_berjalan'];
|
|
$sum_lab_pemeriksaan += $value['total_count_pemeriksaan'];
|
|
}
|
|
}
|
|
|
|
if (count($rst_non_lab) > 0) {
|
|
foreach ($rst_non_lab as $key => $value) {
|
|
$sum_non_lab += $value['total_sales_tahun_berjalan'];
|
|
$sum_non_lab_pemeriksaan += $value['total_count_pemeriksaan'];
|
|
}
|
|
}
|
|
|
|
$total_value = $sum_lab + $sum_non_lab;
|
|
$total_value_pemeriksaan = $sum_lab_pemeriksaan + $sum_non_lab_pemeriksaan;
|
|
|
|
if (count($rst_lab) > 0) {
|
|
foreach ($rst_lab as $key => $value) {
|
|
$persen_lab = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$persen_lab_pemeriksaan = round($value['total_count_pemeriksaan'] / $total_value_pemeriksaan * 100, 0);
|
|
|
|
$result[] = [
|
|
"code" => "1",
|
|
"name" => "Laboratorium",
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_format_rupiah_v2" => $this->formatAngkaJutaTanpaAkhiran($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_lab . ' %',
|
|
"count_pemeriksaan" => $value['total_count_pemeriksaan'],
|
|
"count_pemeriksaan_format" => $this->formatAngkaPemeriksaanPieChart($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_format_v2" => $this->formatAngkaPemeriksaanPieChartTanpaAkhiran($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_persen" => $persen_lab_pemeriksaan . ' %',
|
|
"rst_lab" => $rst_lab,
|
|
"last_qry_lab" => $last_qry_lab,
|
|
];
|
|
}
|
|
}
|
|
|
|
if (count($rst_non_lab) > 0) {
|
|
foreach ($rst_non_lab as $key => $value) {
|
|
$persen_non_lab = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$persen_non_lab_pemeriksaan = round($value['total_count_pemeriksaan'] / $total_value_pemeriksaan * 100, 0);
|
|
|
|
$result[] = [
|
|
"code" => "2",
|
|
"name" => "Klinik",
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_format_rupiah_v2" => $this->formatAngkaJutaTanpaAkhiran($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_non_lab . ' %',
|
|
"count_pemeriksaan" => $value['total_count_pemeriksaan'],
|
|
"count_pemeriksaan_format" => $this->formatAngkaPemeriksaanPieChart($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_format_v2" => $this->formatAngkaPemeriksaanPieChartTanpaAkhiran($value['total_count_pemeriksaan']),
|
|
"count_pemeriksaan_persen" => $persen_non_lab_pemeriksaan . ' %',
|
|
"rst_non_lab" => $rst_non_lab,
|
|
"last_qry_non_lab" => $last_qry_non_lab
|
|
];
|
|
}
|
|
}
|
|
|
|
// $result = array(
|
|
// "lab" => $rst_lab,
|
|
// "last_qry_lab" => $last_qry_lab,
|
|
// "non_lab" => $rst_non_lab,
|
|
// "last_qry_non_lab" => $last_qry_non_lab
|
|
// );
|
|
|
|
return $result;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_analisa_produk_pie_chart($debug = "", $debugRegID = "0", $filter_waktu_debug_prm = "")
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$prm = $this->sys_input;
|
|
$regID = "0";
|
|
$filter_waktu = "";
|
|
|
|
if (isset($prm['filter_scope'])) {
|
|
$regID = $prm["filter_scope"];
|
|
}
|
|
|
|
if (isset($prm['filter_waktu'])) {
|
|
$filter_waktu = $prm["filter_waktu"];
|
|
}
|
|
|
|
// if ($debugRegID != "0") {
|
|
// $regID = $debugRegID;
|
|
// }
|
|
|
|
// if($filter_waktu_debug_prm != ""){
|
|
// $filter_waktu = $filter_waktu_debug_prm;
|
|
// }
|
|
|
|
// untuk debug
|
|
if ($debug != "") {
|
|
$regID = $debugRegID;
|
|
$filter_waktu = $filter_waktu_debug_prm;
|
|
}
|
|
|
|
$date_now = date('Y-m-d');
|
|
$result = [];
|
|
|
|
$data_lab_non_lab = [];
|
|
$data_natgroup = [];
|
|
$data_natsubgroup = [];
|
|
|
|
// lab dan nonlab - tingkat 1
|
|
$analisaProdukLabNonLab = $this->reg_analisa_produk_lab_nonlab($date_now, $regID, $filter_waktu);
|
|
|
|
// nat group - tingkat 2
|
|
$analisaProdukNatGroup = $this->reg_analisa_produk_nat_group($date_now, $regID, $filter_waktu);
|
|
|
|
// nat subgroup - tingkat 3
|
|
$analisaProdukNatSubGroup = $this->reg_analisa_produk_nat_subgroup($date_now, $regID, $filter_waktu);
|
|
|
|
// klu data kosong set array kosong
|
|
if (count($analisaProdukLabNonLab) < 1) {
|
|
$analisaProdukLabNonLab = [];
|
|
}
|
|
|
|
if (count($analisaProdukNatGroup) < 1) {
|
|
$analisaProdukNatGroup = [];
|
|
}
|
|
|
|
if (count($analisaProdukNatSubGroup) < 1) {
|
|
$analisaProdukNatSubGroup = [];
|
|
}
|
|
|
|
// analisa produk lab dan nonlab
|
|
for ($i = 0; $i < count($analisaProdukLabNonLab); $i++) {
|
|
$data_lab_non_lab[$i]["level"] = "Level 1";
|
|
$data_lab_non_lab[$i]["code"] = $analisaProdukLabNonLab[$i]["code"];
|
|
$data_lab_non_lab[$i]["name"] = $analisaProdukLabNonLab[$i]["name"];
|
|
$data_lab_non_lab[$i]["value"] = $analisaProdukLabNonLab[$i]["value"];
|
|
$data_lab_non_lab[$i]['color'] = $this->list_color_pie_chart($i, 'tingkat1', count($analisaProdukLabNonLab));
|
|
$data_lab_non_lab[$i]["value_format_rupiah"] = $analisaProdukLabNonLab[$i]["value_format_rupiah"];
|
|
$data_lab_non_lab[$i]["value_format_rupiah_v2"] = $analisaProdukLabNonLab[$i]["value_format_rupiah_v2"];
|
|
$data_lab_non_lab[$i]["value_persen"] = $analisaProdukLabNonLab[$i]["value_persen"];
|
|
$data_lab_non_lab[$i]["count_pemeriksaan"] = $analisaProdukLabNonLab[$i]["count_pemeriksaan"];
|
|
$data_lab_non_lab[$i]["count_pemeriksaan_format"] = $analisaProdukLabNonLab[$i]["count_pemeriksaan_format"];
|
|
$data_lab_non_lab[$i]["count_pemeriksaan_format_v2"] = $analisaProdukLabNonLab[$i]["count_pemeriksaan_format_v2"];
|
|
$data_lab_non_lab[$i]["count_pemeriksaan_persen"] = $analisaProdukLabNonLab[$i]["count_pemeriksaan_persen"];
|
|
}
|
|
|
|
// analisa produk nat group
|
|
for ($i = 0; $i < count($analisaProdukNatGroup); $i++) {
|
|
$data_natgroup[$i]["level"] = "Level 2";
|
|
$data_natgroup[$i]["code"] = $analisaProdukNatGroup[$i]["code"];
|
|
$data_natgroup[$i]["name"] = $analisaProdukNatGroup[$i]["name"];
|
|
$data_natgroup[$i]["value"] = $analisaProdukNatGroup[$i]["value"];
|
|
$data_natgroup[$i]['color'] = $this->list_color_pie_chart($i, 'tingkat2', count($analisaProdukNatGroup));
|
|
$data_natgroup[$i]["value_format_rupiah"] = $analisaProdukNatGroup[$i]["value_format_rupiah"];
|
|
$data_natgroup[$i]["value_format_rupiah_v2"] = $analisaProdukNatGroup[$i]["value_format_rupiah_v2"];
|
|
$data_natgroup[$i]["value_persen"] = $analisaProdukNatGroup[$i]["value_persen"];
|
|
$data_natgroup[$i]["count_pemeriksaan"] = $analisaProdukNatGroup[$i]["count_pemeriksaan"];
|
|
$data_natgroup[$i]["count_pemeriksaan_format"] = $analisaProdukNatGroup[$i]["count_pemeriksaan_format"];
|
|
$data_natgroup[$i]["count_pemeriksaan_format_v2"] = $analisaProdukNatGroup[$i]["count_pemeriksaan_format_v2"];
|
|
$data_natgroup[$i]["count_pemeriksaan_persen"] = $analisaProdukNatGroup[$i]["count_pemeriksaan_persen"];
|
|
}
|
|
|
|
// analisa produk nat_subgroup
|
|
for ($i = 0; $i < count($analisaProdukNatSubGroup); $i++) {
|
|
$data_natsubgroup[$i]["level"] = "Level 3";
|
|
$data_natsubgroup[$i]["code"] = $analisaProdukNatSubGroup[$i]["code"];
|
|
$data_natsubgroup[$i]["name"] = $analisaProdukNatSubGroup[$i]["name"];
|
|
$data_natsubgroup[$i]["value"] = $analisaProdukNatSubGroup[$i]["value"];
|
|
$data_natsubgroup[$i]['color'] = $this->list_color_pie_chart($i, 'tingkat3', count($analisaProdukNatSubGroup));
|
|
$data_natsubgroup[$i]["value_format_rupiah"] = $analisaProdukNatSubGroup[$i]["value_format_rupiah"];
|
|
$data_natsubgroup[$i]["value_format_rupiah_v2"] = $analisaProdukNatSubGroup[$i]["value_format_rupiah_v2"];
|
|
$data_natsubgroup[$i]["value_persen"] = $analisaProdukNatSubGroup[$i]["value_persen"];
|
|
$data_natsubgroup[$i]["count_pemeriksaan"] = $analisaProdukNatSubGroup[$i]["count_pemeriksaan"];
|
|
$data_natsubgroup[$i]["count_pemeriksaan_format"] = $analisaProdukNatSubGroup[$i]["count_pemeriksaan_format"];
|
|
$data_natsubgroup[$i]["count_pemeriksaan_format_v2"] = $analisaProdukNatSubGroup[$i]["count_pemeriksaan_format_v2"];
|
|
$data_natsubgroup[$i]["count_pemeriksaan_persen"] = $analisaProdukNatSubGroup[$i]["count_pemeriksaan_persen"];
|
|
}
|
|
|
|
$result = [
|
|
"analisaProdukLabNonLab" => $data_lab_non_lab,
|
|
"analisaProdukNatGroup" => $data_natgroup,
|
|
"analisaProdukNatSubGroup" => $data_natsubgroup,
|
|
"last_qry_lab" => $analisaProdukLabNonLab[0]['last_qry_lab'],
|
|
"last_qry_non_lab" => $analisaProdukLabNonLab[1]['last_qry_non_lab'],
|
|
"last_qry_natgroup" => $analisaProdukNatGroup[0]['last_qry_natgroup'],
|
|
"last_qry_natsubgroup" => $analisaProdukNatSubGroup[0]['last_qry_natsubgroup']
|
|
];
|
|
|
|
if ($debug != "") {
|
|
$result_x = array(
|
|
"analisaProdukLabNonLab" => $analisaProdukLabNonLab,
|
|
"analisaProdukNatGroup" => $analisaProdukNatGroup,
|
|
"analisaProdukNatSubGroup" => $data_natsubgroup,
|
|
"last_qry_lab" => $analisaProdukLabNonLab[0]['last_qry_lab'],
|
|
"last_qry_non_lab" => $analisaProdukLabNonLab[1]['last_qry_non_lab'],
|
|
"last_qry_natgroup" => $analisaProdukNatGroup[0]['last_qry_natgroup'],
|
|
"last_qry_natsubgroup" => $analisaProdukNatSubGroup[0]['last_qry_natsubgroup']
|
|
);
|
|
|
|
echo "<pre>";
|
|
print_r($result_x);
|
|
echo "</pre>";
|
|
exit;
|
|
}
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
// analisa produk end
|
|
|
|
// regional end
|
|
|
|
// try
|
|
// analisa produk start
|
|
public function reg_analisa_produk_nat_subgroup_x($date_now, $regID, $filter_waktu)
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
// $date_now = date('Y-m-d');
|
|
|
|
$date_now = date('2023-01-05');
|
|
$where_nat_subgroup = "";
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_nat_subgroup = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
// $berjalan_a = date('Y-01-01');
|
|
|
|
$berjalan_a = date('2023-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_nat_subgroup = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
|
|
// NAT_SUBGROUP
|
|
$sql_natsubgroup = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
CONCAT(Nat_SubGroupNat_GroupID,Nat_SubGroupCode) as code,
|
|
Nat_SubGroupID, Nat_SubGroupName, '' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
join nat_subgroup
|
|
ON Nat_SalesNat_SubGroupID = Nat_SubGroupID
|
|
AND Nat_SubGroupIsActive = 'Y'
|
|
$where_nat_subgroup
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY Nat_SalesNat_SubGroupID
|
|
order by Nat_GroupCode ASC, Nat_SubGroupCode ASC";
|
|
|
|
$qry_natsubgroup = $this->db->query($sql_natsubgroup);
|
|
if (!$qry_natsubgroup) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_natsubgroup = $qry_natsubgroup->result_array();
|
|
$last_qry_natsubgroup = $this->db->last_query();
|
|
|
|
$result = [];
|
|
|
|
$total_value = 0.0;
|
|
$sum_natsubgroup = 0.0;
|
|
|
|
// calculate value persen
|
|
if (count($rst_natsubgroup) > 0) {
|
|
foreach ($rst_natsubgroup as $key => $value) {
|
|
$sum_natsubgroup += $value['total_sales_tahun_berjalan'];
|
|
}
|
|
}
|
|
|
|
$total_value = $sum_natsubgroup;
|
|
|
|
|
|
if (count($rst_natsubgroup) > 0) {
|
|
foreach ($rst_natsubgroup as $key => $value) {
|
|
$persen_natsubgroup = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$result[] = [
|
|
"code" => $value['code'],
|
|
"name" => $value['Nat_SubGroupName'],
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_natsubgroup . ' %',
|
|
"rst_natsubgroup" => $rst_natsubgroup,
|
|
"last_qry_natsubgroup" => $last_qry_natsubgroup,
|
|
];
|
|
}
|
|
}
|
|
|
|
// $result = array(
|
|
// "lab" => $rst_lab,
|
|
// "last_qry_lab" => $last_qry_lab,
|
|
// "non_lab" => $rst_non_lab,
|
|
// "last_qry_non_lab" => $last_qry_non_lab
|
|
// );
|
|
|
|
return $result;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_analisa_produk_nat_group_x($date_now, $regID, $filter_waktu)
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
// $date_now = date('Y-m-d');
|
|
|
|
$date_now = date('2023-01-05');
|
|
$where_filter_natgroup = "";
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_filter_natgroup = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
// $berjalan_a = date('Y-01-01');
|
|
|
|
$berjalan_a = date('2023-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_filter_natgroup = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
|
|
// NAT_GROUP
|
|
$sql_natgroup = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
Nat_GroupCode,
|
|
Nat_GroupID, Nat_GroupName, '' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
$where_filter_natgroup
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY Nat_SalesNat_GroupID
|
|
order by Nat_GroupCode ASC";
|
|
|
|
$qry_natgroup = $this->db->query($sql_natgroup);
|
|
if (!$qry_natgroup) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_natgroup = $qry_natgroup->result_array();
|
|
$last_qry_natgroup = $this->db->last_query();
|
|
|
|
$result = [];
|
|
|
|
$total_value = 0.0;
|
|
$sum_natgroup = 0.0;
|
|
|
|
// calculate value persen
|
|
if (count($rst_natgroup) > 0) {
|
|
foreach ($rst_natgroup as $key => $value) {
|
|
$sum_natgroup += $value['total_sales_tahun_berjalan'];
|
|
}
|
|
}
|
|
|
|
$total_value = $sum_natgroup;
|
|
|
|
if (count($rst_natgroup) > 0) {
|
|
foreach ($rst_natgroup as $key => $value) {
|
|
$persen_natgroup = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$result[] = [
|
|
"code" => $value['Nat_GroupCode'],
|
|
"name" => $value['Nat_GroupName'],
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_natgroup . ' %',
|
|
"rst_natgroup" => $rst_natgroup,
|
|
"last_qry_natgroup" => $last_qry_natgroup,
|
|
];
|
|
}
|
|
}
|
|
|
|
// $result = array(
|
|
// "lab" => $rst_lab,
|
|
// "last_qry_lab" => $last_qry_lab,
|
|
// "non_lab" => $rst_non_lab,
|
|
// "last_qry_non_lab" => $last_qry_non_lab
|
|
// );
|
|
|
|
return $result;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_analisa_produk_lab_nonlab_x($date_now, $regID, $filter_waktu)
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
// $date_now = date('Y-m-d');
|
|
|
|
$date_now = date('2023-01-05');
|
|
|
|
$where_lab = "";
|
|
$where_nonlab = "";
|
|
|
|
if ($filter_waktu != "") {
|
|
if ($filter_waktu != 'YTD') {
|
|
// bukan Year To Date
|
|
|
|
if (strpos($filter_waktu, 'Q') !== false || strpos($filter_waktu, 'q') !== false) {
|
|
$quarterResult = $this->getQuarterByFilter($filter_waktu);
|
|
if ($quarterResult != '-') {
|
|
$where_lab = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
$where_nonlab = " AND Nat_SalesQuarter = ($quarterResult)
|
|
AND `Nat_SalesYear` = year('$date_now')";
|
|
}
|
|
}
|
|
} else {
|
|
if ($filter_waktu == "YTD") {
|
|
// jika Year To Date
|
|
// klu berjalan, 1 januari 2023 - 4 oktober 2023 ( date now )
|
|
// klu end date year - 1 , 1 januari 2022 - (date now - 1)
|
|
|
|
// $berjalan_a = date('Y-01-01');
|
|
$berjalan_a = date('2023-01-01');
|
|
|
|
// berjalan
|
|
// Nat_SalesDay >= '2023-01-01' AND Nat_SalesDay <= '2023-10-04'
|
|
// Nat_SalesYear` = year('$date_now')
|
|
// AND Nat_SalesDay >= '$berjalan_a' AND Nat_SalesDay <= '$date_now'
|
|
$where_lab = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
|
|
$where_nonlab = " AND Nat_SalesIsActive = 'Y'
|
|
AND `Nat_SalesYear` = year('$date_now')
|
|
AND (`Nat_SalesDay` >= '$berjalan_a' AND `Nat_SalesDay` <= '$date_now')";
|
|
}
|
|
}
|
|
}
|
|
|
|
// LAB
|
|
$sql_lab = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
'' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
AND Nat_SalesNat_GroupID IN (1)
|
|
$where_lab
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY S_RegionalID";
|
|
|
|
$qry_lab = $this->db->query($sql_lab);
|
|
if (!$qry_lab) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_lab = $qry_lab->result_array();
|
|
$last_qry_lab = $this->db->last_query();
|
|
|
|
// NON LAB
|
|
$sql_non_lab = "SELECT ifnull(SUM(`Nat_SalesTotal`),0) AS total_sales_tahun_berjalan,
|
|
'' as color
|
|
FROM `nat_sales`
|
|
join nat_group
|
|
ON Nat_SalesNat_GroupID = Nat_GroupID
|
|
AND Nat_GroupIsActive = 'Y'
|
|
AND Nat_SalesIsActive = 'Y'
|
|
AND Nat_SalesNat_GroupID NOT IN (1)
|
|
$where_nonlab
|
|
JOIN m_branch
|
|
ON Nat_SalesM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
AND `Nat_SalesYear` = YEAR('$date_now')
|
|
AND Nat_SalesIsActive = 'Y'
|
|
JOIN s_regional
|
|
ON M_BranchS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
AND S_RegionalID = $regID
|
|
GROUP BY S_RegionalID";
|
|
|
|
$qry_non_lab = $this->db->query($sql_non_lab);
|
|
if (!$qry_non_lab) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$rst_non_lab = $qry_non_lab->result_array();
|
|
$last_qry_non_lab = $this->db->last_query();
|
|
|
|
$result = [];
|
|
$total_value = 0.0;
|
|
$sum_lab = 0.0;
|
|
$sum_non_lab = 0.0;
|
|
|
|
// calculate value persen
|
|
if (count($rst_lab) > 0) {
|
|
foreach ($rst_lab as $key => $value) {
|
|
$sum_lab += $value['total_sales_tahun_berjalan'];
|
|
}
|
|
}
|
|
|
|
if (count($rst_non_lab) > 0) {
|
|
foreach ($rst_non_lab as $key => $value) {
|
|
$sum_non_lab += $value['total_sales_tahun_berjalan'];
|
|
}
|
|
}
|
|
|
|
$total_value = $sum_lab + $sum_non_lab;
|
|
|
|
if (count($rst_lab) > 0) {
|
|
foreach ($rst_lab as $key => $value) {
|
|
$persen_lab = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$result[] = [
|
|
"code" => "1",
|
|
"name" => "Laboratorium",
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_lab . ' %',
|
|
"rst_lab" => $rst_lab,
|
|
"last_qry_lab" => $last_qry_lab,
|
|
];
|
|
}
|
|
}
|
|
|
|
if (count($rst_non_lab) > 0) {
|
|
foreach ($rst_non_lab as $key => $value) {
|
|
$persen_non_lab = round($value['total_sales_tahun_berjalan'] / $total_value * 100, 0);
|
|
$result[] = [
|
|
"code" => "2",
|
|
"name" => "Klinik",
|
|
"value" => $value['total_sales_tahun_berjalan'],
|
|
"color" => "",
|
|
"value_format_rupiah" => $this->formatAngkaJuta($value['total_sales_tahun_berjalan']),
|
|
"value_persen" => $persen_non_lab . ' %',
|
|
"rst_non_lab" => $rst_non_lab,
|
|
"last_qry_non_lab" => $last_qry_non_lab
|
|
];
|
|
}
|
|
}
|
|
|
|
// $result = array(
|
|
// "lab" => $rst_lab,
|
|
// "last_qry_lab" => $last_qry_lab,
|
|
// "non_lab" => $rst_non_lab,
|
|
// "last_qry_non_lab" => $last_qry_non_lab
|
|
// );
|
|
|
|
return $result;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function reg_analisa_produk_pie_chart_x($debug = "", $debugRegID = "0", $filter_waktu_debug_prm = "")
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
$prm = $this->sys_input;
|
|
$regID = "0";
|
|
$filter_waktu = "";
|
|
|
|
if (isset($prm['filter_scope'])) {
|
|
$regID = $prm["filter_scope"];
|
|
}
|
|
|
|
if (isset($prm['filter_waktu'])) {
|
|
$filter_waktu = $prm["filter_waktu"];
|
|
}
|
|
|
|
// if ($debugRegID != "0") {
|
|
// $regID = $debugRegID;
|
|
// }
|
|
|
|
// if($filter_waktu_debug_prm != ""){
|
|
// $filter_waktu = $filter_waktu_debug_prm;
|
|
// }
|
|
|
|
// untuk debug
|
|
if ($debug != "") {
|
|
$regID = $debugRegID;
|
|
$filter_waktu = $filter_waktu_debug_prm;
|
|
}
|
|
|
|
$date_now = date('Y-m-d');
|
|
$result = [];
|
|
|
|
$data_lab_non_lab = [];
|
|
$data_natgroup = [];
|
|
$data_natsubgroup = [];
|
|
|
|
// lab dan nonlab - tingkat 1
|
|
$analisaProdukLabNonLab = $this->reg_analisa_produk_lab_nonlab_x($date_now, $regID, $filter_waktu);
|
|
|
|
// nat group - tingkat 2
|
|
$analisaProdukNatGroup = $this->reg_analisa_produk_nat_group_x($date_now, $regID, $filter_waktu);
|
|
|
|
// nat subgroup - tingkat 3
|
|
$analisaProdukNatSubGroup = $this->reg_analisa_produk_nat_subgroup_x($date_now, $regID, $filter_waktu);
|
|
|
|
// klu data kosong set array kosong
|
|
if (count($analisaProdukLabNonLab) < 1) {
|
|
$analisaProdukLabNonLab = [];
|
|
}
|
|
|
|
if (count($analisaProdukNatGroup) < 1) {
|
|
$analisaProdukNatGroup = [];
|
|
}
|
|
|
|
if (count($analisaProdukNatSubGroup) < 1) {
|
|
$analisaProdukNatSubGroup = [];
|
|
}
|
|
|
|
// analisa produk lab dan nonlab
|
|
for ($i = 0; $i < count($analisaProdukLabNonLab); $i++) {
|
|
$data_lab_non_lab[$i]["level"] = "Level 1";
|
|
$data_lab_non_lab[$i]["code"] = $analisaProdukLabNonLab[$i]["code"];
|
|
$data_lab_non_lab[$i]["name"] = $analisaProdukLabNonLab[$i]["name"];
|
|
$data_lab_non_lab[$i]["value"] = $analisaProdukLabNonLab[$i]["value"];
|
|
$data_lab_non_lab[$i]['color'] = $this->list_color_pie_chart($i, 'tingkat1', count($analisaProdukLabNonLab));
|
|
$data_lab_non_lab[$i]["value_format_rupiah"] = $analisaProdukLabNonLab[$i]["value_format_rupiah"];
|
|
$data_lab_non_lab[$i]["value_persen"] = $analisaProdukLabNonLab[$i]["value_persen"];
|
|
}
|
|
|
|
// analisa produk nat group
|
|
for ($i = 0; $i < count($analisaProdukNatGroup); $i++) {
|
|
$data_natgroup[$i]["level"] = "Level 2";
|
|
$data_natgroup[$i]["code"] = $analisaProdukNatGroup[$i]["code"];
|
|
$data_natgroup[$i]["name"] = $analisaProdukNatGroup[$i]["name"];
|
|
$data_natgroup[$i]["value"] = $analisaProdukNatGroup[$i]["value"];
|
|
$data_natgroup[$i]['color'] = $this->list_color_pie_chart($i, 'tingkat2', count($analisaProdukNatGroup));
|
|
$data_natgroup[$i]["value_format_rupiah"] = $analisaProdukNatGroup[$i]["value_format_rupiah"];
|
|
$data_natgroup[$i]["value_persen"] = $analisaProdukNatGroup[$i]["value_persen"];
|
|
}
|
|
|
|
// analisa produk nat_subgroup
|
|
for ($i = 0; $i < count($analisaProdukNatSubGroup); $i++) {
|
|
$data_natsubgroup[$i]["level"] = "Level 3";
|
|
$data_natsubgroup[$i]["code"] = $analisaProdukNatSubGroup[$i]["code"];
|
|
$data_natsubgroup[$i]["name"] = $analisaProdukNatSubGroup[$i]["name"];
|
|
$data_natsubgroup[$i]["value"] = $analisaProdukNatSubGroup[$i]["value"];
|
|
$data_natsubgroup[$i]['color'] = $this->list_color_pie_chart($i, 'tingkat3', count($analisaProdukNatSubGroup));
|
|
$data_natsubgroup[$i]["value_format_rupiah"] = $analisaProdukNatSubGroup[$i]["value_format_rupiah"];
|
|
$data_natsubgroup[$i]["value_persen"] = $analisaProdukNatSubGroup[$i]["value_persen"];
|
|
}
|
|
|
|
$result = [
|
|
"analisaProdukLabNonLab" => $data_lab_non_lab,
|
|
"analisaProdukNatGroup" => $data_natgroup,
|
|
"analisaProdukNatSubGroup" => $data_natsubgroup,
|
|
"last_qry_lab" => $analisaProdukLabNonLab[0]['last_qry_lab'],
|
|
"last_qry_non_lab" => $analisaProdukLabNonLab[1]['last_qry_non_lab'],
|
|
"last_qry_natgroup" => $analisaProdukNatGroup[0]['last_qry_natgroup'],
|
|
"last_qry_natsubgroup" => $analisaProdukNatSubGroup[0]['last_qry_natsubgroup']
|
|
];
|
|
|
|
if ($debug != "") {
|
|
$result_x = array(
|
|
"analisaProdukLabNonLab" => $analisaProdukLabNonLab,
|
|
"analisaProdukNatGroup" => $analisaProdukNatGroup,
|
|
"analisaProdukNatSubGroup" => $data_natsubgroup,
|
|
"last_qry_lab" => $analisaProdukLabNonLab[0]['last_qry_lab'],
|
|
"last_qry_non_lab" => $analisaProdukLabNonLab[1]['last_qry_non_lab'],
|
|
"last_qry_natgroup" => $analisaProdukNatGroup[0]['last_qry_natgroup'],
|
|
"last_qry_natsubgroup" => $analisaProdukNatSubGroup[0]['last_qry_natsubgroup']
|
|
);
|
|
|
|
echo "<pre>";
|
|
print_r($result_x);
|
|
echo "</pre>";
|
|
exit;
|
|
}
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
// analisa produk end
|
|
}
|