get(); return view('staff.cash-management-create',compact('projects')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { CashManagement::create([ 'id_project' => $request->id_project, 'dp_percent' => $request->dp_percent, 'value_dp' => str_replace('.', '', $request->value_dp), 'sistem_penagihan' => $request->sistem_penagihan, ]); return redirect()->route('cash_flow.index')->with('msg','data 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'] == 'cashflowdata') { $columns = array( 0 => 'id', ); $totalData = CashManagement::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'))) { $cashManagements = CashManagement::offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); }else{ $search = $request->input('search.value'); $cashManagements = CashManagement::whereHas('project',function($q) use ($search){ $q->where('name','LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = CashManagement::whereHas('project',function($q) use ($search){ $q->where('name','LIKE', "%{$search}%"); })->count(); } $data = array(); if (!empty($cashManagements)) { foreach ($cashManagements as $row) { $nestedData['project'] = $row->project->name; $nestedData['opsi'] = "
"; $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); }elseif ($_GET['act'] == 'loadProject') { $project = Project::with('rab','curva_s','progress')->findOrFail($id); $ahsS = AhsKategori::with(['subkategoris.ahsS' => function($q) use ($project){ $q->whereHas('rabDetail',function($q2) use ($project){ $q2->where('id_rab',$project->rab->id); })->with(['rabDetail' => function($q2) use ($project){ $q2->where('id_rab',$project->rab->id); }]); }])->with(['subkategoris.vendors' => function($q) use ($project){ $q->whereHas('rabDetail',function($q2) use ($project){ $q2->where('id_rab',$project->rab->id); })->with(['rabDetail' => function($q2) use ($project){ $q2->where('id_rab',$project->rab->id); }]); }])->orderBy('urutan','asc')->get(); $view = view('staff.cash-management-create_data',compact('project'))->render(); $view2 = view('staff.cash-management-create_data2',compact('project','ahsS'))->render(); return response()->json(['view' => $view,'view2' => $view2,'project' => $project]); } } }else { $cash_management = CashManagement::findOrFail($id); return view('staff.cash-management-detail',compact('cash_management')); } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $cm = CashManagement::findOrFail($id); $cm->dp_percent = $request->dp_percent; $cm->value_dp = str_replace('.', '', $request->value_dp); $cm->sistem_penagihan = $request->sistem_penagihan; $cm->save(); return redirect()->back()->with('msg','data berhasil diperbarui'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } public static function getCashIn($from_date,$to_date,$id_project = null) { if ($id_project) { $total = PaymentReceived::selectRaw('sum(payment_received.amount) as total') ->join('invoice','payment_received.id_invoice','invoice.id') ->where('invoice.id_projects',$id_project) ->whereBetween('payment_received.payment_date',array($from_date,$to_date)) ->first()->total; return $total; }else{ $total = PaymentReceived::selectRaw('sum(payment_received.amount) as total') ->join('invoice','payment_received.id_invoice','invoice.id') ->whereBetween('payment_received.payment_date',array($from_date,$to_date)) ->first()->total; return $total; } } public static function getCashOut($from_date,$to_date,$id_project = null) { if ($id_project) { $total = PaymentMade::selectRaw('sum(payment_made.amount) as total') ->join('bills_po','payment_made.id_bill_po','bills_po.id') ->join('purchase_orders','bills_po.id_purchase_order','purchase_orders.id') ->join('purchase_request','purchase_orders.id_purchase_request','purchase_request.id') ->where('purchase_request.id_project',$id_project) ->whereBetween('payment_made.payment_date',array($from_date,$to_date)) ->first()->total; $total += PaymentMade::selectRaw('sum(payment_made.amount) as total') ->join('bills_lo','payment_made.id_bill_lo','bills_lo.id') ->join('labour_order','bills_lo.id_labour_order','labour_order.id') ->where('labour_order.id_project',$id_project) ->whereBetween('payment_made.payment_date',array($from_date,$to_date)) ->first()->total; $total += PaymentMade::selectRaw('sum(payment_made.amount) as total') ->join('purchase_orders','payment_made.id_purchase_order','purchase_orders.id') ->join('purchase_request','purchase_orders.id_purchase_request','purchase_request.id') ->where('purchase_request.id_project',$id_project) ->whereBetween('payment_made.payment_date',array($from_date,$to_date)) ->first()->total; $total += Expense::selectRaw('sum(amount) as total') ->where('id_project',$id_project) ->whereBetween('date',array($from_date,$to_date)) ->first()->total; $total += CashRequest::selectRaw('sum(nominal) as total') ->where('id_project',$id_project) ->whereBetween('date',array($from_date,$to_date)) ->first()->total; return $total; }else{ $total = PaymentMade::selectRaw('sum(payment_made.amount) as total') ->join('bills_po','payment_made.id_bill_po','bills_po.id') ->join('purchase_orders','bills_po.id_purchase_order','purchase_orders.id') ->join('purchase_request','purchase_orders.id_purchase_request','purchase_request.id') ->whereBetween('payment_made.payment_date',array($from_date,$to_date)) ->first()->total; $total += PaymentMade::selectRaw('sum(payment_made.amount) as total') ->join('bills_lo','payment_made.id_bill_lo','bills_lo.id') ->join('labour_order','bills_lo.id_labour_order','labour_order.id') ->whereBetween('payment_made.payment_date',array($from_date,$to_date)) ->first()->total; $total += PaymentMade::selectRaw('sum(payment_made.amount) as total') ->join('purchase_orders','payment_made.id_purchase_order','purchase_orders.id') ->join('purchase_request','purchase_orders.id_purchase_request','purchase_request.id') ->whereBetween('payment_made.payment_date',array($from_date,$to_date)) ->first()->total; $total += Expense::selectRaw('sum(amount) as total') ->whereBetween('date',array($from_date,$to_date)) ->first()->total; $total += CashRequest::selectRaw('sum(nominal) as total') ->whereBetween('date',array($from_date,$to_date)) ->first()->total; return $total; } } public function cash_management() { $projects = Project::whereHas('curva_s')->get(); return view('staff.cash-management-report',compact('projects')); } public static function get_cash_in($from,$to) { $curvaS = CurvaS::whereBetween('tanggal',[$from,$to])->get(); $total = 0; foreach ($curvaS as $key => $row) { $progress = 0; if ($row->project->cash_management) { if($row->project->cash_management->sistem_penagihan > 1){ if(($key + 1) % $row->project->cash_management->sistem_penagihan == 0){ $start = ($key+1) - $row->project->cash_management->sistem_penagihan; $progress_1 = 0; for($i = $start; $i < $key; $i++){ $progress_1 += round(CurvasController::getTotalBobot($curvaS->toArray()[$i]['id']),2); } $progress_2 = round(CurvasController::getTotalBobot($row->id),2); $progress = $progress_1 + $progress_2; }else{ $progress = round(CurvasController::getTotalBobot($row->id),2); } }else{ $progress = round(CurvasController::getTotalBobot($row->id),2); } $progress = $progress / 100; $cash_in = round(($progress * $row->project->rab->harga_deal) - ($progress * $row->project->cash_management->value_dp),2); $total += $cash_in; } } return $total; } public static function get_cash_out($from,$to) { $curvaS = CurvaS::whereBetween('tanggal',[$from,$to])->get(); $total = 0; foreach ($curvaS as $key => $row) { $progress = 0; if ($row->project->cash_management) { if($row->project->cash_management->sistem_penagihan > 1){ if(($key + 1) % $row->project->cash_management->sistem_penagihan == 0){ $start = ($key+1) - $row->project->cash_management->sistem_penagihan; $progress_1 = 0; for($i = $start; $i < $key; $i++){ $progress_1 += round(CurvasController::getTotalBobot($curvaS->toArray()[$i]['id']),2); } $progress_2 = round(CurvasController::getTotalBobot($row->id),2); $progress = $progress_1 + $progress_2; }else{ $progress = round(CurvasController::getTotalBobot($row->id),2); } }else{ $progress = round(CurvasController::getTotalBobot($row->id),2); } $progress = $progress / 100; $cash_out = round(CurvasController::getTotalBobot($row->id) * RapController::cekTotalRap($row->project->rab->id) / 100,2); $total += $cash_out; } } return $total; } }