106 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Models\Setting;
 | |
| 
 | |
| use App\Models\Model;
 | |
| 
 | |
| class Currency extends Model
 | |
| {
 | |
| 
 | |
|     protected $table = 'currencies';
 | |
| 
 | |
|     /**
 | |
|      * Attributes that should be mass-assignable.
 | |
|      *
 | |
|      * @var array
 | |
|      */
 | |
|     protected $fillable = ['company_id', 'name', 'code', 'rate', 'enabled'];
 | |
| 
 | |
|     /**
 | |
|      * Sortable columns.
 | |
|      *
 | |
|      * @var array
 | |
|      */
 | |
|     public $sortable = ['name', 'code', 'rate', 'enabled'];
 | |
| 
 | |
|     public function accounts()
 | |
|     {
 | |
|         return $this->hasMany('App\Models\Banking\Account', 'currency_code', 'code');
 | |
|     }
 | |
| 
 | |
|     public function customers()
 | |
|     {
 | |
|         return $this->hasMany('App\Models\Income\Customer', 'currency_code', 'code');
 | |
|     }
 | |
| 
 | |
|     public function invoices()
 | |
|     {
 | |
|         return $this->hasMany('App\Models\Income\Invoice', 'currency_code', 'code');
 | |
|     }
 | |
| 
 | |
|     public function revenues()
 | |
|     {
 | |
|         return $this->hasMany('App\Models\Income\Revenue', 'currency_code', 'code');
 | |
|     }
 | |
| 
 | |
|     public function bills()
 | |
|     {
 | |
|         return $this->hasMany('App\Models\Expense\Bill', 'currency_code', 'code');
 | |
|     }
 | |
| 
 | |
|     public function payments()
 | |
|     {
 | |
|         return $this->hasMany('App\Models\Expense\Payment', 'currency_code', 'code');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Convert rate to float.
 | |
|      *
 | |
|      * @param  string  $value
 | |
|      * @return void
 | |
|      */
 | |
|     public function setRateAttribute($value)
 | |
|     {
 | |
|         $this->attributes['rate'] = (float) $value;
 | |
|     }
 | |
| 
 | |
|     public function canDisable()
 | |
|     {
 | |
|         $error = false;
 | |
| 
 | |
|         if ($this->code == setting('general.default_currency')) {
 | |
|             $error['company'] = 1;
 | |
|         }
 | |
| 
 | |
|         if ($accounts = $this->accounts()->count()) {
 | |
|             $error['accounts'] = $accounts;
 | |
|         }
 | |
| 
 | |
|         if ($customers = $this->customers()->count()) {
 | |
|             $error['customers'] = $customers;
 | |
|         }
 | |
| 
 | |
|         if ($invoices = $this->invoices()->count()) {
 | |
|             $error['invoices'] = $invoices;
 | |
|         }
 | |
| 
 | |
|         if ($revenues = $this->revenues()->count()) {
 | |
|             $error['revenues'] = $revenues;
 | |
|         }
 | |
| 
 | |
|         if ($bills = $this->bills()->count()) {
 | |
|             $error['bills'] = $bills;
 | |
|         }
 | |
| 
 | |
|         if ($payments = $this->payments()->count()) {
 | |
|             $error['payments'] = $payments;
 | |
|         }
 | |
| 
 | |
|         if ($error) {
 | |
|             return $error;
 | |
|         }
 | |
| 
 | |
|         return true;
 | |
|     }
 | |
| }
 |