From cdeeb89a427e7b2735210d64d49f5f3d5aa0cedb Mon Sep 17 00:00:00 2001 From: Sander Dorigo Date: Thu, 20 Aug 2026 13:21:33 +0200 Subject: [PATCH] Expand v3 layout --- .../Transaction/CreateController.php | 4 +-- app/View/Components/Transaction/Split.php | 6 +--- config/translations.php | 6 ++++ .../assets/v3/js/pages/transactions/create.js | 9 ++++- .../assets/v3/js/pages/transactions/edit.js | 9 +++++ .../transactions/shared/load-custom-fields.js | 8 +++++ .../form/transaction/attachments.blade.php | 4 +-- .../form/transaction/date-fields.blade.php | 34 ++++++++++--------- .../form/transaction/external-url.blade.php | 7 ++-- .../transaction/internal-reference.blade.php | 8 +++-- .../form/transaction/location.blade.php | 6 ++-- .../partials/form/transaction/notes.blade.php | 8 +++-- resources/views/transactions/create.blade.php | 2 -- 13 files changed, 72 insertions(+), 39 deletions(-) create mode 100644 resources/assets/v3/js/pages/transactions/shared/load-custom-fields.js diff --git a/app/Http/Controllers/Transaction/CreateController.php b/app/Http/Controllers/Transaction/CreateController.php index d044799c1e..a5ef11df74 100644 --- a/app/Http/Controllers/Transaction/CreateController.php +++ b/app/Http/Controllers/Transaction/CreateController.php @@ -154,10 +154,10 @@ final class CreateController extends Controller 'latitude' => $latitude, 'zoomLevel' => $zoomLevel, 'objectType' => $objectType, - 'optionalDateFields' => $optionalDateFields, + // 'optionalDateFields' => $optionalDateFields, 'subTitle' => $subTitle, 'previousUrl' => $previousUrl, - 'optionalFields' => $optionalFields, + // 'optionalFields' => $optionalFields, 'preFilled' => $preFilled, 'allowedOpposingTypes' => $allowedOpposingTypes, 'accountToTypes' => $accountToTypes, diff --git a/app/View/Components/Transaction/Split.php b/app/View/Components/Transaction/Split.php index 6df64085e2..a5387846e2 100644 --- a/app/View/Components/Transaction/Split.php +++ b/app/View/Components/Transaction/Split.php @@ -30,16 +30,12 @@ use Illuminate\View\Component; class Split extends Component { - public array $optionalFields; - public array $optionalDateFields; /** * Create a new component instance. */ - public function __construct(array $optionalFields, array $optionalDateFields) + public function __construct() { - $this->optionalFields = $optionalFields; - $this->optionalDateFields = $optionalDateFields; } /** diff --git a/config/translations.php b/config/translations.php index a2618854d4..bfa99e34c7 100644 --- a/config/translations.php +++ b/config/translations.php @@ -69,6 +69,12 @@ return [ 'liability_direction_credit_short', 'liability_direction_null_short', 'help_rate_form', + 'pref_optional_tj_interest_date', + 'pref_optional_tj_book_date', + 'pref_optional_tj_process_date', + 'pref_optional_tj_due_date', + 'pref_optional_tj_payment_date', + 'pref_optional_tj_invoice_date', 'save_new_rate', 'interest_calc_yearly', 'loading', diff --git a/resources/assets/v3/js/pages/transactions/create.js b/resources/assets/v3/js/pages/transactions/create.js index 9e902a21b3..d42694d80b 100644 --- a/resources/assets/v3/js/pages/transactions/create.js +++ b/resources/assets/v3/js/pages/transactions/create.js @@ -49,6 +49,7 @@ import {addSplit} from "./shared/add-split.js"; import {clearSourceAccount, clearDestinationAccount} from './shared/clear-fields.js'; import {detectTransactionType} from './shared/detect-transaction-type.js'; import {determineAmountCurrency} from './shared/determine-amount-currency.js'; +import {loadCustomFields} from './shared/load-custom-fields.js'; // TODO fix two maps, perhaps disconnect from entries entirely. // TODO map location from preferences // TODO field preferences @@ -91,6 +92,7 @@ let create = function () { formBehaviour: { formType: 'create', foreignCurrencyEnabled: true, + customFields: {}, }, // form data (except transactions) is stored in formData @@ -152,7 +154,8 @@ let create = function () { clearDestinationAccount: clearDestinationAccount, detectTransactionType: detectTransactionType, determineAmountCurrency: determineAmountCurrency, - addAllAutocompleteToForm: addAllAutocompleteToForm, + addAllAutocompleteToForm: addAllAutocompleteToForm, + loadCustomFields: loadCustomFields, filterForeignCurrencies(code) { @@ -211,6 +214,10 @@ let create = function () { this.addSplit(); // load custom field preference and enable/disable those fields. + this.loadCustomFields().then(data => { + console.log('Loaded custom fields', data); + this.formBehaviour.customFields = data; + }); // load currencies and save in form data. loadCurrencies().then(data => { diff --git a/resources/assets/v3/js/pages/transactions/edit.js b/resources/assets/v3/js/pages/transactions/edit.js index f77b27fb88..dcc60a70ac 100644 --- a/resources/assets/v3/js/pages/transactions/edit.js +++ b/resources/assets/v3/js/pages/transactions/edit.js @@ -86,6 +86,7 @@ let transactions = function () { formType: 'edit', foreignCurrencyEnabled: true, categorySelectVisible: false, + customFields: {}, }, // form data (except transactions) is stored in formData @@ -136,6 +137,7 @@ let transactions = function () { determineAmountCurrency: determineAmountCurrency, addAllAutocompleteToForm: addAllAutocompleteToForm, + // part of the account selection auto-complete changedDateTime(event) { @@ -225,6 +227,13 @@ let transactions = function () { init() { console.log('Init()'); + + // load custom field preference and enable/disable those fields. + this.loadCustomFields().then(data => { + console.log('Loaded custom fields'); + this.formBehaviour.customFields = data; + }); + this.i18next = i18next; // download translations and get the transaction group. this.notifications.wait.show = true; diff --git a/resources/assets/v3/js/pages/transactions/shared/load-custom-fields.js b/resources/assets/v3/js/pages/transactions/shared/load-custom-fields.js new file mode 100644 index 0000000000..8334731c9c --- /dev/null +++ b/resources/assets/v3/js/pages/transactions/shared/load-custom-fields.js @@ -0,0 +1,8 @@ + +import Preferences from '../../../api/preferences/index.js'; + +export function loadCustomFields() { + return (new Preferences()).getByName('transaction_journal_optional_fields').then(data => { + return data.data.data.attributes.data; + }); +} diff --git a/resources/views/partials/form/transaction/attachments.blade.php b/resources/views/partials/form/transaction/attachments.blade.php index acc2c5bce3..c364bdaf13 100644 --- a/resources/views/partials/form/transaction/attachments.blade.php +++ b/resources/views/partials/form/transaction/attachments.blade.php @@ -1,4 +1,4 @@ -@if(true === $optionalFields['attachments']) + diff --git a/resources/views/partials/form/transaction/date-fields.blade.php b/resources/views/partials/form/transaction/date-fields.blade.php index 6c5dc63ad3..a285e733a8 100644 --- a/resources/views/partials/form/transaction/date-fields.blade.php +++ b/resources/views/partials/form/transaction/date-fields.blade.php @@ -1,18 +1,20 @@ -@foreach($optionalDateFields as $name => $enabled) - @if($enabled) -
- -
- + diff --git a/resources/views/partials/form/transaction/external-url.blade.php b/resources/views/partials/form/transaction/external-url.blade.php index 8771356dbd..0d6f4c00b7 100644 --- a/resources/views/partials/form/transaction/external-url.blade.php +++ b/resources/views/partials/form/transaction/external-url.blade.php @@ -1,5 +1,5 @@ -@if(true === $optionalFields['external_url']) -
+
-@endif + + diff --git a/resources/views/partials/form/transaction/internal-reference.blade.php b/resources/views/partials/form/transaction/internal-reference.blade.php index a55ace9db6..7acdae657b 100644 --- a/resources/views/partials/form/transaction/internal-reference.blade.php +++ b/resources/views/partials/form/transaction/internal-reference.blade.php @@ -1,5 +1,6 @@ -@if(true === $optionalFields['internal_reference']) -
+ + + diff --git a/resources/views/partials/form/transaction/location.blade.php b/resources/views/partials/form/transaction/location.blade.php index 9bf57ac09b..d97a8d345a 100644 --- a/resources/views/partials/form/transaction/location.blade.php +++ b/resources/views/partials/form/transaction/location.blade.php @@ -1,4 +1,5 @@ -@if(true === $optionalFields['location']) + +
-@endif + + diff --git a/resources/views/partials/form/transaction/notes.blade.php b/resources/views/partials/form/transaction/notes.blade.php index 06a17ccf35..f7067849d5 100644 --- a/resources/views/partials/form/transaction/notes.blade.php +++ b/resources/views/partials/form/transaction/notes.blade.php @@ -1,5 +1,6 @@ -@if(true === $optionalFields['notes']) -
+ + + diff --git a/resources/views/transactions/create.blade.php b/resources/views/transactions/create.blade.php index 3b00a1e035..45f1bae474 100644 --- a/resources/views/transactions/create.blade.php +++ b/resources/views/transactions/create.blade.php @@ -9,8 +9,6 @@ :zoomLevel="$zoomLevel" :latitude="$latitude" :longitude="$longitude" - :optional-date-fields="$optionalDateFields" - :optional-fields="$optionalFields" />