Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/demo-catatan-keuangan.aplikasipos.info/app/Models/
Upload File :
Current File : /home/aplikasiposinfo/public_html/demo-catatan-keuangan.aplikasipos.info/app/Models/Budget.php

<?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]