get(); $user = User::whereHas('billsLo')->get(); return view('staff.bills-lo', compact('project','user')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $los = LabourOrder::whereDoesntHave('bills_lo')->get(); return view('staff.bills-lo-create', compact('los')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $bilss = BillsLo::create([ 'id_labour_order' => $request->id, 'bill' => $request->bill, 'bill_date' => $request->date, 'due_date' => $request->due_date, 'amount' => $request->amount, 'status' => 'open', 'id_user' => Auth::user()->id ]); $bilss->labourOrder->status = 'billed'; $bilss->labourOrder->save(); if ($request->act == 'create') { return redirect()->route('bills_lo.index')->with('msg', 'data berhasil ditambahkan'); } elseif ($request->act == 'convert') { return redirect()->route('bills_lo.index')->with('msg', 'LO berhasil diconvert'); } else { abort('404'); } } /** * 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'] == 'loData') { $lo = LabourOrder::findOrFail($id); return response()->json(['lo' => $lo]); } else if ($_GET['act'] == 'loItemData') { $lo = LabourOrder::findOrFail($id); return view('staff.bills-lo-create_itemdetail', compact('lo')); } else if ($_GET['act'] == 'billLoData') { $columns = array( 0 => 'id', 1 => 'id', ); $level = Auth::user()->level; if (strtoupper($level) == 'SUPERADMIN' || strtoupper($level) == 'GENERAL MANAGER' || strtoupper($level) == 'FINANCE MANAGER' || strtoupper($level) == 'SUPPLY CHAIN MANAGER' || strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'PROJECT MANAGER') { if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $totalData = BillsLo::whereHas('labourOrder', function($q) { if($_GET['project'] != '') { $q->where('id_project', $_GET['project']); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-'. $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } return $query->where($filter); }) ->count(); } else { $totalData = BillsLo::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($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $bill_los = BillsLo::whereHas('labourOrder', function($q) { if($_GET['project'] != '') { $q->where('id_project', $_GET['project']); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $bill_los = BillsLo::offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } } else { $search = $request->input('search.value'); if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $bill_los = BillsLo::whereHas('labourOrder',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['no_lo','LIKE', "%{$search}%"],['id_project', $_GET['project']]]); } else { $q->where('no_lo','LIKE', "%{$search}%"); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = BillsLo::whereHas('labourOrder',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['no_lo','LIKE', "%{$search}%"],['id_project', $_GET['project']]]); } else { $q->where('no_lo','LIKE', "%{$search}%"); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } return $query->where($filter); }) ->count(); } else { $bill_los = BillsLo::whereHas('labourOrder',function($q) use ($search){ $q->where('no_lo','LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = BillsLo::whereHas('labourOrder',function($q) use ($search){ $q->where('no_lo','LIKE', "%{$search}%"); }) ->count(); } } } else { if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $totalData = BillsLo::whereHas('labourOrder', function($q) { if($_GET['project'] != '') { $q->where('id_project', $_GET['project']); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-'. $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->count(); } else { $totalData = BillsLo::where('id_user', Auth::user()->id)->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($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $bill_los = BillsLo::whereHas('labourOrder', function($q) { if($_GET['project'] != '') { $q->where('id_project', $_GET['project']); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $bill_los = BillsLo::where('id_user', Auth::user()->id) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } } else { $search = $request->input('search.value'); if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $bill_los = BillsLo::whereHas('labourOrder',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['no_lo','LIKE', "%{$search}%"],['id_project', $_GET['project']]]); } else { $q->where('no_lo','LIKE', "%{$search}%"); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = BillsLo::whereHas('labourOrder',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['no_lo','LIKE', "%{$search}%"],['id_project', $_GET['project']]]); } else { $q->where('no_lo','LIKE', "%{$search}%"); } }) ->where(function($query) { $filter = []; if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['bill_date', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['bill_date', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['bill_date', '>=', $start_week]; $filter[] = ['bill_date', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['bill_date', '>=', $first_day]; $filter[] = ['bill_date', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['bill_date', '>=', $first_date]; $filter[] = ['bill_date', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->count(); } else { $bill_los = BillsLo::whereHas('labourOrder',function($q) use ($search){ $q->where('no_lo','LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = BillsLo::whereHas('labourOrder',function($q) use ($search){ $q->where('no_lo','LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->count(); } } } $data = array(); if (!empty($bill_los) && $bill_los->count() > 0) { foreach ($bill_los as $row) { $nestedData['project'] = $row->labourOrder->project->name; $nestedData['date'] = $row->bill_date; $nestedData['bill'] = $row->bill; $nestedData['ref_lo'] = $row->labourOrder->no_lo; $nestedData['status'] = $row->status; $nestedData['due_date'] = $row->due_date; $nestedData['amount'] = number_format($row->amount,0,"","."); $nestedData['balance_due'] = $row->status == 'open'?number_format($row->amount,0,"","."):0; if($row->id_user == NULL) { $nestedData['created_by'] = ''; } else { $nestedData['created_by'] = $row->user->fullname; } $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{ if ($request->act) { if ($request->act == 'print') { $bill = BillsLo::findOrFail($id); $company = Company::all()->first(); $pdf = PDF::loadView('staff.bills-lo-print',compact('bill', 'company'))->setPaper('a4')->output('bill-'.$bill->bill.'.pdf'); return Response::make($pdf,200,[ 'Content-Disposition' => 'inline; filename=\"bill-'.$bill->bill.'.pdf\"', 'Content-Type' => 'application/pdf', ]); } }else{ $bill = BillsLo::findOrFail($id); $company = Company::all()->first(); return view('staff.bills-lo-detail',compact('bill', 'company')); } } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $bill = BillsLo::findOrFail($id); $banks = Bank::all(); return view('staff.bills-lo-record_payment',compact('bill','banks')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } }