Updates, added rounding to fix float comparisons

This commit is contained in:
brettninja 2016-03-14 03:27:31 -04:00
parent a915aa5401
commit cd2466d969
1 changed files with 3 additions and 8 deletions

View File

@ -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);