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