diff --git a/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php b/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php index 47ed70689..947630c53 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php @@ -9,8 +9,7 @@ use Visiosoft\AdvsModule\Adv\Command\getPopular; use Visiosoft\AdvsModule\Adv\Command\GetUserAds; use Visiosoft\AdvsModule\Adv\Command\isActive; use Visiosoft\AdvsModule\Adv\Command\LatestAds; -use Visiosoft\AdvsModule\Currency\Currency; -use Visiosoft\AdvsModule\Currency\CurrencyFormat; +use Visiosoft\AdvsModule\Support\Command\Currency; class AdvsModulePlugin extends Plugin { @@ -31,11 +30,6 @@ class AdvsModulePlugin extends Plugin return $ad; } - ), new \Twig_SimpleFunction( - 'currencyFormat', - function ($number, $currency = null, array $options = []) { - return app(CurrencyFormat::class)->format($number, $currency, $options); - } ), new \Twig_SimpleFunction( 'isActive', function ($name, $type = 'module', $project = 'visiosoft') { @@ -115,6 +109,15 @@ class AdvsModulePlugin extends Plugin return $popular; } ), + new \Twig_SimpleFunction( + 'currency_*', + function ($name) { + return call_user_func_array( + [app(Currency::class), camel_case($name)], + array_slice(func_get_args(), 1) + ); + } + ), ]; } } diff --git a/addons/default/visiosoft/advs-module/src/Currency/CurrencyFormat.php b/addons/default/visiosoft/advs-module/src/Currency/CurrencyFormat.php deleted file mode 100644 index 4c13ec7da..000000000 --- a/addons/default/visiosoft/advs-module/src/Currency/CurrencyFormat.php +++ /dev/null @@ -1,42 +0,0 @@ -symbol($currency); - } else { - $suffix = app(Currency::class)->symbol($currency); - } - return $prefix . number_format(($number * 100) / 100, $decimals, $point, $separator) . $suffix; - } -} diff --git a/addons/default/visiosoft/advs-module/src/Support/Command/Currency.php b/addons/default/visiosoft/advs-module/src/Support/Command/Currency.php new file mode 100644 index 000000000..afe39ebb2 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Support/Command/Currency.php @@ -0,0 +1,91 @@ +symbol($currency); + } else { + $suffix = $this->symbol($currency); + } + + + $decimal_value = $this->getDecimalValue($number); + + if (setting_value('visiosoft.field_type.decimal::showDecimalMaxPrice') < intval($number) and $decimal_value == 0) { + if (!setting_value('visiosoft.field_type.decimal::showDecimal')) { + $decimals = 0; + } + } + + return $prefix . number_format($number, $decimals, $point, str_replace(' ', ' ', $separator)) . $suffix; + } + + public function normalize($number, $currency = null, array $options = []) + { + $currency = strtoupper($currency ?: config('streams::currencies.default')); + + $separator = array_get( + $options, + 'separator', + config('streams::currencies.supported.' . $currency . '.separator', ',') + ); + $decimals = array_get( + $options, + 'decimals', + config('streams::currencies.supported.' . $currency . '.decimals', 2) + ); + $point = array_get( + $options, + 'point', + config('streams::currencies.supported.' . $currency . '.point', '.') + ); + + return number_format(floor(($number * 100)) / 100, $decimals, $point, $separator); + } + + + public function symbol($currency = null) + { + if (!$currency) { + $currency = config('streams::currencies.default'); + } + + return config('streams::currencies.supported.' . strtoupper($currency) . '.symbol'); + } + + public function getDecimalValue($price) + { + $whole = (int)$price; + $decimal = ($price - $whole) * 100; + return (int)number_format($decimal); + } +} diff --git a/resources/streams/config/currencies.php b/resources/streams/config/currencies.php index 5f7d2d29e..6106009b2 100644 --- a/resources/streams/config/currencies.php +++ b/resources/streams/config/currencies.php @@ -43,8 +43,8 @@ return [ 'name' => 'US Dollar', 'direction' => 'ltr', 'symbol' => '', - 'separator' => ',', - 'point' => '.', + 'separator' => '.', + 'point' => ',', 'decimals' => 2, ], 'TRY' => [ @@ -1143,14 +1143,6 @@ return [ 'decimals' => 2, 'symbol' => 'Sh', ], - 'USD' => [ - 'name' => 'US Dollar', - 'direction' => 'ltr', - 'separator' => ',', - 'point' => '.', - 'decimals' => 2, - 'symbol' => '$', - ], 'UYU' => [ 'name' => 'Peso Uruguayo', 'direction' => 'ltr',