54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
|
|
class Billing extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $table = 'billing';
|
|
protected $primaryKey = 'IdBilling';
|
|
|
|
protected $fillable = [
|
|
'IdRegistrasi',
|
|
'TanggalBilling',
|
|
'TotalBiaya',
|
|
'Dibayar',
|
|
'Sisa',
|
|
'StatusPembayaran',
|
|
'Keterangan'
|
|
];
|
|
|
|
public function registrasi()
|
|
{
|
|
return $this->belongsTo(TrRegistrasi::class, 'IdRegistrasi', 'IdRegistrasi');
|
|
}
|
|
|
|
// Mendapatkan detail transaksi untuk billing ini
|
|
public function getTransaksiDetails()
|
|
{
|
|
return $this->registrasi->transaksi;
|
|
}
|
|
|
|
// Menghitung total biaya dari semua transaksi
|
|
public function calculateTotalBiaya()
|
|
{
|
|
$total = 0;
|
|
foreach ($this->getTransaksiDetails() as $transaksi) {
|
|
$total += $transaksi->tindakan->TarifTindakan * $transaksi->JmlTindakan;
|
|
}
|
|
return $total;
|
|
}
|
|
|
|
// Mengupdate sisa pembayaran
|
|
public function updateSisa()
|
|
{
|
|
$this->Sisa = $this->TotalBiaya - $this->Dibayar;
|
|
$this->StatusPembayaran = ($this->Sisa <= 0) ? 'Lunas' : 'Belum Lunas';
|
|
$this->save();
|
|
}
|
|
}
|