belongsTo(User::class, 'user_id', 'id'); } public function customer() { return $this->belongsTo(Customer::class, 'customer_id', 'id'); } public function address() { return $this->belongsTo(Address::class, 'address_id', 'id'); } public function vouchers() { return $this->morphMany(Voucher::class,'reference_used'); } public function shipping() { return $this->hasOne(TransactionShipping::class); } public function location() { return $this->belongsTo(Location::class, 'location_id', 'id'); } public function detailTransaction() { return $this->hasMany(TransactionDetail::class, 'transaction_id', 'id'); } public function details() { return $this->hasMany(TransactionDetail::class, 'transaction_id', 'id'); } public function xendits() { return $this->hasMany(TransactionPayment::class, 'transaction_id', 'id') ->where("method_type",XenditLink::class); } public function payments() { return $this->hasMany(TransactionPayment::class, 'transaction_id', 'id'); } public function statuses() { return $this->hasMany(TransactionStatus::class, 'transaction_id', 'id'); } public function invoice() { return $this->belongsTo(PosInvoice::class, 'invoice_id', 'id'); } public function getStatusTitleAttribute() { return __('order.status.'.strtolower($this->attributes['status'])); } public function getStatusColorAttribute() { return match($this->attributes['status']) { 'wait_payment' => 'warning', 'wait_process' => 'info', 'on_process' => 'primary', 'on_delivery' => 'success', 'closed' => 'success', 'cancelled' => 'danger', default => 'secondary', }; } public function getTotalAttribute() { return $this->attributes['subtotal'] + $this->attributes['shipping_price']; } }