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