Build edit split transactions.

This commit is contained in:
James Cole 2016-05-12 10:38:44 +02:00
parent b7c446f7db
commit ce7eebac5c
5 changed files with 49 additions and 10 deletions

View File

@ -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')
);
}
/**

View File

@ -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`')]
);

View File

@ -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
*/

View File

@ -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());

View File

@ -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;