public function saveMergeOrder(Request $request, $id)
 {
     if ($id == $request->get('to_order_id')) {
         return 2;
     }
     $currentOrderDetail = OrderDetail::with('detailBahan')->where('order_id', $id)->get();
     foreach ($currentOrderDetail as $cod) {
         $toOrderDetail = OrderDetail::where('order_id', $request->get('to_order_id'))->where('produk_id', $cod->produk_id);
         if ($toOrderDetail->count()) {
             // Update Qtys
             $oldQty = $toOrderDetail->first()->qty;
             $updateQty = $oldQty + $cod->qty;
             $toOrderDetail->first()->update(['qty' => $updateQty]);
         } else {
             // New Data
             $in = array_except($cod->toArray(), ['id', 'order_id', 'detail_bahan']) + ['order_id' => $request->get('to_order_id')];
             $odn = OrderDetail::create($in);
             $detailBahan = array_get($cod->toArray(), 'detail_bahan');
             $in = [];
             foreach ($detailBahan as $db) {
                 array_push($in, array_except($db, ['id', 'order_detail_id']) + ['order_detail_id' => $odn->id]);
             }
             OrderDetailBahan::insert($in);
         }
     }
     if (OrderMerge::insert(['order_id' => $id, 'to_order_id' => $request->get('to_order_id')])) {
         if ($request->get('use_place') == '1') {
             $orderPlace = OrderPlace::where('order_id', $id)->get();
             $temp = [];
             foreach ($orderPlace as $op) {
                 array_push($temp, ['order_id' => $request->get('to_order_id'), 'place_id' => $op->place_id, 'harga' => $op->harga]);
             }
             OrderPlace::insert($temp);
         }
         if (Order::find($id)->update(['state' => 'Merged'])) {
             return 1;
         }
     }
     return 0;
 }
 public function OpenTransaksi(Request $request)
 {
     \Debugbar::disable();
     $data_order_detail = json_decode($request->get('data_order'), true);
     // Convert like data session
     $temp = [];
     foreach ($data_order_detail as $d) {
         $key = $d['id'];
         $temp[$key] = $d;
     }
     $data_order_detail = $temp;
     # Create Nota
     $setting = Setting::first();
     // Get Last Order
     $tanggal = $request->get('tanggal');
     $lastOrder = Order::where('tanggal', $tanggal)->get()->count();
     $nota = $setting->init_kode . "-" . str_replace('-', '', date('dmY', strtotime($tanggal))) . ($lastOrder + 1);
     // Order
     $karyawan_id = $request->get('karyawan_id');
     $order = $request->only(['tanggal']) + ['nota' => $nota, 'state' => 'On Going', 'karyawan_id' => $karyawan_id];
     $order = \App\Order::create($order);
     if ($order) {
         // Order Place
         $places = explode(',', $request->get('places'));
         $places = \App\Place::whereIn('id', $places)->get();
         $orderPlaces = [];
         foreach ($places as $place) {
             $placeType = $place->kategori_id;
             // For Redirect
             array_push($orderPlaces, ['order_id' => $order->id, 'place_id' => $place->id, 'harga' => $place->harga]);
         }
         \App\OrderPlace::insert($orderPlaces);
         // Order Detail & Order Detail Bahan
         $produks = Produk::with(['detail' => function ($query) {
             $query->join('bahans', 'produk_details.bahan_id', '=', 'bahans.id');
         }])->whereIn('id', array_keys($data_order_detail))->get();
         $orderDetailBahan = [];
         foreach ($produks as $produk) {
             $id = $produk->id;
             // Order Detail
             $orderDetail = ['order_id' => $order->id, 'produk_id' => $produk->id, 'hpp' => CountHpp($produk), 'harga_jual' => $data_order_detail[$id]['harga'], 'qty' => $data_order_detail[$id]['qty'], 'use_mark_up' => $produk->use_mark_up, 'mark_up' => $produk->mark_up, 'note' => ""];
             //echo "<pre>", print_r($orderDetail), "</pre>";
             $orderDetail = \App\OrderDetail::create($orderDetail);
             if ($produk->detail->count()) {
                 // Order Detail Bahan
                 foreach ($produk->detail as $pd) {
                     array_push($orderDetailBahan, ['order_detail_id' => $orderDetail->id, 'bahan_id' => $pd->bahan_id, 'harga' => $pd->harga, 'qty' => $pd->qty, 'satuan' => $pd->satuan]);
                 }
             }
         }
         \App\OrderDetailBahan::insert($orderDetailBahan);
         Artisan::call('bahan:count');
         Artisan::call('produk:count');
         return 1;
     }
     return 0;
 }