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; }