fix data and dashboard count and sum
This commit is contained in:
66
app/Console/Commands/SyncDashboardPbg.php
Normal file
66
app/Console/Commands/SyncDashboardPbg.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use App\Services\ServiceGoogleSheet;
|
||||
use App\Models\BigdataResume;
|
||||
use App\Models\ImportDatasource;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class SyncDashboardPbg extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'app:sync-dashboard-pbg';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$import_datasource = ImportDatasource::create([
|
||||
'message' => 'Initiating sync dashboard pbg...',
|
||||
'response_body' => null,
|
||||
'status' => 'processing',
|
||||
'start_time' => now(),
|
||||
'failed_uuid' => null
|
||||
]);
|
||||
|
||||
try {
|
||||
$service = new ServiceGoogleSheet();
|
||||
|
||||
$data_setting_result = $service->get_big_resume_data();
|
||||
Log::info('Data setting result: ' . json_encode($data_setting_result));
|
||||
BigdataResume::generateResumeData($import_datasource->id, "simbg", $data_setting_result);
|
||||
|
||||
$import_datasource->update([
|
||||
'status' => 'success',
|
||||
'message' => 'Sync dashboard pbg completed successfully.',
|
||||
'finish_time' => now()
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
Log::error('Sync dashboard pbg failed: ' . $e->getMessage(), ['trace' => $e->getTraceAsString()]);
|
||||
|
||||
// Update status to failed
|
||||
if (isset($import_datasource)) {
|
||||
$import_datasource->update([
|
||||
'status' => 'failed',
|
||||
'message' => 'Sync dashboard pbg failed.',
|
||||
'finish_time' => now()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -23,14 +23,15 @@ class BigDataResumeController extends Controller
|
||||
{
|
||||
try{
|
||||
$filterDate = $request->get("filterByDate");
|
||||
$type = $request->get("type");
|
||||
|
||||
if (!$filterDate || $filterDate === "latest") {
|
||||
$big_data_resume = BigdataResume::where('year', 'leader')->latest()->first();
|
||||
$big_data_resume = BigdataResume::where('year', $type)->latest()->first();
|
||||
if (!$big_data_resume) {
|
||||
return $this->response_empty_resume();
|
||||
}
|
||||
} else {
|
||||
$big_data_resume = BigdataResume::where('year', 'leader')
|
||||
$big_data_resume = BigdataResume::where('year', $type)
|
||||
->whereDate('created_at', $filterDate)
|
||||
->orderBy('id', 'desc')
|
||||
->first();
|
||||
|
||||
@@ -24,7 +24,8 @@ class RequestAssignmentController extends Controller
|
||||
$query = PbgTask::with([
|
||||
'attachments' => function ($q) {
|
||||
$q->whereIn('pbg_type', ['berita_acara', 'bukti_bayar']);
|
||||
}
|
||||
},
|
||||
'pbg_task_retributions'
|
||||
])->orderBy('id', 'desc');
|
||||
|
||||
if ($request->has('filter') && !empty($request->get('filter'))) {
|
||||
@@ -34,7 +35,8 @@ class RequestAssignmentController extends Controller
|
||||
case 'non-business':
|
||||
$query->where(function ($q) {
|
||||
$q->where(function ($q2) {
|
||||
$q2->whereRaw("LOWER(function_type) != ?", ['sebagai tempat usaha'])
|
||||
$q2->whereRaw("LOWER(function_type) NOT LIKE ?", ['%fungsi usaha%'])
|
||||
->whereRaw("LOWER(function_type) NOT LIKE ?", ['%sebagai tempat usaha%'])
|
||||
->whereRaw("status != ?", 20)
|
||||
->orWhereNull('function_type');
|
||||
});
|
||||
@@ -43,8 +45,11 @@ class RequestAssignmentController extends Controller
|
||||
|
||||
case 'business':
|
||||
$query->where(function ($q) {
|
||||
$q->whereRaw("LOWER(function_type) = ?", ['sebagai tempat usaha'])
|
||||
->whereRaw("status != ?", 20);
|
||||
$q->where(function ($q2) {
|
||||
$q2->whereRaw("LOWER(function_type) LIKE ?", ['%fungsi usaha%'])
|
||||
->orWhereRaw("LOWER(function_type) LIKE ?", ['%sebagai tempat usaha%'])
|
||||
->whereRaw("status != ?", 20);
|
||||
});
|
||||
});
|
||||
break;
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ class RequestAssignmentResouce extends JsonResource
|
||||
->where('pbg_type', 'bukti_bayar')
|
||||
->sortByDesc('created_at')
|
||||
->first(),
|
||||
'pbg_task_retributions' => $this->pbg_task_retributions,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,8 +50,8 @@ class ScrapingDataJob implements ShouldQueue
|
||||
]);
|
||||
|
||||
// Run the scraping services
|
||||
// $service_google_sheet->run_service();
|
||||
// $service_pbg_task->run_service();
|
||||
$service_google_sheet->run_service();
|
||||
$service_pbg_task->run_service();
|
||||
try{
|
||||
$service_tab_pbg_task->run_service();
|
||||
}catch(\Exception $e){
|
||||
|
||||
@@ -38,28 +38,30 @@ class BigdataResume extends Model
|
||||
}
|
||||
|
||||
public static function generateResumeData($import_datasource_id, $year, $data_setting){
|
||||
$stats = PbgTask::with(['googleSheet', 'pbg_task_retributions'])
|
||||
$stats = PbgTask::with(['pbg_task_retributions'])
|
||||
->leftJoin('pbg_task_retributions as ptr', 'pbg_task.uuid', '=', 'ptr.pbg_task_uid')
|
||||
->leftJoin('pbg_task_google_sheet as ptgs', 'pbg_task.registration_number', '=', 'ptgs.no_registrasi')
|
||||
->when($year !== 'all', function ($query) use ($year) {
|
||||
$query->whereYear('pbg_task.task_created_at', (int) $year);
|
||||
})
|
||||
->selectRaw("
|
||||
COUNT(CASE WHEN LOWER(TRIM(ptgs.status_verifikasi)) = 'selesai verifikasi' THEN 1 END) AS verified_count,
|
||||
SUM(CASE WHEN LOWER(TRIM(ptgs.status_verifikasi)) = 'selesai verifikasi' THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS verified_total,
|
||||
COUNT(CASE WHEN pbg_task.status = 20 THEN 1 END) AS verified_count,
|
||||
SUM(CASE WHEN pbg_task.status = 20 THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS verified_total,
|
||||
|
||||
COUNT(CASE WHEN LOWER(TRIM(ptgs.status_verifikasi)) != 'selesai verifikasi' OR ptgs.status_verifikasi IS NULL THEN 1 END) AS non_verified_count,
|
||||
SUM(CASE WHEN LOWER(TRIM(ptgs.status_verifikasi)) != 'selesai verifikasi' OR ptgs.status_verifikasi IS NULL THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS non_verified_total,
|
||||
COUNT(CASE WHEN pbg_task.status != 20 OR pbg_task.status IS NULL THEN 1 END) AS non_verified_count,
|
||||
SUM(CASE WHEN pbg_task.status != 20 OR pbg_task.status IS NULL THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS non_verified_total,
|
||||
|
||||
COUNT(CASE WHEN (LOWER(TRIM(ptgs.status_verifikasi)) != 'selesai verifikasi' OR ptgs.status_verifikasi IS NULL)
|
||||
AND LOWER(TRIM(pbg_task.function_type)) = 'sebagai tempat usaha' THEN 1 END) AS business_count,
|
||||
SUM(CASE WHEN (LOWER(TRIM(ptgs.status_verifikasi)) != 'selesai verifikasi' OR ptgs.status_verifikasi IS NULL)
|
||||
AND LOWER(TRIM(pbg_task.function_type)) = 'sebagai tempat usaha' THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS business_total,
|
||||
COUNT(CASE WHEN (LOWER(TRIM(pbg_task.function_type)) LIKE '%fungsi usaha%'
|
||||
OR LOWER(TRIM(pbg_task.function_type)) LIKE '%sebagai tempat usaha%')
|
||||
AND pbg_task.status != 20 THEN 1 END) AS business_count,
|
||||
SUM(CASE WHEN (LOWER(TRIM(pbg_task.function_type)) LIKE '%fungsi usaha%'
|
||||
OR LOWER(TRIM(pbg_task.function_type)) LIKE '%sebagai tempat usaha%')
|
||||
AND pbg_task.status != 20 THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS business_total,
|
||||
|
||||
COUNT(CASE WHEN (LOWER(TRIM(ptgs.status_verifikasi)) != 'selesai verifikasi' OR ptgs.status_verifikasi IS NULL)
|
||||
AND (LOWER(TRIM(pbg_task.function_type)) != 'sebagai tempat usaha' OR pbg_task.function_type IS NULL) THEN 1 END) AS non_business_count,
|
||||
SUM(CASE WHEN (LOWER(TRIM(ptgs.status_verifikasi)) != 'selesai verifikasi' OR ptgs.status_verifikasi IS NULL)
|
||||
AND (LOWER(TRIM(pbg_task.function_type)) != 'sebagai tempat usaha' OR pbg_task.function_type IS NULL) THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS non_business_total
|
||||
COUNT(CASE WHEN ((LOWER(TRIM(pbg_task.function_type)) NOT LIKE '%fungsi usaha%'
|
||||
AND LOWER(TRIM(pbg_task.function_type)) NOT LIKE '%sebagai tempat usaha%')
|
||||
OR pbg_task.function_type IS NULL)
|
||||
AND pbg_task.status != 20 THEN 1 END) AS non_business_count,
|
||||
SUM(CASE WHEN ((LOWER(TRIM(pbg_task.function_type)) NOT LIKE '%fungsi usaha%'
|
||||
AND LOWER(TRIM(pbg_task.function_type)) NOT LIKE '%sebagai tempat usaha%')
|
||||
OR pbg_task.function_type IS NULL)
|
||||
AND pbg_task.status != 20 THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS non_business_total
|
||||
")
|
||||
->first();
|
||||
|
||||
@@ -77,10 +79,6 @@ class BigdataResume extends Model
|
||||
$query = PbgTask::leftJoin('pbg_task_retributions as ptr', 'pbg_task.uuid', '=', 'ptr.pbg_task_uid')
|
||||
->selectRaw('COUNT(DISTINCT pbg_task.id) as task_count, SUM(ptr.nilai_retribusi_bangunan) as total_retribution');
|
||||
|
||||
if ($year !== 'all') {
|
||||
$query->whereYear('pbg_task.task_created_at', (int) $year);
|
||||
}
|
||||
|
||||
return $query->first();
|
||||
});
|
||||
|
||||
@@ -98,10 +96,6 @@ class BigdataResume extends Model
|
||||
SUM(CASE WHEN sp.id IS NOT NULL AND ptr.id IS NOT NULL THEN ptr.nilai_retribusi_bangunan ELSE 0 END) as total_retribution
|
||||
');
|
||||
|
||||
if ($year !== 'all') {
|
||||
$query->whereYear('pbg_task.task_created_at', (int) $year);
|
||||
}
|
||||
|
||||
return $query->first();
|
||||
});
|
||||
|
||||
|
||||
@@ -356,39 +356,63 @@ class ServiceGoogleSheet
|
||||
|
||||
public function get_big_resume_data(){
|
||||
try {
|
||||
$sheet_big_data = $this->get_data_by_sheet();
|
||||
$data_setting_result = []; // Initialize result storage
|
||||
$sections = [
|
||||
'TARGET_PAD' => "TARGET PAD 2024",
|
||||
'KEKURANGAN_POTENSI' => "DEVIASI TARGET DENGAN POTENSI TOTAL BERKAS",
|
||||
'TOTAL_POTENSI_BERKAS' => "•TOTAL BERKAS 2025",
|
||||
'BELUM_TERVERIFIKASI' => "•BERKAS AKTUAL BELUM TERVERIFIKASI (POTENSI):",
|
||||
'TERVERIFIKASI' => "•BERKAS AKTUAL TERVERIFIKASI DINAS TEKNIS 2025:",
|
||||
'NON_USAHA' => "•NON USAHA: HUNIAN, SOSBUD, KEAGAMAAN",
|
||||
'USAHA' => "•USAHA: USAHA, CAMPURAN, KOLEKTIF, PRASARANA",
|
||||
'PROSES_DINAS_TEKNIS' => "•TERPROSES DI DPUTR: belum selesai rekomtek'",
|
||||
'WAITING_KLIK_DPMPTSP' => "•TERPROSES DI PTSP: Pengiriman SKRD/ Validasi di PTSP",
|
||||
'REALISASI_TERBIT_PBG' => "•BERKAS YANG TERBIT PBG 2025:"
|
||||
];
|
||||
|
||||
$found_section = null; // Track which section is found
|
||||
$result = [];
|
||||
|
||||
foreach ($sheet_big_data as $row) {
|
||||
// Check for section headers
|
||||
if (in_array("•PROSES PENERBITAN:", $row)) {
|
||||
$found_section = "MENUNGGU_KLIK_DPMPTSP";
|
||||
} elseif (in_array("•BERKAS AKTUAL TERVERIFIKASI DINAS TEKNIS 2024:", $row)) {
|
||||
$found_section = "REALISASI_TERBIT_PBG";
|
||||
} elseif (in_array("•TERPROSES DI DPUTR: belum selesai rekomtek'", $row)) {
|
||||
$found_section = "PROSES_DINAS_TEKNIS";
|
||||
}
|
||||
|
||||
// If a section is found and we reach "Grand Total", save the corresponding values
|
||||
if ($found_section && isset($row[0]) && trim($row[0]) === "Grand Total") {
|
||||
if ($found_section === "MENUNGGU_KLIK_DPMPTSP") {
|
||||
$data_setting_result["MENUNGGU_KLIK_DPMPTSP_COUNT"] = $this->convertToInteger($row[2]) ?? null;
|
||||
$data_setting_result["MENUNGGU_KLIK_DPMPTSP_SUM"] = $this->convertToDecimal($row[3]) ?? null;
|
||||
} elseif ($found_section === "REALISASI_TERBIT_PBG") {
|
||||
$data_setting_result["REALISASI_TERBIT_PBG_COUNT"] = $this->convertToInteger($row[2]) ?? null;
|
||||
$data_setting_result["REALISASI_TERBIT_PBG_SUM"] = $this->convertToDecimal($row[4]) ?? null;
|
||||
} elseif ($found_section === "PROSES_DINAS_TEKNIS") {
|
||||
$data_setting_result["PROSES_DINAS_TEKNIS_COUNT"] = $this->convertToInteger($row[2]) ?? null;
|
||||
$data_setting_result["PROSES_DINAS_TEKNIS_SUM"] = $this->convertToDecimal($row[3]) ?? null;
|
||||
}
|
||||
|
||||
// Reset section tracking after capturing "Grand Total"
|
||||
$found_section = null;
|
||||
foreach ($sections as $key => $identifier) {
|
||||
$values = $this->get_values_from_section($identifier, [10, 11], 8);
|
||||
|
||||
if (!empty($values)) {
|
||||
$result[$key] = [
|
||||
'identifier' => $identifier,
|
||||
'total' => $values[0] ?? null, // index 0 untuk total/jumlah
|
||||
'nominal' => $values[1] ?? null // index 1 untuk nominal
|
||||
];
|
||||
}
|
||||
}
|
||||
return $data_setting_result;
|
||||
|
||||
// Save data settings
|
||||
$dataSettings = [
|
||||
'TARGET_PAD' => $this->convertToDecimal($result['TARGET_PAD']['nominal']) ?? 0,
|
||||
'KEKURANGAN_POTENSI' => $this->convertToDecimal($result['KEKURANGAN_POTENSI']['nominal']) ?? 0,
|
||||
'REALISASI_TERBIT_PBG_COUNT' => $this->convertToInteger($result['REALISASI_TERBIT_PBG']['total']) ?? 0,
|
||||
'REALISASI_TERBIT_PBG_SUM' => $this->convertToDecimal($result['REALISASI_TERBIT_PBG']['nominal']) ?? 0,
|
||||
'MENUNGGU_KLIK_DPMPTSP_COUNT' => $this->convertToInteger($result['WAITING_KLIK_DPMPTSP']['total']) ?? 0,
|
||||
'MENUNGGU_KLIK_DPMPTSP_SUM' => $this->convertToDecimal($result['WAITING_KLIK_DPMPTSP']['nominal']) ?? 0,
|
||||
'PROSES_DINAS_TEKNIS_COUNT' => $this->convertToInteger($result['PROSES_DINAS_TEKNIS']['total']) ?? 0,
|
||||
'PROSES_DINAS_TEKNIS_SUM' => $this->convertToDecimal($result['PROSES_DINAS_TEKNIS']['nominal']) ?? 0,
|
||||
];
|
||||
|
||||
foreach ($dataSettings as $key => $value) {
|
||||
// Ensure value is not null before saving to database
|
||||
$processedValue = 0; // Default to 0 instead of null
|
||||
if ($value !== null && $value !== '') {
|
||||
// Try to convert to appropriate type based on key name
|
||||
if (strpos($key, '_COUNT') !== false) {
|
||||
$processedValue = $this->convertToInteger($value) ?? 0;
|
||||
} else {
|
||||
$processedValue = $this->convertToDecimal($value) ?? 0;
|
||||
}
|
||||
}
|
||||
|
||||
DataSetting::updateOrCreate(
|
||||
['key' => $key],
|
||||
['value' => $processedValue]
|
||||
);
|
||||
}
|
||||
return $dataSettings;
|
||||
}catch(Exception $exception){
|
||||
Log::error("Error getting big resume data", ['error' => $exception->getMessage()]);
|
||||
throw $exception;
|
||||
|
||||
@@ -44,7 +44,7 @@ class BigData {
|
||||
async getBigDataResume(filterByDate) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterByDate}`,
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterByDate}&type=simbg`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
|
||||
@@ -49,7 +49,7 @@ class LackOfPotential {
|
||||
async getDataTotalPotensi(filterDate) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterDate}`,
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterDate}&type=leader`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
|
||||
@@ -44,7 +44,7 @@ class BigData {
|
||||
async getBigDataResume(filterByDate) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterByDate}`,
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterByDate}&&type=leader`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
|
||||
@@ -120,7 +120,7 @@ class DashboardPBG {
|
||||
async getResume(filterByDate) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterByDate}`,
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterByDate}&type=leader`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
|
||||
@@ -15,8 +15,10 @@ class DashboardPotentialInsideSystem {
|
||||
this.reklameCount = this.allCountData.total_reklame ?? 0;
|
||||
this.pdamCount = this.allCountData.total_pdam ?? 0;
|
||||
this.tataRuangCount = this.allCountData.total_tata_ruang ?? 0;
|
||||
this.tataRuangUsahaCount = this.allCountData.total_tata_ruang_usaha ?? 0;
|
||||
this.tataRuangNonUsahaCount = this.allCountData.total_tata_ruang_non_usaha ?? 0;
|
||||
this.tataRuangUsahaCount =
|
||||
this.allCountData.total_tata_ruang_usaha ?? 0;
|
||||
this.tataRuangNonUsahaCount =
|
||||
this.allCountData.total_tata_ruang_non_usaha ?? 0;
|
||||
|
||||
let dataReportTourism = this.allCountData.data_report;
|
||||
|
||||
@@ -51,7 +53,7 @@ class DashboardPotentialInsideSystem {
|
||||
async getDataTotalPotensi(filterDate) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterDate}`,
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterDate}&type=leader`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
|
||||
@@ -21,7 +21,7 @@ class DashboardPotentialOutsideSystem {
|
||||
async getBigDataResume(filterDate) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterDate}`,
|
||||
`${GlobalConfig.apiHost}/api/bigdata-resume?filterByDate=${filterDate}&type=leader`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
|
||||
@@ -5,7 +5,7 @@ export function addThousandSeparators(value, fractionDigits = 2) {
|
||||
|
||||
// Convert to string first if it's a number
|
||||
if (typeof value === "number") {
|
||||
return new Intl.NumberFormat("en-US", {
|
||||
return new Intl.NumberFormat("id-ID", {
|
||||
minimumFractionDigits: fractionDigits,
|
||||
maximumFractionDigits: fractionDigits,
|
||||
}).format(value);
|
||||
@@ -26,8 +26,8 @@ export function addThousandSeparators(value, fractionDigits = 2) {
|
||||
|
||||
if (isNaN(number)) return null; // Return null if conversion fails
|
||||
|
||||
// Format the number with thousand separators
|
||||
return new Intl.NumberFormat("en-US", {
|
||||
// Format the number with Indonesian format (dot for thousands, comma for decimal)
|
||||
return new Intl.NumberFormat("id-ID", {
|
||||
minimumFractionDigits: fractionDigits,
|
||||
maximumFractionDigits: fractionDigits,
|
||||
}).format(number);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { Grid, html } from "gridjs/dist/gridjs.umd.js";
|
||||
import GlobalConfig from "../global-config";
|
||||
import { Dropzone } from "dropzone";
|
||||
import { addThousandSeparators } from "../global-config";
|
||||
|
||||
Dropzone.autoDiscover = false;
|
||||
|
||||
class PbgTasks {
|
||||
@@ -87,6 +89,9 @@ class PbgTasks {
|
||||
"Function Type",
|
||||
"Consultation Type",
|
||||
{ name: "Due Date" },
|
||||
{
|
||||
name: "Retribution",
|
||||
},
|
||||
{
|
||||
name: "Action",
|
||||
formatter: (cell) => {
|
||||
@@ -191,6 +196,12 @@ class PbgTasks {
|
||||
item.function_type,
|
||||
item.consultation_type,
|
||||
item.due_date,
|
||||
item.pbg_task_retributions
|
||||
? addThousandSeparators(
|
||||
item.pbg_task_retributions
|
||||
.nilai_retribusi_bangunan
|
||||
)
|
||||
: "-",
|
||||
item,
|
||||
]),
|
||||
total: (data) => data.meta.total,
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div class="d-flex justify-content-between align-items-center mt-3 ms-2">
|
||||
<h2 class="text-danger m-0">
|
||||
ANALISA BIG DATA PROSES PBG <br>
|
||||
MELALUI APLIKASI SIBEDAS PBG
|
||||
MELALUI APLIKASI SIBEDAS PBG (SIMBG)
|
||||
</h2>
|
||||
<div class="text-black text-end d-flex flex-column align-items-end me-3">
|
||||
<span class="fs-5">Terakhir di update - {{$latest_created}}</span>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div class="d-flex justify-content-between align-items-center mt-3 ms-2">
|
||||
<h2 class="text-danger m-0">
|
||||
ANALISA BIG DATA PROSES PBG <br>
|
||||
MELALUI APLIKASI SIBEDAS PBG
|
||||
MELALUI APLIKASI SIBEDAS PBG (LEADER)
|
||||
</h2>
|
||||
<div class="text-black text-end d-flex flex-column align-items-end me-3">
|
||||
<span class="fs-5">Terakhir di update - {{$latest_created}}</span>
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Nilai SHST</dt>
|
||||
<dd>{{$data->pbg_task_retributions->nilai_shst}}</dd>
|
||||
<dd>{{ number_format($data->pbg_task_retributions->nilai_shst, 2, ',', '.') }}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Integrasi</dt>
|
||||
@@ -167,7 +167,7 @@
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<dt>Nilai Retribusi Bangunan</dt>
|
||||
<dd>{{$data->pbg_task_retributions->nilai_retribusi_bangunan}}</dd>
|
||||
<dd>{{ number_format($data->pbg_task_retributions->nilai_retribusi_bangunan, 2, ',', '.') }}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Nilai Prasarana</dt>
|
||||
@@ -183,7 +183,7 @@
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>SKRD Amount</dt>
|
||||
<dd>{{$data->pbg_task_retributions->skrd_amount}}</dd>
|
||||
<dd>{{ number_format($data->pbg_task_retributions->skrd_amount, 2, ',', '.') }}</dd>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user