has('order')) { try { $client = new \GuzzleHttp\Client(); $response = $client->request('GET', 'https://connector.ecompk.com/api/fetch_custom_order?order_name='.$request->order, []); $result = $response->getBody()->getContents(); }catch(\Exception $e) { $result = $e->getMessage(); } $decodedResult = json_decode($result, true); if(empty($decodedResult)){ return back()->with('error','Invalid or empty order number. Please insert an appropriate order number'); } $checkOrder = DB::table('orders')->where('order_id', $decodedResult['order']['order_id'])->first(); if(is_null($checkOrder)){ // if($decodedResult['order']['tags'] != 'In Process' || $decodedResult['order']['tags'] != 'Partially Shipped' || $decodedResult['order']['tags'] != 'Shipped'){ // return back()->with('error','Order status must be in process or partially shipped'); // } $createOrder = DB::table('orders')->insertGetId([ 'order_id' => $decodedResult['order']['order_id'], 'order_number' => $decodedResult['order']['order_number'], 'order_name' => $decodedResult['order']['order_name'], 'tags' => $decodedResult['order']['tags'], 'status' => $decodedResult['order']['tags'], 'shipping_method' => $decodedResult['order']['shipping_method'], 'gateway' => $decodedResult['order']['gateway'], 'payment_method' => $decodedResult['order']['gateway'], 'subtotal' => $decodedResult['order']['subtotal_price'], 'shipping_amount' => $decodedResult['order']['shipping_rates'], 'tax_amount' => $decodedResult['order']['total_tax'], 'taxes_included' => $decodedResult['order']['taxes_included'], 'discount_amount' => $decodedResult['order']['total_discounts'], 'currency' => $decodedResult['order']['currency'], 'financial_status' => $decodedResult['order']['financial_status'], 'fulfillment_status' => $decodedResult['order']['fulfillment_status'], 'total_line_items_price' => $decodedResult['order']['total_line_items_price'], 'total_price' => $decodedResult['order']['total_price'], 'total_weight' => $decodedResult['order']['total_weight'], 'connector_status' => $decodedResult['order']['connector_status'] ]); $createCustomerDetails = DB::table('order_customer_details')->insert([ 'parent_id' => $createOrder, 'name' => $decodedResult['shippingDetails']['first_name'].' '.$decodedResult['shippingDetails']['last_name'], 'email' => $decodedResult['customerDetails']['email'], 'phone' => $decodedResult['shippingDetails']['phone'], 'address' => $decodedResult['shippingDetails']['address1'].''.$decodedResult['shippingDetails']['address2'], 'city' => $decodedResult['shippingDetails']['city'], 'country_code' => $decodedResult['shippingDetails']['country_code'], 'postcode' => $decodedResult['shippingDetails']['zip'], 'zip' => $decodedResult['shippingDetails']['zip'], 'country' => $decodedResult['shippingDetails']['country_code'], 'type' => 'shipping', 'created_at' => now(), 'updated_at' => now() ]); if(!is_null($decodedResult['billingDetails'])){ $billing_customer_phone = str_replace('+92', '0', $decodedResult['billingDetails']['phone']); $createCustomerDetailsBilling = DB::table('order_customer_details')->insert([ 'parent_id' => $createOrder, 'name' => $decodedResult['billingDetails']['first_name'].' '.$decodedResult['billingDetails']['last_name'], 'email' => $decodedResult['customerDetails']['email'], 'phone' => $billing_customer_phone, 'address' => $decodedResult['billingDetails']['address1'].''.$decodedResult['billingDetails']['address2'] , 'city' => $decodedResult['billingDetails']['city'], 'country_code' => $decodedResult['billingDetails']['country_code'], 'postcode' => $decodedResult['billingDetails']['zip'], 'zip' => $decodedResult['billingDetails']['zip'], 'country' => $decodedResult['billingDetails']['country_code'], 'type' => 'billing', 'created_at' => now(), 'updated_at' => now() ]); } else { $shipping_customer_phone = str_replace('+92', '0', $decodedResult['shippingDetails']['phone']); $createCustomerDetailsBilling = DB::table('order_customer_details')->insert([ 'parent_id' => $createOrder, 'name' => $decodedResult['shippingDetails']['first_name'].' '.$decodedResult['shippingDetails']['last_name'], 'email' => $decodedResult['customerDetails']['email'], 'phone' => $shipping_customer_phone, 'address' => $decodedResult['shippingDetails']['address1'].''.$decodedResult['shippingDetails']['address2'] , 'city' => $decodedResult['shippingDetails']['city'], 'country_code' => $decodedResult['shippingDetails']['country_code'], 'postcode' => $decodedResult['shippingDetails']['zip'], 'zip' => $decodedResult['shippingDetails']['zip'], 'country' => $decodedResult['shippingDetails']['country_code'], 'type' => 'billing', 'created_at' => now(), 'updated_at' => now() ]); } $firstComment = 'Order dropped in custom panel at '.now().'
(Automated message from cp.makeupcityshop.com)'; $createCommnets = OrderComment::create([ 'parent_id' => $createOrder, 'comment' => $firstComment, 'status' => $decodedResult['order']['tags'] ]); foreach($decodedResult['itemData'] as $itemData){ $orderedQty = $itemData['quantity']; $createItems = DB::table('order_items')->insert([ 'parent_id' => $createOrder, 'item_id' => $itemData['product_id'], 'product_id' => $itemData['product_id'], 'order_product_id' => $itemData['order_product_id'], 'sku' => $itemData['sku'], 'title' => $itemData['title'], 'item_name' => $itemData['name'], 'upc' => $itemData['upc'], 'vendor' => $itemData['vendor'], 'color' => $itemData['color'], 'size' => $itemData['size'], 'brand_id' => 1, 'qty_ordered' => $orderedQty, 'base_price' => $itemData['price'], 'compare_at_price' => $itemData['compare_at_price'], 'base_discount_amount' => 0, 'base_tax_amount' => 0, 'base_row_total' => $itemData['price']*$orderedQty, 'remarks' => 'N/A', 'qty_confirmed' => 0, 'product_image_url' => $itemData['product_image_url'], 'created_at' => now() ]); } // $firstComment = 'Order dropped in custom panel at '.now().'
(Automated message from cp.makeupcityshop.com)'; // try { // $client = new \GuzzleHttp\Client(); // $response = $client->request('GET', 'https://connector.ecompk.com/api/addordercomment?order_id='.$decodedResult['orderData']['entity_id'].'&comment='.$firstComment, []); // $result = $response->getBody()->getContents(); // }catch(\Exception $e) { // $result = $e->getMessage(); // } // $createCommnets = OrderComment::create([ // 'parent_id' => $createOrder->id, 'comment' => $firstComment, 'status' => $decodedResult['orderData']['status'] // ]); } $order = Order::where('orders.order_name', $request->order) ->join('order_customer_details', 'order_customer_details.parent_id', 'orders.id') ->select( 'orders.id as id', 'orders.order_id', 'orders.status as status', 'orders.shipping_amount', 'orders.subtotal', 'orders.subtotal', 'orders.tax_amount','orders.total_line_items_price', 'orders.discount_amount', 'orders.payment_method', 'order_customer_details.city as customer_city', 'order_customer_details.name as customer_name', 'order_customer_details.email as customer_email', 'order_customer_details.address as customer_address', 'order_customer_details.phone as customer_phone', 'order_customer_details.country_code as country_code', 'order_customer_details.country as country', 'order_customer_details.postcode as postcode' ) ->first(); if($order->status == 'Shipped'){ return back()->with('error','Order marked as COD Shipped.'); } if($order->status == 'codshipped'){ return back()->with('error','Order marked as COD Shipped.'); } if(!in_array($order->status, array('In Process', 'Partially Shipped', 'Shipped'))){ return back()->with('error','Set order in process to book'); } $apiId = null; $api = null; if($order->shipping_courier != 'DHL - Express worldwide'){ if(!getBookingApi(Auth::user()->id, $order->customer_city)){ return back()->with('error','City '.$order->customer_city.' not assigned to any API'); } $apiId = getBookingApi(Auth::user()->id, $order->customer_city); $api = Api::where('id', $apiId)->first(); } $orderItems = DB::table('order_items')->where('parent_id', $order->id) ->select( 'sku as item_sku', 'weight as item_weight', 'qty_confirmed', 'qty_ordered as item_quantity_ordered', 'item_id', 'brand_id', 'base_row_total as item_row_total', 'base_price as item_price', 'base_tax_amount as item_tax_amount', 'base_discount_amount as item_discount_amount', 'upc', 'hscode', 'international_row_total', 'item_name', 'order_product_id' ) ->get(); } return view('modules.booking.index', compact('order', 'orderItems', 'apiId', 'api', 'emailAddress')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->request->add((['order_number' => strtoupper($request->order_number)])); $getToken = OrderToken::where([['order_number', $request->order_number], ['token', $request->order_token]])->first(); if(!is_null($getToken)){ return redirect('booking')->with('error','Order already processed please check shipments for more details'); } // $insertToken = OrderToken::create([ // 'order_number' => $request->order_number, // 'token' => $request->order_token // ]); if($request->order_shipping_method == 'DHL'){ echo 'DHL'; die; } $api = Api::where('id', '3')->first(); $api_user = ApiUser::where([['user_id', getLoggedInUserId()], ['api_id', $api->id]])->first(); // Check city and get Name/Code or die if city not found if(!getCityNameOrCode($request->destination_city, $api->id)){ return back()->with('error','City not found'); } $cityNameOrCode = getCityNameOrCode($request->destination_city, $api->id); $request->request->add((['destination_city' => $cityNameOrCode])); // Checking if Key Fields has headers variables and replacing them according to user logged in $headers = []; if($api->headers != '{}'){ $decodedApiHeaders = json_decode($api->headers, true); $decodedUserHeaderValues = json_decode($api_user->key_values, true); foreach($decodedApiHeaders as $key => $value){ if (array_key_exists($value, $decodedUserHeaderValues)){ $decodedApiHeaders[$key] = $decodedUserHeaderValues[$decodedApiHeaders[$key]]; } } $headers = $decodedApiHeaders; } // Replacing post array variables with respect to customer order details $decodedApiBody = json_decode($api->body, true); //print_r($decodedApiBody);die; $postArray = []; foreach($decodedApiBody as $key => $value){ $postArray[$key] = $value; if($request->has(str_replace(array('{', '}'), '', $value))){ $postArray[$key] = $request->input(str_replace(array('{', '}'), '', $value)); } } // Checking if Key Fields has body variables and replacing them according to user logged in foreach($postArray as $key => $value){ //echo $key.':'.$value.'
'; $decodedApiBodyValues = json_decode($api_user->key_values, true); if (array_key_exists($value, $decodedApiBodyValues)){ $postArray[$key] = $decodedApiBodyValues[$value]; } } // Computing weight, pieces and product details $requestBodies = computePackageDetails($request, $postArray); //print_r($requestBodies);die; $cn_number = []; $awbs = []; $citiesForLabel = array( '1' => array('originCityName', 'destinationCityName'), '3' => array('origin_city', 'destination_city'), '6' => array('OriginCityId', 'DestCityId'), '4' => array('consignee_city_id'), '7' => array('delivery_city'), '9' => array('cityName'), '11' => array('CONSIGNEE_CITY'), ); $serviceIndex = array_search('{api_service}', $decodedApiBody); if($serviceIndex){ $serviceForLabel = array( $api->id => json_decode($api->extra_fields, true)['api_service'], ); } $cityNames = []; // print_r($requestBodies);die; // Checking if API is SOAP or RESTFull foreach($requestBodies as $key => $_body){ if($api->type == 'REST'){ $cn_number[$key] = get_response($api->name, rest_request($api->method, $api->url, $headers, $_body)); }elseif($api->type == 'SOAP'){ $cn_number[$key] = get_response($api->name, soap_request($api->method, $api->url, $headers, $_body)); } $airway = Template::where([['api_id', $api->id], ['type', 'airway label']])->first(); $keys = []; $values = []; $_body['date_now'] = date('Y-m-d', strtotime(now())); $_body['time_now'] = date('H:i:s', strtotime(now())); $_body['package'] = ($key+1) .' / '. count($requestBodies); $_body['key'] = $key; // $cn_number[$key] = rand(); $_body['cn_number'] = $cn_number[$key]; //testing //print_r($_body); //die(); if($api->id == 9){ $item_weight = array_sum($request->item_weight); $pieces = array_sum($request->quantity_confirmed); $user_values = json_decode($api_user->key_values, true); $shipper_address = $user_values['{shipper_address}']; $shipper_name = $user_values['{shipper_name}']; $origin_city = $user_values['{origin_city}']; $_body['weight'] = $item_weight; $_body['pieces'] = $pieces; $_body['shipper_address'] = $shipper_address; $_body['shipper_name'] = $shipper_name; $_body['origin_city'] = $origin_city; $phone = substr($_body['customerPhone'], 0, 2); if($phone == '92'){ $getPhone = DB::table('orders')->where('order_number', $_body['orderRefNumber']) ->join('order_customer_details', 'order_customer_details.parent_id', 'orders.id') ->select('order_customer_details.*') ->first(); $number = '0' . substr($getPhone->phone, 2); $_body['customerPhone'] = $number; } } foreach($citiesForLabel[$api->id] as $city_key){ $shippingCityName = ShippingCity::where([['api_id', $api->id], ['code', $_body[$city_key]]])->first(); $_body[$city_key] = is_null($shippingCityName)? '' : $shippingCityName->city; } if($serviceIndex){ $_body[$serviceIndex] = $serviceForLabel[$api->id][$_body[$serviceIndex]]; } //print_r($_body); //die(); foreach($_body as $key => $value){ $keys[] = '{'.$key.'}'; if($key == "invoicePayment"){ // $values[] = $request->order_shipping_amount + $request->order_total_amount - $request->order_discount_amount; $values[] = $value; } else{ $values[] = $value; } } // testing //print_r($values); //die(); $awb = str_replace($keys, $values, $airway->html); $storeAWB = AirwayBill::create([ 'cnnumber' => $_body['cn_number'], 'order_number' => $request->order_number, 'content' => $awb ]); $awbs[] = $awb; } updateCurrentDetails($request, $cn_number, $api->name); $links = []; $counter = 0; foreach($awbs as $_awb){ $currentTime = rand(5000, 10000); $counter++; $file = fopen(public_path('upload/awb').'/'.$currentTime.".html","w"); $fileWrite = fwrite($file, $_awb); $filePath = asset('upload/awb').'/'.$currentTime.".html"; $links[] = 'Download Airway Bill '.$counter.''; fclose($file); } return redirect('booking')->with('error', implode(', ', $links)); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } public function book_international(Request $request) { $request->request->add((['order_number' => strtoupper($request->order_number)])); $getToken = OrderToken::where([['order_number', $request->order_number], ['token', $request->order_token]])->first(); if(!is_null($getToken)){ return redirect('booking')->with('error','Order already processed please check shipments for more details'); } $insertToken = OrderToken::create([ 'order_number' => $request->order_number, 'token' => $request->order_token ]); $request->order_shipping_method == 'DHL'; updateIntlCurrentDetails($request); return redirect('booking')->with('error', 'Order'. $request->order_number.' booked'); } public function book_jaranwala(Request $request) { $request->request->add((['order_number' => strtoupper($request->order_number)])); $getToken = OrderToken::where([['order_number', $request->order_number], ['token', $request->order_token]])->first(); if(!is_null($getToken)){ return redirect('booking')->with('error','Order already processed please check shipments for more details'); } $insertToken = OrderToken::create([ 'order_number' => $request->order_number, 'token' => $request->order_token ]); if($request->order_shipping_method == 'DHL'){ echo 'DHL'; die; } $api = Api::where('id', $request->apiId)->first(); $api_user = ApiUser::where([['user_id', getLoggedInUserId()], ['api_id', $api->id]])->first(); // Check city and get Name/Code or die if city not found if(!getCityNameOrCode($request->destination_city, $api->id)){ return back()->with('error','City not found'); } $cityNameOrCode = getCityNameOrCode($request->destination_city, $api->id); $request->request->add((['destination_city' => $cityNameOrCode])); // $cityNameOrCode = 'Jaranwala'; // Checking if Key Fields has headers variables and replacing them according to user logged in $headers = []; if($api->headers != '{}'){ $decodedApiHeaders = json_decode($api->headers, true); $decodedUserHeaderValues = json_decode($api_user->key_values, true); foreach($decodedApiHeaders as $key => $value){ if (array_key_exists($value, $decodedUserHeaderValues)){ $decodedApiHeaders[$key] = $decodedUserHeaderValues[$decodedApiHeaders[$key]]; } } $headers = $decodedApiHeaders; } // Replacing post array variables with respect to customer order details $decodedApiBody = json_decode($api->body, true); $postArray = []; foreach($decodedApiBody as $key => $value){ $postArray[$key] = $value; if($request->has(str_replace(array('{', '}'), '', $value))){ $postArray[$key] = $request->input(str_replace(array('{', '}'), '', $value)); } } // Checking if Key Fields has body variables and replacing them according to user logged in foreach($postArray as $key => $value){ $decodedApiBodyValues = json_decode($api_user->key_values, true); if (array_key_exists($value, $decodedApiBodyValues)){ $postArray[$key] = $decodedApiBodyValues[$value]; } } // Computing weight, pieces and product details $requestBodies = computePackageDetails($request, $postArray); $cn_number = []; $awbs = []; $citiesForLabel = array( '1' => array('originCityName', 'destinationCityName'), '6' => array('OriginCityId', 'DestCityId'), '4' => array('consignee_city_id'), '7' => array('delivery_city'), '8' => array('delivery_city'), ); $serviceIndex = array_search('{api_service}', $decodedApiBody); if($serviceIndex){ $serviceForLabel = array( $api->id => json_decode($api->extra_fields, true)['api_service'], ); } $cityNames = []; // Checking if API is SOAP or RESTFull foreach($requestBodies as $key => $_body){ $cn_number[$key] = 'JRW'.rand(); $airway = Template::where([['api_id', $api->id], ['type', 'airway label']])->first(); $keys = []; $values = []; $_body['date_now'] = date('Y-m-d', strtotime(now())); $_body['time_now'] = date('H:i:s', strtotime(now())); $_body['package'] = ($key+1) .' / '. count($requestBodies); $_body['key'] = $key; // $cn_number[$key] = rand(); $_body['cn_number'] = $cn_number[$key]; foreach($citiesForLabel[$api->id] as $city_key){ $shippingCityName = ShippingCity::where([['api_id', $api->id], ['code', $_body[$city_key]]])->first(); $_body[$city_key] = is_null($shippingCityName)? '' : $shippingCityName->city; } if($serviceIndex){ $_body[$serviceIndex] = $serviceForLabel[$api->id][$_body[$serviceIndex]]; } foreach($_body as $key => $value){ $keys[] = '{'.$key.'}'; $values[] = $value; } $awb = str_replace($keys, $values, $airway->html); $storeAWB = AirwayBill::create([ 'cnnumber' => $_body['cn_number'], 'order_number' => $request->order_number, 'content' => $awb ]); $awbs[] = $awb; } updateCurrentDetails($request, $cn_number, $api->name); $links = []; $counter = 0; foreach($awbs as $_awb){ $currentTime = rand(5000, 10000); $counter++; $file = fopen(public_path('upload/awb').'/'.$currentTime.".html","w"); $fileWrite = fwrite($file, $_awb); $filePath = asset('upload/awb').'/'.$currentTime.".html"; $links[] = 'Download Airway Bill '.$counter.''; fclose($file); } return redirect('booking')->with('error', implode(', ', $links)); } public function international_page($order_number, $page) { $awb_link = DB::table('airway_bills_intl')->where('awb_link', $page)->first(); $pages = $awb_link->airway_bill; $order_num = $order_number; header("Content-type:application/pdf"); header("Content-Disposition:inline;filename=label_".$order_num.".pdf"); echo base64_decode($pages); die; return view('modules.extra.index', compact('order_num', 'pages')); } public function international_page_invoice($order_number, $page) { $invoice_link = DB::table('airway_bills_intl')->where('invoice_link', $page)->first(); $pages = $invoice_link->invoice; $order_num = $order_number; header("Content-type:application/pdf"); header("Content-Disposition:inline;filename=label_".$order_num.".pdf"); echo base64_decode($pages); die; return view('modules.extra.index', compact('order_num', 'pages')); } public function addupc() { return view('modules.sku_upc.index'); } public function import_upc(Request $request) { if (!$request->hasFile('file')) { return redirect()->back()->withError('File Not Found'); } $collection = (new FastExcel)->configureCsv(';', '#', '\n', 'gbk')->import($request->file); foreach($collection as $data){ if(!$data['S.No.']) { return redirect()->back()->withError('File does not have the required column names'); } break; } $countRowsAdded = 0; $rowAlreadyExist = []; $sheet = rand(); foreach($collection as $value) { $get_row = DB::table('sku_upc_example')->where([['upc', $value['Intl/Product Barcode']], ['sku', $value['Tehno Barcode']]])->first(); if(is_null($get_row)){ $update_item = DB::table('sku_upc_example')->insert([ 'upc' => $value['Intl/Product Barcode'], 'sku' => $value['Tehno Barcode'], ]); $countRowsAdded++; }else{ $rowAlreadyExist[] = $value['S.No.']; } } return redirect()->back()->withError('File Uploaded.
Row(s) Added: '.$countRowsAdded.'
Order(s) not synced: '.implode(', ', $rowAlreadyExist). ''); } public function reimport_order_index() { return view('modules.booking.reimport'); } public function reimport_order(Request $request) { $orderCheck = DB::table('orders')->where('order_name', $request->order)->first(); if(is_null($orderCheck)){ return redirect()->back()->withError('Invalid Order '. $request->order); } if($orderCheck->status == 'In Process'){ $remove_order = DB::table('orders')->where('order_name', $request->order)->delete(); // $this->index($request->order); return redirect()->back()->withError('Order '.$request->order.' has been Re-imported.'); } else { return redirect()->back()->withError('Order '.$request->order.' must be inprocess to be removed.'); } } public function set_in_process() { return view('modules.set_in_process.index'); } public function update_in_process(Request $request) { $request->validate([ 'order' => 'required' ]); $order = Order::where('order_name', $request->order)->first(); if(!$order){ return redirect()->back()->with(['msg'=>"Invalid Order number", "alert"=>"danger"]); } Order::where('order_name', $request->order)->update([ 'tags' => 'In Process' ]); return redirect()->back()->with(['msg'=>'Order # '.$request->order.' set in process successfully.', 'alert'=>'success']); } }