- Added labels for leave request statuses in LeaveRequestStatus enum. - Introduced label methods for PayrollAdjustmentType, PayrollPeriodStatus, PayrollStatus, RawMaterialUnit, and StokOpnameStatus enums. - Implemented formatted attributes for Attendance, CashAccount, CashTransaction, Category, Customer, Cutting, Employee, EmployeeAdvance, Expense, LeaveRequest, Order, OrderItem, Payroll, PayrollAdjustment, PayrollPeriod, Product, ProductPrice, ProductVariant, Purchase, PurchaseItem, RawMaterial, RawMaterialPrice, Restock, RestockItem, StokOpname, StokOpnameItem, Supplier, User, and UserProfile models. - Enhanced phone number formatting for Customer and Supplier models. - Added date formatting for various models to improve readability.
75 lines
2.0 KiB
PHP
75 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Attributes\Appends;
|
|
use Illuminate\Database\Eloquent\Attributes\Guarded;
|
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
use Spatie\MediaLibrary\HasMedia;
|
|
use Spatie\MediaLibrary\InteractsWithMedia;
|
|
|
|
#[Appends(['formatted_discount', 'formatted_shipping_cost', 'formatted_subtotal', 'formatted_total'])]
|
|
#[Guarded(['id'])]
|
|
class Purchase extends Model implements HasMedia
|
|
{
|
|
use HasFactory, InteractsWithMedia, SoftDeletes;
|
|
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'subtotal' => 'integer',
|
|
'discount' => 'integer',
|
|
'shipping_cost' => 'integer',
|
|
'total' => 'integer',
|
|
];
|
|
}
|
|
|
|
protected function formattedDiscount(): Attribute
|
|
{
|
|
return Attribute::make(
|
|
get: fn () => 'Rp ' . number_format($this->discount, 0, ',', '.'),
|
|
);
|
|
}
|
|
|
|
protected function formattedShippingCost(): Attribute
|
|
{
|
|
return Attribute::make(
|
|
get: fn () => 'Rp ' . number_format($this->shipping_cost, 0, ',', '.'),
|
|
);
|
|
}
|
|
|
|
protected function formattedSubtotal(): Attribute
|
|
{
|
|
return Attribute::make(
|
|
get: fn () => 'Rp ' . number_format($this->subtotal, 0, ',', '.'),
|
|
);
|
|
}
|
|
|
|
protected function formattedTotal(): Attribute
|
|
{
|
|
return Attribute::make(
|
|
get: fn () => 'Rp ' . number_format($this->total, 0, ',', '.'),
|
|
);
|
|
}
|
|
|
|
public function createdBy(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'created_by_id');
|
|
}
|
|
|
|
public function purchaseItems(): HasMany
|
|
{
|
|
return $this->hasMany(PurchaseItem::class);
|
|
}
|
|
|
|
public function supplier(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Supplier::class);
|
|
}
|
|
}
|