diff --git a/app/Http/Controllers/EventOrdersController.php b/app/Http/Controllers/EventOrdersController.php index ad2358af..5f0410a4 100644 --- a/app/Http/Controllers/EventOrdersController.php +++ b/app/Http/Controllers/EventOrdersController.php @@ -111,7 +111,7 @@ class EventOrdersController extends MyBaseController $order = Order::scope()->findOrFail($order_id); $refund_order = (Input::get('refund_order') === 'on') ? true : false; $refund_type = Input::get('refund_type'); - $refund_amount = Input::get('refund_amount'); + $refund_amount = round(floatval(Input::get('refund_amount')), 2); $attendees = Input::get('attendees'); $error_message = false; @@ -124,7 +124,7 @@ class EventOrdersController extends MyBaseController $error_message = 'This order has already been refunded'; } elseif ($order->organiser_amount == 0) { $error_message = 'Nothing to refund'; - } elseif ($refund_amount > ($order->organiser_amount - $order->amount_refunded)) { + } elseif ($refund_type !== 'full' && $refund_amount > round(($order->organiser_amount - $order->amount_refunded), 2)) { $error_message = 'The maximum amount you can refund is '.(money($order->organiser_amount - $order->amount_refunded, $order->event->currency->code)); } if (!$error_message) { @@ -137,8 +137,6 @@ class EventOrdersController extends MyBaseController if ($refund_type === 'full') { /* Full refund */ $refund_amount = $order->organiser_amount - $order->amount_refunded; - } else { /* Partial refund */ - $refund_amount = floatval($refund_amount); } $request = $gateway->refund([ @@ -152,6 +150,7 @@ class EventOrdersController extends MyBaseController if ($response->isSuccessful()) { /* Update the event sales volume*/ $order->event->decrement('sales_volume', $refund_amount); + $order->amount_refunded = round(($order->amount_refunded + $refund_amount), 2); if (($order->organiser_amount - $order->amount_refunded) == 0) { $order->is_refunded = 1; @@ -160,14 +159,10 @@ class EventOrdersController extends MyBaseController $order->is_partially_refunded = 1; $order->order_status_id = config('attendize.order_partially_refunded'); } - - $order->amount_refunded = $order->organiser_amount; - $order->order_status_id = config('attendize.order_refunded'); } else { $error_message = $response->getMessage(); } - $order->amount_refunded = round(($order->amount_refunded + $refund_amount), 2); $order->save(); } catch (\Exeption $e) { Log::error($e);