コード例 #1
0
 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;
 }
コード例 #2
0
 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;
 }
コード例 #3
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();
 }