Writeoff/Http/Controllers/HapusBukuController.php

306 lines
15 KiB
PHP
Raw Normal View History

2023-12-06 08:58:19 +00:00
<?php
namespace Modules\Writeoff\Http\Controllers;
use App\Http\Controllers\Controller;
2024-05-27 09:17:45 +00:00
use Carbon\Carbon;
2023-12-14 09:59:57 +00:00
use Exception;
2023-12-06 08:58:19 +00:00
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
2024-03-27 09:54:06 +00:00
use Illuminate\Support\Facades\DB;
2023-12-06 08:58:19 +00:00
use Modules\Writeoff\DataTables\HapusBukuDataTable;
2024-03-27 09:54:06 +00:00
use Modules\Writeoff\Entities\Approval;
2023-12-11 07:46:21 +00:00
use Modules\Writeoff\Entities\Branch;
use Modules\Writeoff\Entities\Currency;
use Modules\Writeoff\Entities\DetailJaminan;
2024-03-20 10:04:39 +00:00
use Modules\Writeoff\Entities\DetailPembayaran;
use Modules\Writeoff\Entities\DetailPenagihan;
2023-12-11 07:46:21 +00:00
use Modules\Writeoff\Entities\FacilityType;
2023-12-14 09:59:57 +00:00
use Modules\Writeoff\Entities\HapusBuku;
2023-12-11 07:46:21 +00:00
use Modules\Writeoff\Entities\LoanType;
2023-12-13 09:37:16 +00:00
use Modules\Writeoff\Entities\Rekening;
2023-12-14 09:59:57 +00:00
use Modules\Writeoff\Http\Requests\HapusBuku\StoreHapusBukuRequest;
2024-03-20 10:04:39 +00:00
use Modules\Writeoff\Http\Requests\HapusBuku\UpdateHapusBukuRequest;
2023-12-06 08:58:19 +00:00
class HapusBukuController extends Controller
{
public $user;
public function __construct()
{
$this->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)
{
2023-12-20 10:37:47 +00:00
if (is_null($this->user) || !$this->user->can('pencatatan.read')) {
2023-12-06 08:58:19 +00:00
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
}
2023-12-14 09:59:57 +00:00
if ($request->rekening) {
2023-12-11 07:46:21 +00:00
return redirect()->route('pencatatan.hapus_buku.create', ['rekening' => $request->rekening]);
2023-12-14 09:59:57 +00:00
} else {
2023-12-08 09:56:25 +00:00
return $dataTable->render('writeoff::pencatatan.hapus_buku.index', ['add' => false]);
}
}
2024-03-27 09:54:06 +00:00
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()]);
}
}
}
2023-12-08 09:56:25 +00:00
/**
* Display a listing of the SubrogasiJamkrindos.
*
* @param \Modules\Writeoff\DataTables\HapusBukuDataTable $dataTable
*
* @return mixed
*/
public function create(HapusBukuDataTable $dataTable, Request $request)
{
2023-12-20 10:37:47 +00:00
if (is_null($this->user) || !$this->user->can('pencatatan.read')) {
2023-12-08 09:56:25 +00:00
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
}
2023-12-11 07:46:21 +00:00
$branch = Branch::all();
$loan_type = LoanType::all();
$facility_type = FacilityType::all();
$currency = Currency::all();
2023-12-13 09:37:16 +00:00
$totalbayar = 0;
2024-03-27 09:54:06 +00:00
if ($request->id) {
2024-03-20 10:04:39 +00:00
$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'));
2024-03-20 10:04:39 +00:00
} 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'));
}
}
2023-12-13 09:37:16 +00:00
2024-03-27 09:54:06 +00:00
public function update(UpdateHapusBukuRequest $request, $id)
2023-12-13 09:37:16 +00:00
{
2023-12-14 09:59:57 +00:00
$validated = $request->validated();
if ($validated) {
try {
2024-03-27 09:54:06 +00:00
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']
];
2024-03-20 10:04:39 +00:00
2024-03-27 09:54:06 +00:00
// Emit a success event with a message
$hapus_buku = HapusBuku::find($id);
2024-03-20 10:04:39 +00:00
2024-03-27 09:54:06 +00:00
$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']);
}
});
2024-03-20 10:04:39 +00:00
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
}
}
2024-04-22 09:50:22 +00:00
2024-05-27 09:17:45 +00:00
/*
*
*
*
* */
2024-04-22 09:50:22 +00:00
public function hitungBunga(){
$hapusbuku = HapusBuku::all();
2024-05-27 09:17:45 +00:00
$suku_bunga_extra = 35;
2024-04-22 09:50:22 +00:00
foreach($hapusbuku as $key => $value){
2024-05-27 09:17:45 +00:00
// Define your dates (replace with your actual dates)
$startDate = Carbon::parse($value->tanggal_hapus_buku); // Or use any date variable
$endDate = Carbon::today();
// Calculate the difference in days
$daysDiff = $startDate->diffInDays($endDate);
2024-04-22 09:50:22 +00:00
$bunga = $value->suku_bunga / 100 * $value->baki_debet;
$value->jumlah_bunga = $bunga;
$value->save();
}
}
2024-05-27 09:17:45 +00:00
2023-12-06 08:58:19 +00:00
}
2024-05-27 09:17:45 +00:00