diff --git a/Http/Controllers/HapusBukuController.php b/Http/Controllers/HapusBukuController.php
index daf1f0c..2f11c69 100644
--- a/Http/Controllers/HapusBukuController.php
+++ b/Http/Controllers/HapusBukuController.php
@@ -4,7 +4,6 @@
use App\Http\Controllers\Controller;
use Carbon\Carbon;
- use Carbon\CarbonInterval;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -56,11 +55,325 @@
}
}
+ 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();
+
+ return view('writeoff::pencatatan.hapus_buku.add', compact('branch', 'loan_type', 'facility_type', 'currency', 'rekening', 'totalbayar', 'hapusbuku', 'jaminan', 'bayar', 'penagihan'));
+ } 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)
{
@@ -141,293 +454,4 @@
}
}
}
-
- /**
- * 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();
-
- return view('writeoff::pencatatan.hapus_buku.add', compact('branch', 'loan_type', 'facility_type', 'currency', 'rekening', 'totalbayar', 'hapusbuku', 'jaminan', 'bayar', 'penagihan'));
- } 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 hitungBunga()
- {
- $hapusbuku = HapusBuku::where('status', 1)->get();
- $suku_bunga_extra = 35;
- $decimal = 2;
- $now = Carbon::today();
-
- 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;
- echo '1. '.$awal;
- $id = $awal->format('Ymd');
-
- $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_ = $tgl->addDays($n);
- } else if ($day_wo == 29) {
- $tgl_ = $tgl->addMonths(1);
- if ($tgl->format('dmy') == '2802') {
- $tgl_ = $tgl->addDays($day_wo);
- }
- } else if ($day_wo == 30) {
- $tgl_ = $tgl->addMonths(1);
- if ($tgl->format('dmy') == '2802') {
- $tgl_ = $tgl->addDays($day_wo);
- } else {
- if ($tgl->addDay()->format('d') == '01') {
- $tgl_ = $tgl_->subDay();
- }
- }
- } else {
- /* if($tgl->addMonths(1)->format('d') == '02') {
- $tgl_ = $tgl->addMonths(1);
- } else {
- $tgl_ = $tgl->addMonths(1);
- if ($tgl->addDay()->format('d') == '01') {
- $tgl_ = $tgl_->subDay();
- }
- }*/
- $tgl_ = $tgl->addMonths(1);
- echo ' 2. '.$awal;exit;
- }
-
-
- $akhir = $tgl_->subDay();
- //echo $akhir;
-
- echo $akhir->diffInDays($awal);exit;
- $hari_b = $akhir->diffInDays($awal) + 1;
- $hari_d = $now->subDay()->diffInDays($akhir);
-
- if ($akhir->addDay()->format('dmy') == $now->format('dmy')) {
- $hari_d = 0;
- }
-
- //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([
- '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()]);
- }
- }
- }
}