diff --git a/public/js/ff/transactions/single/common.js b/public/js/ff/transactions/single/common.js index fe86aedf6c..d98ac6afce 100644 --- a/public/js/ff/transactions/single/common.js +++ b/public/js/ff/transactions/single/common.js @@ -122,4 +122,85 @@ function updateNativeAmount(data) { console.log('Returned data:'); console.log(data); $('#ffInput_native_amount').val(data.amount); +} + +/** + * Instructions for transfers + */ +function getTransferExchangeInstructions() { + var sourceAccount = $('select[name="source_account_id"]').val(); + var destAccount = $('select[name="destination_account_id"]').val(); + + var sourceCurrency = accountInfo[sourceAccount].preferredCurrency; + var destinationCurrency = accountInfo[destAccount].preferredCurrency; + + return transferInstructions.replace('@source_name', accountInfo[sourceAccount].name) + .replace('@dest_name', accountInfo[destAccount].name) + .replace(/@source_currency/g, currencyInfo[sourceCurrency].name) + .replace(/@dest_currency/g, currencyInfo[destinationCurrency].name); +} + +/** + * When the transaction to create is a transfer some more checks are necessary. + */ +function validateCurrencyForTransfer() { + if (what !== "transfer") { + return; + } + $('#source_amount_holder').show(); + var sourceAccount = $('select[name="source_account_id"]').val(); + var destAccount = $('select[name="destination_account_id"]').val(); + var sourceCurrency = accountInfo[sourceAccount].preferredCurrency; + var sourceSymbol = currencyInfo[sourceCurrency].symbol; + var destinationCurrency = accountInfo[destAccount].preferredCurrency; + var destinationSymbol = currencyInfo[destinationCurrency].symbol; + + $('#source_amount_holder').show().find('.non-selectable-currency-symbol').text(sourceSymbol); + + if (sourceCurrency === destinationCurrency) { + console.log('Both accounts accept ' + sourceCurrency); + $('#destination_amount_holder').hide(); + $('#amount_holder').hide(); + return; + } + console.log('Source accepts #' + sourceCurrency + ', destination #' + destinationCurrency); + $('#ffInput_exchange_rate_instruction').text(getTransferExchangeInstructions()); + $('#exchange_rate_instruction_holder').show(); + $('input[name="source_amount"]').val($('input[name="amount"]').val()); + convertSourceToDestination(); + + $('#destination_amount_holder').show().find('.non-selectable-currency-symbol').text(destinationSymbol); + $('#amount_holder').hide(); +} + +/** + * Convert from source amount currency to destination currency for transfers. + * + */ +function convertSourceToDestination() { + var sourceAccount = $('select[name="source_account_id"]').val(); + var destAccount = $('select[name="destination_account_id"]').val(); + + var sourceCurrency = accountInfo[sourceAccount].preferredCurrency; + var destinationCurrency = accountInfo[destAccount].preferredCurrency; + + var sourceCurrencyCode = currencyInfo[sourceCurrency].code; + var destinationCurrencyCode = currencyInfo[destinationCurrency].code; + + var date = $('#ffInput_date').val(); + var amount = $('#ffInput_source_amount').val(); + $('#ffInput_amount').val(amount); + var uri = 'json/rate/' + sourceCurrencyCode + '/' + destinationCurrencyCode + '/' + date + '?amount=' + amount; + console.log('Will grab ' + uri); + $.get(uri).done(updateDestinationAmount); +} + +/** + * Once the data has been grabbed will update the field (for transfers) + * @param data + */ +function updateDestinationAmount(data) { + console.log('Returned data:'); + console.log(data); + $('#ffInput_destination_amount').val(data.amount); } \ No newline at end of file diff --git a/public/js/ff/transactions/single/create.js b/public/js/ff/transactions/single/create.js index c30ef4a2fd..ed48eb28a3 100644 --- a/public/js/ff/transactions/single/create.js +++ b/public/js/ff/transactions/single/create.js @@ -41,38 +41,6 @@ $(document).ready(function () { $('.currency-option').on('click', selectsForeignCurrency); }); -/** - * Convert from source amount currency to destination currency for transfers. - * - */ -function convertSourceToDestination() { - var sourceAccount = $('select[name="source_account_id"]').val(); - var destAccount = $('select[name="destination_account_id"]').val(); - - var sourceCurrency = accountInfo[sourceAccount].preferredCurrency; - var destinationCurrency = accountInfo[destAccount].preferredCurrency; - - var sourceCurrencyCode = currencyInfo[sourceCurrency].code; - var destinationCurrencyCode = currencyInfo[destinationCurrency].code; - - var date = $('#ffInput_date').val(); - var amount = $('#ffInput_source_amount').val(); - $('#ffInput_amount').val(amount); - var uri = 'json/rate/' + sourceCurrencyCode + '/' + destinationCurrencyCode + '/' + date + '?amount=' + amount; - console.log('Will grab ' + uri); - $.get(uri).done(updateDestinationAmount); -} - -/** - * Once the data has been grabbed will update the field (for transfers) - * @param data - */ -function updateDestinationAmount(data) { - console.log('Returned data:'); - console.log(data); - $('#ffInput_destination_amount').val(data.amount); -} - /** * This function generates a small helper text to explain the user * that they have selected a foreign currency. @@ -89,22 +57,6 @@ function getExchangeInstructions() { return text; } -/** - * Same as above but for transfers - */ -function getTransferExchangeInstructions() { - var sourceAccount = $('select[name="source_account_id"]').val(); - var destAccount = $('select[name="destination_account_id"]').val(); - - var sourceCurrency = accountInfo[sourceAccount].preferredCurrency; - var destinationCurrency = accountInfo[destAccount].preferredCurrency; - - return transferInstructions.replace('@source_name', accountInfo[sourceAccount].name) - .replace('@dest_name', accountInfo[destAccount].name) - .replace(/@source_currency/g, currencyInfo[sourceCurrency].name) - .replace(/@dest_currency/g, currencyInfo[destinationCurrency].name); -} - /** * There is an input that shows the currency symbol that is native to the selected * acccount. So when the user changes the selected account, the native currency is updated: @@ -122,39 +74,6 @@ function updateNativeCurrency() { validateCurrencyForTransfer(); } -/** - * When the transaction to create is a transfer some more checks are necessary. - */ -function validateCurrencyForTransfer() { - if (what !== "transfer") { - return; - } - $('#source_amount_holder').show(); - var sourceAccount = $('select[name="source_account_id"]').val(); - var destAccount = $('select[name="destination_account_id"]').val(); - var sourceCurrency = accountInfo[sourceAccount].preferredCurrency; - var sourceSymbol = currencyInfo[sourceCurrency].symbol; - var destinationCurrency = accountInfo[destAccount].preferredCurrency; - var destinationSymbol = currencyInfo[destinationCurrency].symbol; - - $('#source_amount_holder').show().find('.non-selectable-currency-symbol').text(sourceSymbol); - - if (sourceCurrency === destinationCurrency) { - console.log('Both accounts accept ' + sourceCurrency); - $('#destination_amount_holder').hide(); - $('#amount_holder').hide(); - return; - } - console.log('Source accepts #' + sourceCurrency + ', destination #' + destinationCurrency); - $('#ffInput_exchange_rate_instruction').text(getTransferExchangeInstructions()); - $('#exchange_rate_instruction_holder').show(); - $('input[name="source_amount"]').val($('input[name="amount"]').val()); - convertSourceToDestination(); - - $('#destination_amount_holder').show().find('.non-selectable-currency-symbol').text(destinationSymbol); - $('#amount_holder').hide(); -} - /** * */ @@ -211,10 +130,6 @@ function updateForm() { $('#destination_amount_holder').hide(); // show normal amount: $('#amount_holder').show(); - - // update the amount thing: - updateNativeCurrency(); - break; case 'deposit': // show source_name and dest_id: @@ -242,10 +157,6 @@ function updateForm() { $('#destination_amount_holder').hide(); // show normal amount: $('#amount_holder').show(); - - // update the amount thing: - updateNativeCurrency(); - break; case 'transfer': // show source_id and dest_id: @@ -263,15 +174,13 @@ function updateForm() { } else { $('#piggy_bank_id_holder').show(); } - - // update the amount thing: - updateNativeCurrency(); - break; default: // no action. break; } + // update the amount thing: + updateNativeCurrency(); } /** diff --git a/public/js/ff/transactions/single/edit.js b/public/js/ff/transactions/single/edit.js index bb05169fa2..62e0380e30 100644 --- a/public/js/ff/transactions/single/edit.js +++ b/public/js/ff/transactions/single/edit.js @@ -15,10 +15,16 @@ $(document).ready(function () { setAutocompletes(); updateInitialPage(); - // respond to user input: $('.currency-option').on('click', selectsForeignCurrency); $('#ffInput_amount').on('change', convertForeignToNative); + + // respond to transfer changes: + $('#ffInput_source_account_id').on('change',validateCurrencyForTransfer); + $('#ffInput_destination_account_id').on('change',validateCurrencyForTransfer); + + // convert source currency to destination currency (slightly different routine for transfers) + $('#ffInput_source_amount').on('change', convertSourceToDestination); }); /** @@ -27,6 +33,24 @@ $(document).ready(function () { function updateInitialPage() { console.log('Native currency is #' + journalData.native_currency.id + ' and (foreign) currency id is #' + journalData.currency.id); + + if (journal.transaction_type.type === "Transfer") { + $('#native_amount_holder').hide(); + $('#amount_holder').hide(); + + if (journalData.native_currency.id === journalData.currency.id) { + $('#exchange_rate_instruction_holder').hide(); + $('#destination_amount_holder').hide(); + } + if (journalData.native_currency.id !== journalData.currency.id) { + $('#exchange_rate_instruction_holder').show().find('p').text(getTransferExchangeInstructions()); + + } + + return; + } + + if (journalData.native_currency.id === journalData.currency.id) { $('#exchange_rate_instruction_holder').hide(); $('#native_amount_holder').hide(); @@ -35,6 +59,7 @@ function updateInitialPage() { if (journalData.native_currency.id !== journalData.currency.id) { $('#ffInput_exchange_rate_instruction').text(getExchangeInstructions()); } + } diff --git a/resources/views/transactions/single/edit.twig b/resources/views/transactions/single/edit.twig index f1110fd358..4ef0d2ceaa 100644 --- a/resources/views/transactions/single/edit.twig +++ b/resources/views/transactions/single/edit.twig @@ -62,7 +62,11 @@ {# INSTRUCTIONS FOR EXCHANGE RATES #} {{ ExpandedForm.staticText('exchange_rate_instruction','(here be text)') }} - {{ ExpandedForm.nonSelectableAmount('native_amount', data.native_amount, {'currency' : data.native_currency}) }} + {{ ExpandedForm.nonSelectableAmount('native_amount', data.native_amount, {currency: data.native_currency}) }} + + {{ ExpandedForm.nonSelectableAmount('source_amount', data.native_amount, {currency: data.native_currency }) }} + + {{ ExpandedForm.nonSelectableAmount('destination_amount', data.amount, {currency: data.currency }) }} {# ALWAYS SHOW DATE #} {{ ExpandedForm.date('date',data['date']) }} @@ -245,6 +249,7 @@ var journal = {{ journal.toArray()|json_encode|raw }}; var journalData = {{ data|json_encode|raw }}; var exchangeRateInstructions = "{{ 'exchange_rate_instructions'|_|escape('js') }}"; + var transferInstructions = "{{ 'transfer_exchange_rate_instructions'|_|escape('js') }}";