level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $rab = Rab::whereDoesntHave('mp_planning')->whereHas('client', function($q){ $q->where('id_user', Auth::user()->id); })->get(); } else { $rab = Rab::whereDoesntHave('mp_planning')->get(); } return view('staff.mp-planning-create', compact('rab')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $id = $request->get('id_rab'); $mp_planning = MpPlanning::where('id_rab',$id)->first(); if ($mp_planning) { $mp_planning->jumlah_tukang = $request->jumlah_tukang; $mp_planning->upah_tukang_rata_rata = str_replace('.', '', $request->upah_tukang_rata_rata); $mp_planning->save(); }else{ MpPlanning::create([ 'id_rab' => $id, 'jumlah_tukang' => $request->jumlah_tukang, 'upah_tukang_rata_rata' => str_replace('.', '', $request->upah_tukang_rata_rata), 'id_user' => Auth::user()->id ]); } return redirect()->route('mp_planning.show',$id)->with('msg','MP Planning berhasil dibuat'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show(Request $request,$id) { if (\Request::ajax()) { if (isset($_GET['act'])) { if ($_GET['act'] == 'mpplanningdata') { $columns = array( 0 => 'id', ); if(Auth::user()->level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $totalData = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); })->count(); } else { $totalData = MpPlanning::count(); } $totalFiltered = $totalData; $limit = $request->input('length'); $start = $request->input('start'); $order = $columns[$request->input('order.0.column')]; $dir = $request->input('order.0.dir'); if (empty($request->input('search.value'))) { if(Auth::user()->level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $rabs = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $rabs = MpPlanning::offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } }else{ $search = $request->input('search.value'); if(Auth::user()->level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $rabs = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); })->orWhereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); })->orWhereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->count(); } else { $rabs = MpPlanning::whereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = MpPlanning::whereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->count(); } } $data = array(); if (!empty($rabs)) { foreach ($rabs as $row) { $nestedData['rab'] = $row->rab->nama_rab; $nestedData['target'] = round(MpPlanningController::getTarget($row->id_rab),2).' hari'; $nestedData['jumlah_tukang'] = $row->jumlah_tukang; $nestedData['upah'] = 'Rp' . number_format($row->upah_tukang_rata_rata,2,',','.'); if($row->id_user != NULL) { $nestedData['created_by'] = $row->user->fullname; } else { $nestedData['created_by'] = ''; } $nestedData['opsi'] = ''; if(RoleController::access('mp_planning', 'edit') > 0) { $nestedData['opsi'] .= " edit "; } if(RoleController::access('mp_planning', 'delete') > 0) { $nestedData['opsi'] .= "
"; } if(RoleController::access('mp_planning', 'view') > 0) { $nestedData['opsi'] .= " detail "; } $data[] = $nestedData; } } $json_data = array( "draw" => intval($request->input('draw')), "recordsTotal" => intval($totalData), "recordsFiltered" => intval($totalFiltered), "data" => $data, ); echo json_encode($json_data); } } }else{ $rab = Rab::findOrFail($id); $rabDetails = AhsKategori::with(['subkategoris.ahsS' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->with(['subkategoris.vendors' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->orderBy('urutan','asc')->get(); return view('staff.mp-planning-detail',compact('rab','rabDetails')); } } public static function getTotalUpah($id_ahs,$id_rab) { $rab = Rab::where('id',$id_rab)->first(); if ($rab) { $total_upah = AhsDetailUpah::selectRaw('sum(ahs_detail_upah.koefisien * upah.upah) as total') ->join('upah','ahs_detail_upah.id_upah','upah.id') ->where('id_ahs',$id_ahs)->first()->total; if ($rab->id) { $rab_detail = RabDetail::where([['id_ahs',$id_ahs],['id_rab',$rab->id]])->first(); if ($rab_detail) { return $total_upah * $rab_detail->volume; }else{ return 0; } }else{ return 0; } } } public static function getMpPlanning($id_ahs,$id_rab) { $rab = Rab::where('id',$id_rab)->first(); if ($rab) { $mp_planning = MpPlanning::where('id_rab',$rab->id)->first(); if ($mp_planning) { $total_upah = MpPlanningController::getTotalUpah($id_ahs,$id_rab); return $total_upah / ($mp_planning->jumlah_tukang * $mp_planning->upah_tukang_rata_rata); }else{ return 0; } }else{ return '-'; } } public static function getTarget($id_rab) { $rab = Rab::where('id',$id_rab)->first(); $mp_planning = 0; foreach ($rab->rabDetails as $row) { $mp_planning += MpPlanningController::getMpPlanning($row->id_ahs,$rab->id); } return $mp_planning; } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $rab = Rab::findOrFail($id); $rabDetails = AhsKategori::with(['subkategoris.ahsS' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->with(['subkategoris.vendors' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->orderBy('urutan','asc')->get(); return view('staff.mp-planning-edit',compact('rab','rabDetails')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $mp_planning = MpPlanning::where('id_rab',$id)->first(); if ($mp_planning) { $mp_planning->jumlah_tukang = $request->jumlah_tukang; $mp_planning->upah_tukang_rata_rata = str_replace('.', '', $request->upah_tukang_rata_rata); $mp_planning->save(); }else{ MpPlanning::create([ 'id_rab' => $id, 'jumlah_tukang' => $request->jumlah_tukang, 'upah_tukang_rata_rata' => str_replace('.', '', $request->upah_tukang_rata_rata), ]); } return redirect()->route('mp_planning.show',$id)->with('msg','MP Planning berhasil dibuat'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { MpPlanning::destroy($id); return redirect()->route('mp_planning.index')->with('msg', 'Mp Planning Berhasil Dihapus'); } public function getRab(Request $request) { $id_rab = $request->get('id_rab'); $rab = Rab::findOrFail($id_rab); $rabDetails = AhsKategori::with(['subkategoris.ahsS' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->with(['subkategoris.vendors' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->orderBy('urutan','asc')->get(); $html = ''; $html .= ''. $row->nama_kategori .' | ||||||||
'. $row2->nama_subkategori .' | ||||||||
Pekerjaan | Dimensi & Spesifikasi | Deskripsi | Volume | Satuan | Harga Satuan | Total Harga | Total Upah | Target Hari |
---|---|---|---|---|---|---|---|---|
'. $row3->nama_pekerjaan .' | '. $row3->dimensi_spesifikasi .' | '. $row3->rabDetail->deskripsi .' | '. $row3->rabDetail->volume .' | '. $row3->satuan .' | '. 'Rp'. number_format($row3->rabDetail->harga,0,"",".") .' | '. 'Rp'. number_format($row3->rabDetail->subtotal,0,"",".") .' | Rp'. number_format(MpPlanningController::getTotalUpah($row3->id,$rab->id),0,"",".") .' | '. round(MpPlanningController::getMpPlanning($row3->id,$rab->id),2) .' |
'. $row3->vendor->nama_pekerjaan .' | '. $row3->vendor->dimensi_spesifikasi .' | '. $row3->rabDetail->deskripsi .' | '. $row3->rabDetail->volume .' | '. $row3->vendor->satuan .' | Rp'.number_format($row3->rabDetail->harga,0,"",".") .' | Rp'. number_format($row3->rabDetail->subtotal,0,"",".") .' | - | - |
Subtotal : | Rp'. number_format($subtotal,0,"",".") .' | |||||||
Total : | Rp' .number_format($total,0,"",".") .' | '. round(MpPlanningController::getTarget($rab->id),2) .' |