middleware(function ($request, $next) { $this->user = Auth::guard('web')->user(); return $next($request); }); } /** * Display a listing of the SubrogasiJamkrindos. * * @param \Modules\Writeoff\DataTables\HapusBukuDataTable $dataTable * * @return mixed */ public function index(HapusBukuDataTable $dataTable, Request $request) { if (is_null($this->user) || !$this->user->can('pencatatan.read')) { abort(403, 'Sorry !! You are Unauthorized to view any master data !'); } $this->hitungBunga(); if ($request->rekening) { return redirect()->route('pencatatan.hapus_buku.create', ['rekening' => $request->rekening]); } else { return $dataTable->render('writeoff::pencatatan.hapus_buku.index', ['add' => false]); } } public function hitungBunga() { $hapusbuku = HapusBuku::where('status', 1)->get(); $suku_bunga_extra = 60; $decimal = 2; $now = Carbon::today(); $hari_denda = 0; foreach ($hapusbuku as $key => $value) { $nomor_pinjaman = $value->nomor_pinjaman; $tgl_wo = Carbon::parse($value->tanggal_hapus_buku); $hari_wo = $now->diffInDays($tgl_wo); $day_wo = $tgl_wo->day; $tgl = $tgl_wo; $bunga_ekstra = 0; $bunga_non_ekstra = 0; while ($tgl <= $now) { $awal = $tgl; $id = $awal->format('Ymd'); $awal_ = $awal->format('Y-m-d'); $hist = InterestHistory::where('nomor_pinjaman', $nomor_pinjaman) ->where('periode_bunga', $id) ->get() ->first(); $cnt = 0; if ($hist) { $cnt = 1; } $base = $value->baki_debet; $sk_bng = $value->suku_bunga; if ($cnt == 1) { $base = $hist->total_kewajiban; $sk_bng = $hist->suku_bunga; } if (in_array($awal->format('m'), ['01', '03', '05', '07', '08', '10', '12'])) { $n = 31; } else if (in_array($awal->format('m'), ['04', '06', '09', '11'])) { $n = 30; } else { $n = 28; if ($awal->format('Y') % 4 == 0) { $n = 29; } } if ($day_wo <= 28) { $tgl = $awal->addDays($n); } else if ($day_wo == 29) { $tgl = $awal->addMonths(1); if ($tgl->format('dmy') == '2802') { $tgl = $awal->addDays($day_wo); } } else if ($day_wo == 30) { $tgl = $awal->addMonths(1); if ($tgl->format('dmy') == '2802') { $tgl = $awal->addDays($day_wo); } else { if ($tgl->addDay()->format('d') == '01') { $tgl = $awal->subDay(); } } } else { if ($awal->format('m') == '01') { if ($awal->format('y') % 4 === 0) { $tgl = $awal->addDays($day_wo - 2); } else { $tgl = $awal->addDays($day_wo - 3); } } else if ($awal->format('m') == '02' && $n == '28') { $tgl = $awal->addDays($n + 3); } else if ($awal->format('m') == '02' && $n == '29') { $tgl = $awal->addDays($n + 2); } else if (in_array($awal->format('m'), ['03', '05', '08', '10'])) { $tgl = $awal->addDays($n - 1); } else if (in_array($awal->format('m'), ['04', '06', '09', '11'])) { $tgl = $awal->addDays($n + 1); } else { $tgl = $awal->addMonths(1); } } $akhir = $tgl->subDay(); $tgl = $akhir; $hari_b = $akhir->diffInDays($awal_) + 1; if ($hari_denda == 0) { $hari_denda = $hari_wo - $hari_b; } else { $hari_denda = $hari_denda - $hari_b; } $hari_d = $hari_denda;// $now->subDay()->diffInDays($akhir); if ($akhir->addDay()->format('dmy') == $now->format('dmy')) { $hari_d = 0; } if ($akhir >= $now) { $hari_d = 0; $akhir = $now; $hari_b = $now->diffInDays($awal_); } //bunga amount due //echo $hari_b . 'b ' . $hari_d . 'd ' . $base . 'bs ' . $sk_bng . ' ' . $suku_bunga_extra . '
';exit; $temp_non = ($base * ($sk_bng / 100) * $hari_b) / 360; $bunga_non_ekstra += $temp_non; //denda $temp = ($temp_non * ($suku_bunga_extra / 100) * $hari_d) / 360; $bunga_ekstra += $temp; //bunga berjalan $tagihan_lain = $temp_non; InterestHistory::updateOrCreate([ 'nomor_pinjaman' => $nomor_pinjaman, 'periode_bunga' => $id, ], [ 'tanggal_awal' => $awal_, 'tanggal_akhir' => $akhir, 'hari_bunga' => $hari_b, 'nilai_bunga' => round($temp_non, $decimal), 'hari_denda' => $hari_d, 'nilai_denda' => round($temp, $decimal), 'total_kewajiban' => $value->baki_debet, 'suku_bunga' => $value->suku_bunga, 'suku_bunga_denda' => $suku_bunga_extra ]); } $bunga_intra = ($value->baki_debet * ($value->suku_bunga / 100) * $hari_wo) / 360; $bunga_non_ekstra = $bunga_non_ekstra - $tagihan_lain; $bunga_intra = round($bunga_intra, $decimal); $bunga_ekstra = round($bunga_ekstra, $decimal); $bunga_non_ekstra = round($bunga_non_ekstra, $decimal); $tagihan_lain = round($tagihan_lain, $decimal); $total_all = $value->total_kewajiban + $bunga_intra + $bunga_ekstra + $value->denda + $value->biaya_lain; HapusBuku::where('nomor_pinjaman', $nomor_pinjaman)->update([ 'lama_hari' => $hari_wo, 'bunga_intra' => $bunga_intra, 'bunga_ekstra' => $bunga_ekstra, 'bunga_non_ekstra' => $bunga_non_ekstra, 'tagihan_lain' => $tagihan_lain, 'total_all_kewajiban' => $total_all ]); } } public function update(UpdateHapusBukuRequest $request, $id) { $validated = $request->validated(); if ($validated) { try { DB::transaction(function () use ($validated, $id) { // Prepare the data for creating a new user $data = [ 'nomor_pinjaman' => $validated['nomor_pinjaman'], 'kode_jenis_pinjaman' => $validated['kode_jenis_pinjaman'], 'kode_debitur' => $validated['kode_debitur'], 'nama_debitur' => $validated['nama_debitur'], 'alamat_debitur' => $validated['alamat_debitur'], 'npwp_debitur' => $validated['npwp_debitur'], 'kode_cabang' => $validated['kode_cabang'], 'kode_mata_uang' => $validated['kode_mata_uang'], 'tanggal_hapus_buku' => $validated['tanggal_hapus_buku'], 'nomor_fasilitas' => $validated['nomor_fasilitas'], 'kode_jenis_fasilitas' => $validated['kode_jenis_fasilitas'], 'nilai_plafond_awal' => $validated['nilai_plafond_awal'], 'suku_bunga' => $validated['suku_bunga'], 'baki_debet' => $validated['baki_debet'], 'jumlah_bunga' => $validated['jumlah_bunga'], 'jumlah_kewajiban_lain' => $validated['jumlah_kewajiban_lain'], 'total_kewajiban' => $validated['total_kewajiban'], 'bunga_intra' => $validated['bunga_intra'], 'bunga_ekstra' => $validated['bunga_ekstra'], 'bunga_non_ekstra' => $validated['bunga_non_ekstra'], 'denda' => $validated['denda'], 'tagihan_lain' => $validated['tagihan_lain'], 'biaya_lain' => $validated['biaya_lain'], 'total_all_kewajiban' => $validated['total_all_kewajiban'], 'memo_persetujuan' => $validated['memo_persetujuan'], 'lama_hari' => $validated['lama_hari'], 'proses_hukum' => $validated['proses_hukum'], 'komitmen_debitur' => $validated['komitmen_debitur'], 'keterangan' => $validated['keterangan'], 'status' => $validated['status'] ]; // Emit a success event with a message $hapus_buku = HapusBuku::find($id); $data['updated_by'] = auth()->user()->id; $data['updated_at'] = now(); $approval = [ 'method' => 'update', 'menu' => 'Hapus Buku', 'old_request' => json_encode($hapus_buku), 'new_request' => json_encode($data), 'description' => 'Update Hapus Buku', 'status' => '0', 'ref' => $validated['nomor_pinjaman'] ]; $is_approval = Approval::where('menu', 'Hapus Buku') ->where('ref', $validated['nomor_pinjaman']) ->where('status', '0') ->where('method', 'update') ->get() ->first(); if ($is_approval) { echo json_encode(['status' => 'error', 'message' => 'Data Sedang Menunggu Approval']); } else { Approval::create($approval); echo json_encode([ 'status' => 'success', 'message' => 'Data Berhasil Di Update, Menunggu Approval' ]); } }); } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); } } } /** * Display a listing of the SubrogasiJamkrindos. * * @param \Modules\Writeoff\DataTables\HapusBukuDataTable $dataTable * * @return mixed */ public function create(HapusBukuDataTable $dataTable, Request $request) { if (is_null($this->user) || !$this->user->can('pencatatan.read')) { abort(403, 'Sorry !! You are Unauthorized to view any master data !'); } $branch = Branch::all(); $loan_type = LoanType::all(); $facility_type = FacilityType::all(); $currency = Currency::all(); $totalbayar = 0; if ($request->id) { $hapusbuku = HapusBuku::find($request->id); $totalbayar = DetailPembayaran::where('nomor_pinjaman', $hapusbuku->nomor_pinjaman) ->where('status', 1) ->sum('nominal'); $rekening = Rekening::with('loan_type', 'debitur', 'branch', 'currency') ->where('nomor_rekening', $hapusbuku->nomor_pinjaman) ->whereHas('loan_type', function ($query) { $query->whereBetween('kode', [3000, 3999]); }) ->get() ->first(); $jaminan = DetailJaminan::with('guaranteeType') ->where('nomor_pinjaman', $hapusbuku->nomor_pinjaman) ->get(); $bayar = DetailPembayaran::where('nomor_pinjaman', $hapusbuku->nomor_pinjaman)->get(); $penagihan = DetailPenagihan::where('nomor_pinjaman', $hapusbuku->nomor_pinjaman)->get(); $history = InterestHistory::where('nomor_pinjaman', $hapusbuku->nomor_pinjaman)->get(); return view('writeoff::pencatatan.hapus_buku.add', compact('branch', 'loan_type', 'facility_type', 'currency', 'rekening', 'totalbayar', 'hapusbuku', 'jaminan', 'bayar', 'penagihan', 'history')); } else { $rekening = Rekening::with('loan_type', 'debitur', 'branch', 'currency') ->where('nomor_rekening', $request->rekening) ->whereDoesntHave('hapusBuku') ->whereHas('loan_type', function ($query) { $query->whereBetween('kode', [3000, 3999]); }) ->get() ->first(); return view('writeoff::pencatatan.hapus_buku.add', compact('branch', 'loan_type', 'facility_type', 'currency', 'rekening', 'totalbayar')); } } public function edit($id) { return redirect()->route('pencatatan.hapus_buku.create', ['id' => $id]); } /* * * * * */ public function store(StoreHapusBukuRequest $request) { $validated = $request->validated(); if ($validated) { try { DB::transaction(function () use ($validated) { // Prepare the data for creating a new user $data = [ 'nomor_pinjaman' => $validated['nomor_pinjaman'], 'kode_jenis_pinjaman' => $validated['kode_jenis_pinjaman'], 'kode_debitur' => $validated['kode_debitur'], 'nama_debitur' => $validated['nama_debitur'], 'alamat_debitur' => $validated['alamat_debitur'], 'npwp_debitur' => $validated['npwp_debitur'], 'kode_cabang' => $validated['kode_cabang'], 'kode_mata_uang' => $validated['kode_mata_uang'], 'tanggal_hapus_buku' => $validated['tanggal_hapus_buku'], 'nomor_fasilitas' => $validated['nomor_fasilitas'], 'kode_jenis_fasilitas' => $validated['kode_jenis_fasilitas'], 'nilai_plafond_awal' => $validated['nilai_plafond_awal'], 'suku_bunga' => $validated['suku_bunga'], 'baki_debet' => $validated['baki_debet'], 'jumlah_bunga' => $validated['jumlah_bunga'], 'jumlah_kewajiban_lain' => $validated['jumlah_kewajiban_lain'], 'total_kewajiban' => $validated['total_kewajiban'], 'bunga_intra' => $validated['bunga_intra'], 'bunga_ekstra' => $validated['bunga_ekstra'], 'bunga_non_ekstra' => $validated['bunga_non_ekstra'], 'denda' => $validated['denda'], 'tagihan_lain' => $validated['tagihan_lain'], 'biaya_lain' => $validated['biaya_lain'], 'total_all_kewajiban' => $validated['total_all_kewajiban'], 'memo_persetujuan' => $validated['memo_persetujuan'], 'lama_hari' => $validated['lama_hari'], 'proses_hukum' => $validated['proses_hukum'], 'komitmen_debitur' => $validated['komitmen_debitur'], 'keterangan' => $validated['keterangan'], 'status' => $validated['status'] ]; $data['created_by'] = auth()->user()->id; $data['created_at'] = now(); // Emit a success event with a message $approval = [ 'method' => 'create', 'menu' => 'Hapus Buku', 'new_request' => json_encode($data), 'description' => 'Create Hapus Buku', 'status' => '0', 'ref' => $validated['nomor_pinjaman'] ]; $is_approval = Approval::where('menu', 'Hapus Buku') ->where('ref', $validated['nomor_pinjaman']) ->where('status', '0') ->where('method', 'create') ->get() ->first(); if ($is_approval) { echo json_encode(['status' => 'error', 'message' => 'Data Sedang Menunggu Approval']); } else { Approval::create($approval); echo json_encode([ 'status' => 'success', 'message' => 'Data Berhasil Di Input, Menunggu Approval' ]); } }); } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); } } } }