70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
$(document).ready(function () {
|
|
let shavingResults = parseFloat(unformatRupiah($('#shaving_result').val())) || 0;
|
|
if ($('#employee').val()) {
|
|
$('#percentage_shaving').prop('readonly', false);
|
|
}
|
|
|
|
$('#employee').on('change', function () {
|
|
let employeeId = $(this).val();
|
|
|
|
if (!employeeId) {
|
|
$('#percentage_shaving').prop('readonly', true);
|
|
$('#percentage_shaving').val('');
|
|
return;
|
|
}
|
|
|
|
$.ajax({
|
|
url: `/dashboard/finance/payroll/get-salary/${employeeId}`,
|
|
method: 'GET',
|
|
success: function (response) {
|
|
if (response.status) {
|
|
$('#amount').val(response.data.baseSalary || '0');
|
|
$('#shaving_result').val(response.data.shavingResults || '0');
|
|
|
|
shavingResults = parseFloat(unformatRupiah(response.data.shavingResults)) || 0;
|
|
|
|
$('#percentage_shaving').prop('readonly', false);
|
|
|
|
calculateTotal();
|
|
}
|
|
},
|
|
error: function (xhr, status, error) {
|
|
Swal.fire({
|
|
icon: 'error',
|
|
title: 'Oops...',
|
|
text: 'Terjadi kesalahan saat mengambil data karyawan! Silakan coba lagi. Jika masalah berlanjut, hubungi administrator.',
|
|
});
|
|
|
|
$('#percentage_shaving').prop('readonly', true);
|
|
$('#percentage_shaving').val('');
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#amount, #incentive, #cut, #percentage_shaving').on('input', function () {
|
|
calculateTotal();
|
|
});
|
|
|
|
function calculateTotal() {
|
|
let amount = parseInt(unformatRupiah($('#amount').val())) || 0;
|
|
let incentive = parseInt(unformatRupiah($('#incentive').val())) || 0;
|
|
let cut = parseInt(unformatRupiah($('#cut').val())) || 0;
|
|
let percentage = parseFloat($('#percentage_shaving').val()) || 0;
|
|
|
|
let percentageAmount = (shavingResults * percentage) / 100;
|
|
|
|
let total = amount + incentive + percentageAmount - cut;
|
|
$('#total').val('Rp' + formatRupiah(total));
|
|
}
|
|
|
|
function formatRupiah(angka) {
|
|
if (!angka) return '0';
|
|
return new Intl.NumberFormat('id-ID').format(angka);
|
|
}
|
|
|
|
function unformatRupiah(rupiahStr) {
|
|
if (!rupiahStr) return '0';
|
|
return rupiahStr.replace(/\D/g, '');
|
|
}
|
|
});
|