Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/coba.fixmate.id/app/Models/
Upload File :
Current File : /home/aplikasiposinfo/public_html/coba.fixmate.id/app/Models/Pembelian.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Pembelian extends Model
{
    use HasFactory;
    use SoftDeletes;

    protected $fillable = [
        "supplier_id",
        "tanggal_pembelian",
        "nomor_nota",
        "uang_bayar",
        "metode_bayar",
        "pengguna_id",
        "bukti_nota",
        "keterangan",
        "uang_bayar_saldo",
        "status_pembayaran",
        "uang_awal",
        "jam_selesai"
    ];

    public static function boot()
    {
        parent::boot();
        self::deleting(function ($penjualan) {
            $penjualan->detail_pembelian()->each(function ($detail_pembelian) {
                $detail_pembelian->delete();
            });
            $penjualan->pembayaran_hutang()->each(function ($pembayaran_hutang) {
                $pembayaran_hutang->delete();
            });
        });
    }


    public function detail_pembelian()
    {
        return $this->hasMany(DetailPembelian::class);
    }

    public function supplier()
    {
        return $this->belongsTo(Supplier::class);
    }

    public function getTotalAttribute()
    {
        $total = 0;
        foreach ($this->detail_pembelian as $detail) {
            $total += $detail->qty * $detail->harga_item;
        }
        return $total;
    }

    public function pembayaran_hutang()
    {
        return $this->hasMany(PembayaranHutang::class);
    }

    public function getTotalPembayaranHutangAttribute()
    {
        $total = 0;
        foreach ($this->pembayaran_hutang as $pembayaran_hutang) {
            $total += $pembayaran_hutang->uang_bayar;
        }
        return $total;
    }

    public function getJumlahBarangAttribute()
    {
        $total = 0;
        foreach ($this->detail_pembelian as $detail) {
            $total += $detail->qty;
        }
        return $total;
    }

    public function getStatusLunasAttribute()
    {
        if ($this->total_pembayaran_hutang < $this->total) {
            return false;
        } else if ($this->total_pembayaran_hutang >= $this->total) {
            return true;
        }
    }

    public function tokos()
    {
        return $this->morphToMany(Toko::class, 'tokoable', 'tokoables', 'tokoable_id', 'toko_id')
            ->where('tokoable_type', Pembelian::class);
    }

    public function scopeFilterToko($query, $toko_id = null)
    {
        if ($toko_id == null) {
            return $query->whereHas("tokos", function ($q) {
                $q->whereIn('tokos.id',auth()->user()->role->tokos->pluck('id')->toArray());
            });
        } else {
            return $query->whereHas("tokos", function ($q)use ($toko_id) {
                $q->where('tokos.id',$toko_id);
            });
        }
    }

    public function scopeWhereDateBetween($query,$fieldName,$rangeDate)
    {
        return $query->whereDate($fieldName,'>=',$rangeDate[0])->whereDate($fieldName,'<=',$rangeDate[1]);
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]