Aplikasi Keuangan yang mengatur lalu lintas transaksi antara bank dan aplikasi internal Kampus
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

47 lines
1.4 KiB

<?php
namespace App\Domains\Finance\Models;
use App\Domains\Finance\Casts\MoneyCurrency;
use App\Domains\Finance\Enums\InvoiceStatus;
use App\Domains\Finance\Policies\StudentInvoiceReportPolicy;
use BadMethodCallException;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\UsePolicy;
use Illuminate\Database\Eloquent\Model;
#[Fillable([
'invoice_id',
'student_id',
'name',
'faculty_id',
'faculty_name',
'study_program_id',
'study_program_name',
'term_id',
'term_name',
'amount',
'paid_amount',
'issued_at',
'paid_at',
'status',
])]
#[UsePolicy(StudentInvoiceReportPolicy::class)]
class StudentInvoiceReport extends Model
{
public static function boot(): void
{
self::boot();
static::creating(fn (InvoiceReport $invoiceReport) => throw new BadMethodCallException('Cannot create invoice report from here, use event instead.'));
static::deleting(fn (InvoiceReport $invoiceReport) => throw new BadMethodCallException('Cannot delete invoice report.'));
static::updating(fn (InvoiceReport $invoiceReport) => throw new BadMethodCallException('Cannot update invoice report.'));
}
protected $casts = [
'amount' => MoneyCurrency::class,
'paid_amount' => MoneyCurrency::class,
'issued_at' => 'datetime',
'paid_at' => 'datetime',
'status' => InvoiceStatus::class,
];
}