fix anjak piutang

This commit is contained in:
KhatamNugraha
2024-06-25 11:19:16 +07:00
parent 044c686477
commit 65c199303b
4 changed files with 305 additions and 60 deletions

View File

@ -424,13 +424,16 @@ class Account extends Model
$Year = date("Y", $timestamp);
$data = [];
$data = DB::connection("db2")->table("MIS.COLLECTION")
->selectRaw('LOAN_NUMBER,ACCOUNT_NUMBER,MATURITY_DATE,START_DATE,MAX(TANGGAL_DATA) AS TANGGAL_DATA,MAX(OUTSTANDING) AS OUTSTANDING,LOAN_CCY,PRODUCT_LOAN,PRINCIPLE_AMOUNT,CURRENT_INTEREST_RATE,TENOR,MAX(BRANCH) AS BRANCH,PAYIN_ACCOUNT,FACILITY_TYPE')
->selectRaw('ACCOUNT_NUMBER,MATURITY_DATE,MAX(BATCH_DATE) AS BATCH_DATE,MAX(OUTSTANDING) AS OUTSTANDING,LOAN_CCY,PRODUCT_LOAN,PRINCIPLE_AMOUNT,CURRENT_INTEREST_RATE,TENOR,FACILITY_TYPE,LIMIT_ID')
->whereYear('TANGGAL_DATA', $Year)
->whereIn(DB::raw("PAYIN_ACCOUNT"), $AccNo)
->whereIn('PAYIN_ACCOUNT', $AccNo)
->where('LOAN_STATUS', 'CURRENT')
->groupBy('LOAN_NUMBER', 'ACCOUNT_NUMBER', 'MATURITY_DATE', 'START_DATE', 'LOAN_CCY', 'PRODUCT_LOAN', 'PRINCIPLE_AMOUNT', 'CURRENT_INTEREST_RATE', 'TENOR', 'PAYIN_ACCOUNT', 'FACILITY_TYPE')
//->where('LOAN_STATUS', 'CURRENT')
->groupBy('ACCOUNT_NUMBER', 'MATURITY_DATE', 'LOAN_CCY', 'PRODUCT_LOAN', 'PRINCIPLE_AMOUNT', 'CURRENT_INTEREST_RATE', 'TENOR','FACILITY_TYPE','LIMIT_ID')
->limit(100);
return $data;
return $data;
}
public function getLimit($cus_id, $periode)
@ -453,4 +456,4 @@ class Account extends Model
}
}

View File

@ -492,7 +492,6 @@ class KonfirmasiBankController extends Controller
try {
$listAccountRK = $Account->getAccountRK($arrAccount, $dateCoreAccount)->get();
} catch (\Illuminate\Database\QueryException $e) {
return redirect()->route('konfirmasibank.timeout');
}
@ -533,7 +532,7 @@ class KonfirmasiBankController extends Controller
//Get DatA Anjak
try {
try {
$ListAnjak = $Account->getAccountAnjak($rekEscrow, $dateCoreAccount)->get();
} catch (\Illuminate\Database\QueryException $e) {
@ -541,7 +540,6 @@ class KonfirmasiBankController extends Controller
}
$totalOutstanding = $ListAnjak->sum('OUTSTANDING') != null ? number_format(abs($ListAnjak->sum('OUTSTANDING')), 2, ',', '.') : 'NIHIL';
$ListLimits = $Account->getLimit($request['cusNo'], $request['startDate2'])->get();
$signer = Signer::where('id', $request['signerId'])->where('status', 1)->get();
$batchDate = Carbon::parse($request['startDate2']);
@ -563,6 +561,7 @@ class KonfirmasiBankController extends Controller
$data['DataDepo'] = $DataDepo;
$data['infoSuratNew'] = $infoSuratNew;
$data['totalOutstanding'] = $totalOutstanding;
$data['loanCcy'] = $ListAnjak[0]->LOAN_CCY;
$pdf = PDF::loadview('konfirmasibank::exportPdf', ['data' => $data]);
@ -855,4 +854,4 @@ class KonfirmasiBankController extends Controller
}
}
}

View File

@ -1,41 +1,19 @@
<!DOCTYPE html>
<!--
Author: Keenthemes
Product Name: Metronic | Bootstrap HTML, VueJS, React, Angular, Asp.Net Core, Blazor, Django, Flask & Laravel Admin Dashboard Theme
Purchase: https://1.envato.market/EA4JP
Website: http://www.keenthemes.com
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
License: For each use you must have a valid license purchased only from above link in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head><base href="../../"/>
<title>Metronic - the world's #1 selling Bootstrap Admin Theme Ecosystem for HTML, Vue, React, Angular & Laravel by Keenthemes</title>
<meta charset="utf-8" />
<meta name="description" content="The most advanced Bootstrap Admin Theme on Themeforest trusted by 100,000 beginners and professionals. Multi-demo, Dark Mode, RTL support and complete React, Angular, Vue, Asp.Net Core, Blazor, Django, Flask & Laravel versions. Grab your copy now and get life-time updates for free." />
<meta name="keywords" content="metronic, bootstrap, bootstrap 5, angular, VueJs, React, Asp.Net Core, Blazor, Django, Flask & Laravel starter kits, admin themes, web design, figma, web development, free templates, free admin themes, bootstrap theme, bootstrap template, bootstrap dashboard, bootstrap dak mode, bootstrap button, bootstrap datepicker, bootstrap timepicker, fullcalendar, datatables, flaticon" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Metronic | Bootstrap HTML, VueJS, React, Angular, Asp.Net Core, Blazor, Django, Flask & Laravel Admin Dashboard Theme" />
<meta property="og:url" content="https://keenthemes.com/metronic" />
<meta property="og:site_name" content="Keenthemes | Metronic" />
<link rel="canonical" href="https://preview.keenthemes.com/metronic8" />
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<!--begin::Fonts-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700" />
<!--end::Fonts-->
<!--begin::Global Stylesheets Bundle(used by all pages)-->
<link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Stylesheets Bundle-->
</head>
<!--end::Head-->
<!--begin::Body-->
<body id="kt_body" class="app-blank app-blank bgi-size-cover bgi-position-center bgi-no-repeat">
<x-default-layout>
@php
$route = explode('.', Route::currentRouteName());
@endphp
<!--begin::Card-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}" />
@push('styles')
<!-- Bootstrap CSS -->
@endpush
<body id="kt_body" class="app-blank app-blank bgi-size-cover bgi-position-center bgi-no-repeat">
<!--begin::Theme mode setup on page load-->
<script>var defaultThemeMode = "light"; var themeMode; if ( document.documentElement ) { if ( document.documentElement.hasAttribute("data-theme-mode")) { themeMode = document.documentElement.getAttribute("data-theme-mode"); } else { if ( localStorage.getItem("data-theme") !== null ) { themeMode = localStorage.getItem("data-theme"); } else { themeMode = defaultThemeMode; } } if (themeMode === "system") { themeMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; } document.documentElement.setAttribute("data-theme", themeMode); }</script>
<!--end::Theme mode setup on page load-->
@ -59,8 +37,8 @@ License: For each use you must have a valid license purchased only from above li
<!--end::Text-->
<!--begin::Illustration-->
<div class="mb-11">
<img src="assets/media/auth/500-error.png" class="mw-100 mh-300px theme-light-show" alt="" />
<img src="assets/media/auth/500-error-dark.png" class="mw-100 mh-300px theme-dark-show" alt="" />
<img src="{{ image('auth/500-error.png') }}" class="mw-100 mh-300px theme-light-show" alt="" />
<img src="{{ image('auth/500-error-dark.png') }}" class="mw-100 mh-300px theme-dark-show" alt="" />
</div>
<!--end::Illustration-->
<!--begin::Link-->
@ -76,14 +54,279 @@ License: For each use you must have a valid license purchased only from above li
</div>
<!--end::Authentication - Signup Welcome Message-->
</div>
<!--end::Root-->
<!--begin::Javascript-->
<script>var hostUrl = "assets/";</script>
<!--begin::Global Javascript Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Javascript Bundle-->
<!--end::Javascript-->
</body>
<!--end::Body-->
</html>
@push('customscript')
<!-- jQuery -->
<script>
$(function() {
$('.mycheck').hide();
$('#cif_null').hide();
var pasYear = $('#pastYear').val();
var currentYear = $('#currentYear').val();
$('.datepicker').flatpickr({
dateFormat: "d-m-Y",
minDate: pasYear,
maxDate: currentYear
})
$("#myForm").submit(function (event) {
event.preventDefault(); // Prevent the form from submitting normally
if ($("#cif").val() === "") {
alert("Nomor CIF harus diisi.");
return; // Stop form submission
}
if ($("#startDate").val() === "") {
alert("Tanggal mulai harus diisi.");
return; // Stop form submission
}
if ($("#endtDate").val() === "") {
alert("Tanggal selesai harus diisi.");
return; // Stop form submission
}
$('.row-none').hide();
$('.mycheck').show();
$('.firstrow').remove();
$('.secondrow').remove();
$('.loading1').show();
var actionUrl = $(".form_customer3").attr('action');
var cif = $("input[name=cif]").val();
var kodecabang = $("input[name=kodecabang]").val();
var periode = $("input[name=periode]").val();
var startDate = $("input[name=startDate]").val();
var endDate = $("input[name=endDate]").val();
$("input[name=cus_no_fasilitas]").val(cif);
$("input[name=cus_no]").val(cif);
$("input[name=kode_cabang]").val(kodecabang);
var no = 1;
$.ajax({
url: "{{ route('getData') }}",
type: "GET",
data: $(this).serialize(),
dataType: "json",
success: function (items) {
$('.loading1').hide();
let dateString ='';
$.each(items, function(i, index) {
$('#dataBody').append('<tr class="secondrow"><td>' + (
no++) +
'</td><td>' + items[i]['ACCOUNT_NUMBER'] +
'</td><td>' + items[i]['COMPANY_NAME'] +
'</td><td>' + items[i]['SHORT_NAME'] +
'</td><td style="text-align:right">' + items[i]['WORKING_BALANCE'] +
// '</td><td>' + items[i]['PRODUCT'] +
'</td><td style="text-align:center">' + items[i]['CURRENCY'] + '</td>'+
'<td class="tes">'+
'<div style="padding-left:22px" class="form-check form-check-custom form-check-solid me-10">'+'<input class=" form-check-input h-20px w-20px checkbox-item" type="checkbox" name="account_number" value="' + items[i]['ACCOUNT_NUMBER'] + '"></div>'+
'</td>'+
'</tr>'
);
});
$(".fasilitasButton").show();
var kdcabang = $("#kodecabang").val();
$("#company_name").val(kdcabang);
$("input[name=startDateFasilitas]").val(startDate);
$("input[name=endDateFasilitas]").val(endDate);
$("input[name=cusFasilitas]").val(cif);
$(".selected-values").val('');
$('#cusNo').val();
$('#accNo').val();
$('#cabang').val();
$('.exportButton').hide();
$('#buttonPostInfoSurat').hide();
$('#selectAll').prop('checked', false);;
},
error: function (error) {
console.error("Form submission failed!");
// Handle the error if needed
}
});
});
function currency(params) {
params.maskMoney({
prefix: 'Rp ',
thousands: '.',
decimal: ',',
precision: 0, // ubah ke 2 jika ingin menampilkan desimal
allowNegative: false // ubah ke true jika ingin mengizinkan angka negatif
});
}
var accNumbers = [];
$('#selectAll').change(function() {
$('.exportPdf').show();
$('.checkbox-item').prop('checked', $(this).prop('checked'));
//Get Value Account Number
if ( $(this).prop('checked')) {
accNumbers.splice(0, accNumbers.length);
$.each($(".checkbox-item:checked"), function() {
accNumbers.push($(this).val());
$("input[name=acc_no]").val(accNumbers)
});
} else {
accNumbers.splice(0, accNumbers.length);
$("input[type=checkbox]").prop('checked', false);
$.each($("input[name='account_number']"), function() {
// arr.push($(this).val());
$("input[name=acc_no]").val('')
});
}
});
// var selectedValues = [];
$('#table4 tbody').on('change', 'tr td.tes input[type=checkbox]', function() {
$('.exportPdf').show();
if (!$(this).prop('checked')) {
accNumbers.splice(0, accNumbers.length);
$('#selectAll').prop('checked', false);
//$(this).val('');
$.each($(".checkbox-item:checked"), function() {
accNumbers.push($(this).val());
$("input[name=acc_no]").val(accNumbers)
});
} else {
accNumbers.splice(0, accNumbers.length);
$.each($(".checkbox-item:checked"), function() {
accNumbers.push($(this).val());
$("input[name=acc_no]").val(accNumbers)
});
// Periksa apakah semua checkbox item sudah di-check, jika ya, centang checkbox all
if ($('.checkbox-item:checked').length === $('.checkbox-item').length) {
$('#selectAll').prop('checked', true);
}
}
});
// Open the modal when the button is clicked
$("#openModalBtn").click(function() {
$("#myModal").modal('show');
});
// Handle form submission when the "Submit" button is clicked
$("#submitFormBtn").click(function() {
var formData = $("#myForm2").serialize();
console.log(formData);
$("#myModal").modal('hide');
});
$("#cancelBtn").click(function() {
$("#myModal").modal('hide');
});
$(".closeButtonSigner").click(function() {
$("#signerModal").modal('hide');
});
//submit signer
$("#buttonPostInfoSurat").click(function(){
$("#signerModal").modal('show');
})
//submit signer
// $("#exportButton").click(function(){
// $("#signerModal").modal('show');
// })
// Handle form submission when the "Submit" button inside the modal is clicked
$("#submitInfoSurat").click(function(e) {
e.preventDefault();
var cif = $('input[name="cus_no"]').val();
var cabang = $('input[name="kode_cabang"]').val();
var startDate = $('input[name="startDate"]').val();
var endDate = $('input[name="endDate"]').val();
var acc_no = $('input[name="acc_no"]').val();
var no_req_surat = $('input[name="no_req_surat"]').val();
var no_surat = $('input[name="no_surat"]').val();
var tgl_req_surat = $('input[name="tgl_req_surat"]').val();
var email = $('input[name="email"]').val();
var tlp = $('input[name="tlp"]').val();
var nama_tujuan = $('input[name="nama_tujuan"]').val();
var alamat = $.trim($("#alamat").val());
var signer = $("#signer-select").find('option:selected').val();
$("#signerModal").modal('hide');
// $('.modalSpiner').modal('show');
var dt = new Date();
var date = dt.getYear() + ":" + dt.getDate() + ":" + dt.getHours();
// var formData = $("#formSigner").serialize();
var dataToSend = {
_token: $('meta[name="csrf-token"]').attr('content'),
cus_no: cif,
kode_cabang: cabang,
startDate:startDate,
endDate:endDate,
acc_no:acc_no,
signer:signer,
no_req_surat:no_req_surat,
no_surat:no_surat,
tgl_req_surat:tgl_req_surat,
email:email,
tlp:tlp,
nama_tujuan:nama_tujuan,
alamat:alamat
};
$.ajax({
type: "POST",
url: "{{ route('konfirmasibank.postInfoSurat') }}",
data: dataToSend, // serializes the form's elements.
dataType: 'json', // Mengatur tipe data yang diharapkan dari respons
success: function(data) {
// $('.modalSpiner').modal('hide');
// Create a Blob from the response data
$('#cusNo').val(cif);
$('input[name="email"]').val();
$('#accNo').val(acc_no);
$('#cabang').val(cabang);
$('#startDate2').val(startDate);
$('#signerId').val(signer);
// location.reload();
$('.exportButton').show();
//$('#signerModal')[0].reset();
toastr.success(data.message);
},
error: function(data, textStatus, errorThrown) {
$('.modalSpiner').modal('hide');
var errors = data.responseJSON.errors;
$.each(errors, function(key, value) {
toastr.error(value);
});
}
});
});
});
</script>
@endpush
</x-default-layout>

View File

@ -134,7 +134,7 @@
<th class="text-center space1" style="width:12%">Tgl Realisasi</th>
<th class="text-center space1" style="width:7%">Mata Uang</th>
<th class="text-center space1" style="width:16%">Saldo</th>
<th class="text-center space1" style="width:10%">Tenor</th>
<th class="text-center space1" style="width:10%">Jangka Waktu</th>
<th class="text-center space1" style="width:8%">Suku Bunga</th>
<th class="text-center space1" style="width:11%">Tgl Jatuh Tempo</th>
<th class="text-center space1" style="width:10%">Keterangan</th>
@ -240,7 +240,7 @@
<th class="text-center space1" style="width:12%">Tgl Realisasi</th>
<th class="text-center space1" style="width:7%">Mata Uang</th>
<th class="text-center space1" style="width:16%">Saldo</th>
<th class="text-center space1" style="width:10%">Tenor</th>
<th class="text-center space1" style="width:10%">Jangka Waktu</th>
<th class="text-center space1" style="width:8%">Suku Bunga</th>
<th class="text-center space1" style="width:11%">Tgl Jatuh Tempo</th>
<th class="text-center space1" style="width:10%">Keterangan</th>
@ -307,7 +307,7 @@
<td class="text-center space1">{{ $no++ }}</td>
<td class="space1">ANJAK PIUTANG</td>
<td class="text-center space1 "></td>
<td class="text-center space1"></td>
<td class="text-center space1">{{$data['loanCcy']}}</td>
<td class="text-right space1">{{$data['totalOutstanding']}}</td>
<td class="text-center space1"></td>
<td class="text-center space1"></td>
@ -335,7 +335,7 @@
<th class="text-center space1" style="width:12%">Tgl Realisasi</th>
<th class="text-center space1" style="width:7%">Mata Uang</th>
<th class="text-center space1" style="width:16%">Saldo</th>
<th class="text-center space1" style="width:10%">Tenor</th>
<th class="text-center space1" style="width:10%">Jangka Waktu</th>
<th class="text-center space1" style="width:8%">Suku Bunga</th>
<th class="text-center space1" style="width:11%">Tgl Jatuh Tempo</th>
<th class="text-center space1" style="width:10%">Keterangan</th>