File: /www/wwwroot/erp.nhatnamsst.com/domains/PurchaseOrder/Models/PurchaseOrder.php
<?php
namespace Domains\PurchaseOrder\Models;
use Domains\Admin\Models\Admin;
use Domains\Core\Enums\PurchaseOrderStatus;
use Domains\Core\Traits\ModelTrait;
use Domains\Customer\Models\Customer;
use Domains\QuoteRequest\Models\QuoteRequest;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class PurchaseOrder extends Model
{
use HasFactory, ModelTrait;
protected $fillable = [
'po_number',
'po_date',
'sale_id',
'order_date',
'customer_id',
'payment_method',
'quote_request_id',
'status',
'customer_po_file',
'nameplate_file',
'sale_leader_approved_at',
'accountant_approved_at',
'advance_payment_amount',
'advance_payment_date',
'remaining_payment_note',
'ceo_approved_at',
'warehouse_export_date',
'completed_date',
'ceo_note',
];
protected function casts(): array
{
return [
'status' => PurchaseOrderStatus::class,
'po_date' => 'date',
'order_date' => 'date',
'customer_po_file' => 'array',
'nameplate_file' => 'array',
'sale_leader_approved_at' => 'date',
'accountant_approved_at' => 'date',
'advance_payment_date' => 'date',
'ceo_approved_at' => 'date',
'warehouse_export_date' => 'date',
'completed_date' => 'date',
];
}
/**
* Get the sale admin
*/
public function sale(): BelongsTo
{
return $this->belongsTo(Admin::class, 'sale_id');
}
/**
* Get the customer
*/
public function customer(): BelongsTo
{
return $this->belongsTo(Customer::class);
}
/**
* Get the quote request
*/
public function quoteRequest(): BelongsTo
{
return $this->belongsTo(QuoteRequest::class);
}
/**
* Get the purchase order details
*/
public function details(): HasMany
{
return $this->hasMany(PurchaseOrderDetail::class);
}
/**
* Get the commission slips
*/
public function commissionSlips(): HasMany
{
return $this->hasMany(CommissionSlip::class);
}
}