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/Item.php

<?php

namespace App\Models;

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

class Item extends Model
{

    use HasFactory;
    protected $fillable = [
        'pengguna_id',
        'kategori_item_id',
        'jenis_item_id',
        'nama_item',
        'harga_item',
        'biaya_item',
        'tipe_jual',
        'sku',
        'lacak_stok',
        'stok',
        'stok_gudang',
        'warna_item',
        'bentuk_item',
        'durasi_garansi',
        'ket_waktu',
        'gambar_item',
        'pakai_notif',
        'stok_minimal',
        'merk_id'
    ];

    public function kategoriItem()
    {
        return $this->belongsTo(KategoriItem::class)->withDefault([
            'nama_kategori' => 'Tidak Ada'
        ]);
    }

    public function jenis_item()
    {
        return $this->belongsTo(JenisItem::class);
    }

    public function merk()
    {
        return $this->belongsTo(Merk::class);
    }

    public function detailServis()
    {
        return $this->hasMany(DetailService::class, 'item_id', 'id');
    }
    public function detailTransaksiBarangRusak()
    {
        return $this->hasMany(DetailTransaksiBarangRusak::class, 'item_id', 'id');
    }

    public function detail_pembelians()
    {
        return $this->hasMany(DetailPembelian::class, 'item_id', 'id');
    }

    public function getMarginHargaAttribute()
    {
        //margin harga dalam persen
        if ($this->harga_item == 0) {
            return 0;
        }
        return ($this->biaya_item - $this->harga_item) / $this->harga_item * 100;
    }

    public function detail_retur_penjualan()
    {
        return $this->hasMany(DetailReturPenjualan::class);
    }

    public function detail_retur_pembelian()
    {
        return $this->hasMany(DetailReturPembelian::class);
    }

    public function detail_garansi(){
        return $this->hasMany(DetailGaransi::class);
    }

    public function detail_kirim_supplier(){
        return $this->hasMany(DetailKirimSupplier::class);
    }


    public function getTotalReturPenjualanAttribute()
    {
        $detail_retur_penjualan = $this->detail_retur_penjualan;
        $total = 0;

        foreach ($detail_retur_penjualan as $data) {
            $total += $data->qty;
        }

        return $total;
    }
    public function scopeKategori($query, $name)
    {
        return $query->where("kategori_item_id", $name);
    }

    public function scopeJenis($query, $name)
    {
        return $query->where("jenis_item_id", $name);
    }

    public function scopeSupplier($query, $name)
    {
        return $query->whereHas('detail_pembelians.pembelian',function($w)use($name){
            $w->where('supplier_id',$name);
        });
    }

    public function scopeMerk($query, $name)
    {
        return $query->whereHas('detailServis.service',function($w)use($name){
            $w->where('merk',$name);
        });
    }

   

    public function scopeCari($query, $name)
    {
        return $query->where("nama_item", "like", "%" . $name . "%");
    }
    public function scopeTanggal($query, $begin, $end)
    {
        return $query->whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')]);
    }

    public function stok_item_tokos()
    {
        return $this->hasMany(StokItemToko::class, 'item_id', 'id');
    }

    public function getStatusStokAttribute(){
        $status = "Kosong";
        if($this->stok <= $this->stok_minimal && $this->stok > 0){
            $status = "Mau Habis";
        } else if($this->stok > $this->stok_minimal) {
            $status = "Tersedia";
        }
        return $status;
    }

    public function getStokTotalAttribute(){
        return $this->stok + $this->stok_tertahan;
    }

    public function getStokTersediaAttribute(){
        return $this->stok;
    }

    public function getStokTertahanAttribute(){
        if(!$this->detailServis){
            return 0;
        }
        return $this->detailServis()->whereHas('service',function($w){
            $w->where('status_transaksi','proses');
        })->sum('jumlah');
    }

    public function getStokReturPenjualanAttribute(){
        if(!$this->detail_retur_penjualan){
            return 0;
        }
        return $this->detail_retur_penjualan->whereNotNull('status_item')->sum('qty');
    }

    public function getStokReturPembelianAttribute(){
        if(!$this->detail_retur_pembelian){
            return 0;
        }
        return $this->detail_retur_pembelian->whereNotNull('status_item')->sum('qty');
    }

    public function getStokGaransiAttribute(){
        if(!$this->detail_garansi){
            return 0;
        }
        return $this->detail_garansi->sum('qty');
    }

    public function getStokRusakAttribute(){
        if(!$this->detailTransaksiBarangRusak){
            return 0;
        }
        return $this->detailTransaksiBarangRusak->sum('qty');
    }

}

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