get(); $bills_lo = BillsLo::where('status', 'open')->get(); $purchase_orders = PurchaseOrder::where('status','open')->get(); $labour_orders = LabourOrder::where('status','open')->get(); $banks = Bank::all(); return view('staff.payment-made-create', compact('bills_po', 'bills_lo', 'purchase_orders','labour_orders','banks')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $pm = PaymentMade::create([ 'amount' => preg_replace('/[^0-9]/', '', $request->amount), 'unused_amount' => $request->unused_amount, 'bank_changes' => $request->bank_changes, 'payment_date' => $request->payment_date, 'payment_mode' => $request->payment_mode, 'id_bank' => $request->id_bank, 'reference' => $request->reference, 'notes' => $request->notes, 'id_user' => Auth::user()->id ]); $pm->bank->saldo = $pm->bank->saldo - $pm->amount; $pm->bank->save(); BankTransaction::create([ 'id_bank' => $pm->id_bank, 'id_payment_made' => $pm->id, 'withdrawals' => $pm->amount, 'date' => $pm->payment_date ]); if ($request->id_bill_po) { $pm->id_bill_po = $request->id_bill_po; $pm->save(); $pm->bill_po->status = 'paid'; $pm->bill_po->save(); } elseif ($request->id_bill_lo) { $pm->id_bill_lo = $request->id_bill_lo; $pm->save(); $pm->bill_lo->status = 'paid'; $pm->bill_lo->save(); $pm->bill_lo->labourOrder->status = 'closed'; $pm->bill_lo->labourOrder->save(); foreach ($pm->bill_lo->labourOrder->labourOrderDetail as $row) { $row->clo->upah_terbayar = $row->clo->upah_terbayar + $row->total_upah; $row->clo->qty_anggaran -= $row->qty; $row->clo->save(); } } elseif ($request->id_po) { $pm->id_purchase_order = $request->id_po; $pm->save(); $pm->purchase_order->status = 'closed'; $pm->purchase_order->save(); if ($pm->purchase_order->purchaseOrderDetails) { foreach ($pm->purchase_order->purchaseOrderDetails as $row) { $row->crap->qty_terambil = $row->crap->qty_terambil + $row->qty_billed; $row->crap->save(); if ($row->pekerjaans) { foreach ($row->pekerjaans as $row2) { $rabDetailM = RabDetailMaterial::join('rab_detail', 'rab_detail_materials.id_rab_detail', 'rab_detail.id') ->where([ ['rab_detail.id_rab', $row->crap->id_rab], ['rab_detail.id_ahs', $row2->id_ahs], ['rab_detail_materials.id_material', $row->crap->id_material], ])->update([ 'rab_detail_materials.qty' => DB::raw('rab_detail_materials.qty - ' . str_replace(',', '.', $row2->qty_billed)), 'rab_detail_materials.qty_billed' => DB::raw('rab_detail_materials.qty_billed + ' . str_replace(',', '.', $row2->qty_billed)), ]); } } } } }elseif ($request->id_lo) { $pm->id_labour_order = $request->id_lo; $pm->save(); $pm->labour_order->status = 'closed'; $pm->labour_order->save(); } return redirect()->route('payment_made.index')->with('msg', 'payment 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'] == 'PoData') { $po = PurchaseOrder::findOrFail($id); $subtotal = 0; foreach($po->purchaseOrderDetails as $row): if($row->crap->material): $subtotal += $row->harga*$row->qty_billed; endif; endforeach; foreach($po->purchaseOrderDetails as $row): if($row->crap->vendor): $subtotal += $row->harga_terbayar*$row->qty_billed; endif; endforeach; return response()->json([ 'amount' => $subtotal, ]); }elseif ($_GET['act'] == 'billPoData') { $bill = BillsPo::findOrFail($id); return response()->json([ 'bill' => $bill, ]); }elseif ($_GET['act'] == 'loData') { $lo = LabourOrder::findOrFail($id); $amount = $lo->labourOrderBorongan?$lo->labourOrderBorongan->total_upah:$lo->labourOrderHarian->total_upah; return response()->json([ 'amount' => $amount, ]); }elseif ($_GET['act'] == 'billLoData') { $bill = BillsLo::findOrFail($id); return response()->json([ 'bill' => $bill, ]); } elseif ($_GET['act'] == 'paymentData') { $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') { $totalData = PaymentMade::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'))) { $payments = PaymentMade::offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $search = $request->input('search.value'); $payments = PaymentMade::whereHas('bill_po', function ($q) use ($search) { $q->where('bills_po.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_po.purchaseOrder.PurchaseRequest.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); })->orwhereHas('bill_lo', function ($q) use ($search) { $q->where('bills_lo.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_lo.labourOrder.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = PaymentMade::whereHas('bill_po', function ($q) use ($search) { $q->where('bills_po.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_po.purchaseOrder.PurchaseRequest.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); })->orwhereHas('bill_lo', function ($q) use ($search) { $q->where('bills_lo.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_lo.labourOrder.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); }) ->count(); } } else { $totalData = PaymentMade::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'))) { $payments = PaymentMade::where('id_user', Auth::user()->id) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $search = $request->input('search.value'); $payments = PaymentMade::whereHas('bill_po', function ($q) use ($search) { $q->where('bills_po.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_po.purchaseOrder.PurchaseRequest.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); })->orwhereHas('bill_lo', function ($q) use ($search) { $q->where('bills_lo.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_lo.labourOrder.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = PaymentMade::whereHas('bill_po', function ($q) use ($search) { $q->where('bills_po.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_po.purchaseOrder.PurchaseRequest.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); })->orwhereHas('bill_lo', function ($q) use ($search) { $q->where('bills_lo.bill', 'LIKE', "%{$search}%"); })->orWhereHas('bill_lo.labourOrder.mandor', function ($q) use ($search) { $q->where('mandors.name', 'LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->count(); } } $data = array(); if (!empty($payments) && $payments->count() > 0) { foreach ($payments as $row) { if($row->bill_po){ $nestedData['project'] = $row->bill_po->purchaseOrder->purchaseRequest->project->name; $nestedData['mandor'] = $row->bill_po->purchaseOrder->purchaseRequest->mandor->name; $nestedData['bill'] = $row->bill_po->bill; }elseif ($row->bill_lo) { $nestedData['project'] = $row->bill_lo->labourOrder->project->name; $nestedData['mandor'] = $row->bill_lo->labourOrder->mandor->name; $nestedData['bill'] = $row->bill_lo->bill; }elseif ($row->purchase_order) { $nestedData['project'] = $row->purchase_order->purchaseRequest->project->name; $nestedData['mandor'] = $row->purchase_order->purchaseRequest->mandor->name; $nestedData['bill'] = '-'; }else{ $nestedData['project'] = '-'; $nestedData['mandor'] = '-'; $nestedData['bill'] = '-'; } $nestedData['date'] = $row->payment_date; $nestedData['payment'] = $row->id; $nestedData['reference'] = $row->reference; $nestedData['mode'] = str_replace('_', ' ', $row->payment_mode); $nestedData['amount'] = 'Rp ' . number_format($row->amount, 0, "", "."); $nestedData['unused_amount'] = 'Rp ' . number_format($row->unused_amount, 0, "", "."); if($row->id_user == NULL) { $nestedData['created_by'] = ''; } else { $nestedData['created_by'] = $row->user->fullname; } $nestedData['opsi'] = " detail "; if (strtoupper($level) == 'SUPERADMIN'){ $nestedData['opsi'] .= "
" . csrf_field() . " " . method_field('delete') . "
"; } $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') { $payment = PaymentMade::findOrFail($id); $company = Company::all()->first(); $pdf = PDF::loadView('staff.payment-made-print', compact('payment', 'company'))->setPaper('a4')->output('payment-made.pdf'); return Response::make($pdf, 200, [ 'Content-Disposition' => 'inline; filename=\"payment-made.pdf\"', 'Content-Type' => 'application/pdf', ]); }elseif ($request->act == 'refund') { $payment = PaymentMade::findOrFail($id); $banks = Bank::all(); return view('staff.payment-made-refund', compact('payment','banks')); } } else { $payment = PaymentMade::findOrFail($id); $company = Company::all()->first(); return view('staff.payment-made-detail', compact('payment', 'company')); } } } /** * 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) { if ($request->act == 'refund') { $payment_made = PaymentMade::findOrFail($id); $payment_made->amount = $payment_made->amount - str_replace('.', '', $request->refund); $payment_made->unused_amount = $payment_made->amount; $payment_made->save(); $refund = Refund::create([ 'id_payment_made' => $id, 'refund' => str_replace('.', '', $request->refund), 'id_bank' => $request->id_bank, 'date' => date('Y-m-d'), ]); $refund->bank->saldo = $refund->bank->saldo + $request->refund; $refund->bank->save(); BankTransaction::create([ 'id_bank' => $refund->id_bank, 'id_refund' => $refund->id, 'deposit' => $refund->refund, 'date' => $refund->date ]); return redirect()->route('payment_made.show',$id)->with('msg','payment berhasil direfund'); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $pm = PaymentMade::findOrFail($id); $pm->bank->saldo = $pm->bank->saldo + $pm->amount; $pm->bank->save(); BankTransaction::where('id_payment_made', $pm->id)->delete(); PaymentMade::destroy($id); return redirect()->route('payment_made.index')->with('msg','payment berhasil dihapus'); } }