diff --git a/app/Http/Middleware/Money.php b/app/Http/Middleware/Money.php index 3b99bbfc7..5b8549897 100644 --- a/app/Http/Middleware/Money.php +++ b/app/Http/Middleware/Money.php @@ -23,6 +23,12 @@ class Money return $next($request); } + $currency_code = setting('default.currency'); + + if ($request->has('currency_code')) { + $currency_code = $request->get('currency_code'); + } + $parameters = [ 'amount', 'sale_price', @@ -41,7 +47,7 @@ class Money $money_format = Str::replaceFirst(',', '.', $money_format); } - $amount = $this->getAmount($money_format); + $amount = $this->getAmount($money_format, $currency_code); $request->request->set($parameter, $amount); } @@ -56,7 +62,11 @@ class Money continue; } - $amount = $this->getAmount($item['price']); + $amount = $item['price']; + + if (strpos($item['price'], config('money.' . $currency_code . '.symbol')) !== false) { + $amount = $this->getAmount($item['price'], $currency_code); + } $items[$key]['price'] = $amount; } @@ -68,10 +78,14 @@ class Money return $next($request); } - protected function getAmount($money_format) + protected function getAmount($money_format, $currency_code) { try { - $amount = money($money_format)->getAmount(); + if (config('money.' . $currency_code . '.decimal_mark') !== '.') { + $money_format = Str::replaceFirst('.', config('money.' . $currency_code . '.decimal_mark'), $money_format); + } + + $amount = money($money_format, $currency_code)->getAmount(); } catch (InvalidArgumentException | OutOfBoundsException | UnexpectedValueException $e) { logger($e->getMessage());