public function changeTransaksi(Request $request) { \Debugbar::disable(); $id = $request->get('id'); $data_order_detail = $request->get('data_order') != "" ? 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; $order = \App\Order::with('place.place')->find($id); if (count($data_order_detail)) { // Order Detail $orderDetailOld = \App\OrderDetail::where('order_id', $id)->whereIn('produk_id', array_keys($data_order_detail))->get(); # Update Order Detail foreach ($orderDetailOld as $odo) { $oldQty = $odo->qty; $updateQty = $oldQty + $data_order_detail[$odo->produk_id]['qty']; $updatePrice = $data_order_detail[$odo->produk_id]['harga']; \App\OrderDetail::find($odo->id)->update(['qty' => $updateQty, 'harga_jual' => $updatePrice]); unset($data_order_detail[$odo->produk_id]); } if (count($data_order_detail)) { # New Order Detail $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) { $pId = $produk->id; // Order Detail $orderDetail = ['order_id' => $id, 'produk_id' => $produk->id, 'hpp' => CountHpp($produk), 'harga_jual' => $data_order_detail[$pId]['harga'], 'qty' => $data_order_detail[$pId]['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; }
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; }
protected static function _penjualan($tanggal1, $tanggal2) { return \App\OrderDetailBahan::join('bahans', 'order_detail_bahans.bahan_id', '=', 'bahans.id')->join('order_details', 'order_detail_bahans.order_detail_id', '=', 'order_details.id')->leftJoin('order_detail_returns', 'order_details.id', '=', 'order_detail_returns.order_detail_id')->join('orders', 'order_details.order_id', '=', 'orders.id')->whereBetween('orders.tanggal', [$tanggal1, $tanggal2])->groupBy('bahans.id')->select(['bahans.id', 'bahans.nama', DB::raw('SUM(order_detail_bahans.qty * (order_details.qty - ifnull(order_detail_returns.qty, 0)))qty')])->get()->toArray(); }