349 lines
16 KiB
PHP
349 lines
16 KiB
PHP
@push('scripts')
|
|
<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
|
|
<script src="{{ asset('assets/plugins/toastr/toastr.min.js') }}"></script>
|
|
|
|
<script>
|
|
$(document).ready(function() {
|
|
let dataTable = $('#tabelku').DataTable({
|
|
aLengthMenu: [
|
|
[25, 50, 100, 200, -1],
|
|
[25, 50, 100, 200, "All"]
|
|
],
|
|
processing: true,
|
|
serverSide: true,
|
|
ajax: {
|
|
url: "{{ route('pengeluaran.getDataPengeluaran') }}",
|
|
data: function(d) {
|
|
d.filter_tanggal_1 = $("#filter_tanggal_1").val();
|
|
d.filter_tanggal_2 = $("#filter_tanggal_2").val();
|
|
}
|
|
},
|
|
columns: [{
|
|
data: 'nomor',
|
|
name: 'nomor',
|
|
orderable: false,
|
|
className: 'text-center'
|
|
},
|
|
{
|
|
data: 'faktur',
|
|
name: 'faktur'
|
|
},
|
|
{
|
|
data: 'tanggal',
|
|
name: 'tanggal'
|
|
},
|
|
{
|
|
data: 'rekening_coa',
|
|
name: 'rekening_coa'
|
|
},
|
|
{
|
|
data: 'transaksinya',
|
|
name: 'transaksinya',
|
|
className: 'text-center'
|
|
},
|
|
{
|
|
data: 'suppliersnya',
|
|
name: 'suppliersnya'
|
|
},
|
|
{
|
|
data: 'satuannya',
|
|
name: 'satuannya'
|
|
},
|
|
{
|
|
data: 'nominal',
|
|
name: 'nominal',
|
|
className: 'text-right',
|
|
render: function(data) {
|
|
// change to IDR
|
|
return 'Rp. ' + data.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
|
}
|
|
},
|
|
{
|
|
data: 'total_harga',
|
|
name: 'total_harga'
|
|
},
|
|
{
|
|
data: 'action',
|
|
name: 'action',
|
|
className: 'text-center'
|
|
},
|
|
],
|
|
footerCallback: function(row, data, start, end, display) {
|
|
let api = this.api();
|
|
// Remove the formatting to get integer data for summation
|
|
let intVal = function(i) {
|
|
return typeof i === 'string' ?
|
|
i.replace(/[\$,]/g, '') * 1 :
|
|
typeof i === 'number' ?
|
|
i :
|
|
0;
|
|
};
|
|
|
|
// GrandTotal over all pages
|
|
totalAll = api
|
|
.column(8)
|
|
.data()
|
|
.reduce((a, b) => intVal(a) + intVal(b), 0);
|
|
|
|
// Update footer
|
|
api.column(8).footer().innerHTML =
|
|
'Rp. ' + totalAll.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
|
}
|
|
})
|
|
$('body').on('click', '.delete_pengeluaran', function(e) {
|
|
let id = $(this).data('id');
|
|
let faktur = $(this).data('faktur');
|
|
let kebutuhan = $(this).data('kebutuhan');
|
|
let url = "{{ route('pengeluaran.delete') }}";
|
|
|
|
if (confirm('Apakah anda yakin ingin menghapus data dengan faktur ' + faktur +
|
|
' pengeluaran ' +
|
|
kebutuhan + ' ?')) {
|
|
$.ajax({
|
|
headers: {
|
|
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
|
},
|
|
type: "DELETE",
|
|
data: {
|
|
id: id,
|
|
faktur: faktur
|
|
},
|
|
url: url,
|
|
success: function(result) {
|
|
if (result) {
|
|
alert(result.message)
|
|
dataTable.ajax.reload()
|
|
}
|
|
},
|
|
error: function(result) {
|
|
alert(result.message)
|
|
dataTable.ajax.reload()
|
|
}
|
|
})
|
|
}
|
|
})
|
|
$('#btn_filter').on('click', function() {
|
|
if ($("#filter_tanggal_1").val() == "" || $("#filter_tanggal_2").val() == "") {
|
|
alert("Input pencarian tidak boleh kosong")
|
|
} else {
|
|
dataTable.ajax.reload();
|
|
}
|
|
});
|
|
})
|
|
</script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('#jenis_transaksi').on('change', function() {
|
|
if ($("#jenis_transaksi").val() == "1") {
|
|
$(".transfer").prop('hidden', true)
|
|
} else if ($("#jenis_transaksi").val() == "2") {
|
|
$(".transfer").prop('hidden', false)
|
|
} else {
|
|
$(".transfer").prop('hidden', true)
|
|
}
|
|
})
|
|
})
|
|
</script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('#simpan_pengeluaran').on('click', function() {
|
|
if (!validationform()) {
|
|
return false;
|
|
}
|
|
|
|
theInterval = false;
|
|
|
|
document.getElementById('simpan_pengeluaran').disabled = true;
|
|
document.getElementById(
|
|
'simpan_pengeluaran').innerText = "Proses...";
|
|
|
|
// Jika jenis transaksi tunai
|
|
if ($("#jenis_transaksi").val() == "1") {
|
|
let dataTunai = $('#iniformnya').serialize();
|
|
|
|
$.ajax({
|
|
headers: {
|
|
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
|
},
|
|
type: "POST",
|
|
url: "{{ route('pengeluaran.simpan') }}",
|
|
data: dataTunai,
|
|
success: function(result) {
|
|
if (result) {
|
|
alert(result.message)
|
|
location.reload()
|
|
}
|
|
}
|
|
})
|
|
} else {
|
|
let dataTranfer = $('#iniformnya').serialize();
|
|
$.ajax({
|
|
headers: {
|
|
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
|
},
|
|
type: "POST",
|
|
url: "{{ route('pengeluaran.simpan') }}",
|
|
data: dataTranfer,
|
|
success: function(result) {
|
|
if (result) {
|
|
alert(result.message)
|
|
location.reload()
|
|
}
|
|
}
|
|
})
|
|
}
|
|
});
|
|
|
|
function validationform() {
|
|
if ($("#tanggal_belanja").val() == "") {
|
|
alert("Tanggal tidak boleh kosong")
|
|
return false;
|
|
}
|
|
if ($("#rekening_coa_kebutuhan").val() == "") {
|
|
alert("Item kebutuhan tidak boleh kosong")
|
|
return false;
|
|
}
|
|
if ($("#nominal").val() == "") {
|
|
alert("Nominal tidak boleh kosong")
|
|
return false;
|
|
}
|
|
if ($("#satuan").val() == "") {
|
|
alert("Satuan tidak boleh kosong")
|
|
return false;
|
|
}
|
|
if ($("#satuan_bahan").val() == "") {
|
|
alert("Satuan belum terpilih")
|
|
return false;
|
|
}
|
|
if ($("#jenis_transaksi").val() == "2") {
|
|
if ($("#rekening_coa_transfer").val() == "") {
|
|
alert("Rekening COA Transfer tidak boleh kosong")
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
$("#dynamic-ar").click(function() {
|
|
$("#dynamicAddRemove").append(
|
|
` <tr> <td> <div id="card-form-item"> <div class="card"> <div class="card-body"> <button type="button" class="btn btn-danger remove-input-field"
|
|
style="display: flex;position: absolute;left: -20px;top: 5px;"
|
|
id="add-form-item">
|
|
<i class="fa fa-trash"></i>
|
|
</button> <div class="row"> <div class="col-md-4 mt-3"> <label>Kebutuhan</label> <select class="form-control" id="rekening_coa_kebutuhan" name="rekening_coa_kebutuhan[]" required> <option value="" selected>Pilih Kebutuhan </option> @foreach ($coaPengeluaran as $biaya) @if ($biaya->status == 0) <optgroup label="{{ $biaya->coa }} | {{ $biaya->keterangan_coa }}"> @else <option value="{{ $biaya->id }}|{{ $biaya->coa }}|{{ $biaya->keterangan_coa }}"> {{ $biaya->coa }} | {{ $biaya->keterangan_coa }} </option> @endif @endforeach </optgroup> </select> </div> <div class="col-md-4 mt-3"> <label>Nominal</label> <input type="number" min="0" class="form-control" id="nominal" name="nominal[]" onchange="calculateTotalItem(this)" placeholder="Harga satuan atau kiloan" required> </div> <div class="col-md-4 mt-3"> <label>Satuan</label> <div class="row"> <input type="number" min="0" class="form-control col-md-6" name="satuan[]" id="satuan" onchange="calculateTotalItem(this)" placeholder="Satuan Pengeluaran" required> <select class="form-control col-md-6" id="satuan_bahan" name="pilihansatuan[]" required> <option value="" selected>--Pilih Satuan-- </option> @foreach ($satuans as $satuan) <option value="{{ $satuan->id }}"> {{ $satuan->nama_satuan }}</option> @endforeach </select> </div> </div> <div class="col-md-4 mt-3"> <label>Supplier Distributor</label> <select class="form-control" id="supplier_distributior" name="supplier[]"> <option value="" selected>Tanpa distributor </option> @foreach ($distributors as $distributor) <option value="{{ $distributor->id }}"> {{ $distributor->nama_distributor }} {{ $distributor->alamat }} {{ $distributor->telepon }} </option> @endforeach </select> </div> <div class="col-md-4 mt-3"> <label>Keterangan</label> <textarea class="form-control" id="keterangan" placeholder="Keterangan" name="keterangan[]"></textarea> </div> <div class="col-md-4 mt-3"> <label>Total</label> <h3 id="total-item"></h3> </div> </div> </div> </div> </div> </td> </tr>`
|
|
);
|
|
});
|
|
$(document).on('click', '.remove-input-field', function() {
|
|
$(this).parents('tr').remove();
|
|
});
|
|
|
|
function calculateTotalItem(params) {
|
|
let nominal = $(params).parents('#card-form-item').find('input[name="nominal[]"]').val();
|
|
let satuan = $(params).parents('#card-form-item').find('input[name="satuan[]"]').val();
|
|
let total = nominal * satuan;
|
|
$(params).parents('#card-form-item').find('h3#total-item').text('Rp. ' + total.toString().replace(
|
|
/\B(?=(\d{3})+(?!\d))/g, '.'));
|
|
}
|
|
</script>
|
|
<script>
|
|
var theInterval = true;
|
|
|
|
function saveToLocalStorage(params) {
|
|
var dataItems = [];
|
|
|
|
var items = document.querySelectorAll('[id="card-form-item"]');
|
|
for (let index = 0; index < items.length; index++) {
|
|
const element = items[index];
|
|
let nominal = element.querySelector('input[name="nominal[]"]').value;
|
|
let satuan = element.querySelector('input[name="satuan[]"]').value;
|
|
let pilihansatuan = element.querySelector('select[name="pilihansatuan[]"]').value;
|
|
let rekening_coa_kebutuhan = element.querySelector(
|
|
'select[name="rekening_coa_kebutuhan[]"]').value;
|
|
let supplier = element.querySelector('select[name="supplier[]"]').value;
|
|
let keterangan = element.querySelector('textarea[name="keterangan[]"]').value;
|
|
let total = nominal * satuan;
|
|
if (rekening_coa_kebutuhan == "" || nominal == "" || satuan == "") {
|
|
continue;
|
|
} else {
|
|
rekening_coa_kebutuhan = rekening_coa_kebutuhan.split('|')[0];
|
|
}
|
|
dataItems.push({
|
|
rekening_coa_kebutuhan: rekening_coa_kebutuhan,
|
|
nominal: nominal,
|
|
satuan: satuan,
|
|
pilihansatuan: pilihansatuan,
|
|
supplier: supplier,
|
|
keterangan: keterangan,
|
|
total: total
|
|
});
|
|
}
|
|
|
|
let json = JSON.stringify({
|
|
tanggal: $("#tanggal").val(),
|
|
jenis_transaksi: $("#jenis_transaksi").val(),
|
|
dataItems
|
|
});
|
|
|
|
localStorage.setItem('pengeluaranItemStorage', json);
|
|
}
|
|
|
|
// Save to local storage each 1 second
|
|
setInterval(function() {
|
|
saveToLocalStorage();
|
|
}, 2000);
|
|
|
|
function showPengeluaranItemStorage() {
|
|
if (localStorage.pengeluaranItemStorage === undefined || localStorage.pengeluaranItemStorage === null) {
|
|
return false;
|
|
}
|
|
let data = JSON.parse(localStorage.pengeluaranItemStorage);
|
|
document.getElementsByName('tanggal_belanja').value = data.tanggal ?? '';
|
|
document.getElementsByName('jenis_transaksi').value = data.jenis_transaksi;
|
|
if (data.dataItems.length > 0) {
|
|
$('#dynamicAddRemove').html('');
|
|
data.dataItems.forEach((i, key) => {
|
|
$.ajax({
|
|
headers: {
|
|
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
|
},
|
|
type: "GET",
|
|
url: "{{ route('pengelauran.generateLocalStorage') }}",
|
|
data: data.dataItems[key],
|
|
success: function(result) {
|
|
$('#dynamicAddRemove').append(result);
|
|
},
|
|
error: function(result) {
|
|
console.log(result);
|
|
}
|
|
})
|
|
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
showPengeluaranItemStorage();
|
|
setInterval(doTheInterval, 1000);
|
|
|
|
function doTheInterval() {
|
|
if (theInterval === true) {
|
|
// show time every second
|
|
saveToLocalStorage();
|
|
} else {
|
|
localStorage.removeItem('pengeluaranItemStorage');
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<script>
|
|
@if (session()->has('success'))
|
|
toastr.success('{{ session('success') }}', 'BERHASIL');
|
|
@elseif (session()->has('error'))
|
|
toastr.error('{{ session('error') }}', 'GAGAL');
|
|
@endif
|
|
</script>
|
|
@endpush
|