285 lines
14 KiB
PHP
285 lines
14 KiB
PHP
<?php
|
|
|
|
namespace Modules\Writeoff\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Modules\Writeoff\DataTables\HapusBukuDataTable;
|
|
use Modules\Writeoff\Entities\Approval;
|
|
use Modules\Writeoff\Entities\Branch;
|
|
use Modules\Writeoff\Entities\Currency;
|
|
use Modules\Writeoff\Entities\DetailJaminan;
|
|
use Modules\Writeoff\Entities\DetailPembayaran;
|
|
use Modules\Writeoff\Entities\DetailPenagihan;
|
|
use Modules\Writeoff\Entities\FacilityType;
|
|
use Modules\Writeoff\Entities\HapusBuku;
|
|
use Modules\Writeoff\Entities\LoanType;
|
|
use Modules\Writeoff\Entities\Rekening;
|
|
use Modules\Writeoff\Http\Requests\HapusBuku\StoreHapusBukuRequest;
|
|
use Modules\Writeoff\Http\Requests\HapusBuku\UpdateHapusBukuRequest;
|
|
|
|
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)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('pencatatan.read')) {
|
|
abort(403, 'Sorry !! You are Unauthorized to view any master data !');
|
|
}
|
|
|
|
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 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()]);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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 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()]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function hitungBunga(){
|
|
$hapusbuku = HapusBuku::all();
|
|
|
|
foreach($hapusbuku as $key => $value){
|
|
$bunga = $value->suku_bunga / 100 * $value->baki_debet;
|
|
$value->jumlah_bunga = $bunga;
|
|
$value->save();
|
|
}
|
|
|
|
}
|
|
}
|