mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 02:36:28 +00:00 
			
		
		
		
	New code.
This commit is contained in:
		| @@ -13,6 +13,8 @@ class Budget extends Model | ||||
|  | ||||
|     use SoftDeletes; | ||||
|  | ||||
|     protected $fillable = ['user_id', 'name']; | ||||
|  | ||||
|     /** | ||||
|      * @return \Illuminate\Database\Eloquent\Relations\HasMany | ||||
|      */ | ||||
|   | ||||
| @@ -26,4 +26,20 @@ class LimitRepetition extends Model | ||||
|         return ['created_at', 'updated_at', 'startdate', 'enddate']; | ||||
|     } | ||||
|  | ||||
|     public function spentInRepetition() | ||||
|     { | ||||
|         $sum = \DB::table('transactions') | ||||
|                   ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') | ||||
|                   ->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id') | ||||
|                   ->leftJoin('budget_limits', 'budget_limits.budget_id', '=', 'budget_transaction_journal.budget_id') | ||||
|                   ->leftJoin('limit_repetitions', 'limit_repetitions.budget_limit_id', '=', 'budget_limits.id') | ||||
|                   ->where('transaction_journals.date', '>=', $this->startdate->format('Y-m-d')) | ||||
|                   ->where('transaction_journals.date', '<=', $this->enddate->format('Y-m-d')) | ||||
|                   ->where('transactions.amount', '>', 0) | ||||
|                   ->where('limit_repetitions.id', '=', $this->id) | ||||
|                   ->sum('transactions.amount'); | ||||
|  | ||||
|         return floatval($sum); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -87,6 +87,19 @@ class TransactionJournal extends Model | ||||
|         return $this->hasMany('FireflyIII\Models\PiggyBankEvent'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param EloquentBuilder $query | ||||
|      * @param Account         $account | ||||
|      */ | ||||
|     public function scopeAccountIs(EloquentBuilder $query, Account $account) | ||||
|     { | ||||
|         if (!isset($this->joinedTransactions)) { | ||||
|             $query->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id'); | ||||
|             $this->joinedTransactions = true; | ||||
|         } | ||||
|         $query->where('transactions.account_id', $account->id); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param EloquentBuilder $query | ||||
|      * @param Carbon          $date | ||||
| @@ -125,6 +138,17 @@ class TransactionJournal extends Model | ||||
|         $query->where('transactions.amount', '<=', $amount); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param EloquentBuilder $query | ||||
|      * @param Carbon          $date | ||||
|      * | ||||
|      * @return mixed | ||||
|      */ | ||||
|     public function scopeOnDate(EloquentBuilder $query, Carbon $date) | ||||
|     { | ||||
|         return $query->where('date', '=', $date->format('Y-m-d')); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param EloquentBuilder $query | ||||
|      * @param array           $types | ||||
| @@ -140,6 +164,21 @@ class TransactionJournal extends Model | ||||
|         $query->whereIn('transaction_types.type', $types); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Automatically includes the 'with' parameters to get relevant related | ||||
|      * objects. | ||||
|      * | ||||
|      * @param EloquentBuilder $query | ||||
|      */ | ||||
|     public function scopeWithRelevantData(EloquentBuilder $query) | ||||
|     { | ||||
|         $query->with( | ||||
|             ['transactions' => function (HasMany $q) { | ||||
|                 $q->orderBy('amount', 'ASC'); | ||||
|             }, 'transactiontype', 'transactioncurrency', 'budgets', 'categories', 'transactions.account.accounttype', 'bill', 'budgets', 'categories'] | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param $value | ||||
|      */ | ||||
| @@ -173,21 +212,6 @@ class TransactionJournal extends Model | ||||
|         return $this->belongsToMany('FireflyIII\Models\TransactionGroup'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Automatically includes the 'with' parameters to get relevant related | ||||
|      * objects. | ||||
|      * | ||||
|      * @param EloquentBuilder $query | ||||
|      */ | ||||
|     public function scopeWithRelevantData(EloquentBuilder $query) | ||||
|     { | ||||
|         $query->with( | ||||
|             ['transactions' => function (HasMany $q) { | ||||
|                 $q->orderBy('amount', 'ASC'); | ||||
|             }, 'transactiontype', 'transactioncurrency','budgets', 'categories', 'transactions.account.accounttype', 'bill', 'budgets', 'categories'] | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return \Illuminate\Database\Eloquent\Relations\HasMany | ||||
|      */ | ||||
| @@ -204,17 +228,4 @@ class TransactionJournal extends Model | ||||
|         return $this->belongsTo('FireflyIII\User'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param EloquentBuilder $query | ||||
|      * @param Account         $account | ||||
|      */ | ||||
|     public function scopeAccountIs(EloquentBuilder $query, Account $account) | ||||
|     { | ||||
|         if (!isset($this->joinedTransactions)) { | ||||
|             $query->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id'); | ||||
|             $this->joinedTransactions = true; | ||||
|         } | ||||
|         $query->where('transactions.account_id', $account->id); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user