From 4683f66fc6b651f921843b0ec545f83c1797a451 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 21 Dec 2017 09:47:17 +0200 Subject: [PATCH] Convert currencies --- resources/views/expenses/edit.blade.php | 39 ++++++++++++------------- resources/views/payments/edit.blade.php | 27 +++++++++++++++++ 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/resources/views/expenses/edit.blade.php b/resources/views/expenses/edit.blade.php index ba35f50a2c02..5a04d4766a8b 100644 --- a/resources/views/expenses/edit.blade.php +++ b/resources/views/expenses/edit.blade.php @@ -159,7 +159,7 @@ {!! Former::select('invoice_currency_id')->addOption('','') ->label(trans('texts.invoice_currency')) ->data_placeholder(Utils::getFromCache($account->getCurrencyId(), 'currencies')->name) - ->data_bind('combobox: invoiceCurrencyId, disable: true') + ->data_bind('combobox: invoice_currency_id, disable: true') ->fromQuery($currencies, 'name', 'id') !!} @@ -354,6 +354,12 @@ onClientChange(); }); + $('#invoice_currency_id, #expense_currency_id').on('change', function() { + setTimeout(function() { + model.updateExchangeRate(); + }, 1); + }) + @if ($data) // this means we failed so we'll reload the previous state window.model = new ViewModel({!! $data !!}); @@ -478,26 +484,19 @@ } }, self); - - self.invoiceCurrencyId = ko.computed({ - read: function () { - return self.invoice_currency_id(); - }, - write: function(invoiceCurrencyId) { - self.invoice_currency_id(invoiceCurrencyId); - var fromCode = self.expenseCurrencyCode(); - var toCode = self.invoiceCurrencyCode(); - if (currencyMap[fromCode].exchange_rate && currencyMap[toCode].exchange_rate) { - var rate = fx.convert(1, { - from: fromCode, - to: toCode, - }); - self.exchange_rate(roundToFour(rate)); - } else { - self.exchange_rate(1); - } + self.updateExchangeRate = function() { + var fromCode = self.expenseCurrencyCode(); + var toCode = self.invoiceCurrencyCode(); + if (currencyMap[fromCode].exchange_rate && currencyMap[toCode].exchange_rate) { + var rate = fx.convert(1, { + from: fromCode, + to: toCode, + }); + self.exchange_rate(roundToFour(rate, true)); + } else { + self.exchange_rate(1); } - }, self); + } self.getCurrency = function(currencyId) { return currencyMap[currencyId || self.account_currency_id()]; diff --git a/resources/views/payments/edit.blade.php b/resources/views/payments/edit.blade.php index 10d2422d0fde..ad169c432fed 100644 --- a/resources/views/payments/edit.blade.php +++ b/resources/views/payments/edit.blade.php @@ -201,6 +201,12 @@ toggleDatePicker('payment_date'); }); + $('#exchange_currency_id').on('change', function() { + setTimeout(function() { + model.updateExchangeRate(); + }, 1); + }) + if (isStorageSupported()) { if (localStorage.getItem('last:send_email_receipt')) { $('#email_receipt').prop('checked', true); @@ -262,6 +268,21 @@ } }, self); + + self.updateExchangeRate = function() { + var fromCode = self.paymentCurrencyCode(); + var toCode = self.exchangeCurrencyCode(); + if (currencyMap[fromCode].exchange_rate && currencyMap[toCode].exchange_rate) { + var rate = fx.convert(1, { + from: fromCode, + to: toCode, + }); + self.exchange_rate(roundToFour(rate, true)); + } else { + self.exchange_rate(1); + } + } + self.getCurrency = function(currencyId) { return currencyMap[currencyId || self.account_currency_id()]; }; @@ -336,6 +357,9 @@ if (window.model) { model.client_id(clientId); + setTimeout(function() { + model.updateExchangeRate(); + }, 1); } }); @@ -358,6 +382,9 @@ } } model.client_id(client ? client.public_id : 0); + setTimeout(function() { + model.updateExchangeRate(); + }, 1); }); $invoiceSelect.combobox({highlighter: comboboxHighlighter});