diff --git a/app/Http/Controllers/Transaction/MassController.php b/app/Http/Controllers/Transaction/MassController.php index 0457d4d677..dfff2e24b7 100644 --- a/app/Http/Controllers/Transaction/MassController.php +++ b/app/Http/Controllers/Transaction/MassController.php @@ -14,13 +14,13 @@ declare(strict_types = 1); namespace FireflyIII\Http\Controllers\Transaction; use Carbon\Carbon; -use ExpandedForm; use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Requests\MassDeleteJournalRequest; use FireflyIII\Http\Requests\MassEditJournalRequest; use FireflyIII\Models\AccountType; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Illuminate\Support\Collection; use Preferences; @@ -118,8 +118,13 @@ class MassController extends Controller $subTitle = trans('firefly.mass_edit_journals'); /** @var AccountRepositoryInterface $repository */ - $repository = app(AccountRepositoryInterface::class); - $accountList = ExpandedForm::makeSelectList($repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])); + $repository = app(AccountRepositoryInterface::class); + $accounts = $repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]); + + // get budgets + /** @var BudgetRepositoryInterface $budgetRepository */ + $budgetRepository = app(BudgetRepositoryInterface::class); + $budgets = $budgetRepository->getBudgets(); // skip transactions that have multiple destinations // or multiple sources: @@ -177,7 +182,7 @@ class MassController extends Controller $journals = $filtered; - return view('transactions.mass.edit', compact('journals', 'subTitle', 'accountList')); + return view('transactions.mass.edit', compact('journals', 'subTitle', 'accounts', 'budgets')); } /** @@ -200,7 +205,7 @@ class MassController extends Controller $sourceAccountName = $request->get('source_account_name')[$journal->id] ?? ''; $destAccountId = $request->get('destination_account_id')[$journal->id] ?? 0; $destAccountName = $request->get('destination_account_name')[$journal->id] ?? ''; - $budgetId = $journal->budgets->first() ? $journal->budgets->first()->id : 0; + $budgetId = $request->get('budget_id')[$journal->id] ?? 0; $category = $request->get('category')[$journal->id]; $tags = $journal->tags->pluck('tag')->toArray(); @@ -214,12 +219,12 @@ class MassController extends Controller 'destination_account_id' => intval($destAccountId), 'destination_account_name' => $destAccountName, 'amount' => round($request->get('amount')[$journal->id], 12), - 'currency_id' => intval($request->get('amount_currency_id_amount_' . $journal->id)), + 'currency_id' => $journal->transaction_currency_id, 'date' => new Carbon($request->get('date')[$journal->id]), 'interest_date' => $journal->interest_date, 'book_date' => $journal->book_date, 'process_date' => $journal->process_date, - 'budget_id' => $budgetId, + 'budget_id' => intval($budgetId), 'category' => $category, 'tags' => $tags, diff --git a/resources/views/transactions/mass/edit.twig b/resources/views/transactions/mass/edit.twig index f4dfb503a9..4f47734b4d 100644 --- a/resources/views/transactions/mass/edit.twig +++ b/resources/views/transactions/mass/edit.twig @@ -22,66 +22,87 @@   - {{ trans('list.description') }} + {{ trans('list.description') }} {{ trans('list.amount') }} {{ trans('list.date') }} {{ trans('list.from') }} {{ trans('list.to') }} {{ trans('list.category') }} + {{ trans('list.budget') }} {% for journal in journals %} {% if journal.transaction_count == 2 %} - - - - + {# LINK TO EDIT FORM #} + - - - - - - {{ ExpandedForm.amountSmall('amount_'~journal.id, journal.amount, {'name' : 'amount['~journal.id~']', 'currency' : journal.transactionCurrency}) }} - - - - + {# DESCRIPTION #} + +
+ {{ journal.transactionCurrency.symbol }} + +
- + + + {# DATE #} + + + + {# SOURCE ACCOUNT ID FOR TRANSFER OR WITHDRAWAL #} {% if journal.transaction_type_type == 'Transfer' or journal.transaction_type_type == 'Withdrawal' %} - {{ Form.select('source_account_id['~journal.id~']', accountList, journal.source_account_id, {'class': 'form-control'}) }} + {% else %} - - {{ Form.input('text', 'source_account_name['~journal.id~']', journal.source_account_name, {'class': 'form-control', 'placeholder': trans('form.revenue_account')}) }} + {# SOURCE ACCOUNT NAME FOR DEPOSIT #} + {% endif %} - - {% if journal.transaction_type_type == 'Transfer' or journal.transaction_type_type == 'Deposit' %} - - {{ Form.select('destination_account_id['~journal.id~']', accountList, journal.destination_account_id, {'class': 'form-control'}) }} + {# DESTINATION ACCOUNT NAME FOR TRANSFER AND DEPOSIT #} + {% else %} - - - {{ Form.input('text', 'destination_account_name['~journal.id~']', journal.destination_account_name, {'class': 'form-control', 'placeholder': trans('form.expense_account')}) }} + {# DESTINATION ACCOUNT NAME FOR EXPENSE #} + {% endif %} - + {# category #} - {{ Form.input('text', 'category['~journal.id~']', journal.categories[0].name, {'class': 'form-control', 'placeholder': trans('form.category')}) }} + + + {# budget #} + + {% if journal.transaction_type_type == 'Withdrawal' %} + + {% endif %} {% endif %} diff --git a/tests/Feature/Controllers/Transaction/MassControllerTest.php b/tests/Feature/Controllers/Transaction/MassControllerTest.php index 342380be36..c662c2c6b5 100644 --- a/tests/Feature/Controllers/Transaction/MassControllerTest.php +++ b/tests/Feature/Controllers/Transaction/MassControllerTest.php @@ -16,6 +16,7 @@ use DB; use FireflyIII\Models\AccountType; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Illuminate\Support\Collection; use Log; @@ -77,6 +78,10 @@ class MassControllerTest extends TestCase $repository = $this->mock(AccountRepositoryInterface::class); $repository->shouldReceive('getAccountsByType')->once()->withArgs([[AccountType::DEFAULT, AccountType::ASSET]])->andReturn(new Collection); + // mock more stuff: + $budgetRepos = $this->mock(BudgetRepositoryInterface::class); + $budgetRepos->shouldReceive('getBudgets')->andReturn(new Collection); + $transfers = TransactionJournal::where('transaction_type_id', 3)->where('user_id', $this->user()->id)->take(2)->get()->pluck('id')->toArray(); $this->be($this->user());