Files
sidata/app/Http/Controllers/RealisasiPendapatanController.php
T
2022-09-01 14:15:26 +07:00

261 lines
10 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use App\Models\PendapatanRealisasi;
use App\Models\Sps_pendapatan;
use App\Models\User;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Illuminate\Support\Facades\URL;
class RealisasiPendapatanController extends Controller
{
public function __construct(){
$this->siteTitle = "DBH Realisasi Pendapatan";
parent::__construct();
}
public function index()
{
return view('realisasi_pendapatan.index')
->with('i', (request()->input('page', 1) - 1) * 10);
}
public function create()
{
// if (!Auth::user()->can("Tambah SKPP")){
// abort(403, 'Youre not allowed to visit this page!');
// }
$this->setSubtitle("Tambah Data");
return view('realisasi_pendapatan.create');
}
protected function dataPendapatan($req= [])
{
$data["tahun"] = $req["txt_ta"];
$data["id_sps"] = $req["txt_id_sps"];
$txt_rek_sps = explode("|",$req["txt_rek_sps"]);
$data["kode_rekening_sps"] = $txt_rek_sps[0];
$data["nama_rekening_sps"] = $txt_rek_sps[1];
$data["simtrad4_uraian"] = $req["txt_simtrad4_uraian"];
$data["simtrad4_kotor"] = replaceMoney($req["txt_simtrad4_kotor"]);
$data["simtrad4_potongan"] = replaceMoney($req["txt_simtrad4_potongan"]);
$data["simtrad4_bersih"] = replaceMoney($req["txt_simtrad4_bersih"]);
$data["simtrad4_tgl_sp2d_bun"] = ConvertIndoDate($req["txt_simtrad4_tgl_sp2d_bun"]);
$data["simtrad4_sp2d_bun"] = $req["txt_simtrad4_sp2d_bun"];
return $data;
}
public function store(Request $request)
{
try{
$date = date("Ymd");
DB::beginTransaction();
$req = $request->all();
$data = $this->dataPendapatan($req);
$data["created_by"] = Auth::user()->id;
$PendapatanRealisasi = PendapatanRealisasi::create($data);
// SEND NOTIF
$userBendahara = User::where("role_name","bendahara")->get()->toArray();
$userBendahara = array_column($userBendahara,"id");
$url = URL::to("/realisasi-pendapatan/".$PendapatanRealisasi->id);
$message = "Realisasi Pendapatan telah dibuat oleh Bidang Anggaran dengan No. SP2D BUN ".$req["txt_simtrad4_sp2d_bun"];
$this->sendNotif("anggaran", "bendahara", $userBendahara, $message, $url, "Realisasi Pendapatan", $PendapatanRealisasi->id);
DB::commit();
return redirect(URL::to("/realisasi-pendapatan"))->with('success','Realisasi Pendapatan berhasil dibuat.');
}catch(\Exception $e){
DB::rollBack();
return redirect(URL::to("/realisasi-pendapatan"))->with('error',$e->getMessage());
}
}
public function edit(PendapatanRealisasi $realisasi_pendapatan)
{
$this->setSubtitle("Ubah Data");
return view('realisasi_pendapatan.edit',compact('realisasi_pendapatan'));
}
public function update(Request $request, PendapatanRealisasi $realisasi_pendapatan)
{
try{
DB::beginTransaction();
$req = $request->all();
$data = $this->dataPendapatan($req);
$data["updated_by"] = Auth::user()->id;
$realisasi_pendapatan->update($data);
DB::commit();
return redirect(URL::to("/realisasi-pendapatan"))->with('success','Realisasi Pendapatan berhasil diubah.');
}catch(Throwable $e){
DB::rollBack();
return redirect(URL::to("/realisasi-pendapatan"))->with('error','Realisasi Pendapatan gagal diubah!');
}
}
public function rinciDBH(Request $request)
{
$idSPS = $request->idSPS;
$select = DB::raw("spsbulan1,spsbulan2,spsbulan3,spsbulan4,spsbulan5,spsbulan6,spsbulan7,spsbulan8,spsbulan9,spsbulan10,spsbulan11,spsbulan12");
$sps = Sps_pendapatan::select($select)->where("ID",$idSPS)->firstOrNew();
return response()->json($sps);
}
public function datatable(Request $request)
{
$post = $request->all();
$offset = $post["start"];
$limit = $post["length"];
$sps = $post["sps"];
$ta = $post["ta"];
$dataFilter=0;
$data = PendapatanRealisasi::where("tahun",$ta)->orderBy("created_at","ASC");
if (!empty($sps)){
$data->where("id_sps",$sps);
}
$dataFilter = $data->count();
$dataTotal = PendapatanRealisasi::where("tahun",$ta)->count();
return response()->json([
"recordsTotal" => $dataTotal,
"recordsFiltered" => $dataFilter,
"data"=> $data->skip($offset)->take($limit)->get()
]);
}
public function destroy(PendapatanRealisasi $realisasi_pendapatan)
{
try{
DB::beginTransaction();
$realisasi_pendapatan->delete();
DB::commit();
return redirect(URL::to("/realisasi-pendapatan.index"))->with('success','Data Realisasi Pendapatan berhasil dihapus!');
}catch(Throwable $e){
DB::rollBack();
return redirect(URL::to("/realisasi-pendapatan.index"))->with('error','Data Realisasi Pendapatan gagal dihapus.');
}
}
public function show(PendapatanRealisasi $realisasi_pendapatan)
{
// if (!Auth::user()->can("Lihat SKPP")){
// abort(403, 'Youre not allowed to visit this page!');
// }
$this->readNotif($realisasi_pendapatan->id);
$this->setSubtitle("Detail Data");
return view('realisasi_pendapatan.show',compact("realisasi_pendapatan"));
}
public function sts(Request $request, $realisasiId)
{
// $request->validate([
// 'nama' => 'required',
// 'nip' => 'required',
// 'nrk' => 'required',
// ]);
// if (!Auth::user()->can("Tambah SKPP")){
// abort(403, 'Youre not allowed to visit this page!');
// }
$req = $request->all();
try{
$date = date("Ymd");
DB::beginTransaction();
$data = PendapatanRealisasi::firstOrNew(array('id' => $realisasiId));
if ($data["simtrad4_bersih"]<>replaceMoney($req["rkud_jumlah"])){
return redirect(URL::to("/realisasi-pendapatan/".$realisasiId))->with('error', "Jumlah STS harus sama dengan Rencana !");
}
$data["rkud_tgl"] = $req["rkud_tgl"];
$data["rkud_no_sts"] = $req["rkud_no_sts"];
$data["rkud_kode_akun"] = $req["rkud_kode_akun"];
$data["rkud_nama_akun"] = $req["rkud_nama_akun"];
$data["rkud_jumlah"] = replaceMoney($req["rkud_jumlah"]);
$data->save();
DB::commit();
$userAnggaran = User::where("role_name","anggaran")->get()->toArray();
$userAnggaran = array_column($userAnggaran,"id");
$url = URL::to("/realisasi-pendapatan/".$realisasiId);
$message = "Realisasi Pendapatan dengan No. SP2D BUN ".$data["simtrad4_sp2d_bun"]." telah divalidasi oleh Bidang Perben!";
$this->sendNotif("bendahara", "anggaran", $userAnggaran, $message, $url, "Realisasi Pendapatan", $data->id);
return redirect(URL::to("/realisasi-pendapatan"))->with('success','STS berhasil diinput.');
}catch(\Exception $e){
DB::rollBack();
return redirect(URL::to("/realisasi-pendapatan/".$realisasiId))->with('error',$e->getMessage());
}
}
public function download(Request $request)
{
$post = $request->all();
$sps = isset($post["sps"])?$post["sps"]:"";
$ta = $post["ta"];
$data = PendapatanRealisasi::orderBy("created_at","ASC");
if (!empty($sps)){
$data->where("id_sps",$sps);
}
$fileName = 'Realisasi-pendapatan.xlsx';
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue(getAlphabetCell(0).'1', 'Uraian');
$sheet->setCellValue(getAlphabetCell(1).'1', 'Kotor');
$sheet->setCellValue(getAlphabetCell(2).'1', 'Potongan');
$sheet->setCellValue(getAlphabetCell(3).'1', 'Bersih');
$sheet->setCellValue(getAlphabetCell(4).'1', 'SP2D BUN');
$sheet->setCellValue(getAlphabetCell(5).'1', 'TGL SP2D BUN');
$sheet->setCellValue(getAlphabetCell(6).'1', 'TGL STS');
$sheet->setCellValue(getAlphabetCell(7).'1', 'NO STS');
$sheet->setCellValue(getAlphabetCell(8).'1', 'Kode Akun');
$sheet->setCellValue(getAlphabetCell(9).'1', 'Nama Akun');
$sheet->setCellValue(getAlphabetCell(10).'1', 'Jumlah');
$rows = 2;
foreach ($data->get() as $val){
$sheet->setCellValue(getAlphabetCell(0) . $rows, $val["simtrad4_uraian"]);
$sheet->setCellValue(getAlphabetCell(1) . $rows, $val["simtrad4_kotor"]);
$sheet->setCellValue(getAlphabetCell(2) . $rows, $val["simtrad4_potongan"]);
$sheet->setCellValue(getAlphabetCell(3) . $rows, $val["simtrad4_bersih"]);
$sheet->setCellValue(getAlphabetCell(4) . $rows, $val["simtrad4_sp2d_bun"]);
$sheet->setCellValue(getAlphabetCell(5) . $rows, $val["simtrad4_tgl_sp2d_bun"]);
$sheet->setCellValue(getAlphabetCell(6) . $rows, $val["rkud_tgl"]);
$sheet->setCellValue(getAlphabetCell(7) . $rows, $val["rkud_no_sts"]);
$sheet->setCellValue(getAlphabetCell(8) . $rows, $val["rkud_kode_akun"]);
$sheet->setCellValue(getAlphabetCell(9) . $rows, $val["rkud_nama_akun"]);
$sheet->setCellValue(getAlphabetCell(10) . $rows, $val["rkud_jumlah"]);
$rows++;
}
$writer = new Xlsx($spreadsheet);
$writer->save("downloadFiles/".$fileName);
$headers = [
'Content-Type' => 'application/vnd.ms-excel',
'Content-Disposition' => 'attachment;filename='.$fileName
];
return response()->download("downloadFiles/".$fileName, $fileName, $headers);
}
}