Files
sidata/app/Models/BelanjaRealisasi.php
T
2025-03-21 08:55:35 +07:00

193 lines
8.9 KiB
PHP

<?php
namespace App\Models;
use App\Traits\Uuids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Yajra\Oci8\Eloquent\OracleEloquent as Eloquent;
use Illuminate\Support\Facades\DB;
class BelanjaRealisasi extends Eloquent
{
use HasFactory;
use Uuids;
protected $connection = 'Samasa';
protected $table = 'belanja_realisasi';
protected $fillable = [
"tahun_anggaran",
"jenis_belanja",
"sub_jenis_belanja",
"kode_program",
"nama_program",
"kode_skpd",
"nama_skpd",
"kode_kegiatan",
"nama_kegiatan",
"kode_sub_kegiatan",
"nama_sub_kegiatan",
"kode_rsk",
"nama_rsk",
"kode_rekening",
"nama_rekening",
"jumlah_anggaran",
"alokasi_anggaran",
"volume_satuan",
"unit_satuan",
"jumlah_realisasi",
"volume_satuan_realisasi",
"unit_satuan_realisasi",
"no_sp2d",
"jml_rencana_kontrak",
"realisasi_by",
"created_by",
"jenis_dana",
"sub_jenis_dana",
"id_sps",
"f_view_sbpk"
];
public function getSPD($subgiat,$skpd)
{
return DB::select(DB::raw(
"SELECT a.I_SPDNO_DOK as NO_SPD, a1.D_SPD_CETAK as TGL, b.JML as jumlah
FROM NEWSIPKD.TMSPD a
LEFT JOIN NEWSIPKD.TMSPDCETAK a1 ON a.I_ID=a1.I_ID
INNER JOIN (
SELECT I_IDSPD, SUM(V_SPD) AS JML
FROM NEWSIPKD.TMSPDRINCIBLJ x
LEFT JOIN NEWSIPKD.TMDPASUBGIAT y
ON x.I_IDSUBGIAT = y.I_ID
WHERE y.C_SUBGIAT = '".$subgiat."'
AND y.I_IDOPD = '".$skpd."'
GROUP BY I_IDSPD
) b
ON a.I_ID = b.I_IDSPD
WHERE a.C_ANGG_TAHUN = ".getTA()." ORDER BY a.D_SPDNO"
));
}
public function tableData($ta, $filter, $offset=0, $limit=0)
{
$ta = getTA();
$sqlstr = "SELECT a.*,NVL(b.jml,0) as jml,
CASE WHEN a.jenis_dana = 'DBH' AND a.nama_subjenis_dana<>'CHT'
THEN NVL(d.jml_spd, 0) ELSE NVL(c.jml_spd, 0) END AS jml_spd,
a2.semester1,a2.semester2,a2.satuan_sms1,a2.satuan_sms2,
volume_satuan_realisasi_1,volume_satuan_realisasi_2,volume_satuan_realisasi_3,volume_satuan_realisasi_4,volume_satuan_realisasi_5,volume_satuan_realisasi_6,volume_satuan_realisasi_7,
volume_satuan_realisasi_8,volume_satuan_realisasi_9,volume_satuan_realisasi_10,volume_satuan_realisasi_11,volume_satuan_realisasi_12,
jumlah_realisasi_1,jumlah_realisasi_2,jumlah_realisasi_3,jumlah_realisasi_4,jumlah_realisasi_5,jumlah_realisasi_6,jumlah_realisasi_7,
jumlah_realisasi_8,jumlah_realisasi_9,jumlah_realisasi_10,jumlah_realisasi_11,jumlah_realisasi_12
FROM VW_BELANJA_REALISASI a
LEFT JOIN BELANJA_REALISASI_RINCI a1
ON a.id=a1.belanja_realisasi_id
LEFT JOIN (
SELECT BELANJA_REALISASI_ID,SUM(SEMESTER1) SEMESTER1,SUM(SEMESTER2) SEMESTER2,
SUM(SATUAN_SMS1) SATUAN_SMS1,SUM(SATUAN_SMS2) SATUAN_SMS2
FROM ( SELECT BELANJA_REALISASI_ID,JUMLAH_REALISASI AS SEMESTER1, 0 AS SEMESTER2,
VOLUME_SATUAN_REALISASI AS SATUAN_SMS1, 0 AS SATUAN_SMS2
FROM BELANJA_REALISASI_DETAIL WHERE SEMESTER = 1
UNION ALL SELECT BELANJA_REALISASI_ID,0 AS SEMESTER1, JUMLAH_REALISASI AS SEMESTER2,
0 AS SATUAN_SMS2, VOLUME_SATUAN_REALISASI AS SATUAN_SMS2
FROM BELANJA_REALISASI_DETAIL WHERE SEMESTER = 2
) GROUP BY BELANJA_REALISASI_ID
) a2 ON a.id = a2.BELANJA_REALISASI_ID
LEFT JOIN (
SELECT I_IDRSK,SUM(REALISASI) AS jml
FROM MV_ANGGARAN_REALISASI_RSK
WHERE C_ANGG_TAHUN = $ta
GROUP BY I_IDRSK
) b ON a.kode_rsk = b.I_IDRSK
LEFT JOIN (
SELECT id_rsk,count(id_rsk) as jml_spd
FROM belanja_realisasi_spd
WHERE TO_CHAR(TGL,'YYYY') = $ta
GROUP BY id_rsk
) c ON a.kode_rsk = c.id_rsk
LEFT JOIN (
SELECT C_OPD,C_SUBGIAT,COUNT(JML) AS jml_spd
FROM
(
SELECT C_OPD,C_SUBGIAT,SUM(V_SPD) AS JML
FROM NEWSIPKD.TMSPDRINCIBLJ x
LEFT JOIN NEWSIPKD.TMDPASUBGIAT y ON x.I_IDSUBGIAT = y.I_ID
AND x.C_ANGG_TAHUN = $ta
LEFT JOIN NEWSIPKD.TROPD z ON z.I_ID = y.I_IDOPD
WHERE C_SUBGIAT IS NOT NULL
GROUP BY C_OPD,C_SUBGIAT,I_IDSPD
) GROUP BY C_OPD,C_SUBGIAT
) d ON a.KODE_SUB_KEGIATAN = d.C_SUBGIAT AND a.KODE_SKPD = d.C_OPD
".$filter."
ORDER BY a.KODE_SKPD, a.KODE_RSK ";
$sqlstr.= $limit > 0?" OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY ":"";
return $sqlstr;
}
public function tableDataReport($ta, $filter, $offset=0, $limit=0)
{
$ta = getTA();
$sqlstr = "SELECT a.*,NVL(b.jml,0) as jml,
CASE WHEN a.jenis_dana = 'DBH' AND a.nama_subjenis_dana<>'CHT'
THEN NVL(d.jml_spd, 0) ELSE NVL(c.jml_spd, 0) END AS jml_spd,
a2.semester1,a2.semester2,a2.satuan_sms1,a2.satuan_sms2,
volume_satuan_realisasi_1,volume_satuan_realisasi_2,volume_satuan_realisasi_3,volume_satuan_realisasi_4,volume_satuan_realisasi_5,volume_satuan_realisasi_6,volume_satuan_realisasi_7,
volume_satuan_realisasi_8,volume_satuan_realisasi_9,volume_satuan_realisasi_10,volume_satuan_realisasi_11,volume_satuan_realisasi_12,
jumlah_realisasi_1,jumlah_realisasi_2,jumlah_realisasi_3,jumlah_realisasi_4,jumlah_realisasi_5,jumlah_realisasi_6,jumlah_realisasi_7,
jumlah_realisasi_8,jumlah_realisasi_9,jumlah_realisasi_10,jumlah_realisasi_11,jumlah_realisasi_12
FROM VW_BELANJA_REALISASI_REPORT a
LEFT JOIN BELANJA_REALISASI_RINCI a1
ON a.id=a1.belanja_realisasi_id
LEFT JOIN (
SELECT BELANJA_REALISASI_ID,SUM(SEMESTER1) SEMESTER1,SUM(SEMESTER2) SEMESTER2,
SUM(SATUAN_SMS1) SATUAN_SMS1,SUM(SATUAN_SMS2) SATUAN_SMS2
FROM ( SELECT BELANJA_REALISASI_ID,JUMLAH_REALISASI AS SEMESTER1, 0 AS SEMESTER2,
VOLUME_SATUAN_REALISASI AS SATUAN_SMS1, 0 AS SATUAN_SMS2
FROM BELANJA_REALISASI_DETAIL WHERE SEMESTER = 1
UNION ALL SELECT BELANJA_REALISASI_ID,0 AS SEMESTER1, JUMLAH_REALISASI AS SEMESTER2,
0 AS SATUAN_SMS2, VOLUME_SATUAN_REALISASI AS SATUAN_SMS2
FROM BELANJA_REALISASI_DETAIL WHERE SEMESTER = 2
) GROUP BY BELANJA_REALISASI_ID
) a2 ON a.id = a2.BELANJA_REALISASI_ID
LEFT JOIN (
SELECT I_IDRSK,SUM(REALISASI) AS jml
FROM MV_ANGGARAN_REALISASI_RSK
WHERE C_ANGG_TAHUN = $ta
GROUP BY I_IDRSK
) b ON a.kode_rsk = b.I_IDRSK
LEFT JOIN (
SELECT id_rsk,SUM(jumlah) as jml_spd
FROM belanja_realisasi_spd
WHERE TO_CHAR(TGL,'YYYY') = $ta
GROUP BY id_rsk
) c ON a.kode_rsk = c.id_rsk
LEFT JOIN (
SELECT C_OPD,C_SUBGIAT,COUNT(JML) AS jml_spd
FROM
(
SELECT C_OPD,C_SUBGIAT,SUM(V_SPD) AS JML
FROM NEWSIPKD.TMSPDRINCIBLJ x
LEFT JOIN NEWSIPKD.TMDPASUBGIAT y ON x.I_IDSUBGIAT = y.I_ID
AND x.C_ANGG_TAHUN = $ta
LEFT JOIN NEWSIPKD.TROPD z ON z.I_ID = y.I_IDOPD
WHERE C_SUBGIAT IS NOT NULL
GROUP BY C_OPD,C_SUBGIAT,I_IDSPD
) GROUP BY C_OPD,C_SUBGIAT
) d ON a.KODE_SUB_KEGIATAN = d.C_SUBGIAT AND a.KODE_SKPD = d.C_OPD
".$filter."
ORDER BY a.KODE_SKPD, a.KODE_RSK ";
$sqlstr.= $limit > 0?" OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY ":"";
return $sqlstr;
}
public function akbRealisasi()
{
$ta = getTA();
$sqlstr = "SELECT * FROM MV_ASYNC_AKB_REALISASI WHERE TAHUN = $ta";
return $sqlstr;
}
}