first commit
This commit is contained in:
		
							
								
								
									
										136
									
								
								app/Models/Banking/Account.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								app/Models/Banking/Account.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,136 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Models\Banking;
 | 
			
		||||
 | 
			
		||||
use App\Models\Model;
 | 
			
		||||
use Sofa\Eloquence\Eloquence;
 | 
			
		||||
 | 
			
		||||
class Account extends Model
 | 
			
		||||
{
 | 
			
		||||
    use Eloquence;
 | 
			
		||||
 | 
			
		||||
    protected $table = 'accounts';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The accessors to append to the model's array form.
 | 
			
		||||
     *
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    protected $appends = ['balance'];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Attributes that should be mass-assignable.
 | 
			
		||||
     *
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    protected $fillable = ['company_id', 'name', 'number', 'currency_code', 'opening_balance', 'bank_name', 'bank_phone', 'bank_address', 'enabled'];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sortable columns.
 | 
			
		||||
     *
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    public $sortable = ['name', 'number', 'opening_balance', 'enabled'];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Searchable rules.
 | 
			
		||||
     *
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    protected $searchableColumns = [
 | 
			
		||||
        'name'         => 10,
 | 
			
		||||
        'number'       => 10,
 | 
			
		||||
        'bank_name'    => 10,
 | 
			
		||||
        'bank_phone'   => 5,
 | 
			
		||||
        'bank_address' => 2,
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    public function currency()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function invoice_payments()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasMany('App\Models\Income\InvoicePayment');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function revenues()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasMany('App\Models\Income\Revenue');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function bill_payments()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasMany('App\Models\Expense\BillPayment');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function payments()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasMany('App\Models\Expense\Payment');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function canDelete()
 | 
			
		||||
    {
 | 
			
		||||
        $error = false;
 | 
			
		||||
 | 
			
		||||
        $bill_payments = $this->bill_payments();
 | 
			
		||||
        if ($bill_payments->count()) {
 | 
			
		||||
            $error['bills'] = $bill_payments->count();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $payments = $this->payments();
 | 
			
		||||
        if ($payments->count()) {
 | 
			
		||||
            $error['payments'] = $payments->count();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $invoice_payments = $this->invoice_payments();
 | 
			
		||||
        if ($invoice_payments->count()) {
 | 
			
		||||
            $error['invoices'] = $invoice_payments->count();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $revenues = $this->revenues();
 | 
			
		||||
        if ($revenues->count()) {
 | 
			
		||||
            $error['revenues'] = $revenues->count();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($error) {
 | 
			
		||||
            return $error;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the current balance.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function getBalanceAttribute()
 | 
			
		||||
    {
 | 
			
		||||
        // Opening Balance
 | 
			
		||||
        $total = $this->opening_balance;
 | 
			
		||||
 | 
			
		||||
        // Sum invoices
 | 
			
		||||
        foreach ($this->invoice_payments as $item) {
 | 
			
		||||
            $total += $item->amount;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Sum revenues
 | 
			
		||||
        foreach ($this->revenues as $item) {
 | 
			
		||||
            $total += $item->amount;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Subtract bills
 | 
			
		||||
        foreach ($this->bill_payments as $item) {
 | 
			
		||||
            $total -= $item->amount;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Subtract payments
 | 
			
		||||
        foreach ($this->payments as $item) {
 | 
			
		||||
            $total -= $item->amount;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $total;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user