diff --git a/app/Http/Controllers/Transaction/SingleController.php b/app/Http/Controllers/Transaction/SingleController.php index a3fc1d87e7..a445063a32 100644 --- a/app/Http/Controllers/Transaction/SingleController.php +++ b/app/Http/Controllers/Transaction/SingleController.php @@ -30,10 +30,12 @@ use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Requests\JournalFormRequest; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; +use FireflyIII\Models\TransactionJournalMeta; use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use FireflyIII\Support\Http\Controllers\ModelInformation; +use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Log; @@ -180,6 +182,31 @@ class SingleController extends Controller ); } + /** + * Show a special JSONified view of a transaction, for easier debug purposes. + * + * @param TransactionJournal $journal + * + * @return JsonResponse + */ + public function debugShow(TransactionJournal $journal): JsonResponse + { + $array = $journal->toArray(); + $array['transactions'] = []; + $array['meta'] = []; + + /** @var Transaction $transaction */ + foreach ($journal->transactions as $transaction) { + $array['transactions'][] = $transaction->toArray(); + } + /** @var TransactionJournalMeta $meta */ + foreach ($journal->transactionJournalMeta as $meta) { + $array['meta'][] = $meta->toArray(); + } + + return response()->json($array); + } + /** * Shows the form that allows a user to delete a transaction journal. * @@ -283,6 +310,8 @@ class SingleController extends Controller 'source_name' => $sourceAccounts->first()->edit_name, 'destination_id' => $destinationAccounts->first()->id, 'destination_name' => $destinationAccounts->first()->edit_name, + 'bill_id' => $journal->bill_id, + 'bill_name' => null === $journal->bill_id ? null : $journal->bill->name, // new custom fields: 'due_date' => $repository->getJournalDate($journal, 'due_date'), @@ -414,6 +443,12 @@ class SingleController extends Controller // keep current bill: $data['bill_id'] = $journal->bill_id; + // remove it if no checkbox: + if (!$request->boolean('keep_bill_id')) { + $data['bill_id'] = null; + } + + $journal = $repository->update($journal, $data); /** @var array $files */ $files = $request->hasFile('attachments') ? $request->file('attachments') : null; @@ -446,14 +481,4 @@ class SingleController extends Controller // redirect to previous URL. return redirect($this->getPreviousUri('transactions.edit.uri')); } - - /** - * Show a special JSONified view of a transaction, for easier debug purposes. - * - * @param TransactionJournal $journal - */ - public function debugShow(TransactionJournal $journal) - { - - } } diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 266974a4b5..9220b3a867 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -64,6 +64,8 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property int $id * @property TransactionType $transactionType * @property Collection budgets + * @property Bill $bill + * @property Collection transactionJournalMeta * * @SuppressWarnings(PHPMD.TooManyPublicMethods) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) diff --git a/resources/views/v1/transactions/single/edit.twig b/resources/views/v1/transactions/single/edit.twig index b532d29136..db8fdeeedf 100644 --- a/resources/views/v1/transactions/single/edit.twig +++ b/resources/views/v1/transactions/single/edit.twig @@ -90,6 +90,11 @@ {% endif %} {{ ExpandedForm.text('category',data['category']) }} {{ ExpandedForm.text('tags') }} + + {% if data.bill_id != null %} + {{ ExpandedForm.checkbox('keep_bill_id',1,true, {'helpText': trans('firefly.journal_link_bill', {name: data.bill_name,route: route('bills.show', [data.bill_id])})} ) }} + {% endif %} + {# NO PIGGY BANK #} diff --git a/routes/web.php b/routes/web.php index adc4fb7c80..de25defb50 100755 --- a/routes/web.php +++ b/routes/web.php @@ -879,6 +879,7 @@ Route::group( ); Route::get('show/{tj}', ['uses' => 'TransactionController@show', 'as' => 'show']); + Route::get('debug/{tj}', ['uses' => 'Transaction\SingleController@debugShow', 'as' => 'debug']); Route::post('reorder', ['uses' => 'TransactionController@reorder', 'as' => 'reorder']); Route::post('reconcile', ['uses' => 'TransactionController@reconcile', 'as' => 'reconcile']); }