· 6 years ago · Jan 21, 2020, 09:40 AM
1<?php
2
3namespace App\Http\Controllers;
4
5use App\Helpers\Api\WmsApiHelper;
6use App\Helpers\AppHelper;
7use App\Helpers\OrderHelpers;
8use Illuminate\Http\Request;
9use Response;
10use Illuminate\Support\Facades\Input;
11use App\Http\Requests;
12use DB;
13use PDF;
14use GuzzleHttp;
15use GuzzleHttp\Exception\RequestException;
16use Mail;
17use Redirect;
18use Session;
19use Auth;
20use App\Helpers\ApiHelpers;
21use \Curl\Curl;
22use DateTime;
23use Excel;
24use Log;
25use App\Http\Controllers\OrderController;
26use App\Http\Controllers\EdcController;
27use App\Http\Controllers\TrackingController;
28use Artisan;
29use Carbon\Carbon;
30use MyApp;
31
32class MarketplaceController extends Controller
33{
34 // lSaIv9khhCFZuODj4kxjQw
35
36 public function __construct()
37 {
38 $this->middleware('auth');
39 }
40
41 public function tesLogin()
42 {
43 return view('auth.teslogin');
44 }
45
46 public static function checkOrder($id)
47 {
48 $ckorder = DB::table('marketplace_data')->where('order_number', $id)->count();
49
50 return $ckorder;
51 }
52
53 public static function orderEstore($id)
54 {
55 $ckorder = DB::table('estore')->where('order_number', $id)->count();
56
57 return $ckorder;
58 }
59
60 private function getclientid()
61 {
62 return "ERAFONEDOTCOM";
63 }
64
65 private function getpassword()
66 {
67 return "S3cret";
68 }
69
70
71 public function listData($order = 0, $msisdn = 0, $activation = 2, $searchby = 0, $sdata = 0, $status = 4)
72 {
73 // return var_dump($searchby) or die();
74 // $raw = DB::select(' SELECT a.*, b.iccid, b.email, b.activation_status, b.invoice, b.msisdn,b.mage_complete,
75 // c.sku, c.item_name, c.qty, c.salesprice, d.current_status
76 // FROM marketplace_data a LEFT JOIN estore b on a.order_number = b.order_number
77 // LEFT JOIN marketplace_data_detail c on a.order_number = c.order_number
78 // LEFT JOIN tracking_orders d on a.order_number = d.order_number
79 // WHERE a.marketplace_name = "EDC-OOREDOO" OR a.marketplace_name = "ERAFONEDOTCOM"
80 // ORDER BY a.created_at Desc
81 // ');
82 // if($searchby == 0){
83 // if($searchby === "customer_name" || $searchby === "email" || $searchby === "customer_phone"){
84 // return "xxxxx".$searchby;
85 // }else{
86 // return var_dump($sdata);
87 // }
88 $data_o = DB::table('marketplace_data');
89 $data_o->leftJoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number');
90 // ->leftJoin('marketplace_data_detail', 'marketplace_data_detail.order_number', '=', 'estore.order_number')
91 // ->leftJoin('tracking_orders', 'marketplace_data.order_number', '=', 'tracking_orders.order_number')
92 if ($searchby === "customer_name") $data_o->where('marketplace_data.' . $searchby, 'like', '%' . $sdata . '%');
93 if ($searchby === "email") $data_o->where('estore.' . $searchby, 'like', '%' . $sdata . '%');
94 if ($searchby === "customer_phone") $data_o->where('marketplace_data.' . $searchby, 'like', '%' . $sdata . '%');
95 $data_o->where('marketplace_data.marketplace_name', '=', 'EDC-OOREDOO');
96 // if($searchby == 'email') $data_o->where('estore.'.$searchby, $sdata);return var_dump($searchby);
97 if ($order != 0) $data_o->where('marketplace_data.order_number', 'like', '%' . $order . '%');
98 if ($status != 4) $data_o->where('marketplace_data.wms_status', $status);
99 if ($msisdn != 0) $data_o->where('estore.msisdn', 'like', '%' . $msisdn . '%');
100 if ($activation != 2) $data_o->where('estore.activation_status', $activation);
101
102
103 $data_o->orderBy('order_date', 'Desc');
104
105 $data = $data_o->paginate(100);
106
107 $orders = array();
108 foreach ($data as $d) {
109 $orders[] = $d->order_number;
110 }
111
112 $tracking = DB::table('tracking_orders')->whereIn('order_number', $orders)->get();
113 return view('marketplace.listooredoo', compact('data', 'tracking'));
114 }
115
116 public function searchData()
117 {
118 $order = trim(Input::get('sorder'));
119 $msisdn = trim(Input::get('smsisdn'));
120 $activation = trim(Input::get('sactivation'));
121 $searchby = trim(Input::get('searchby'));
122 $sdata = trim(Input::get('sdata'));
123 $status = trim(Input::get('sstatus'));
124 if ($status == "") $status = 4;
125 //return "order:".$order."/msisdn:".$msisdn."/activation:".$activation."/searchby:".$searchby."/sdata:".$sdata."/status:".$status;
126 return $this->listData($order, $msisdn, $activation, $searchby, $sdata, $status);
127 }
128
129 public function detailOrder($id)
130 {
131 // return var_dump($id) or die();
132 $data = DB::table('marketplace_data')
133 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
134 ->select('marketplace_data.marketplace_name', 'marketplace_data.order_date', 'marketplace_data.bill_to_address', 'marketplace_data.ongkir', 'marketplace_data.customer_name', 'marketplace_data.customer_phone', 'marketplace_data.customer_address', 'marketplace_data.order_date', 'marketplace_data.courier', 'estore.*')
135 // ->where('marketplace_name', 'EDC-OOREDOO')
136 // ->orwhere('marketplace_name', 'ERAFONEDOTCOM')
137 ->where('marketplace_data.order_number', $id)
138 ->get();
139
140 $detail = DB::table('marketplace_data_detail')
141 ->where('order_number', $id)
142 ->get();
143
144 $frpaid = DB::table('estore_frpaid')
145 ->where('order_number', $id)
146 ->get();
147
148 $bundling = DB::table('estore_bundling')
149 ->where('order_number', $id)
150 ->get();
151
152 $detail_title = DB::table('estore_payment')
153 ->where('order_number', $id)
154 ->take(1)
155 ->get();
156
157 $tracking = DB::table('tracking_orders')
158 ->where('order_number', $id)
159 ->get();
160 $paymentgw = DB::table('payment_gw')
161 ->where('orderno', $id)->get();
162
163 $hash = $this->dumpJson($id);
164 //untuk SSP
165 $datassp = "CLIENTID:ESTORE</br>";
166 $datassp .= "DATETIME:" . date('Ymdhis') . "</br>";
167 $datassp .= "TRANSID:" . $data[0]->msisdn . date('Ymdhis') . "</br>";
168 $datassp .= "MSISDN:" . $data[0]->msisdn . "</br>";
169 $datassp .= "SERVICENAME:internet59koutlet</br>";
170 $datassp .= "ACTION:ADD</br>";
171 $datassp .= "PARAM:363</br>";
172 // end SSP
173 return view('marketplace.detailorder', compact('data', 'detail', 'detail_title', 'bundling', 'tracking', 'hash', 'frpaid', 'datassp', 'paymentgw'));
174 }
175
176 public function updateDetailOrder($id)
177 {
178 $status = Input::get('activation_status');
179 $reffname = Input::get('reff_name');
180 $reffphone = Input::get('reff_phone');
181 $reffaddress = Input::get('reff_address');
182
183 # Adding as req 19-Sept-2016 [data customer editable]
184 $lv = Auth::user()->level_user;
185 $cmp = Auth::user()->company;
186 $name = Input::get('customername');
187 $phone = Input::get('customerphone');
188 $email = Input::get('email');
189 $mothername = Input::get('mothername');
190 $idnumber = Input::get('idnumber');
191 $gender = Input::get('gender');
192 $placeofbirth = Input::get('placeofbirth');
193 $dateofbirth = Input::get('dateofbirth');
194
195 // var_dump($lv, $name, $phone, $email, $mothername, $idnumber, $gender, $placeofbirth, $dateofbirth) or die();
196
197 $file = Input::file('idpicture');
198
199 if (Input::hasFile('idpicture')) {
200
201 $destinationPath = base_path() . '/public/assets/idpicture/';
202 $extension = $file->getClientOriginalExtension();
203 $dt = date('Y-m-d_H-i-s_', strtotime(ApiHelpers::currentDate()));
204 $size = Input::file('idpicture')->getSize();
205 /*
206 $env = ApiHelpers::getTheHostName();
207 if ($env == 'live') {
208 $fileName = "/var/www/im3/public/assets/idpicture/".$dt . md5($size) . ".{$extension}";
209 } else {
210 */
211 $fileName = asset('assets/idpicture') . '/' . $dt . md5($size) . ".{$extension}";
212// }
213 // return var_dump($fileName);
214 // $fileName = url('/').'/storage/idpicture/'.$dt . md5($size) . ".{$extension}";
215 Input::file('idpicture')->move($destinationPath, $fileName);
216
217 DB::table('estore')
218 ->where('order_number', $id)
219 ->update(['idpicture' => $fileName]);
220 }
221
222 #update estore
223 DB::table('estore')
224 ->where('order_number', $id)
225 ->update([
226 'activation_status' => $status,
227 'activation_status_date' => ApiHelpers::currentDate(),
228 'reff_name' => $reffname,
229 'reff_phone' => $reffphone,
230 'reff_address' => $reffaddress,
231 ]);
232
233 if ($lv >= 7 && $cmp == 'OOREDOO') {
234 #estore
235 DB::table('estore')
236 ->where('order_number', $id)
237 ->update([
238 'firstname' => $name,
239 'email' => $email,
240 'mothername' => $mothername,
241 'idnumber' => $idnumber,
242 'gender' => $gender,
243 'placeofbirth' => $placeofbirth,
244 'dateofbirth' => $dateofbirth
245 ]);
246
247 #update marketplace data
248 DB::table('marketplace_data')
249 ->where('order_number', $id)
250 ->update([
251 'customer_name' => $name,
252 'customer_phone' => $phone
253 ]);
254 }
255
256 Session::flash('success', 'Success: Berhasil Update data!');
257 return Redirect::to('detail-order/' . $id);
258 }
259
260 public function updateDetailItem(Request $request, $orderNumber)
261 {
262 $id = trim(Input::get('detail_id'));
263 $itemName = trim(Input::get('edititemName_' . $id));
264 $sku = trim(Input::get('editsku_' . $id));
265 $old_sku = trim(Input::get('oldsku_' . $id));
266 $qty = trim(Input::get('editqty_' . $id));
267 $sp = trim(Input::get('editsp_' . $id));
268 $dc = trim(Input::get('editdc_' . $id));
269
270 // return var_dump($id, $sku, $qty, $sp,$itemName);
271
272 DB::table('marketplace_data_detail')
273 ->where('id', $id)
274 ->where('order_number', $orderNumber)
275 ->update([
276 "sku" => $sku,
277 "item_name" => $itemName,
278 "qty" => $qty,
279 "salesprice" => $sp,
280 "discount" => $dc
281 ]);
282
283 DB::table('master_product')
284 ->where('sku', $sku)
285 ->decrement("qty_store");
286 DB::table('master_product')
287 ->where('sku', $old_sku)
288 ->increment("qty_store");
289
290 $log = ApiHelpers::log_message('Update Detail Items', $orderNumber, json_encode(['sku' => $sku, 'item_name' => $itemName, 'qty' => $qty, 'salesprice' => $sp, 'discount' => $dc]));
291 Session::flash('success', 'Success: Berhasil Update detail item! ' . $log);
292 return Redirect::to('edc/view/ERAFONEDOTCOM/' . $orderNumber);
293 }
294
295 public function deleteItem(Request $request, $orderNumber, $id)
296 {
297
298 DB::table('marketplace_data_detail')
299 ->where('id', $id)
300 ->where('order_number', $orderNumber)
301 ->delete();
302
303 Session::flash('success', 'Success: Berhasil Delete detail item!');
304 return Redirect::to('edc/view/ERAFONEDOTCOM/' . $orderNumber);
305 }
306
307 public function deleteOrder(Request $request, $id)
308 {
309
310 if ($request->ajax()) {
311 $reason = Input::get('reason');
312
313 if ($reason != '') {
314 $o_estore = $this->orderEstore($id); // check order in estore
315 $o_mp = $this->checkOrder($id); // check order in marketpalce_data
316 $o_payment = DB::table('estore_payment')->where('order_number', $id)->count();
317 $o_bundl = DB::table('estore_bundling')->where('order_number', $id)->count();
318 $o_tracking = DB::table('tracking_orders')->where('order_number', $id)->count();
319
320 $info = "";
321 if ($o_estore > 0) {
322 if ($o_mp > 0) {
323 DB::table('estore')->where('order_number', $id)->delete();
324 DB::table('marketplace_data')->where('order_number', $id)->delete();
325 DB::table('marketplace_data_detail')->where('order_number', $id)->delete();
326 /**/
327 if ($o_payment > 0) {
328 DB::table('estore_payment')->where('order_number', $id)->delete();
329 $info[] = "\nsuccess delete estore_payment";
330 } else {
331 $info[] = "payment not found";
332 }
333 if ($o_bundl > 0) {
334 DB::table('estore_bundling')->where('order_number', $id)->delete();
335 $info[] = "success delete estore_bundling";
336 } else {
337 $info[] = "non-bundling order";
338 }
339 if ($o_tracking > 0) {
340 DB::table('tracking_orders')->where('order_number', $id)->delete();
341 $info[] = "tracking_orders";
342 } else {
343 $info[] = "tracking order not found";
344 }
345
346 // save it for documentation
347 DB::table('void')->insert([
348 'order_number' => $id,
349 'void_reason' => $reason,
350 'created_by' => Auth::user()->email,
351 'created_at' => ApiHelpers::currentDate(),
352 ]);
353
354 $message = implode(",\n", $info);
355 return var_dump('Data ' . $id . ' has ben deleted !!<br>', $message) or die();
356
357 return 'Data ' . $id . ' has ben deleted !!<br>' . $message;
358 // return var_dump(json_encode($info));
359 } else {
360 return 'Data NOT FOUND !!';
361 }
362 } else {
363 return 'Data NOT FOUND in Estore !';
364 }
365
366 } else {
367 return 'Reason delete order cannot be empty !';
368 }
369
370 // return Redirect::to('listdata/');
371 }
372
373 return "you are not allowed !";
374 }
375
376 public function switchMsisdn(Request $request, $id)
377 {
378
379 if ($request->ajax()) {
380 $order1 = Input::get('order1'); // target
381 $order2 = Input::get('order2'); // source
382 // return var_dump($order1, $order2);
383
384 // check availability target MSISDN in estore
385 $c_msisdn = DB::table('estore')->where('order_number', $order2)->where('msisdn', '<>', '')->get();
386 if (count($c_msisdn) > 0) {
387 $msisdn = '';
388 $iccid = '';
389 $a_status = '';
390 $a_statusd = '';
391 foreach ($c_msisdn as $m) {
392 $msisdn = $m->msisdn;
393 $iccid = $m->iccid;
394 $a_status = $m->activation_status;
395 $a_statusd = $m->activation_status_date;
396
397 // clear msisdn past order
398 DB::table('estore')->where('order_number', $order2)
399 ->update([
400 'msisdn' => '',
401 'iccid' => '',
402 ]);
403
404 // update msisdn with previous
405 DB::table('estore')->where('order_number', $order1)
406 ->update([
407 'msisdn' => $msisdn,
408 'iccid' => $iccid,
409 'activation_status' => $a_status,
410 'activation_status_date' => $a_statusd,
411 ]);
412
413 // save log
414 DB::table('switch_msisdn')
415 ->insert([
416 'source' => $order2,
417 'target' => $order1,
418 'created_at' => ApiHelpers::currentDate(),
419 'created_by' => Auth::user()->email,
420
421 ]);
422
423 return "SUCCESS SWITCH MSISDN from " . $order2 . " To " . $order1;
424 }
425 } else {
426 return "Your target order is NOT HAVE MSISDN";
427 }
428 }
429
430 return "you are not allowed !";
431
432 }
433
434 public function cancelOrder(Request $request, $id)
435 {
436 if ($request->ajax()) {
437
438 $order = $this->checkOrder($id);
439 $reason = Input::get('reason');
440 // return var_dump($reason)or die();
441 if ($order > 0 && !empty($reason)) {
442 DB::table('marketplace_data')->where('order_number', $id)
443 ->update([
444 'wms_status' => '9'
445 ]);
446
447 DB::table('void')
448 ->insert([
449 'order_number' => $id,
450 'void_reason' => $reason,
451 'created_by' => Auth::user()->email,
452 'created_at' => ApiHelpers::currentDate(),
453 ]);
454
455 return "Success ! Order " . $id . " has been voided !!";
456 } else {
457 return "Failed ! Cannot void order " . $id;
458 }
459
460 }
461
462 return "You Are NOT ALLOWED !!";
463 }
464
465 public static function pdfDetailOrder($type, $id)
466 {
467 $env = ApiHelpers::getTheHostName();
468 if ($env == 'live') {
469 $header = "/var/www/im3/public/assets/global/images/indosat-header_2.png";
470 $pelanggan = "/var/www/im3/public/assets/global/images/RINCIAN-PELANGGAN.png";
471 $dtl = "/var/www/im3/public/assets/global/images/RINCIAN-PEMESANAN.png";
472 $rcid = "/var/www/im3/public/assets/global/images/RINCIAN-ID.png";
473 $placeholder = "/var/www/im3/public/assets/global/images/id-card-placeholder.jpg";
474 } else {
475 $header = "https://im3.erafone.com/assets/global/images/indosat-header_2.png";
476 $pelanggan = "https://im3.erafone.com/assets/global/images/RINCIAN-PELANGGAN.png";
477 $dtl = "https://im3.erafone.com/assets/global/images/RINCIAN-PEMESANAN.png";
478 $rcid = "https://im3.erafone.com/assets/global/images/RINCIAN-ID.png";
479 $placeholder = "https://im3.erafone.com/assets/global/images/id-card-placeholder.jpg";
480 }
481
482 $data = DB::table('marketplace_data')
483 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
484 ->select('marketplace_data.order_date', 'marketplace_data.customer_phone', 'marketplace_data.customer_address', 'marketplace_data.awb', 'marketplace_data.courier', 'marketplace_data.order_date', 'estore.*')
485 ->where('marketplace_data.order_number', $id)->get();
486
487 $detail = DB::table('marketplace_data_detail')
488 ->where('order_number', $id)->get();
489
490 $tracking = DB::table('tracking_orders')
491 ->where('order_number', $id)
492 ->get();
493
494 $p_title = DB::table('estore_payment')
495 ->where('order_number', $id)
496 ->get();
497
498 $frpaid = DB::table('estore_frpaid')
499 ->where('order_number', $id)
500 ->get();
501
502 if ($type == 'customer') {
503 $pdffile = "pdf.pdfforcustomer";
504 $filename = $id;
505 } elseif ($type == 'ooredoo') {
506 $pdffile = "pdf.pdfdetailorder";
507 $filename = $id . '_internal';
508 } elseif ($type == 'frpaid') {
509 $pdffile = "pdf.pdffrpaid";
510 $filename = $id . '_internal_fr';
511 }
512
513 // return view('pdf.pdffrpaid', compact('data', 'detail', 'header', 'pelanggan', 'dtl', 'rcid', 'placeholder', 'tracking', 'p_title', 'frpaid'));
514
515 return PDF::loadView($pdffile, compact('data', 'detail', 'header', 'pelanggan', 'dtl', 'rcid', 'placeholder', 'tracking', 'p_title', 'frpaid'))
516 ->save(base_path() . '/storage/pdf/' . $filename . '.pdf')->stream($filename . '.pdf');
517 }
518
519 public function listDataInternal($order)
520 {
521 $data_o = DB::table('marketplace_data');
522 $data_o->leftJoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
523 ->where('marketplace_data.wms_status', 1)
524 ->where('marketplace_data.marketplace_name', '=', 'EDC-OOREDOO');
525 if ($order != "-") $data_o->where('marketplace_data.order_number', 'like', '%' . $order . '%')
526 ->orderBy('order_date', 'Desc');
527
528 $data = $data_o->paginate(20);
529
530 $orders = "";
531 foreach ($data as $d) {
532 $orders = array();
533 $orders[] = $d->order_number;
534 }
535
536 $frpaid = DB::table('estore_frpaid')->whereIn('order_number', $orders)->get();
537
538 $tracking = DB::table('tracking_orders')->whereIn('order_number', $orders)->get();
539
540 $details = DB::table('marketplace_data_detail')->whereIn('order_number', $orders)->get();
541
542 // $data = DB::select(' SELECT a.*, b.iccid, b.email, b.activation_status, b.invoice, b.msisdn,
543 // c.sku, c.item_name, c.qty, c.salesprice
544 // FROM marketplace_data a LEFT JOIN estore b on a.order_number = b.order_number
545 // LEFT JOIN marketplace_data_detail c on a.order_number = c.order_number
546 // WHERE a.marketplace_name = "EDC-OOREDOO"
547 // ORDER BY a.created_at Desc
548 // ');
549
550 return view('marketplace.listdatainternal', compact('data', 'tracking', 'details', 'frpaid'));
551 }
552
553 public function listDataRj()
554 {
555 $data = DB::select(' SELECT a.*, b.iccid, b.email, b.activation_status, b.invoice, b.msisdn,
556 c.sku, c.item_name, c.qty, c.salesprice, d.current_status
557 FROM marketplace_data a LEFT JOIN estore b on a.order_number = b.order_number
558 LEFT JOIN marketplace_data_detail c on a.order_number = c.order_number
559 LEFT JOIN tracking_orders d on a.order_number = d.order_number
560 WHERE a.marketplace_name = "EDC-OOREDOO" AND RIGHT(a.order_number, 1) = "R"
561 ORDER BY a.created_at Desc
562 ');
563
564 return view('marketplace.listdatarj', compact('data'));
565 }
566
567 public function saveIccid(Request $request)
568 {
569
570 if ($request->ajax()) {
571 $id = Input::get('id');
572 $iccid = Input::get('valiccid_' . $id);
573 $sku = Input::get('sku_' . $id);
574 $order_number = Input::get('ordernumber_' . $id);
575
576 if (substr($sku, 0, 7) == 'ISAT-FC'
577 || substr($sku, 0, 11) == 'ISAT-SP-MAT'
578 || substr($sku, 0, 6) == 'SP-MAT'
579 || substr($sku, 0, 5) == 'SP-FC') {
580 #cari array ke 2 di estore_bundling
581 $c_bundling = DB::table('estore_bundling')->where('order_number', $order_number)->get();
582 if (count($c_bundling) > 0) {
583 foreach ($c_bundling as $key => $v) {
584 if (substr($sku, 0, 11) == 'ISAT-SP-MAT') {
585 if ($key == 0) {
586 $sku = $v->sku;
587 if (substr($v->sku, 0, -4) == "-IM3") {
588 $sku = substr($v->sku, 0, -4);
589 }
590 }
591 break;
592 } elseif ($v->sku == 'SP-FCBM1' || $v->sku == "SP-FCL" || $v->sku == 'SP-FCBB50' || $v->sku == 'SP-FCBB25' || $v->sku == 'SP-FCXXL') {
593
594 $sku = $v->sku;
595
596 } else {
597 if ($key == 1) {
598 if ($v->sku == 'SP-FCBM1' || $v->sku == 'SP-FCBL1' || $v->sku == 'SP-FCBB50' || $v->sku == 'SP-FCBB25' || $v->sku == 'SP-MAT300') {
599 $sku = $v->sku;
600 } else {
601 $sku = substr($v->sku, 0, -4);
602 }
603 // $sku = substr($sku, 0, 8);
604 // if (substr($sku, 0, 8) == 'SP-FCBM1') {
605 // $sku = substr($v->sku, 0, 8);
606 // }
607
608 }
609 }
610 }
611 }
612 }
613
614
615 #get MSISDN from ICCID, 1st check if ICCID already use or no
616 $cekiccid = DB::table('isat_msisdn')
617 ->where('iccid', $iccid)->where('sku', $sku)
618 ->where('status', '0')->first();
619
620 #if sku FOUND then check check status
621 if (count($cekiccid) > 0) {
622 if ($cekiccid->status == '1') {
623 #if status used then send error warning
624 return "ICCID already used, please choose another ICCID !";
625 } else {
626 #if ICCID is free to used, then take it
627
628 #update status ICCID to used
629 DB::table('isat_msisdn')
630 ->where('iccid', $iccid)
631 ->update(['status' => '1',
632 'updated_by' => Auth::user()->email,
633 'created_at' => ApiHelpers::currentDate(),
634 ]);
635
636 DB::table('estore')
637 ->where('order_number', $order_number)
638 ->update([
639 'iccid' => trim($iccid),
640 'msisdn' => $cekiccid->msisdn,
641 ]);
642
643 return '1_' . $id . '_' . $iccid . '_' . $cekiccid->msisdn;
644 }
645 } else {
646 return "Error !! cannot found ICCID matching with the SKU -" . $sku . " !";
647 }
648 return var_dump($iccid . '-' . $id . '-' . count($cekiccid)) or die();
649 }
650 return 0;
651 }
652
653 public function saveIccidFr(Request $request)
654 {
655
656 if ($request->ajax()) {
657 $seq = Input::get('seq');
658 $iccid = Input::get('valiccid_fr_' . $seq);
659 $paket_fr = Input::get('paket_fr_' . $seq);
660 $order_number = Input::get('ordernumber_' . $seq);
661 $sku = "SP-MAT-" . $paket_fr;
662
663 $cekiccid = DB::table('isat_msisdn')
664 ->where('iccid', $iccid)->where('sku', $sku)
665 ->where('status', '0')->first();
666
667 if (count($cekiccid) > 0) {
668 if ($cekiccid->status == '1') {
669 #if status used then send error warning
670 return "ICCID already used, please choose another ICCID !";
671 } else {
672 #if ICCID is free to used, then take it
673
674 #save to estore because this is main frpaid
675 if ($seq == 1) {
676 DB::table('estore')
677 ->where('order_number', $order_number)
678 ->update([
679 'iccid' => trim($iccid),
680 'msisdn' => $cekiccid->msisdn,
681 ]);
682 }
683
684 #save frpaid
685 DB::table('estore_frpaid')
686 ->where('order_number', $order_number)
687 ->where('seq', $seq)
688 ->where('paket', $paket_fr)
689 ->update([
690 'iccid' => trim($iccid),
691 'msisdn' => $cekiccid->msisdn,
692 ]);
693
694 #update status ICCID to used
695 DB::table('isat_msisdn')
696 ->where('iccid', $iccid)
697 ->update(['status' => '1',
698 'updated_by' => Auth::user()->email,
699 'created_at' => ApiHelpers::currentDate(),
700 ]);
701 /**/
702 }
703 } else {
704 return "0_" . $seq . "_" . "Error !! cannot found ICCID matching with the SKU: " . $sku . " !";
705 }
706
707 return "1_" . $seq . "_" . $iccid . "_" . $cekiccid->msisdn . "_" . "SUCCESSFULLY PAIRING ICCID AND MSISDN !!\nseq: " . $seq . "\niccid: " . $iccid . "\npaket_fr: " . $paket_fr . "\nOrder#: " . $order_number;
708 // return "this is seq: ".$seq."\nthis is iccid: ".$iccid."\nthis is paket_fr: ".$paket_fr."\nthis is oN: ".$order_number;
709 }
710 return 0;
711 }
712
713 public function actStatusFr($seq, $order, $status)
714 {
715
716 DB::table('estore_frpaid')
717 ->where('order_number', $order)
718 ->where('seq', $seq)
719 ->update([
720 'status' => $status
721 ]);
722 return;
723
724 }
725
726 public function sInternalOrder(Request $request)
727 {
728 if ($request->ajax()) {
729 $order = $request->sOrder;
730 return '1_' . $order;
731 }
732 return 0;
733 }
734
735 public function testPdf()
736 {
737
738 $data = DB::table('marketplace_data')
739 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
740 ->select('marketplace_data.order_date', 'marketplace_data.customer_phone', 'estore.*')
741 ->where('marketplace_data.id', '1212121212')->get();
742
743 return PDF::loadView('pdf.test', compact('data'))->save(base_path() . '/storage/pdf/test.pdf')->stream('test.pdf');
744 }
745
746 public function testEmail($order, $email, $name, $courier, $awb)
747 {
748 $client = new GuzzleHttp\Client(['base_uri' => 'http://api.erafone.com']);
749
750 $q_d = DB::table('marketplace_data_detail')->where('order_number', $order)->get();
751 $detail = '';
752 if (count($q_d) > 0) {
753 foreach ($q_d as $v) {
754 $detail[] = $v->item_name . '__t__' . $v->sku . '__t__' . $v->qty . '__t__' . $v->salesprice;
755 }
756 } else {
757 $detail = '-';
758 }
759 // return var_dump(count($detail));
760 $d_order = implode("__tina__", $detail);
761
762 $data = ['order' => $order,
763 'name' => $name,
764 'courier' => $courier,
765 'awb' => $awb,
766 'detail' => $d_order
767 ];
768 $pathToFile = base_path() . '/storage/pdf/' . $order . '.pdf';
769
770 try {
771 Mail::send('emails.customerreg', $data, function ($m) use ($pathToFile, $order, $email, $name) {
772 $m->to($email, $name)
773 // ->bcc('tina.novika@erafone.com', 'tina novika')
774 ->subject('Registrasi Kartu Indosat Anda')
775 ->attach($pathToFile);
776 });
777 return "masuk";
778 } catch (\Exception $e) {
779
780 $mail_error[] = $e->getMessage();
781 }
782
783 return $mail_error;
784 }
785
786 public function testEmailIsat($order)
787 {
788 $client = new GuzzleHttp\Client(['base_uri' => 'http://api.erafone.com']);
789
790 $data = ['order_number' => $order];
791 $pathToFile = base_path() . '/storage/pdf/' . $order . '.pdf';
792
793 try {
794 Mail::send('emails.test', $data, function ($m) use ($pathToFile, $order) {
795 $m->to('tadjuddin.noer@erafone.com', 'tadjuddin')
796 // $m->to('aditya.rizaldi@indosatooredoo.com', 'Aditya Rizaldi')
797 // ->to('t.nursetiawati@indosatooredoo.com', 'Nursetiawati')
798 // ->bcc('tina.novika@erafone.com', 'tina novika')
799 ->subject('Registrasi Kartu Indosat User');
800 });
801 return "masuk";
802 } catch (\Exception $e) {
803
804 $mail_error[] = $e->getMessage();
805 }
806
807 return $mail_error;
808 }
809
810
811 /**
812 * @param $order
813 * @return \Illuminate\Http\RedirectResponse
814 * @throws GuzzleHttp\Exception\GuzzleException
815 * @throws \ErrorException
816 */
817 public function sendOrderWMS($order)
818 {
819 // return var_dump('asdasdasd')or die();
820 #first check the status order send to WMS | 1 => sent, 0 => pending
821 $o = DB::table('marketplace_data')
822 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
823 ->select('marketplace_data.kode_jne', 'marketplace_data.gender', 'marketplace_data.dob', 'marketplace_data.noidentitas', 'marketplace_data.customer_subdistrict', 'marketplace_data.order_number', 'marketplace_data.order_number_wms', 'marketplace_data.customer_zip', 'marketplace_data.customer_city', 'marketplace_data.customer_province', 'marketplace_data.order_date', 'marketplace_data.courier', 'marketplace_data.latlng', 'marketplace_data.customer_name', 'marketplace_data.customer_phone', 'marketplace_data.order_date', 'marketplace_data.customer_address', 'marketplace_data.bill_to_address', 'marketplace_data.marketplace_name', 'marketplace_data.ongkir', 'marketplace_data.wms_status', 'marketplace_data.remarks', 'marketplace_data.store_pickup', 'marketplace_data.customer_email', 'marketplace_data.awb', 'marketplace_data.entity', 'marketplace_data.store_pay', 'estore.*')
824 ->where('marketplace_data.order_number', $order)->first();
825
826 // ->select('marketplace_data.order_date','marketplace_data.courier','marketplace_data.customer_name','marketplace_data.customer_phone','marketplace_data.order_date','marketplace_data.customer_address','marketplace_data.bill_to_address','marketplace_data.marketplace_name','marketplace_data.ongkir','marketplace_data.wms_status','marketplace_data.remarks','estore.*')
827 // ->where('marketplace_data.order_number',$order)->first();
828
829 #check if order found then check status, else sent warning error
830 if (count($o) > 0) {
831 // cek untuk order gojek phone number divalidasi dulu
832 if ($o->courier == 'GSD' or $o->courier == 'GOJ') {
833 if (!$this->phoneValidation($o->customer_phone)) {
834 $log = ApiHelpers::log_message('invalid phone number gojek ' . $o->customer_phone, $order, json_encode(['msg' => 'invalid phone number gojek ' . $o->customer_phone]));
835
836 Session::flash('error', "invalid phone number gojek !!");
837 if ($o->marketplace_name == "IBOX" || $o->marketplace_name == "ERAFONEDOTCOM") {
838 return redirect::to('edc/view/' . $o->marketplace_name . '/' . $order);
839 } else {
840
841 return redirect::to('detail-order/' . $order);
842 }
843 }
844 }
845 #check status order sent in wms
846 if ($o->wms_status != '1') {
847
848 $source = $o->marketplace_name;
849
850 //$wms_url = MyApp::get('marketplace_edc_wms_url');
851 $wms_url = MyApp::getMarketplaceEdcWmsUrl();
852 if ($source == "IBOX") {
853 $wms_url = MyApp::getMarketplaceIboxUrl();
854 }
855 $config = [
856 'baseApiUrl' => $wms_url,
857 'title' => 'Create Order => ' . __CLASS__
858 ];
859
860 //return var_dump($wms_url) or die();
861
862 if ($o->customer_phone == '') {
863 $customerPhone = "0";
864 } else {
865 if ($o->courier == 'GSD' or $o->courier == 'GOJ') {
866 $customerPhone = preg_replace('/[^0-9]/s', '', $o->customer_phone);
867 } else {
868 $customerPhone = preg_replace('/[^a-zA-Z0-9]|[,;]$/s', '', $o->customer_phone);
869 }
870 }
871
872 #set detail order--------------------------------------------------------------------------------
873 $detailOrder = DB::table('marketplace_data_detail')->where('order_number', '=', $order)->get();
874 $sp = 0;
875 # check detail order
876 if (count($detailOrder) > 0) {
877 $listsku = '';
878 $listitemname = '';
879 $salesprice = '';
880 $sum = 0;
881
882 foreach ($detailOrder as $key => $dt) {
883 #get detail order for bundling type
884 $dtOrder = DB::table('estore_bundling')->where('order_number', '=', $order)->get();
885
886 #identification product bundling
887 $bundling = explode("-IM3", $dt->sku);
888
889 if ($dt->sku == "FRPAID") {
890 foreach ($dtOrder as $key => $dto) {
891 $discount = 0;
892
893 $listdtlorder[] = array(
894 "itemCode" => $dto->sku,
895 "itemName" => $dto->item_name,
896 "qty" => $dto->qty,
897 "salesPrice" => $dto->sales_price,
898 "discount" => $discount,
899 "ppn" => "0",
900 "amount" => ($dto->qty * $dto->sales_price) - $discount,
901 );
902 $sum += ($dto->qty * $dto->sales_price) - $discount;
903 }
904
905 } elseif (count($bundling) >= 2) {
906
907 if (count($dtOrder) > 0) {
908 $_itemC = "";
909 $_sPrice = "";
910 $v = 0;
911 foreach ($dtOrder as $key => $dto) {
912 if ($dto->discount == '0' || $dto->discount == '') {
913 $discount = "0";
914 } else {
915 $discount = $dto->discount;
916 }
917
918 if (strtolower(substr($dto->sku, -4)) == "-im3") {
919 $_itemC = substr($dto->sku, 0, -4);
920 } else {
921 $_itemC = $dto->sku;
922 }
923 $_sPrice = $dto->sales_price;
924
925 $listdtlorder[] = array(
926 "itemCode" => $_itemC,
927 "itemName" => $dto->item_name,
928 "qty" => $dto->qty,
929 "salesPrice" => $_sPrice,
930 "discount" => $discount,
931 "ppn" => "0",
932 "amount" => ($dto->qty * $_sPrice) - $discount
933 );
934 $sum += ($dto->qty * $dto->sales_price) - $discount;
935 $v++;
936 }
937 }
938 } else {
939 #get detail order for normal type
940 if ($dt->discount == '0' || $dt->discount == '') {
941 $discount = "0";
942 } else {
943 $discount = $dt->discount;
944 }
945 $listdtlorder[] = array(
946 "itemCode" => $dt->sku,
947 "itemName" => $dt->item_name,
948 "qty" => $dt->qty,
949 "salesPrice" => $dt->salesprice,
950 "discount" => $discount,
951 "ppn" => "0",
952 "amount" => ($dt->qty * $dt->salesprice) - $discount
953 );
954
955 $sum += ($dt->qty * $dt->salesprice) - $discount;
956
957 }
958
959 #get detail payment w/ mapping payment-------------------------------------------------
960
961 if ($source == "ERAFONEDOTCOM" || $source == "IBOX") {
962 #detail order goes here
963 $listdtlorder = EdcController::dataDetailEdc($order);
964
965 #detail payment goes here
966 $listdtlpayment = EdcController::paymentEdc($order);
967 } else {
968 #estore payment area
969 $payment = DB::table('estore_payment')->where('order_number', $order)->first();
970 $skutype = substr($dt->sku, 0, 8);
971 if ($dt->sku == "FRPAID") {
972 $sku_type = "FRPAID";
973 } elseif (substr($skutype, 0, 7) == 'ISAT-FC') {
974 $sku_type = substr($skutype, 0, 7);
975 } elseif ($skutype == 'ISAT-SP-') {
976 $msp = explode("-", $dt->sku);
977 $sku_type = $msp[1] . '-' . substr($msp[2], 0, 3);
978 } elseif (substr($skutype, 0, 6) == 'SP-MAT') {
979 $sku_type = substr($skutype, 0, 6);
980 } elseif (substr($skutype, 0, 5) == 'SP-FC') {
981 $sku_type = substr($skutype, 0, 5);
982 } else {
983 $sku_type = "ISAT-FC";
984 }
985
986 $i_mage = $payment->payment_issuer;
987
988 #check mapping payment
989 $c_pay = DB::table('mapping_payment')
990 ->where('payment_issuer_mage', $i_mage)
991 ->where('sku_type', $sku_type)->first();
992 // return var_dump($c_pay);
993 if (count($c_pay) > 0) {
994 $listdtlpayment[] = array(
995 "paymentMethod" => $c_pay->payment_method,
996 "paymentIssuer" => $c_pay->payment_issuer,
997 "paymentAmount" => $sum + $o->ongkir,
998 "creditCardNo" => "0000000"
999 );
1000
1001 } else {
1002 $log = ApiHelpers::log_message('Mapping Payment NOT FOUND !! ', $order, json_encode(['patment' => $payment->payment_issuer]));
1003 Session::flash('error', 'Mapping Payment NOT FOUND !! <strong>' . $payment->payment_issuer . '</strong>');
1004 return Redirect::to('detail-order/' . $order);
1005 }
1006
1007 }
1008
1009 # MULAI JUNI 2019 ADA PROSES CEK MAPPING PAYMENT.
1010 if (AppHelper::get('check_mapping_payment') == 'TRUE') { // In case ada maintenance api mapping payment
1011 $orderHelper = new OrderHelpers();
1012 $checkMappingPayment = $orderHelper->validateMappingPayment($listdtlpayment);
1013
1014 // REMARK SEMENTARA API CHECK PAYMENT ERROR.
1015 if ($checkMappingPayment['error'] > 0) {
1016 Session::flash('error', 'Error: MAPPING PAYMENT :' . $checkMappingPayment['message']);
1017 if ($source == "IBOX" || $source == "ERAFONEDOTCOM") {
1018 return redirect::to('edc/view/' . $source . '/' . $order);
1019 } else {
1020
1021 return redirect::to('detail-order/' . $order);
1022 }
1023
1024 }
1025 }
1026
1027
1028 }
1029 } else {
1030 $log = ApiHelpers::log_message('Error: Detail order NOT FOUND !! ', $order, json_encode(['msg' => 'detail order not found']));
1031 Session::flash('error', 'Error: Detail order NOT FOUND !');
1032 if ($source == "IBOX" || $source == "ERAFONEDOTCOM") {
1033 return redirect::to('edc/view/' . $source . '/' . $order);
1034 } else {
1035
1036 return redirect::to('detail-order/' . $order);
1037 }
1038 }
1039
1040 #json to send to WMS---------------------------------------------------------------------------
1041
1042 if (is_null($o->remarks) || empty($o->remarks)) {
1043 $remarks = "-";
1044 } else {
1045 $remarks = $o->remarks;
1046 }
1047
1048 if ($o->courier == 'SLF') {
1049 $trackingNo = (@$o->order_number_wms ? $o->order_number_wms : "1");
1050 } else {
1051 // $trackingNo = '';
1052 $trackingNo = (@$o->awb ? $o->awb : "");
1053 }
1054
1055 $mergesource = $source;
1056 if ($source != "EDC-INDOSAT" && $source != "IBOX") {
1057 $mergesource = "ERAFONEDOTCOM";
1058 }
1059
1060 $address = str_replace("&", "dan ", str_replace("/", ", ", trim($o->customer_address)));
1061 $address = preg_replace('/[^a-zA-Z0-9\' .\n()]/', '', $address);
1062 $customer_name = str_replace("&", "dan ", str_replace("/", ", ", trim($o->customer_name)));
1063 $customer_name = preg_replace('/[^a-zA-Z0-9\' .\n()]/', '', $customer_name);
1064
1065 $cod = 0;
1066 if ($o->courier == "COD") {
1067 $cod = 1;
1068 }
1069 $kode_jne = "";
1070 if ($o->courier == "JNE") {
1071 $kode_jne = $o->kode_jne;
1072 }
1073 $couriercode = $o->courier;
1074 if ($o->courier == "COD") {
1075 $couriercode = "IND";
1076 }
1077
1078 $tempcity = explode("/", (trim(@$o->customer_city) == "" ? "--" : trim(@$o->customer_city)));
1079 if (@$tempcity[0] != "") {
1080 $city = $tempcity[0];
1081 } else {
1082 $city = "";
1083 }
1084 if (@$tempcity[1] != "") {
1085 $district = $tempcity[1];
1086 } else {
1087 $district = "";
1088 }
1089
1090 $data = [
1091 "orderNumber" => (@$o->order_number_wms == "" ? $order : $o->order_number_wms),
1092 "orderDate" => substr($o->order_date, 0, 10),
1093 "invoiceNumber" => substr($o->order_date, 0, 10),
1094 "invoiceDate" => substr($o->order_date, 0, 10),
1095 "customerName" => ucfirst($customer_name),
1096 "customerPhone" => trim($customerPhone),
1097 //"customerEmail" => $o->email,
1098
1099 "customerEmail" => trim($o->customer_email),
1100 "gender" => empty($o->gender) ? 'M' : $o->gender,
1101 "dateOfBirth" => $o->dob,
1102 "idCard" => $o->noidentitas,
1103
1104 "deliveryAddress" => $address,
1105 "billingAddress" => trim($o->bill_to_address),
1106 "deliveryProvince" => (trim(@$o->customer_province) == "" ? "--" : trim(@$o->customer_province)),
1107 "locationCode" => $kode_jne,
1108 "deliveryCity" => $city, //(trim(@$o->customer_city) == "" ? "--" : trim(@$o->customer_city)),
1109 "deliveryDistrict" => $district,
1110 "deliverySubDistrict" => trim(@$o->customer_subdistrict),
1111 "deliveryZipCode" => (trim(@$o->customer_zip) == "" ? "--" : trim(@$o->customer_zip)),
1112 "deliveryCountry" => "ID",
1113 "courierCode" => $couriercode,
1114 "trackingNo" => $trackingNo,
1115 "systemWeight" => "0.5",
1116 "shippingCharge" => $o->ongkir,
1117 "paidTime" => substr($o->order_date, 0, 10),
1118 "cod" => $cod,
1119 "source" => $mergesource,
1120 "latLong" => $o->latlng,
1121
1122 'isMember' => isset($o->is_member) && ($o->is_member == 0 || $o->is_member == 'N') ? 'N' : 'Y',
1123 'warehouseCode' => empty($o->warehouse_code) ? '' : $o->warehouse_code,
1124
1125 "entity" => $o->entity,
1126 "storecode" => $o->store_pay,
1127 "remark" => $remarks,
1128 "listdtlorder" => $listdtlorder,
1129 "listdtlpayment" => $listdtlpayment
1130
1131 ];
1132
1133
1134 // SICEPAT PERLU DISTRIC UNTUK TRACKIN NUMBER.
1135 if ('CPT' === $couriercode && (empty($district) || strlen($district) < 3)) {
1136 Session::flash('error', 'Error: Khusus Kurir CPT => Distric/Kecamata Wajib di Isi.');
1137 if ($source == "IBOX" || $source == "ERAFONEDOTCOM") {
1138 return redirect::to('edc/view/' . $source . '/' . $order);
1139 } else {
1140
1141 return redirect::to('detail-order/' . $order);
1142 }
1143 }
1144 // PUSH ORDER TO WMS API.
1145 $res = WmsApiHelper::pushData($data, [], $config, true)->get(); // Replace ->get() to ->debug() for debuging.
1146
1147 $errors = $res->get('error');
1148
1149 $scs = 0;
1150 $fld = 0;
1151
1152 # Gagal create Order WMS
1153 if ($errors['total'] > 0) {
1154 Session::flash('error', 'Error: ' . $errors['message']);
1155 if ($source == "IBOX" || $source == "ERAFONEDOTCOM") {
1156 return redirect::to('edc/view/' . $source . '/' . $order);
1157 } else {
1158 return redirect::to('detail-order/' . $order);
1159 }
1160 } else { # Kirim Ke WMS tanpa Error
1161
1162 $resData = json_decode($res->get('data'));
1163 # status code error or success | 0 = no error | 1 = error
1164 $statusCode = $resData->statusCode;
1165 $message = $resData->message;
1166
1167 # success upload to WMS
1168 if ($statusCode == '0') {
1169
1170 # capture success to
1171 DB::table('queue_logs')
1172 ->insert([
1173 'order_number' => $order,
1174 'status' => 'processing',
1175 'http_status' => $res->get('code'),
1176 'message' => $message,
1177 'created_at' => ApiHelpers::currentDate(),
1178 ]);
1179
1180 DB::table('marketplace_data')
1181 ->where('order_number', $order)
1182 ->update(['wms_status' => 1]);
1183
1184 DB::table('queue_orders')->where('order_number', '=', $order)->delete();
1185
1186 #send email warning to Administrator
1187 // $this->eInternal($order);
1188 $halokick = array('SP-HK550', 'SP-HK300', 'SP-HK150', 'SP-HK100');
1189 foreach ($detailOrder as $key => $dt) {
1190 if (in_array($dt->sku, $halokick)) {
1191 Halokick::postHalokick(trim($order));
1192 }
1193 }
1194
1195 $scs++;
1196
1197
1198 } # failed upload to WMS
1199 elseif ($statusCode == '1') {
1200
1201 #capture failed sending to queue_logs
1202 DB::table('queue_logs')
1203 ->insert([
1204 'order_number' => $order,
1205 'status' => 'processing',
1206 'http_status' => $res->get('code'),
1207 'message' => $message,
1208 'created_at' => ApiHelpers::currentDate()
1209 ]);
1210
1211 //Cek order dulu sebelum di update
1212 $checkorder = DB::table('marketplace_data')
1213 ->where('order_number', '=', $order)
1214 ->where('wms_status', '=', 1)->get();
1215 if (count($checkorder) == 0) {
1216 #indicating status error in marketplace_data
1217 DB::table('marketplace_data')->where('order_number', '=', $order)
1218 ->update(['wms_status' => 3]);
1219 }
1220
1221 #checking queue_orders to prevent double data
1222 $q_orders = DB::table('queue_orders')
1223 ->where('order_number', '=', $order)->get();
1224
1225 # if order_number not exist then insert to queue_orders
1226 if (count($q_orders) == 0) {
1227
1228 #add to queue_orders for next looping send to WMS
1229 DB::table('queue_orders')
1230 ->insert([
1231 'order_number' => $order,
1232 'status' => 'processing',
1233 'invoice_number' => $o->invoice,
1234 'admin' => "",
1235 'request_id' => "",
1236 'encoded_order' => "",
1237 'awb' => "",
1238 'source' => $o->marketplace_name,
1239 'sku' => "",
1240 'created_at' => ApiHelpers::currentDate()
1241 ]);
1242 } # else, order_number already exist then just update timing
1243 else {
1244
1245 DB::table('queue_orders')->where('order_number', '=', $order)
1246 ->update(['updated_at' => date('Y-m-d H:i:s')]);
1247 }
1248
1249 $fld++;
1250
1251 // $statusfromwms[] = $value->order_number.'__tina__'.$message;
1252 // $statusfromwms[] = $value->order_number.'__tina__'.$value->order_date.'__tina__'.$list_sku.'__tina__'.$list_item_name.'__tina__'.$sales_price.'__tina__'.$message;
1253
1254 # return to list Data Upload with error message
1255 $log = ApiHelpers::log_message('Error: failed send order to WMS please check the data!! ', $order, json_encode(['msg' => 'failed send order to WMS please check the data']));
1256
1257 Session::flash('error', "failed send order to WMS please check the data ! <br>" . $message);
1258 if ($source == "IBOX" || $source == "ERAFONEDOTCOM") {
1259 return redirect::to('edc/view/' . $source . '/' . $order);
1260 } else {
1261
1262 return redirect::to('detail-order/' . $order);
1263 }
1264 }
1265
1266 }
1267
1268 if ($fld != 0) {
1269 $log = ApiHelpers::log_message('Error:' . $message, $order, json_encode(['msg' => $message]));
1270
1271 Session::flash('error', $message);
1272 } elseif ($scs != 0) {
1273 $log = ApiHelpers::log_message('Success kirim ke WMS', $order, json_encode(['msg' => 'Sukses kirim ke WMS']));
1274 Session::flash('success', 'Order Number ' . $order . ' ' . $message);
1275 }
1276
1277 if ($source == "IBOX" || $source == "ERAFONEDOTCOM") {
1278 return redirect::to('edc/view/' . $source . '/' . $order);
1279 } else {
1280
1281 return redirect::to('detail-order/' . $order);
1282 }
1283
1284 } elseif ($o->wms_status == "1") {
1285 $log = ApiHelpers::log_message('Error: Already Send to WMS!! ', $order, json_encode(['msg' => 'Already Send to WMS']));
1286
1287 Session::flash('error', "Already Send to WMS !!");
1288 if ($o->marketplace_name == "IBOX" || $o->marketplace_name == "ERAFONEDOTCOM") {
1289 return redirect::to('edc/view/' . $o->marketplace_name . '/' . $order);
1290 } else {
1291
1292 return redirect::to('detail-order/' . $order);
1293 }
1294 }
1295 }
1296
1297 }
1298
1299 public function sendOrderPOS($order)
1300 {
1301 // return var_dump('asdasdasd')or die();
1302 #first check the status order send to POS | 1 => sent, 0 => pending
1303 $o = DB::table('marketplace_data')
1304 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
1305 ->select('marketplace_data.gender', 'marketplace_data.dob', 'marketplace_data.noidentitas', 'marketplace_data.customer_subdistrict', 'marketplace_data.order_number', 'marketplace_data.order_number_wms', 'marketplace_data.customer_zip', 'marketplace_data.customer_city', 'marketplace_data.customer_province', 'marketplace_data.order_date', 'marketplace_data.courier', 'marketplace_data.latlng', 'marketplace_data.customer_name', 'marketplace_data.customer_phone', 'marketplace_data.order_date', 'marketplace_data.customer_address', 'marketplace_data.bill_to_address', 'marketplace_data.marketplace_name', 'marketplace_data.ongkir', 'marketplace_data.wms_status', 'marketplace_data.remarks', 'marketplace_data.store_pickup', 'marketplace_data.customer_email', 'marketplace_data.voucher_code', 'marketplace_data.noidentitas', 'marketplace_data.invoice_date', 'marketplace_data.paid_time', 'marketplace_data.entity', 'estore.*')
1306 ->where('marketplace_data.order_number', $order)->first();
1307
1308 // ->select('marketplace_data.order_date','marketplace_data.courier','marketplace_data.customer_name','marketplace_data.customer_phone','marketplace_data.order_date','marketplace_data.customer_address','marketplace_data.bill_to_address','marketplace_data.marketplace_name','marketplace_data.ongkir','marketplace_data.wms_status','marketplace_data.remarks','estore.*')
1309 // ->where('marketplace_data.order_number',$order)->first();
1310
1311 #check if order found then check status, else sent warning error
1312 if (count($o) > 0) {
1313 // cek untuk order gojek phone number divalidasi dulu
1314 if ($o->courier == 'GSD' or $o->courier == 'GOJ') {
1315 if (!$this->phoneValidation($o->customer_phone)) {
1316 $log = ApiHelpers::log_message('invalid phone number gojek ' . $o->customer_phone, $order, json_encode(['msg' => 'invalid phone number gojek ' . $o->customer_phone]));
1317
1318 Session::flash('error', "invalid phone number gojek !!");
1319 if ($o->marketplace_name == "IBOX" || $o->marketplace_name == "ERAFONEDOTCOM") {
1320 return redirect::to('edc/view/' . $o->marketplace_name . '/' . $order);
1321 } else {
1322
1323 return redirect::to('detail-order/' . $order);
1324 }
1325 }
1326 }
1327 #check status order sent in POS
1328 if ($o->wms_status != '1') {
1329
1330 $data2 = array();
1331 $source = $o->marketplace_name;
1332
1333 $statusfromwms = array();
1334 $curl = new Curl();
1335 $env = ApiHelpers::getTheHostName();
1336 if ($env == 'live') {
1337 $pos_url = "https://pos-ear.erajaya.com:9443/azec-api/hub/prodEradotcom";
1338 } else {
1339 $pos_url = "https://pos-ear.erajaya.com:9443/azec-api/hub/trnErafoneDotCom";
1340 }
1341
1342 //return var_dump($pos_url) or die();
1343
1344 if ($o->customer_phone == '') {
1345 $customerPhone = "0";
1346 } else {
1347 if ($o->courier == 'GSD' or $o->courier == 'GOJ') {
1348 $customerPhone = preg_replace('/[^0-9]/s', '', $o->customer_phone);
1349 } else {
1350 $customerPhone = preg_replace('/[^a-zA-Z0-9]|[,;]$/s', '', $o->customer_phone);
1351 }
1352 }
1353
1354 #set detail order--------------------------------------------------------------------------------
1355 $detailOrder = DB::table('marketplace_data_detail')->where('order_number', '=', $order)->get();
1356 $sp = 0;
1357 # check detail order
1358 if (count($detailOrder) > 0) {
1359 $listsku = '';
1360 $listitemname = '';
1361 $salesprice = '';
1362 $sum = 0;
1363
1364 foreach ($detailOrder as $key => $dt) {
1365
1366 #get detail payment w/ mapping payment-------------------------------------------------
1367
1368 #detail order goes here
1369 $listdtlorder = EdcController::dataDetailEdc($order);
1370
1371 #detail payment goes here
1372 $listdtlpayment = EdcController::paymentEdc($order);
1373
1374 }
1375 } else {
1376 $log = ApiHelpers::log_message('Error: Detail order NOT FOUND !! ', $order, json_encode(['msg' => 'detail order not found']));
1377 Session::flash('error', 'Error: Detail order NOT FOUND !');
1378 if ($source == "IBOX" || $source == "ERAFONEDOTCOM") {
1379 return redirect::to('edc/view/' . $source . '/' . $order);
1380 } else {
1381
1382 return redirect::to('detail-order/' . $order);
1383 }
1384 }
1385
1386 #json to send to POS---------------------------------------------------------------------------
1387
1388 if (is_null($o->remarks) || empty($o->remarks)) {
1389 $remarks = "-";
1390 } else {
1391 $remarks = $o->remarks;
1392 }
1393
1394 if ($o->courier == 'SLF') {
1395 $trackingNo = (@$o->order_number_wms ? $o->order_number_wms : "1");
1396 } else {
1397 $trackingNo = '';
1398 }
1399
1400 $mergesource = $source;
1401 if ($source != "EDC-INDOSAT" && $source != "IBOX") {
1402 $mergesource = "ERAFONEDOTCOM";
1403 }
1404
1405 $address = str_replace("&", "dan ", str_replace("/", ", ", trim($o->customer_address)));
1406 $address = preg_replace('/[^a-zA-Z0-9\' .\n()]/', '', $address);
1407
1408 $datetimenow = date('ymdHis');
1409 $paid_time = (string)strtotime($o->paid_time);
1410 $order_date = (string)strtotime($o->order_date);
1411 $clientid = $this->getclientid();
1412 $password = $this->getpassword();
1413 // generate child process
1414
1415 $detailOrder = DB::table('marketplace_data_detail')->where('order_number', '=', $order)->get();
1416
1417 $childProcedure = array();
1418 foreach ($detailOrder as $orderitem) {
1419 $detailtransaksi = array("transactionNumber" => $o->order_number_wms,
1420 "itemCode" => $orderitem->sku,
1421 "quantity" => $orderitem->qty,
1422 "price" => $orderitem->salesprice,);
1423 array_push($childProcedure, array("procedureCode" => "O2O - STAGING GR POS ITEM",
1424 "parametersIn" => $detailtransaksi
1425 ));
1426 }
1427
1428 $payment = DB::table('estore_payment')->where('order_number', $order)->get();
1429 foreach ($payment as $value) {
1430 $detailtransaksi = array("transactionNumber" => $o->order_number_wms,
1431 "paymentMethod" => $value->payment_method,
1432 "paymentIssuer" => $value->payment_issuer,
1433 "paymentAmount" => $value->payment_amount,
1434 "creditCardNo" => "0000000",);
1435 array_push($childProcedure, array("procedureCode" => "O2O - STAGING GR POS PAYMENT",
1436 "parametersIn" => $detailtransaksi
1437 ));
1438 }
1439
1440 // penutup child process
1441 array_push($childProcedure, array("procedureCode" => "O2O - PROCESS GR POS"));
1442
1443 $data2 = [
1444 "procedureCode" => "O2O - STAGING GR POS HEADER",
1445 "parametersIn" => array(
1446 "clientId" => $clientid,
1447 "timestamps" => $datetimenow,
1448 "outletCode" => $o->store_pickup,
1449 "entity" => $o->entity,
1450 "sourceOwner" => "ERAFONEDOTCOM",
1451 "clientSignature" => sha1($clientid . $datetimenow . md5($clientid . $password)),
1452 "transactionNumber" => $o->order_number_wms,
1453 "orderDate" => date('YmdHis', $order_date),
1454 "orderStatus" => "paid",
1455 "currency" => "IDR",
1456 "customerName" => ucfirst($o->customer_name),
1457 "customerEmail" => trim($o->customer_email),
1458 "customerPhone" => trim($customerPhone),
1459 "customerAddress" => trim($o->bill_to_address),
1460 "voucherNumber" => $o->voucher_code,
1461 "idCard" => $o->noidentitas,
1462 "paidDate" => date('YmdHis', $paid_time)
1463 ),
1464 "childProcedure" => $childProcedure
1465 ];
1466
1467 $data2 = json_encode($data2);
1468 $pos_url = curl_init($pos_url);
1469
1470 curl_setopt($pos_url, CURLOPT_CUSTOMREQUEST, "POST");
1471 curl_setopt($pos_url, CURLOPT_POSTFIELDS, $data2);
1472 curl_setopt($pos_url, CURLOPT_TIMEOUT, 10);
1473 curl_setopt($pos_url, CURLOPT_RETURNTRANSFER, true);
1474 curl_setopt($pos_url, CURLOPT_SSL_VERIFYHOST, 0);
1475 curl_setopt($pos_url, CURLOPT_SSL_VERIFYPEER, 0);
1476 curl_setopt($pos_url, CURLOPT_HTTPHEADER, array(
1477 'Content-Type: application/json',
1478 'Content-Length: ' . strlen($data2))
1479 );
1480 $postResult = curl_exec($pos_url);
1481 curl_close($pos_url);
1482 $result = json_decode($postResult);
1483
1484 $message = ($result->outError == 0 && isset($result->outMessage)) ? ['msg' => $result->outMessage] : ['msg' => 'xxx'];
1485
1486 $scs = 0;
1487 $fld = 0;
1488 # gagal masuk POS
1489 if ($result->outError != 0) {
1490 // return var_dump('Error: ' . $curl->errorCode . ': ' . $curl->errorMessage);
1491
1492 Session::flash('error', 'Error: ' . $result->outError . ': ' . $result->outMessage);
1493
1494 return redirect::to('edc/view/' . $source . '/' . $order);
1495 } # kirim ke POS tanpa error
1496 else {
1497 # status code error or success | 0 = no error | 1 = error
1498 $statusCode = $result->outError;
1499 $message = $result->outMessage;
1500
1501 # success upload to POS
1502 if ($statusCode == '0') {
1503
1504 # capture success to
1505 DB::table('queue_logs')
1506 ->insert([
1507 'order_number' => $order,
1508 'status' => 'processing',
1509 'http_status' => $result->outError,
1510 'message' => $message,
1511 'created_at' => ApiHelpers::currentDate(),
1512 ]);
1513
1514 foreach ($result->childData as $value) {
1515 if ($value->procedureCode == 'O2O - PROCESS GR POS') {
1516 if ($value->outError == 0) {
1517 $grpos = $value->parametersOut->grPosNumber;
1518
1519 } else {
1520 Session::flash('error', "failed send order to POS please check the data ! <br>" . $value->outMessage);
1521
1522 return redirect::to('edc/view/' . $source . '/' . $order);
1523 }
1524 }
1525 }
1526 DB::table('marketplace_data')
1527 ->where('order_number', $order)
1528 ->update(['wms_status' => 1, 'grpos' => $grpos]);
1529
1530 DB::table('tracking_orders')
1531 ->insert([
1532 'order_number' => $order,
1533 'source' => $source,
1534 'awb' => '',
1535 'courier' => 'PIS',
1536 'tracking_number' => '',
1537 'current_status' => 'Enter',
1538 'enter_date' => Carbon::now(),
1539 'process_date' => '',
1540 'shipped_date' => '',
1541 'delivered_date' => '',
1542 'created_at' => Carbon::now()
1543 ]);
1544
1545 DB::table('queue_orders')->where('order_number', '=', $order)->delete();
1546
1547 $scs++;
1548
1549
1550 } # failed upload to POS
1551 elseif ($statusCode == '1') {
1552
1553 #capture failed sending to queue_logs
1554 DB::table('queue_logs')
1555 ->insert([
1556 'order_number' => $order,
1557 'status' => 'processing',
1558 'http_status' => $result->outError,
1559 'message' => $message,
1560 'created_at' => ApiHelpers::currentDate()
1561 ]);
1562
1563 //Cek order dulu sebelum di update
1564 $checkorder = DB::table('marketplace_data')
1565 ->where('order_number', '=', $order)
1566 ->where('wms_status', '=', 1)->get();
1567 if (count($checkorder) == 0) {
1568 #indicating status error in marketplace_data
1569 DB::table('marketplace_data')->where('order_number', '=', $order)
1570 ->update(['wms_status' => 3]);
1571 }
1572
1573 #checking queue_orders to prevent double data
1574 $q_orders = DB::table('queue_orders')
1575 ->where('order_number', '=', $order)->get();
1576
1577 # if order_number not exist then insert to queue_orders
1578 if (count($q_orders) == 0) {
1579
1580 #add to queue_orders for next looping send to POS
1581 DB::table('queue_orders')
1582 ->insert([
1583 'order_number' => $order,
1584 'status' => 'processing',
1585 'invoice_number' => $o->invoice,
1586 'admin' => "",
1587 'request_id' => "",
1588 'encoded_order' => "",
1589 'awb' => "",
1590 'source' => $o->marketplace_name,
1591 'sku' => "",
1592 'created_at' => ApiHelpers::currentDate()
1593 ]);
1594 } # else, order_number already exist then just update timing
1595 else {
1596
1597 DB::table('queue_orders')->where('order_number', '=', $order)
1598 ->update(['updated_at' => date('Y-m-d H:i:s')]);
1599 }
1600
1601 $fld++;
1602
1603 # return to list Data Upload with error message
1604 $log = ApiHelpers::log_message('Error: failed send order to POS please check the data!! ', $order, json_encode(['msg' => 'failed send order to POS please check the data']));
1605
1606 Session::flash('error', "failed send order to POS please check the data ! <br>" . $message);
1607
1608 return redirect::to('edc/view/' . $source . '/' . $order);
1609 }
1610
1611 }
1612
1613 if ($fld != 0) {
1614 $log = ApiHelpers::log_message('Error:' . $message, $order, json_encode(['msg' => $message]));
1615
1616 Session::flash('error', $message);
1617 } elseif ($scs != 0) {
1618 $log = ApiHelpers::log_message('Success kirim ke POS', $order, json_encode(['msg' => 'Sukses kirim ke POS']));
1619 Session::flash('success', 'Order Number ' . $order . ' ' . $message);
1620 }
1621
1622 return redirect::to('edc/view/' . $o->marketplace_name . '/' . $order);
1623
1624 } elseif ($o->wms_status == "1") {
1625 $log = ApiHelpers::log_message('Error: Already Send to POS!! ', $order, json_encode(['msg' => 'Already Send to POS']));
1626
1627 Session::flash('error', "Already Send to POS !!");
1628
1629 return redirect::to('edc/view/' . $o->marketplace_name . '/' . $order);
1630 }
1631 }
1632
1633 }
1634
1635 public function eInternal($order)
1636 {
1637 $client = new GuzzleHttp\Client(['base_uri' => 'http://api.erafone.com']);
1638
1639 $now = ApiHelpers::currentDate();
1640 $data = ['order_number' => $order, 'now' => $now];
1641 try {
1642 Mail::send('emails.successwms', $data, function ($m) use ($order, $now) {
1643 $m->to('indra.widianto@erafone.com', 'Indra W.')
1644 ->bcc('tina.novika@erafone.com', 'tina novika')
1645 ->subject('Order OOREDOO ' . $now);
1646 });
1647 return "masuk";
1648 } catch (\Exception $e) {
1649
1650 $mail_error[] = $e->getMessage();
1651 }
1652
1653 return $mail_error;
1654
1655 }
1656
1657 public function listRma()
1658 {
1659 $data = DB::table('estore_rma')->orderBy('created_at', 'Desc')->get();
1660 $data = DB::table('marketplace_data')
1661 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
1662 ->leftjoin('marketplace_data_detail', 'marketplace_data.order_number', '=', 'marketplace_data_detail.order_number')
1663 ->join('estore_rma', 'estore_rma.ordernumber', '=', 'marketplace_data.order_number')
1664 ->leftjoin('tracking_orders', 'tracking_orders.order_number', '=', 'estore_rma.rma_code')
1665 ->select('marketplace_data.*', 'estore.iccid', 'estore.email', 'estore.activation_status', 'estore.invoice', 'estore.msisdn', 'marketplace_data_detail.sku', 'marketplace_data_detail.item_name', 'marketplace_data_detail.qty', 'marketplace_data_detail.salesprice', 'tracking_orders.current_status', 'estore_rma.rma_code', 'estore_rma.reason', 'estore_rma.rma_status', 'estore_rma.created_at')
1666 ->where('marketplace_name', 'EDC-OOREDOO')
1667 ->get();
1668
1669 return view('rma.listrma', compact('data'));
1670 }
1671
1672 public function detailRma($id)
1673 {
1674 $data = DB::table('marketplace_data')
1675 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
1676 ->leftjoin('estore_rma', 'marketplace_data.order_number', '=', 'estore_rma.orderNumber')
1677 ->select('marketplace_data.customer_zip', 'marketplace_data.customer_city', 'marketplace_data.customer_province', 'marketplace_data.order_date', 'marketplace_data.bill_to_address', 'marketplace_data.ongkir', 'marketplace_data.customer_name', 'marketplace_data.customer_phone', 'marketplace_data.customer_address', 'marketplace_data.order_date', 'marketplace_data.courier', 'estore.*', 'estore_rma.rma_code', 'estore_rma.reason', 'estore_rma.created_at', 'estore_rma.rma_status')
1678 ->where('marketplace_name', 'EDC-OOREDOO')
1679 ->where('marketplace_data.order_number', $id)
1680 ->get();
1681
1682 $detail = DB::table('marketplace_data_detail')
1683 ->where('order_number', $id)
1684 ->get();
1685
1686 $detail_title = DB::table('estore_payment')
1687 ->where('order_number', $id)
1688 ->get();
1689
1690 if (count($data) > 0) {
1691 foreach ($data as $d) {
1692 $rma_id = $d->rma_code;
1693 }
1694 } else {
1695 $rma_id = '0';
1696 }
1697
1698 $tracking = DB::table('tracking_orders')
1699 ->where('order_number', $rma_id)
1700 ->get();
1701
1702 $trc_past = DB::table('tracking_orders')
1703 ->where('order_number', $id)
1704 ->get();
1705
1706 return view('marketplace.detailrma', compact('data', 'detail', 'detail_title', 'tracking', 'trc_past'));
1707 }
1708
1709 public function updateDetailRma($id)
1710 {
1711 $status = Input::get('rma_status');
1712 $reffname = Input::get('reff_name');
1713 $reffphone = Input::get('reff_phone');
1714 $reffaddress = Input::get('reff_address');
1715
1716 DB::table('estore')
1717 ->where('order_number', $id)
1718 ->update([
1719 'activation_status' => $status,
1720 'activation_status_date' => ApiHelpers::currentDate(),
1721 'reff_name' => $reffname,
1722 'reff_phone' => $reffphone,
1723 'reff_address' => $reffaddress,
1724 ]);
1725
1726 Session::flash('success', 'Success: Berhasil Update data!');
1727 return Redirect::to('detail-order/' . $id);
1728 }
1729
1730 public static function tes()
1731 {
1732 $date = "2016-08-07 00:00:00";
1733 return var_dump(substr($date, 0, 10));
1734 }
1735
1736 public function reportExcel()
1737 {
1738 Excel::create('Laravel Excel', function ($excel) {
1739 $data = DB::table('estore')
1740 ->leftjoin('marketplace_data_detail', 'estore.order_number', '=', 'marketplace_data_detail.order_number')
1741 ->leftjoin('tracking_orders', 'tracking_orders.order_number', '=', 'estore.order_number')
1742 ->get();
1743
1744 $excel->sheet('Excel sheet', function ($sheet) use ($data) {
1745
1746 // $sheet->setOrientation('landscape');
1747 $sheet->loadView('excels.finance')->with('data', $data);
1748
1749 });
1750
1751 })->export('xls');
1752 }
1753
1754 public static function dumpJson($order)
1755 {
1756 #first check the status order send to WMS | 1 => sent, 0 => pending
1757 $o = DB::table('marketplace_data')
1758 ->leftjoin('estore', 'marketplace_data.order_number', '=', 'estore.order_number')
1759 ->select('marketplace_data.customer_email', 'marketplace_data.gender', 'marketplace_data.dob', 'marketplace_data.noidentitas', 'marketplace_data.customer_subdistrict', 'marketplace_data.order_number_wms', 'marketplace_data.customer_zip', 'marketplace_data.customer_city', 'marketplace_data.customer_province', 'marketplace_data.order_date', 'marketplace_data.courier', 'marketplace_data.latlng', 'marketplace_data.customer_name', 'marketplace_data.customer_phone', 'marketplace_data.order_date', 'marketplace_data.customer_address', 'marketplace_data.bill_to_address', 'marketplace_data.marketplace_name', 'marketplace_data.ongkir', 'marketplace_data.wms_status', 'marketplace_data.remarks', 'marketplace_data.awb', 'marketplace_data.entity', 'estore.*')
1760 ->where('marketplace_data.order_number', $order)->first();
1761
1762 // return var_dump($chechorder->wms_status);
1763
1764 #check if order found then check status, else sent warning error
1765 if (count($o) > 0) {
1766
1767 $data2 = array();
1768 $source = $o->marketplace_name;
1769
1770 if ($o->customer_phone == '') {
1771 $customerPhone = "0";
1772 } else {
1773 $customerPhone = preg_replace('/[^a-zA-Z0-9]|[,;]$/s', '', $o->customer_phone);
1774 }
1775
1776 #set detail order--------------------------------------------------------------------------------
1777 $detailOrder = DB::table('marketplace_data_detail')->where('order_number', $order)->get();
1778 $sp = 0;
1779 $sum = 0;
1780 $listsku = '';
1781 $listitemname = '';
1782 $salesprice = '';
1783 $listdtlorder = array();
1784 $listdtlpayment = array();
1785
1786 foreach ($detailOrder as $key => $dt) {
1787 $payment = DB::table('estore_payment')->where('order_number', $order)->first();
1788 $skutype = substr($dt->sku, 0, 8);
1789
1790 #get detail order for bundling type
1791 $dtOrder = DB::table('estore_bundling')->where('order_number', '=', $order)->get();
1792
1793 #identification product bundling
1794 $bundling = explode("-IM3", $dt->sku);
1795 // return var_dump($bundling) or die();
1796 if ($dt->sku == "FRPAID") {
1797 foreach ($dtOrder as $key => $dto) {
1798 $discount = 0;
1799
1800 $listdtlorder[] = array(
1801 "itemCode" => $dto->sku,
1802 "itemName" => $dto->item_name,
1803 "qty" => $dto->qty,
1804 "salesPrice" => $dto->sales_price,
1805 "discount" => $discount,
1806 "ppn" => "0",
1807 "amount" => ($dto->qty * $dto->sales_price) - $discount,
1808 );
1809 $sum += ($dto->qty * $dto->sales_price) - $discount;
1810 }
1811
1812 } elseif (count($bundling) >= 2) {
1813
1814 if (count($dtOrder) > 0) {
1815 $_itemC = "";
1816 $_sPrice = "";
1817 $v = 0;
1818 foreach ($dtOrder as $key => $dto) {
1819 if ($dto->discount == '0' || $dto->discount == '') {
1820 $discount = "0";
1821 } else {
1822 $discount = $dto->discount;
1823 }
1824
1825 if (strtolower(substr($dto->sku, -4)) == "-im3") {
1826 $_itemC = substr($dto->sku, 0, -4);
1827 } else {
1828 $_itemC = $dto->sku;
1829 }
1830
1831 $_sPrice = $dto->sales_price;
1832
1833 $listdtlorder[] = array(
1834 "itemCode" => $_itemC,
1835 "itemName" => $dto->item_name,
1836 "qty" => $dto->qty,
1837 "salesPrice" => $_sPrice,
1838 "discount" => $discount,
1839 "ppn" => "0",
1840 "amount" => ($dto->qty * $_sPrice) - $discount
1841 );
1842 $sum += ($dto->qty * $dto->sales_price) - $discount;
1843 $v++;
1844 }
1845 }
1846 } else {
1847 #get detail order for normal type
1848 if ($dt->discount == '0' || $dt->discount == '') {
1849 $discount = "0";
1850 } else {
1851 $discount = $dt->discount;
1852 }
1853 $listdtlorder[] = array(
1854 "itemCode" => $dt->sku,
1855 "itemName" => $dt->item_name,
1856 "qty" => $dt->qty,
1857 "salesPrice" => $dt->salesprice,
1858 "discount" => $discount,
1859 "ppn" => "0",
1860 "amount" => ($dt->qty * $dt->salesprice) - $discount
1861 );
1862
1863 $sum += ($dt->qty * $dt->salesprice) - $discount;
1864
1865 }
1866
1867 #get detail payment w/ mapping payment-------------------------------------------------
1868
1869 if ($dt->sku == "FRPAID") {
1870 $sku_type = "FRPAID";
1871 } elseif (substr($skutype, 0, 7) == 'ISAT-FC') {
1872 $sku_type = substr($skutype, 0, 7);
1873 } elseif ($skutype == 'ISAT-SP-') {
1874 $msp = explode("-", $dt->sku);
1875 $sku_type = $msp[1] . '-' . substr($msp[2], 0, 3);
1876 } elseif (substr($skutype, 0, 6) == 'SP-MAT') {
1877 $sku_type = substr($skutype, 0, 6);
1878 } elseif (substr($skutype, 0, 5) == 'SP-FC') {
1879 $sku_type = substr($skutype, 0, 5);
1880 } elseif (substr($skutype, 0, 6) == 'SP-FPP') {
1881 $sku_type = substr($skutype, 0, 6);
1882 } else {
1883 $sku_type = "ISAT-FC";
1884 }
1885
1886 $i_mage = $payment->payment_issuer;
1887
1888 #check mapping payment
1889 $c_pay = DB::table('mapping_payment')
1890 ->where('payment_issuer_mage', $i_mage)
1891 ->where('sku_type', $sku_type)->first();
1892
1893 if (count($c_pay) > 0) {
1894 $listdtlpayment[] = array(
1895 "paymentMethod" => $c_pay->payment_method,
1896 "paymentIssuer" => $c_pay->payment_issuer,
1897 "paymentAmount" => $sum + $o->ongkir,
1898 "creditCardNo" => "0000000"
1899 );
1900
1901 } else {
1902 return 'Mapping Payment NOT FOUND !! <strong>' . $payment->payment_issuer . '</strong>';
1903 }
1904
1905 }
1906
1907 #json to send to WMS---------------------------------------------------------------------------
1908 if (is_null($o->remarks) || empty($o->remarks)) {
1909 $remarks = "-";
1910 } else {
1911 $remarks = $o->remarks;
1912 }
1913
1914 if ($o->courier == 'SLF') {
1915 $trackingNo = (@$o->order_number_wms ? $o->order_number_wms : "1");
1916 } else {
1917 // $trackingNo = '';
1918 $trackingNo = (@$o->awb ? @$o->awb : "");
1919 }
1920
1921 $tempcity = explode("/", (trim(@$o->customer_city) == "" ? "--" : trim(@$o->customer_city)));
1922 if (@$tempcity[0] != "") {
1923 $city = $tempcity[0];
1924 } else {
1925 $city = "";
1926 }
1927 if (@$tempcity[1] != "") {
1928 $district = $tempcity[1];
1929 } else {
1930 $district = "";
1931 }
1932
1933 $data2 = [
1934 "orderNumber" => (@$o->order_number_wms == "" ? $order : $o->order_number_wms),
1935 "orderDate" => substr($o->order_date, 0, 10),
1936 "invoiceNumber" => $o->invoice,
1937 "invoiceDate" => substr($o->order_date, 0, 10),
1938 "customerName" => ucfirst($o->customer_name),
1939 "customerPhone" => trim($customerPhone),
1940 "customerEmail" => $o->customer_email,
1941 "gender" => $o->gender,
1942 "dateOfBirth" => $o->dob,
1943 "idCard" => $o->noidentitas,
1944 "deliveryAddress" => trim($o->customer_address),
1945 "billingAddress" => trim($o->bill_to_address),
1946 "deliveryProvince" => (trim(@$o->customer_province) == "" ? "--" : trim(@$o->customer_province)),
1947 //"deliveryCity" => (trim(@$o->customer_city) == "" ? "--" : trim(@$o->customer_city)),
1948 "deliveryCity" => $city, //(trim(@$o->customer_city) == "" ? "--" : trim(@$o->customer_city)),
1949 "deliveryDistrict" => $district,
1950 "deliverySubDistrict" => trim(@$o->customer_subdistrict),
1951 "deliveryZipCode" => (trim(@$o->customer_zip) == "" ? "--" : trim(@$o->customer_zip)),
1952 "deliveryCountry" => "ID",
1953 "courierCode" => $o->courier,
1954 "trackingNo" => $trackingNo,
1955 "systemWeight" => "0.5",
1956 "shippingCharge" => $o->ongkir,
1957 "paidTime" => substr($o->order_date, 0, 10),
1958 "cod" => "0",
1959 "source" => $source,
1960 "latLong" => $o->latlng,
1961 "entity" => $o->entity,
1962 "storecode" => $o->store_pickup,
1963 'isMember' => isset($o->is_member) && ($o->is_member == 0 || $o->is_member == 'N') ? 'N' : 'Y',
1964 'warehouseCode' => empty($o->warehouse_code) ? '' : $o->warehouse_code,
1965 "remark" => $remarks,
1966 "listdtlorder" => $listdtlorder,
1967 "listdtlpayment" => $listdtlpayment
1968
1969 ];
1970
1971 return base64_encode(json_encode($data2));
1972 //return base64_encode(json_encode($o));
1973
1974 }
1975
1976 }
1977
1978 public function tesGetAwb()
1979 {
1980 $source = "EDC-OOREDOO";
1981 $courier = "RPX";
1982 $order_number = "500000876";
1983
1984 $tes = TrackingController::getAwb($source, $courier, $order_number);
1985 return var_dump($tes);
1986 }
1987
1988 public function phoneValidation($phonenumber)
1989 {
1990 $str = preg_replace('/[^0-9]/s', '', $phonenumber);
1991 //return $str;
1992 $valid = false;
1993 $len = strlen($str);
1994 if ($len > 9) {
1995 $cek = substr("Hello world", 0, 2);
1996 if ($cek == "08") {
1997 if ($len >= 10 and $len <= 14) {
1998 $valid = true;
1999 }
2000 } else {
2001 if ($len >= 10 and $len <= 16) {
2002 $valid = true;
2003 }
2004 }
2005 }
2006 return $valid;
2007 /*
2008 if ($valid)
2009 return $str."valid";
2010 else
2011 return $str."not valid";
2012 */
2013 }
2014
2015}