diff --git a/app/Http/Controllers/Banking/Transfers.php b/app/Http/Controllers/Banking/Transfers.php index f3e3d3464..2c6244da6 100644 --- a/app/Http/Controllers/Banking/Transfers.php +++ b/app/Http/Controllers/Banking/Transfers.php @@ -137,10 +137,25 @@ class Transfers extends Controller // Convert amount if not same currency if ($payment_currency_code != $revenue_currency_code) { + $default_currency = setting('general.default_currency', 'USD'); + + $default_amount = $request['amount']; + + if ($default_currency != $payment_currency_code) { + $default_amount_model = new Transfer(); + + $default_amount_model->default_currency_code = $default_currency; + $default_amount_model->amount = $request['amount']; + $default_amount_model->currency_code = $payment_currency_code; + $default_amount_model->currency_rate = $currencies[$payment_currency_code]; + + $default_amount = $default_amount_model->getDivideConvertedAmount(); + } + $transfer_amount = new Transfer(); $transfer_amount->default_currency_code = $payment_currency_code; - $transfer_amount->amount = $request['amount']; + $transfer_amount->amount = $default_amount; $transfer_amount->currency_code = $revenue_currency_code; $transfer_amount->currency_rate = $currencies[$revenue_currency_code]; @@ -243,10 +258,25 @@ class Transfers extends Controller // Convert amount if not same currency if ($payment_currency_code != $revenue_currency_code) { + $default_currency = setting('general.default_currency', 'USD'); + + $default_amount = $request['amount']; + + if ($default_currency != $payment_currency_code) { + $default_amount_model = new Transfer(); + + $default_amount_model->default_currency_code = $default_currency; + $default_amount_model->amount = $request['amount']; + $default_amount_model->currency_code = $payment_currency_code; + $default_amount_model->currency_rate = $currencies[$payment_currency_code]; + + $default_amount = $default_amount_model->getDivideConvertedAmount(); + } + $transfer_amount = new Transfer(); $transfer_amount->default_currency_code = $payment_currency_code; - $transfer_amount->amount = $request['amount']; + $transfer_amount->amount = $default_amount; $transfer_amount->currency_code = $revenue_currency_code; $transfer_amount->currency_rate = $currencies[$revenue_currency_code]; diff --git a/app/Models/Banking/Transfer.php b/app/Models/Banking/Transfer.php index e3f3125b9..4f53d0139 100644 --- a/app/Models/Banking/Transfer.php +++ b/app/Models/Banking/Transfer.php @@ -49,4 +49,14 @@ class Transfer extends Model { return $this->dynamicConvert($this->default_currency_code, $this->amount, $this->currency_code, $this->currency_rate, $format); } + + public function getReverseConvertedAmount($format = false) + { + return $this->reverseConvert($this->amount, $this->currency_code, $this->currency_rate, $format); + } + + public function getDivideConvertedAmount($format = false) + { + return $this->divide($this->amount, $this->currency_code, $this->currency_rate, $format); + } } diff --git a/app/Traits/Currencies.php b/app/Traits/Currencies.php index 22a54ab17..ae84cd911 100644 --- a/app/Traits/Currencies.php +++ b/app/Traits/Currencies.php @@ -21,6 +21,17 @@ trait Currencies return $money; } + public function divide($amount, $code, $rate, $format = false) + { + if ($format) { + $money = Money::$code($amount, true)->divide((double) $rate)->format(); + } else { + $money = Money::$code($amount)->divide((double) $rate)->getAmount(); + } + + return $money; + } + public function reverseConvert($amount, $code, $rate, $format = false) { $default = setting('general.default_currency', 'USD');