'I', 2 => 'II', 3 => 'III', 4 => 'IV', 5 => 'V', 6 => 'VI', 7 => 'VII', 8 => 'VIII', 9 => 'IX', 10 => 'X', 11 => 'XI', 12 => 'XII'); return $ro[(int) $num]; } else { dd('jumlah bulan hanya ada 12'); } } public function index() { if (!Auth::user()->curr_siteproject) { return redirect()->back()->with('error', 'silahkan isi site project anda terlebih dahulu'); } $project = Project::whereHas('purchase_request.purchaseOrder')->get(); $user = User::whereHas('purchaseOrder')->get(); return view('staff.purchase-order',compact('pos', 'project', 'user')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { if (!Auth::user()->curr_siteproject) { return redirect()->back()->with('error', 'silahkan isi site project anda terlebih dahulu'); } $no_po = PurchaseOrder::orderBy('po_number', 'DESC') ->where('id_site_project', Auth::user()->curr_siteproject)->first(); if (!$no_po) { $no_po = 'BD-001/PO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } else { $no_po = explode('/', $no_po->po_number)[0]; $no_po = (int) substr($no_po, -3) + 1; $no_po = 'BD-' . sprintf('%03s', $no_po) . '/PO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } $no_po = strtoupper($no_po); $suplayers = Suplayer::all(); $projects = Project::all(); $prs = PurchaseRequest::whereHas('purchaseRequestDetail',function($q){ $q->whereDoesntHave('purchaseOrderDetail'); })->where('status','approve')->get(); return view('staff.purchase-order-create',compact('suplayers','prs','no_po','projects')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { DB::statement(' SET FOREIGN_KEY_CHECKS=0'); $no_po = PurchaseOrder::orderBy('po_number', 'DESC') ->where('id_site_project', Auth::user()->curr_siteproject)->first(); if (!$no_po) { $no_po = 'BD-001/PO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } else { $no_po = explode('/', $no_po->po_number)[0]; $no_po = (int) substr($no_po, -3) + 1; $no_po = 'BD-' . sprintf('%03s', $no_po) . '/PO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } $no_po = strtoupper($no_po); $po = PurchaseOrder::create([ 'po_number' => $no_po, 'id_suplayer' => $request->suplayer, 'tanggal' => $request->date, 'tanggal_pengiriman' => $request->tanggal_pengiriman, 'revisi' => $request->revisi, 'id_purchase_request' => $request->pr, 'payment_system' => $request->payment_system, 'term' => $request->term, 'id_user' => Auth::user()->id, 'id_site_project' => Auth::user()->curr_siteproject, 'status' => $request->melebihi_anggaran?'melebihi anggaran':'draft', ]); if ($po) { if ($request->id_crap_m) { foreach ($request->id_crap_m as $key => $value) { $poD = PurchaseOrderDetail::create([ 'id_purchase_order' => $po->id, 'id_crap' => $value, 'id_purchase_request_detail' => $request->id_prdetail_m[$key], 'harga' => str_replace('.','',$request->harga_m[$key]), 'harga_terbayar' => str_replace('.','',$request->harga_m[$key]), ]); if($request->toArray()[$value.'_ahs']){ $qty = 0; foreach ($request->toArray()[$value.'_ahs'] as $key2 => $value2) { $qty += str_replace(',', '.',$request->toArray()[$value.'_qty'][$key2]); $poDP = PurchaseOrderDetailPekerjaan::create([ 'id_purchase_detail' => $poD->id, 'id_ahs' => $value2, 'qty' => str_replace(',', '.', $request->toArray()[$value.'_qty'][$key2]), 'qty_billed' => str_replace(',', '.', $request->toArray()[$value.'_qty'][$key2]), ]); } $poD->qty = $qty; $poD->qty_billed = $qty; $poD->save(); } } } if ($request->id_crap_v) { foreach ($request->id_crap_v as $key => $value) { $poD = PurchaseOrderDetail::create([ 'id_purchase_order' => $po->id, 'id_purchase_request_detail' => $request->id_prdetail_v[$key], 'id_crap' => $value, 'harga' => str_replace('.','',$request->harga_v[$key]), 'harga_terbayar' => str_replace('.','',$request->harga_v[$key]), 'qty' => str_replace(',', '.',$request->qty_v[$key]), 'qty_billed' => str_replace(',', '.',$request->qty_v[$key]), ]); } } if ($request->id_item_manual) { foreach ($request->id_item_manual as $key => $value) { PurchaseOrderDetailManual::create([ 'id_po' => $po->id, 'id_pr_manual' => $value, 'qty_billed' => $request->qty_item_manual[$key], 'harga_terbayar' => $request->harga_item_manual[$key], ]); } } } return redirect()->route('purchase_order.index')->with('msg','data berhasil ditambahkan'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public static function terbilang($nilai) { $huruf = array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"); $poC = new PurchaseOrderController; if($nilai==0){ return ""; }elseif ($nilai < 12&$nilai!=0) { return "" . $huruf[$nilai]; } elseif ($nilai < 20) { return $poC->terbilang($nilai - 10) . " Belas "; } elseif ($nilai < 100) { return $poC->terbilang($nilai / 10) . " Puluh " . $poC->terbilang($nilai % 10); } elseif ($nilai < 200) { return " Seratus " . $poC->terbilang($nilai - 100); } elseif ($nilai < 1000) { return $poC->terbilang($nilai / 100) . " Ratus " . $poC->terbilang($nilai % 100); } elseif ($nilai < 2000) { return " Seribu " . $poC->terbilang($nilai - 1000); } elseif ($nilai < 1000000) { return $poC->terbilang($nilai / 1000) . " Ribu " . $poC->terbilang($nilai % 1000); } elseif ($nilai < 1000000000) { return $poC->terbilang($nilai / 1000000) . " Juta " . $poC->terbilang($nilai % 1000000); }elseif ($nilai < 1000000000000) { return $poC->terbilang($nilai / 1000000000) . " Milyar " . $poC->terbilang($nilai % 1000000000); }elseif ($nilai < 100000000000000) { return $poC->terbilang($nilai / 1000000000000) . " Trilyun " . $poC->terbilang($nilai % 1000000000000); }elseif ($nilai <= 100000000000000) { return "Maaf Tidak Dapat di Prose Karena Jumlah nilai Terlalu Besar "; } } public static function cek_qty_anggaran($id_rab,$id_material,$id_ahs) { $pekerjaans = Ahs::join('rab_detail','ahs.id','rab_detail.id_ahs') ->select('ahs.id','ahs.nama_pekerjaan','rab_detail_materials.qty','materials.satuan') ->join('rab','rab_detail.id_rab','rab.id') ->join('rab_detail_materials','rab_detail.id','rab_detail_materials.id_rab_detail') ->join('materials','rab_detail_materials.id_material','materials.id') ->where('rab.id',$id_rab) ->where('materials.id',$id_material) ->where('ahs.id',$id_ahs) ->groupBy('ahs.id','ahs.nama_pekerjaan','rab_detail_materials.qty','materials.satuan') ->first(); return $pekerjaans->qty; } public function show(Request $request,$id) { if (isset($_GET['act']) and \Request::ajax()) { if ($_GET['act'] == 'prData') { $pr = PurchaseRequest::with('purchaseRequestDetailManual','project.supervisi','purchaseRequestDetail.pekerjaans','purchaseRequestDetail.pekerjaans.ahs','purchaseRequestDetail.pekerjaans.purchase_request_detail.crap','purchaseRequestDetail.crap','purchaseRequestDetail.crap.material','purchaseRequestDetail.crap.vendor') ->with(['purchaseRequestDetail' => function($q){ $q->whereDoesntHave('purchaseOrderDetail'); }])->with(['purchaseRequestDetailManual' => function($q){ $q->whereDoesntHave('purchase_order_detail_manual'); }])->findOrFail($id); return response()->json(['pr' => $pr]); }elseif ($_GET['act'] == 'loadPr') { $pr = PurchaseRequest::where(function($q){ $q->whereHas('purchaseRequestDetail',function($q2){ $q2->whereDoesntHave('purchaseOrderDetail'); })->orWhereHas('purchaseRequestDetailManual',function($q2){ $q2->whereDoesntHave('purchase_order_detail_manual'); }); })->where([ ['status','approve'], ['id_project',$id], ])->get(); return response()->json(['pr' => $pr]); }elseif ($_GET['act'] == 'suplayerData') { $suplayer = Suplayer::findOrFail($id); return response()->json(['suplayer' => $suplayer]); }elseif ($_GET['act'] == 'poData') { $columns = array( 0 => 'id', 1 => 'id', 2 => 'tanggal', 8 => 'status', ); $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' || strtoupper($level) == 'SUPPLY CHAIN STAFF') { if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $totalData = PurchaseOrder::whereHas('purchaseRequest', function($q) { if($_GET['project'] != '') { $q->where('purchase_request.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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->count(); } else { $totalData = PurchaseOrder::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'] != '') { $poS = PurchaseOrder::whereHas('purchaseRequest', function($q) { if($_GET['project'] != '') { $q->where('purchase_request.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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $poS = PurchaseOrder::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'] != '') { $poS = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['projects.name','LIKE', "%{$search}%"],['id', $_GET['project']]]); } else { $q->where('projects.name','LIKE', "%{$search}%"); } })->orWhereHas('suplayer',function($q) use ($search){ $q->where('suplayers.name','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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['projects.name','LIKE', "%{$search}%"],['id_project', $_GET['project']]]); } else { $q->where('projects.name','LIKE', "%{$search}%"); } })->orWhereHas('suplayer',function($q) use ($search){ $q->where('suplayers.name','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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->count(); } else { $poS = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('suplayer',function($q) use ($search){ $q->where('suplayers.name','LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('suplayer',function($q) use ($search){ $q->where('suplayers.name','LIKE', "%{$search}%"); }) ->count(); } } } else { if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $totalData = PurchaseOrder::whereHas('purchaseRequest', function($q) { if($_GET['project'] != '') { $q->where('purchase_request.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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->count(); } else { $totalData = PurchaseOrder::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'] != '') { $poS = PurchaseOrder::whereHas('purchaseRequest', function($q) { if($_GET['project'] != '') { $q->where('purchase_request.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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $poS = PurchaseOrder::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'] != '') { $poS = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['name','LIKE', "%{$search}%"],['id', $_GET['project']]]); } else { $q->where('name','LIKE', "%{$search}%"); } })->orWhereHas('suplayer',function($q) use ($search){ $q->where('name','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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ if($_GET['project'] != '') { $q->where([['name','LIKE', "%{$search}%"],['id', $_GET['project']]]); } else { $q->where('name','LIKE', "%{$search}%"); } })->orWhereHas('suplayer',function($q) use ($search){ $q->where('suplayers.name','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[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', 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[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $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[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->count(); } else { $poS = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('suplayer',function($q) use ($search){ $q->where('suplayers.name','LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = PurchaseOrder::whereHas('purchaseRequest.project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('suplayer',function($q) use ($search){ $q->where('suplayers.name','LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->count(); } } } $data = array(); if (!empty($poS) && $poS->count() > 0) { foreach ($poS as $row) { $nestedData['no_po'] = $row->po_number; $nestedData['tanggal'] = $row->tanggal; $nestedData['tanggal_pengiriman'] = $row->tanggal_pengiriman; $nestedData['revisi'] = $row->revisi; $nestedData['ref_pr'] = $row->purchaseRequest->no_pr; $nestedData['vendor'] = $row->suplayer->name; $nestedData['project'] = $row->purchaseRequest->project?$row->purchaseRequest->project->name:'-'; $nestedData['status'] = $row->status; $nestedData['created_by'] = $row->user->fullname; $nestedData['opsi'] = "