<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use App\Interfaces\IDs; use App\Traits\{NextKey,PushNew}; /** * Class Payment * Payments that belong to an account * * Attributes for payments: * + lid : Local ID for payment * + payment_date : Date payment received * + sid : System ID for payment * + total : Payment total * * @package App\Models */ class Payment extends Model implements IDs { use NextKey,PushNew; const RECORD_ID = 'payment'; public $incrementing = FALSE; const CREATED_AT = 'date_orig'; const UPDATED_AT = 'date_last'; protected $table = 'ab_payment'; protected $dates = ['date_payment']; protected $dateFormat = 'U'; protected $with = ['account.country.currency','items']; // Array of items that can be updated with PushNew protected $pushable = ['items']; /* RELATIONS */ public function account() { return $this->belongsTo(Account::class); } public function items() { return $this->hasMany(PaymentItem::class); } /* ATTRIBUTES */ /** * @return mixed * @deprecated use date_payment directly. */ public function getDatePaidAttribute() { return $this->date_payment->format('Y-m-d'); } /** * Payment Local ID * * @return string */ public function getLIDattribute(): string { return sprintf('%06s',$this->id); } /** * Payment System ID * * @return string */ public function getSIDAttribute(): string { return sprintf('%02s-%04s#%s',$this->site_id,$this->account_id,$this->getLIDattribute()); } public function getTotalAttribute() { return sprintf('%3.'.$this->currency()->rounding.'f',$this->total_amt); } public function currency() { return $this->account->country->currency; } }