mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-25 06:51:08 +00:00
Cleaned up some double code.
This commit is contained in:
@@ -87,9 +87,9 @@ class ReportQuery implements ReportQueryInterface
|
|||||||
->whereNull('budget_transaction_journal.budget_id')->whereNull('transaction_journals.deleted_at')
|
->whereNull('budget_transaction_journal.budget_id')->whereNull('transaction_journals.deleted_at')
|
||||||
->whereNull('otherJournals.deleted_at')
|
->whereNull('otherJournals.deleted_at')
|
||||||
->where('transactions.account_id', $account->id)
|
->where('transactions.account_id', $account->id)
|
||||||
->orderBy('transaction_journals.date', 'DESC')
|
->orderBy('transaction_journals.date', 'DESC')
|
||||||
->orderBy('transaction_journals.order','ASC')
|
->orderBy('transaction_journals.order', 'ASC')
|
||||||
->orderBy('transaction_journals.id','DESC')
|
->orderBy('transaction_journals.id', 'DESC')
|
||||||
->whereNotNull('transaction_group_transaction_journal.transaction_group_id')
|
->whereNotNull('transaction_group_transaction_journal.transaction_group_id')
|
||||||
->get(
|
->get(
|
||||||
[
|
[
|
||||||
@@ -174,26 +174,9 @@ class ReportQuery implements ReportQueryInterface
|
|||||||
*/
|
*/
|
||||||
public function getBudgetSummary(Account $account, Carbon $start, Carbon $end)
|
public function getBudgetSummary(Account $account, Carbon $start, Carbon $end)
|
||||||
{
|
{
|
||||||
$set = TransactionJournal::
|
$query = $this->queryJournalsNoBudget($account, $start, $end);
|
||||||
leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
|
||||||
->leftJoin('budgets', 'budgets.id', '=', 'budget_transaction_journal.budget_id')
|
|
||||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
|
||||||
->leftJoin(
|
|
||||||
'transactions', function (JoinClause $join) {
|
|
||||||
$join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where('transactions.amount', '<', 0);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
|
|
||||||
->before($end)
|
|
||||||
->after($start)
|
|
||||||
->where('accounts.id', $account->id)
|
|
||||||
->where('transaction_journals.user_id', Auth::user()->id)
|
|
||||||
->where('transaction_types.type', 'Withdrawal')
|
|
||||||
->groupBy('budgets.id')
|
|
||||||
->orderBy('budgets.name', 'ASC')
|
|
||||||
->get(['budgets.id', 'budgets.name', DB::Raw('SUM(`transactions`.`amount`) as `amount`')]);
|
|
||||||
|
|
||||||
return $set;
|
return $query->get(['budgets.id', 'budgets.name', DB::Raw('SUM(`transactions`.`amount`) as `amount`')]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,26 +192,9 @@ class ReportQuery implements ReportQueryInterface
|
|||||||
*/
|
*/
|
||||||
public function getTransactionsWithoutBudget(Account $account, Carbon $start, Carbon $end)
|
public function getTransactionsWithoutBudget(Account $account, Carbon $start, Carbon $end)
|
||||||
{
|
{
|
||||||
$set = TransactionJournal::
|
$query = $this->queryJournalsNoBudget($account, $start, $end);
|
||||||
leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
|
||||||
->leftJoin('budgets', 'budgets.id', '=', 'budget_transaction_journal.budget_id')
|
|
||||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
|
||||||
->leftJoin(
|
|
||||||
'transactions', function (JoinClause $join) {
|
|
||||||
$join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where('transactions.amount', '<', 0);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
|
|
||||||
->before($end)
|
|
||||||
->after($start)
|
|
||||||
->where('accounts.id', $account->id)
|
|
||||||
->where('transaction_journals.user_id', Auth::user()->id)
|
|
||||||
->where('transaction_types.type', 'Withdrawal')
|
|
||||||
->whereNull('budgets.id')
|
|
||||||
->orderBy('transaction_journals.date', 'ASC')
|
|
||||||
->get(['budgets.name', 'transactions.amount', 'transaction_journals.*']);
|
|
||||||
|
|
||||||
return $set;
|
return $query->get(['budgets.name', 'transactions.amount', 'transaction_journals.*']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -604,4 +570,37 @@ class ReportQuery implements ReportQueryInterface
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This query will get all transaction journals and budget information for a specified account
|
||||||
|
* in a certain date range, where the transaction journal does not have a budget.
|
||||||
|
* There is no get() specified, this is up to the method itself.
|
||||||
|
*
|
||||||
|
* @param Account $account
|
||||||
|
* @param Carbon $start
|
||||||
|
* @param Carbon $end
|
||||||
|
*
|
||||||
|
* @return Builder
|
||||||
|
*/
|
||||||
|
public function queryJournalsNoBudget(Account $account, Carbon $start, Carbon $end)
|
||||||
|
{
|
||||||
|
return TransactionJournal::
|
||||||
|
leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||||
|
->leftJoin('budgets', 'budgets.id', '=', 'budget_transaction_journal.budget_id')
|
||||||
|
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
||||||
|
->leftJoin(
|
||||||
|
'transactions', function (JoinClause $join) {
|
||||||
|
$join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where('transactions.amount', '<', 0);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
|
||||||
|
->before($end)
|
||||||
|
->after($start)
|
||||||
|
->where('accounts.id', $account->id)
|
||||||
|
->where('transaction_journals.user_id', Auth::user()->id)
|
||||||
|
->where('transaction_types.type', 'Withdrawal')
|
||||||
|
->groupBy('budgets.id')
|
||||||
|
->orderBy('budgets.name', 'ASC');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
<?php namespace FireflyIII\Http\Controllers;
|
<?php namespace FireflyIII\Http\Controllers;
|
||||||
|
|
||||||
use Auth;
|
use Auth;
|
||||||
use Carbon\Carbon;
|
|
||||||
use FireflyIII\Http\Requests;
|
use FireflyIII\Http\Requests;
|
||||||
use FireflyIII\Http\Requests\BillFormRequest;
|
use FireflyIII\Http\Requests\BillFormRequest;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
@@ -139,11 +138,10 @@ class BillController extends Controller
|
|||||||
public function show(Bill $bill, BillRepositoryInterface $repository)
|
public function show(Bill $bill, BillRepositoryInterface $repository)
|
||||||
{
|
{
|
||||||
$journals = $bill->transactionjournals()->withRelevantData()
|
$journals = $bill->transactionjournals()->withRelevantData()
|
||||||
->orderBy('transaction_journals.date', 'DESC')
|
->orderBy('transaction_journals.date', 'DESC')
|
||||||
->orderBy('transaction_journals.order','ASC')
|
->orderBy('transaction_journals.order', 'ASC')
|
||||||
->orderBy('transaction_journals.id','DESC')
|
->orderBy('transaction_journals.id', 'DESC')
|
||||||
|
->get();
|
||||||
->get();
|
|
||||||
$bill->nextExpectedMatch = $repository->nextExpectedMatch($bill);
|
$bill->nextExpectedMatch = $repository->nextExpectedMatch($bill);
|
||||||
$hideBill = true;
|
$hideBill = true;
|
||||||
|
|
||||||
@@ -156,22 +154,8 @@ class BillController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function store(BillFormRequest $request, BillRepositoryInterface $repository)
|
public function store(BillFormRequest $request, BillRepositoryInterface $repository)
|
||||||
{
|
{
|
||||||
|
$billData = $request->getBillData();
|
||||||
$billData = [
|
$bill = $repository->store($billData);
|
||||||
'name' => $request->get('name'),
|
|
||||||
'match' => $request->get('match'),
|
|
||||||
'amount_min' => floatval($request->get('amount_min')),
|
|
||||||
'amount_currency_id' => floatval($request->get('amount_currency_id')),
|
|
||||||
'amount_max' => floatval($request->get('amount_max')),
|
|
||||||
'date' => new Carbon($request->get('date')),
|
|
||||||
'user' => Auth::user()->id,
|
|
||||||
'repeat_freq' => $request->get('repeat_freq'),
|
|
||||||
'skip' => intval($request->get('skip')),
|
|
||||||
'automatch' => intval($request->get('automatch')) === 1,
|
|
||||||
'active' => intval($request->get('active')) === 1,
|
|
||||||
];
|
|
||||||
|
|
||||||
$bill = $repository->store($billData);
|
|
||||||
Session::flash('success', 'Bill "' . e($bill->name) . '" stored.');
|
Session::flash('success', 'Bill "' . e($bill->name) . '" stored.');
|
||||||
|
|
||||||
if (intval(Input::get('create_another')) === 1) {
|
if (intval(Input::get('create_another')) === 1) {
|
||||||
@@ -189,21 +173,8 @@ class BillController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function update(Bill $bill, BillFormRequest $request, BillRepositoryInterface $repository)
|
public function update(Bill $bill, BillFormRequest $request, BillRepositoryInterface $repository)
|
||||||
{
|
{
|
||||||
$billData = [
|
$billData = $request->getBillData();
|
||||||
'name' => $request->get('name'),
|
$bill = $repository->update($bill, $billData);
|
||||||
'match' => $request->get('match'),
|
|
||||||
'amount_min' => floatval($request->get('amount_min')),
|
|
||||||
'amount_currency_id' => floatval($request->get('amount_currency_id')),
|
|
||||||
'amount_max' => floatval($request->get('amount_max')),
|
|
||||||
'date' => new Carbon($request->get('date')),
|
|
||||||
'user' => Auth::user()->id,
|
|
||||||
'repeat_freq' => $request->get('repeat_freq'),
|
|
||||||
'skip' => intval($request->get('skip')),
|
|
||||||
'automatch' => intval($request->get('automatch')) === 1,
|
|
||||||
'active' => intval($request->get('active')) === 1,
|
|
||||||
];
|
|
||||||
|
|
||||||
$bill = $repository->update($bill, $billData);
|
|
||||||
|
|
||||||
if (intval(Input::get('return_to_edit')) === 1) {
|
if (intval(Input::get('return_to_edit')) === 1) {
|
||||||
return Redirect::route('bills.edit', $bill->id);
|
return Redirect::route('bills.edit', $bill->id);
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
<?php namespace FireflyIII\Http\Controllers;
|
<?php namespace FireflyIII\Http\Controllers;
|
||||||
|
|
||||||
use Auth;
|
use Auth;
|
||||||
use Carbon\Carbon;
|
|
||||||
use ExpandedForm;
|
use ExpandedForm;
|
||||||
use FireflyIII\Events\JournalCreated;
|
use FireflyIII\Events\JournalCreated;
|
||||||
use FireflyIII\Events\JournalSaved;
|
use FireflyIII\Events\JournalSaved;
|
||||||
@@ -13,9 +12,9 @@ use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
|||||||
use Illuminate\Pagination\LengthAwarePaginator;
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
use Input;
|
use Input;
|
||||||
use Redirect;
|
use Redirect;
|
||||||
|
use Response;
|
||||||
use Session;
|
use Session;
|
||||||
use View;
|
use View;
|
||||||
use Response;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TransactionController
|
* Class TransactionController
|
||||||
@@ -199,16 +198,13 @@ class TransactionController extends Controller
|
|||||||
$page = intval(\Input::get('page'));
|
$page = intval(\Input::get('page'));
|
||||||
$offset = $page > 0 ? ($page - 1) * 50 : 0;
|
$offset = $page > 0 ? ($page - 1) * 50 : 0;
|
||||||
|
|
||||||
$set = Auth::user()->
|
$set = Auth::user()->transactionJournals()->transactionTypes($types)->withRelevantData()->take(50)->offset($offset)
|
||||||
transactionJournals()->
|
->orderBy('date', 'DESC')
|
||||||
transactionTypes($types)->
|
->orderBy('order', 'ASC')
|
||||||
withRelevantData()->take(50)->offset($offset)
|
->orderBy('id', 'DESC')
|
||||||
->orderBy('date', 'DESC')
|
->get(
|
||||||
->orderBy('order','ASC')
|
['transaction_journals.*']
|
||||||
->orderBy('id','DESC')
|
);
|
||||||
->get(
|
|
||||||
['transaction_journals.*']
|
|
||||||
);
|
|
||||||
$count = Auth::user()->transactionJournals()->transactionTypes($types)->count();
|
$count = Auth::user()->transactionJournals()->transactionTypes($types)->count();
|
||||||
$journals = new LengthAwarePaginator($set, $count, 50, $page);
|
$journals = new LengthAwarePaginator($set, $count, 50, $page);
|
||||||
$journals->setPath('transactions/' . $what);
|
$journals->setPath('transactions/' . $what);
|
||||||
@@ -227,13 +223,14 @@ class TransactionController extends Controller
|
|||||||
$order = 0;
|
$order = 0;
|
||||||
foreach ($ids as $id) {
|
foreach ($ids as $id) {
|
||||||
$journal = Auth::user()->transactionjournals()->where('id', $id)->where('date', Input::get('date'))->first();
|
$journal = Auth::user()->transactionjournals()->where('id', $id)->where('date', Input::get('date'))->first();
|
||||||
if($journal) {
|
if ($journal) {
|
||||||
$journal->order = $order;
|
$journal->order = $order;
|
||||||
$order++;
|
$order++;
|
||||||
$journal->save();
|
$journal->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Response::json(true);
|
return Response::json(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -251,10 +248,10 @@ class TransactionController extends Controller
|
|||||||
$t->account->transactions()->leftJoin(
|
$t->account->transactions()->leftJoin(
|
||||||
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
||||||
)
|
)
|
||||||
->where('transaction_journals.date', '<=', $journal->date->format('Y-m-d'))
|
->where('transaction_journals.date', '<=', $journal->date->format('Y-m-d'))
|
||||||
->where('transaction_journals.order','>=',$journal->order)
|
->where('transaction_journals.order', '>=', $journal->order)
|
||||||
->where('transaction_journals.id', '!=', $journal->id)
|
->where('transaction_journals.id', '!=', $journal->id)
|
||||||
->sum('transactions.amount')
|
->sum('transactions.amount')
|
||||||
);
|
);
|
||||||
$t->after = $t->before + $t->amount;
|
$t->after = $t->before + $t->amount;
|
||||||
}
|
}
|
||||||
@@ -274,23 +271,8 @@ class TransactionController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function store(JournalFormRequest $request, JournalRepositoryInterface $repository)
|
public function store(JournalFormRequest $request, JournalRepositoryInterface $repository)
|
||||||
{
|
{
|
||||||
$journalData = [
|
$journalData = $request->getJournalData();
|
||||||
'what' => $request->get('what'),
|
$journal = $repository->store($journalData);
|
||||||
'description' => $request->get('description'),
|
|
||||||
'account_id' => intval($request->get('account_id')),
|
|
||||||
'account_from_id' => intval($request->get('account_from_id')),
|
|
||||||
'account_to_id' => intval($request->get('account_to_id')),
|
|
||||||
'expense_account' => $request->get('expense_account'),
|
|
||||||
'revenue_account' => $request->get('revenue_account'),
|
|
||||||
'amount' => floatval($request->get('amount')),
|
|
||||||
'user' => Auth::user()->id,
|
|
||||||
'amount_currency_id' => intval($request->get('amount_currency_id')),
|
|
||||||
'date' => new Carbon($request->get('date')),
|
|
||||||
'budget_id' => intval($request->get('budget_id')),
|
|
||||||
'category' => $request->get('category'),
|
|
||||||
];
|
|
||||||
|
|
||||||
$journal = $repository->store($journalData);
|
|
||||||
|
|
||||||
event(new JournalSaved($journal));
|
event(new JournalSaved($journal));
|
||||||
event(new JournalCreated($journal, intval($request->get('piggy_bank_id'))));
|
event(new JournalCreated($journal, intval($request->get('piggy_bank_id'))));
|
||||||
@@ -321,23 +303,7 @@ class TransactionController extends Controller
|
|||||||
public function update(TransactionJournal $journal, JournalFormRequest $request, JournalRepositoryInterface $repository)
|
public function update(TransactionJournal $journal, JournalFormRequest $request, JournalRepositoryInterface $repository)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$journalData = $request->getJournalData();
|
||||||
$journalData = [
|
|
||||||
'what' => $request->get('what'),
|
|
||||||
'description' => $request->get('description'),
|
|
||||||
'account_id' => intval($request->get('account_id')),
|
|
||||||
'account_from_id' => intval($request->get('account_from_id')),
|
|
||||||
'account_to_id' => intval($request->get('account_to_id')),
|
|
||||||
'expense_account' => $request->get('expense_account'),
|
|
||||||
'revenue_account' => $request->get('revenue_account'),
|
|
||||||
'amount' => floatval($request->get('amount')),
|
|
||||||
'user' => Auth::user()->id,
|
|
||||||
'amount_currency_id' => intval($request->get('amount_currency_id')),
|
|
||||||
'date' => new Carbon($request->get('date')),
|
|
||||||
'budget_id' => intval($request->get('budget_id')),
|
|
||||||
'category' => $request->get('category'),
|
|
||||||
];
|
|
||||||
|
|
||||||
$repository->update($journal, $journalData);
|
$repository->update($journal, $journalData);
|
||||||
|
|
||||||
event(new JournalSaved($journal));
|
event(new JournalSaved($journal));
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
namespace FireflyIII\Http\Requests;
|
namespace FireflyIII\Http\Requests;
|
||||||
|
|
||||||
use Auth;
|
use Auth;
|
||||||
|
use Carbon\Carbon;
|
||||||
use Input;
|
use Input;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -21,6 +22,26 @@ class BillFormRequest extends Request
|
|||||||
return Auth::check();
|
return Auth::check();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getBillData()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => $this->get('name'),
|
||||||
|
'match' => $this->get('match'),
|
||||||
|
'amount_min' => floatval($this->get('amount_min')),
|
||||||
|
'amount_currency_id' => floatval($this->get('amount_currency_id')),
|
||||||
|
'amount_max' => floatval($this->get('amount_max')),
|
||||||
|
'date' => new Carbon($this->get('date')),
|
||||||
|
'user' => Auth::user()->id,
|
||||||
|
'repeat_freq' => $this->get('repeat_freq'),
|
||||||
|
'skip' => intval($this->get('skip')),
|
||||||
|
'automatch' => intval($this->get('automatch')) === 1,
|
||||||
|
'active' => intval($this->get('active')) === 1,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
|
@@ -3,8 +3,10 @@
|
|||||||
namespace FireflyIII\Http\Requests;
|
namespace FireflyIII\Http\Requests;
|
||||||
|
|
||||||
use Auth;
|
use Auth;
|
||||||
use Input;
|
use Carbon\Carbon;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Input;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class JournalFormRequest
|
* Class JournalFormRequest
|
||||||
*
|
*
|
||||||
@@ -21,6 +23,28 @@ class JournalFormRequest extends Request
|
|||||||
return Auth::check();
|
return Auth::check();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getJournalData()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'what' => $this->get('what'),
|
||||||
|
'description' => $this->get('description'),
|
||||||
|
'account_id' => intval($this->get('account_id')),
|
||||||
|
'account_from_id' => intval($this->get('account_from_id')),
|
||||||
|
'account_to_id' => intval($this->get('account_to_id')),
|
||||||
|
'expense_account' => $this->get('expense_account'),
|
||||||
|
'revenue_account' => $this->get('revenue_account'),
|
||||||
|
'amount' => floatval($this->get('amount')),
|
||||||
|
'user' => Auth::user()->id,
|
||||||
|
'amount_currency_id' => intval($this->get('amount_currency_id')),
|
||||||
|
'date' => new Carbon($this->get('date')),
|
||||||
|
'budget_id' => intval($this->get('budget_id')),
|
||||||
|
'category' => $this->get('category'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
|
Reference in New Issue
Block a user