Files
sidata/app/Models/BelanjaRealisasi.php
T
2023-01-03 10:46:50 +07:00

108 lines
3.6 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 = 'SAMASA.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, a.D_SPDNO as TGL, b.JML as jumlah
FROM NEWSIPKD.TMSPD a
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
FROM VW_BELANJA_REALISASI a
LEFT JOIN (
SELECT I_IDRSK,SUM(REALISASI_1) AS jml
FROM MV_REALISASI_BELANJA_PERBULAN
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 SAMASA.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;
}
}