mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Build edit split transactions.
This commit is contained in:
parent
b7c446f7db
commit
ce7eebac5c
@ -48,6 +48,35 @@ class SplitController extends Controller
|
||||
if ($count === 2) {
|
||||
return redirect(route('transactions.edit', [$journal->id]));
|
||||
}
|
||||
|
||||
/** @var CurrencyRepositoryInterface $currencyRepository */
|
||||
$currencyRepository = app(CurrencyRepositoryInterface::class);
|
||||
/** @var AccountRepositoryInterface $accountRepository */
|
||||
$accountRepository = app(AccountRepositoryInterface::class);
|
||||
|
||||
/** @var BudgetRepositoryInterface $budgetRepository */
|
||||
$budgetRepository = app(BudgetRepositoryInterface::class);
|
||||
|
||||
/** @var PiggyBankRepositoryInterface $piggyBankRepository */
|
||||
$piggyBankRepository = app(PiggyBankRepositoryInterface::class);
|
||||
|
||||
$what = strtolower(TransactionJournal::transactionTypeStr($journal));
|
||||
$currencies = ExpandedForm::makeSelectList($currencyRepository->get());
|
||||
$assetAccounts = ExpandedForm::makeSelectList($accountRepository->getAccounts(['Default account', 'Asset account']));
|
||||
$budgets = ExpandedForm::makeSelectListWithEmpty($budgetRepository->getActiveBudgets());
|
||||
$piggyBanks = ExpandedForm::makeSelectListWithEmpty($piggyBankRepository->getPiggyBanks());
|
||||
$amount = TransactionJournal::amountPositive($journal);
|
||||
|
||||
// get source account:
|
||||
$sourceAccounts = TransactionJournal::sourceAccountList($journal);
|
||||
$destinationAccounts = TransactionJournal::destinationAccountList($journal);
|
||||
|
||||
// get the transactions:
|
||||
|
||||
return view(
|
||||
'split.journals.edit',
|
||||
compact('currencies', 'amount', 'piggyBanks', 'sourceAccounts', 'destinationAccounts', 'assetAccounts', 'budgets', 'what', 'journal')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -418,6 +418,8 @@ class TransactionController extends Controller
|
||||
$event->piggyBank = $event->piggyBank()->withTrashed()->first();
|
||||
}
|
||||
);
|
||||
|
||||
// TODO different for each transaction type!
|
||||
$transactions = $journal->transactions()->groupBy('transactions.account_id')->orderBy('amount', 'ASC')->get(
|
||||
['transactions.*', DB::raw('SUM(`transactions`.`amount`) as `sum`')]
|
||||
);
|
||||
|
@ -343,7 +343,8 @@ Route::group(
|
||||
*/
|
||||
Route::get('/transaction/split', ['uses' => 'Transaction\SplitController@journalFromStore', 'as' => 'split.journal.from-store']);
|
||||
Route::post('/transaction/split', ['uses' => 'Transaction\SplitController@postJournalFromStore', 'as' => 'split.journal.from-store.post']);
|
||||
|
||||
Route::get('/transaction/edit-split/{journal}',['uses' => 'Transaction\SplitController@edit', 'as' => 'split.journal.edit']);
|
||||
Route::post('/transaction/edit-split/{journal}',['uses' => 'Transaction\SplitController@update', 'as' => 'split.journal.update']);
|
||||
/**
|
||||
* Tag Controller
|
||||
*/
|
||||
|
@ -182,8 +182,18 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
->expanded()
|
||||
->sortCorrectly()
|
||||
->before($end)
|
||||
->where('destination_account.id', $account->id)
|
||||
->whereIn('source_account.id', $ids)
|
||||
->leftJoin(
|
||||
'transactions as dest', function (JoinClause $join) {
|
||||
$join->on('dest.transaction_journal_id', '=', 'transaction_journals.id')->where('dest.amount', '>', 0);
|
||||
}
|
||||
)
|
||||
->leftJoin(
|
||||
'transactions as source', function (JoinClause $join) {
|
||||
$join->on('source.transaction_journal_id', '=', 'transaction_journals.id')->where('source.amount', '<', 0);
|
||||
}
|
||||
)
|
||||
->where('dest.account_id', $account->id)
|
||||
->whereIn('source.account_id', $ids)
|
||||
->after($start)
|
||||
->get(TransactionJournal::queryFields());
|
||||
|
||||
|
@ -72,13 +72,10 @@ class TransactionJournalSupport extends Model
|
||||
return $cache->get();
|
||||
}
|
||||
|
||||
$amount = '0';
|
||||
/** @var Transaction $t */
|
||||
foreach ($journal->transactions as $t) {
|
||||
if ($t->amount > 0) {
|
||||
$amount = $t->amount;
|
||||
}
|
||||
}
|
||||
// saves on queries:
|
||||
$amount = $journal->transactions()->where('amount', '>', 0)->get()->sum('amount');
|
||||
|
||||
$amount = strval($amount);
|
||||
$cache->store($amount);
|
||||
|
||||
return $amount;
|
||||
|
Loading…
Reference in New Issue
Block a user