<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Session;
class Budget extends Model
{
use HasFactory;
protected $fillable = [
'kode_budget',
'nama_anggaran',
'jumlah_anggaran',
'persetujuan_anggaran',
'keterangan_realisasi',
'tanggal_realisasi',
'jumlah_rincian',
'jumlah_realisasi',
'balance',
'budget_bulan',
'budget_tahun',
'divisi_id',
'perusahaan_id',
'format_kode_budget_id'
];
public static function boot(){
parent::boot();
// self::deleting(function($budget){
// $relation = [];
// if ($budget->logMutasi()->exists() or $budget->item()->exists()) {
// $pesan = 'tidak dapat menghapus data ini karena masih terkait dengan data lain';
// Session::flash('message',['type'=>'danger','text'=>$pesan]);
// return false;
// }else{
// Session::flash('message',['type'=>'success','text'=>'data berhasil dihapus']);
// }
// });
}
public function divisi(){
return $this->belongsTo(Divisi::class,'divisi_id')->withDefault([
'name' => 'Data Divisi Di Hapus',
'kode_divisi' => 'Data Divisi Di Hapus',
]);
}
function perusahaan(){
return $this->belongsTo(Perusahaan::class,'perusahaan_id')->withDefault([
'name'=>'Data Perusahaan Di Hapus',
'kode_perusahaan'=>'Data Perusahaan Di Hapus'
]);
}
public function logMutasi(){
return $this->hasMany(LogMutasi::class,'budget_id');
}
public function item(){
return $this->hasMany(Item::class,'budget_id');
}
public function approvedItem(){
return $this->hasMany(Item::class,'budget_id')->whereHas('groupItem.surat',function($w){
$w->where('status','1');
});
}
public function scopeFilter($query,$request){
if ($request->kode_budget) {
$query->where('kode_budget','like','%'.$request->kode_budget.'%');
}
if ($request->nama_anggaran) {
$query->where('nama_anggaran','like','%'.$request->nama_anggaran.'%');
}
if ($request->budget_bulan) {
$query->where('budget_bulan',$request->budget_bulan);
}
if ($request->budget_tahun) {
$query->where('budget_tahun',$request->budget_tahun);
}
if ($request->divisi_id && $request->divisi_id != "") {
$query->where('divisi_id',$request->divisi_id);
}
return $query;
}
public function getSisaAnggaranAttribute()
{
// $budet_id = $this->id;
// $total_pembayarans = Pembayaran::whereHas('suratPermintaan',function($wsp)use($budet_id){
// $wsp->whereHas('groupItem',function($wgi)use($budet_id){
// $wgi->whereHas('item',function($wi)use($budet_id){
// $wi->where('budget_id',$budet_id);
// });
// });
// })->sum('total_pembayaran');
// return $total_pembayarans;
// $items = $this->item()->where('status','!=','0')->get();
// $total = 0;
// foreach ($items as $v) {
// $total += $v->groupItem->total_bayaran + $v->groupItem->nominal_pph;
// }
return $this->jumlah_anggaran - $this->total_terpakai;
}
//total_terpakai
public function getTotalTerpakaiAttribute(){
$budet_id = $this->id;
// $surats = SuratPermintaan::whereHas('groupItem',function($wgi)use($budet_id){
// $wgi->whereHas('item',function($wi)use($budet_id){
// $wi->where('budget_id',$budet_id);
// });
// })->get();
// return $surats->sum('total');
$total = $this->item()->join('group_items as gi','gi.id','=','items.group_id')
->join('surat_permintaans as sp','sp.id','=','gi.surat_id')
->leftJoin('biaya_lainnyas as bl', 'bl.group_item_id', '=', 'gi.id')
->select(DB::raw('SUM(gi.total_bayaran+IFNULL(gi.nominal_pph,0)+IFNULL(bl.jumlah_biaya,0)) as total_terpakai'))->first();
return @$total->total_terpakai ?? 0;
// $total = $this->item()->whereHas("groupitem",function($wg){
// $wg->whereHas('surat',function($ws){
// $ws->where('status','!=','2');
// });
// })->select(DB::raw('IFNULL(SUM(nominal_disetujui), SUM(nominal_terajukan))+nominal_ppn as total_terpakai'))->first();
// return $total->total_terpakai;
$groups = GroupItem::whereHas('surat',function($ws){
$ws->where('status','!=','2');
})->whereHas('item',function($wi)use($budet_id){
$wi->where('budget_id',$budet_id);
})->select(DB::raw('SUM(total_bayaran+nominal_pph+biaya_materai) as total_terpakai'))->first();
return $groups->total_terpakai;
// $totalPph = GroupItem::whereHas('surat',function($ws){
// $ws->where('status','!=','2');
// })->whereHas('item',function($wi)use($budet_id){
// $wi->where('budget_id',$budet_id);
// })->select(DB::raw('SUM(nominal_pph) as total_pph'))->first();
// $r = DB::table('budgets as b')
// ->select(
// 'b.id',
// DB::raw('IFNULL(SUM(i.nominal_disetujui), SUM(i.nominal_terajukan)) as total_realisasi')
// )
// ->leftJoin('items as i', 'i.budget_id', '=', 'b.id')
// ->leftJoin('group_items as gi', 'i.group_id', '=', 'gi.id')
// ->leftJoin('surat_permintaans as sp', 'gi.surat_id', '=', 'sp.id')
// ->leftJoin('biaya_lainnyas as bl', 'bl.group_item_id', '=', 'gi.id')
// ->where('b.id', $budet_id)->groupBy('b.id')->first();
// return $r->total_realisasi;
// $permintaans = SuratPermintaan::whereHas('groupItem',function($wgi)use($budet_id){
// $wgi->whereHas('item',function($wi)use($budet_id){
// $wi->where('budget_id',$budet_id);
// });
// })->where('status','!=','2')->get()->sum('total');
// return $permintaans;
}
//total_realisasi
public function getTotalRealisasiAttribute()
{
$budet_id = $this->id;
$r = DB::table('budgets as b')
->select(
'b.id',
DB::raw('IFNULL(SUM(pb.total_pembayaran), 0) as total_realisasi')
)
->join('items as i', 'i.budget_id', '=', 'b.id')
->join('group_items as gi', 'i.group_id', '=', 'gi.id')
->join('surat_permintaans as sp', 'gi.surat_id', '=', 'sp.id')
->leftJoin('biaya_lainnyas as bl', 'bl.group_item_id', '=', 'gi.id')
->join('pembayarans as pb', 'pb.surat_permintaan_id', '=', 'sp.id')
->where('b.id', $budet_id)
->where('sp.status','=','1')
->groupBy('b.id')->first();
return @$r->total_realisasi ?? 0;
// $total_pembayarans = Pembayaran::whereHas('suratPermintaan',function($wsp)use($budet_id){
// $wsp->whereHas('groupItem',function($wgi)use($budet_id){
// $wgi->whereHas('item',function($wi)use($budet_id){
// $wi->where('budget_id',$budet_id);
// });
// });
// })->sum('total_pembayaran');
// return $total_pembayarans;
// return 0;
// $a_i = $this->approvedItem;
// $total = 0;
// foreach ($a_i as $v) {
// $total += $v->groupItem->total_bayaran + $v->groupItem->nominal_pph;
// }
// return $total;
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]