public function updateOrderDetail($domain, $orderId, $orderDetailId, Request $request) { $orderService = new orderService(); $order = $orderService->getOrderById($orderId); $orderDetails = $order->orderDetail; $orderDetailProperty = $request->input('product-properties', ''); $orderDetailQuantity = $request->input('product-quantity', 0); $total = 0; $discount = 0; $originTotal = 0; $quantity = 0; try { foreach ($orderDetails as $orderDetail) { if ($orderDetail->id == $orderDetailId) { $orderDetailDiscount = $orderDetail->discount * $orderDetailQuantity; $orderDetailProperty = explode('-', $orderDetailProperty); $dataOrderDetail = ['color_id' => $orderDetailProperty[0], 'size_id' => isset($orderDetailProperty[1]) ? $orderDetailProperty[1] : '', 'quantity' => $orderDetailQuantity, 'subtotal' => $orderDetail->price * $orderDetailQuantity - $orderDetailDiscount]; $orderService->updateOrderDetail($orderDetailId, $dataOrderDetail); $originTotal += $orderDetail->price * $orderDetailQuantity; $total += $orderDetail->price * $orderDetailQuantity - $orderDetailDiscount; $discount += $orderDetailDiscount; $quantity += $orderDetailQuantity; } else { $originTotal += $orderDetail->price * $orderDetail->quantity; $total += $orderDetail->subtotal; $discount += $orderDetail->discount; $quantity += $orderDetail->quantity; } } $dataOrder = ['total' => $total, 'origin_total' => $originTotal, 'quantity' => $quantity, 'discount' => $discount]; $orderService->updateOrder($orderId, $dataOrder); return redirect('/order/edit/' . $order->order_code); } catch (\Exception $e) { if ($request->ajax()) { $result['error'] = $e->getMessage(); return $result; } else { return view('errors.404', ['error_message' => $e]); } } }
/** * @param $shipping * @param $orderDetailIds * @param $order * @param $subtotal * @param $shipFee * @param $extraDiscount * @param $extraDiscountDesc * @return bool */ public function createShippingRow($shipping, $orderDetailIds, $order, $subtotal, $shipFee, $extraDiscount, $extraDiscountDesc, $paid) { $orderService = new orderService(); $address = $order->addressReceive->name . ' - ' . $order->address; $this->_shippingModel->createShippingRow($shipping, $address, $subtotal, $order->addressReceive->id, $shipFee, $extraDiscount, $extraDiscountDesc, $paid); $orderDetails = $orderService->getOrderDetailByIds($orderDetailIds); foreach ($orderDetails as $orderDetail) { $orderService->updateOrderDetail($orderDetail->id, ['shipping_service_code' => $shipping->OrderCode, 'order_service_status' => KACANA_ORDER_SERVICE_STATUS_SHIPPING, 'order_id' => $orderDetail->order_id]); } return true; }