diff --git a/config/translations.php b/config/translations.php
index d6a6d60896..6591c0599f 100644
--- a/config/translations.php
+++ b/config/translations.php
@@ -70,6 +70,7 @@ return [
'never',
'account_type_loan',
'account_type_mortgage',
+ 'account_type_Cash account',
'account_type_debt',
'withdrawal',
'i_owe_amount',
diff --git a/resources/assets/v3/js/pages/transactions/create.js b/resources/assets/v3/js/pages/transactions/create.js
index ff4d7107e5..06e875d688 100644
--- a/resources/assets/v3/js/pages/transactions/create.js
+++ b/resources/assets/v3/js/pages/transactions/create.js
@@ -41,7 +41,14 @@ import i18next from "i18next";
import { processUploadError } from "./shared/process-upload-error.js";
import { showMessageOrRedirectUser } from "./shared/show-message-or-redirect.js";
import { addSplit } from "./shared/add-split.js";
-import { clearDestinationAccount, clearSourceAccount } from "./shared/clear-fields.js";
+import {
+ clearDestinationAccount,
+ clearSourceAccount,
+ clearCategory,
+ clearDescription,
+ clearAmount,
+ clearForeignAmount
+} 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";
@@ -203,6 +210,10 @@ let create = function () {
removeSplit: removeSplit,
clearSourceAccount: clearSourceAccount,
clearDestinationAccount: clearDestinationAccount,
+ clearCategory: clearCategory,
+ clearDescription: clearDescription,
+ clearAmount: clearAmount,
+ clearForeignAmount: clearForeignAmount,
detectTransactionType: detectTransactionType,
determineAmountCurrency: determineAmountCurrency,
addAllAutocompleteToForm: addAllAutocompleteToForm,
@@ -238,12 +249,7 @@ let create = function () {
this.formStates.storedAttachments = true;
this.showMessageOrRedirectUser("create.js processUpload");
},
- clearDescription(index) {
- this.entries[index].description = "";
- },
- clearCategory(index) {
- this.entries[index].category_name = "";
- },
+
fillSourceAccount() {
this.fillAccount("source", "source_account");
},
diff --git a/resources/assets/v3/js/pages/transactions/edit.js b/resources/assets/v3/js/pages/transactions/edit.js
index f25fffe43a..a0c3c7377b 100644
--- a/resources/assets/v3/js/pages/transactions/edit.js
+++ b/resources/assets/v3/js/pages/transactions/edit.js
@@ -21,54 +21,61 @@
import "../../boot/bootstrap.js";
import dates from "../../pages/shared/dates.js";
import Get from "../../api/model/transaction/get.js";
-import { parseDownloadedSplits } from "./shared/parse-downloaded-splits.js";
-import { addAllAutocompleteToForm } from "./shared/add-autocomplete.js";
-import { loadCurrencies } from "./shared/load-currencies.js";
-import { loadBudgets } from "./shared/load-budgets.js";
-import { loadPiggyBanks } from "./shared/load-piggy-banks.js";
-import { processUploadError } from "./shared/process-upload-error.js";
-import { loadSubscriptions } from "./shared/load-subscriptions.js";
+import {parseDownloadedSplits} from "./shared/parse-downloaded-splits.js";
+import {addAllAutocompleteToForm} from "./shared/add-autocomplete.js";
+import {loadCurrencies} from "./shared/load-currencies.js";
+import {loadBudgets} from "./shared/load-budgets.js";
+import {loadPiggyBanks} from "./shared/load-piggy-banks.js";
+import {processUploadError} from "./shared/process-upload-error.js";
+import {loadSubscriptions} from "./shared/load-subscriptions.js";
import i18next from "i18next";
-import { defaultErrorSet } from "./shared/create-empty-split.js";
-import { parseFromEntries } from "./shared/parse-from-entries.js";
+import {defaultErrorSet} from "./shared/create-empty-split.js";
+import {parseFromEntries} from "./shared/parse-from-entries.js";
import Put from "../../api/model/transaction/put.js";
-import { showMessageOrRedirectUser } from "./shared/show-message-or-redirect.js";
-import { processAttachments } from "./shared/process-attachments.js";
+import {showMessageOrRedirectUser} from "./shared/show-message-or-redirect.js";
+import {processAttachments} from "./shared/process-attachments.js";
import sidebar from "../shared/sidebar.js";
-import { disableSplitInputs } from "./shared/disable-split-inputs.js";
-import { parseTotalAmount } from "./shared/parse-total-amount.js";
-import { keyUpFromCategory } from "./shared/keyup-from-category.js";
-import { keyUpFromSource } from "./shared/keyup-from-source.js";
-import { keyUpFromDestination } from "./shared/keyup-from-destination.js";
-import { keyUpFromDescription } from "./shared/keyup-from-description.js";
-import { changedAmount } from "./shared/changed-amount.js";
-import { changedForeignAmount } from "./shared/changed-foreign-amount.js";
-import { parseErrors } from "./shared/parse-errors.js";
-import { addSplit } from "./shared/add-split.js";
-import { clearDestinationAccount, clearSourceAccount } 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";
-import { displayMap } from "./shared/display-map.js";
-import { loadDefaultCoordinates } from "./shared/load-default-coordinates.js";
-import { renderMap } from "./shared/render-map.js";
+import {disableSplitInputs} from "./shared/disable-split-inputs.js";
+import {parseTotalAmount} from "./shared/parse-total-amount.js";
+import {keyUpFromCategory} from "./shared/keyup-from-category.js";
+import {keyUpFromSource} from "./shared/keyup-from-source.js";
+import {keyUpFromDestination} from "./shared/keyup-from-destination.js";
+import {keyUpFromDescription} from "./shared/keyup-from-description.js";
+import {changedAmount} from "./shared/changed-amount.js";
+import {changedForeignAmount} from "./shared/changed-foreign-amount.js";
+import {parseErrors} from "./shared/parse-errors.js";
+import {addSplit} from "./shared/add-split.js";
+import {
+ clearAmount,
+ clearCategory,
+ clearDescription,
+ clearForeignAmount,
+ clearDestinationAccount,
+ clearSourceAccount
+} 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";
+import {displayMap} from "./shared/display-map.js";
+import {loadDefaultCoordinates} from "./shared/load-default-coordinates.js";
+import {renderMap} from "./shared/render-map.js";
import "leaflet/dist/leaflet.css";
-import { onMapClick } from "./shared/on-map-click.js";
-import { onMapZoom } from "./shared/on-map-zoom.js";
-import { clearLocation } from "./shared/clear-location.js";
-import { removeSplit } from "./shared/remove-split.js";
-import { loadTransactionLinks } from "./shared/load-transaction-links.js";
-import { createLinkAutocomplete } from "./shared/create-link-autocomplete.js";
-import { editLink } from "./shared/edit-link.js";
-import { switchLink } from "./shared/switch-link.js";
-import { removeLink } from "./shared/remove-link.js";
-import { saveEditedLink } from "./shared/save-edited-link.js";
-import { saveNewLink } from "./shared/save-new-link.js";
-import { processTransactionLinks } from "./shared/process-transaction-links.js";
-import { redirectAfterTransactionLinks } from "./shared/redirect-after-transaction-links.js";
-import { addTabListener } from "./shared/add-tab-listener.js";
-import { autoStep } from "./shared/auto-step.js";
-import { respondToTabSwitch } from "./shared/respond-to-tab-switch.js";
+import {onMapClick} from "./shared/on-map-click.js";
+import {onMapZoom} from "./shared/on-map-zoom.js";
+import {clearLocation} from "./shared/clear-location.js";
+import {removeSplit} from "./shared/remove-split.js";
+import {loadTransactionLinks} from "./shared/load-transaction-links.js";
+import {createLinkAutocomplete} from "./shared/create-link-autocomplete.js";
+import {editLink} from "./shared/edit-link.js";
+import {switchLink} from "./shared/switch-link.js";
+import {removeLink} from "./shared/remove-link.js";
+import {saveEditedLink} from "./shared/save-edited-link.js";
+import {saveNewLink} from "./shared/save-new-link.js";
+import {processTransactionLinks} from "./shared/process-transaction-links.js";
+import {redirectAfterTransactionLinks} from "./shared/redirect-after-transaction-links.js";
+import {addTabListener} from "./shared/add-tab-listener.js";
+import {autoStep} from "./shared/auto-step.js";
+import {respondToTabSwitch} from "./shared/respond-to-tab-switch.js";
import Alpine from "@alpinejs/csp";
import focusFirstInput from "../../shared/focus-first-input.js";
import filterForeignCurrencies from "./shared/filter-foreign-currencies.js";
@@ -183,6 +190,10 @@ let transactions = function () {
addSplit: addSplit,
clearSourceAccount: clearSourceAccount,
clearDestinationAccount: clearDestinationAccount,
+ clearCategory: clearCategory,
+ clearDescription: clearDescription,
+ clearAmount: clearAmount,
+ clearForeignAmount: clearForeignAmount,
detectTransactionType: detectTransactionType,
determineAmountCurrency: determineAmountCurrency,
addAllAutocompleteToForm: addAllAutocompleteToForm,
@@ -401,7 +412,7 @@ let transactions = function () {
// submit the transaction. Multi-stage process thing going on here!
let putter = new Put();
putter
- .put(submission, { id: this.groupProperties.id })
+ .put(submission, {id: this.groupProperties.id})
.then((response) => {
this.formStates.storedGroup = true;
const group = response.data.data;
@@ -454,7 +465,7 @@ let transactions = function () {
};
};
-let comps = { transactions, sidebar, dates };
+let comps = {transactions, sidebar, dates};
function loadPage() {
Object.keys(comps).forEach((comp) => {
diff --git a/resources/assets/v3/js/pages/transactions/shared/changed-amount.js b/resources/assets/v3/js/pages/transactions/shared/changed-amount.js
index 63cb3fa35a..67026d09ad 100644
--- a/resources/assets/v3/js/pages/transactions/shared/changed-amount.js
+++ b/resources/assets/v3/js/pages/transactions/shared/changed-amount.js
@@ -18,9 +18,23 @@
* along with this program. If not, see