1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-14 15:13:29 +01:00
invoiceninja/resources/views/money_script.blade.php

155 lines
4.9 KiB
PHP
Raw Normal View History

<script type="text/javascript">
var currencies = {!! \Cache::get('currencies') !!};
var currencyMap = {};
for (var i=0; i<currencies.length; i++) {
var currency = currencies[i];
currencyMap[currency.id] = currency;
2016-09-11 16:30:23 +02:00
currencyMap[currency.code] = currency;
}
var countries = {!! \Cache::get('countries') !!};
var countryMap = {};
for (var i=0; i<countries.length; i++) {
var country = countries[i];
countryMap[country.id] = country;
}
fx.base = '{{ config('ninja.exchange_rates_base') }}';
2017-12-20 21:36:29 +01:00
fx.rates = {!! cache('currencies')
->keyBy('code')
->map(function($item, $key) {
return $item->exchange_rate ?: 1;
}); !!};
var NINJA = NINJA || {};
@if (Auth::check())
NINJA.primaryColor = "{{ Auth::user()->account->primary_color }}";
NINJA.secondaryColor = "{{ Auth::user()->account->secondary_color }}";
NINJA.fontSize = {{ Auth::user()->account->font_size ?: DEFAULT_FONT_SIZE }};
2016-01-07 08:08:30 +01:00
NINJA.headerFont = {!! json_encode(Auth::user()->account->getHeaderFontName()) !!};
NINJA.bodyFont = {!! json_encode(Auth::user()->account->getBodyFontName()) !!};
@else
NINJA.fontSize = {{ DEFAULT_FONT_SIZE }};
@endif
function formatMoneyInvoice(value, invoice, decorator, precision) {
var account = invoice.account;
var client = invoice.client;
return formatMoneyAccount(value, account, client, decorator, precision);
}
function formatMoneyAccount(value, account, client, decorator, precision) {
var currencyId = false;
var countryId = false;
if (client && client.currency_id) {
currencyId = client.currency_id;
} else if (account && account.currency_id) {
currencyId = account.currency_id;
}
if (client && client.country_id) {
countryId = client.country_id;
} else if (account && account.country_id) {
countryId = account.country_id;
}
if (account && ! decorator) {
2016-11-29 18:47:26 +01:00
decorator = parseInt(account.show_currency_code) ? 'code' : 'symbol';
}
return formatMoney(value, currencyId, countryId, decorator, precision)
}
function formatAmount(value, currencyId, precision) {
if (!value) {
return '';
}
2017-02-21 12:31:51 +01:00
if (!currencyId) {
currencyId = {{ Session::get(SESSION_CURRENCY, DEFAULT_CURRENCY) }};
}
if (!precision) {
precision = 2;
}
2017-02-21 12:31:51 +01:00
var currency = currencyMap[currencyId];
var decimal = currency.decimal_separator;
value = roundToPrecision(NINJA.parseFloat(value), precision) + '';
2017-02-21 12:31:51 +01:00
if (decimal == '.') {
return value;
} else {
return value.replace('.', decimal);
}
}
function formatMoney(value, currencyId, countryId, decorator, precision) {
value = NINJA.parseFloat(value);
if (!currencyId) {
currencyId = {{ Session::get(SESSION_CURRENCY, DEFAULT_CURRENCY) }};
}
var currency = currencyMap[currencyId];
if (!currency) {
currency = currencyMap[{{ Session::get(SESSION_CURRENCY, DEFAULT_CURRENCY) }}];
}
2016-10-20 17:16:32 +02:00
if (!decorator) {
decorator = '{{ Session::get(SESSION_CURRENCY_DECORATOR, CURRENCY_DECORATOR_SYMBOL) }}';
}
2018-01-15 20:20:42 +01:00
if (decorator == 'none') {
var parts = (value + '').split('.');
precision = parts.length > 1 ? Math.min(4, parts[1].length) : 0;
} else if (!precision) {
precision = currency.precision;
} else if (currency.precision == 0) {
precision = 0;
}
var thousand = currency.thousand_separator;
var decimal = currency.decimal_separator;
2016-01-18 15:35:05 +01:00
var code = currency.code;
2016-05-16 22:37:16 +02:00
var swapSymbol = currency.swap_currency_symbol;
if (countryId && currencyId == {{ CURRENCY_EURO }}) {
var country = countryMap[countryId];
swapSymbol = country.swap_currency_symbol;
if (country.thousand_separator) {
thousand = country.thousand_separator;
}
if (country.decimal_separator) {
decimal = country.decimal_separator;
}
}
2016-05-05 21:49:09 +02:00
value = accounting.formatMoney(value, '', precision, thousand, decimal);
var symbol = currency.symbol;
if (decorator == 'none') {
return value;
2016-10-20 16:44:31 +02:00
} else if (decorator == '{{ CURRENCY_DECORATOR_CODE }}' || ! symbol) {
2016-01-18 15:35:05 +01:00
return value + ' ' + code;
} else if (swapSymbol) {
return value + ' ' + symbol.trim();
} else {
return symbol + value;
}
}
function convertCurrency(amount, fromCurrencyId, toCurrencyId) {
return fx.convert(amount, {
from: currencyMap[fromCurrencyId].code,
to: currencyMap[toCurrencyId].code,
});
}
2016-09-11 16:30:23 +02:00
</script>