resto-dhepot/resources/views/pages/Kasir/js.blade.php

1249 lines
58 KiB
PHP

@push('scripts')
<!-- Toastr -->
<script src="{{ asset('assets/plugins/toastr/toastr.min.js') }}"></script>
<script>
$(document).ready(function() {
$('#print-dapur').on('click', function() {
$('#modal_print_dapur').modal('show')
})
})
</script>
<script>
$(document).ready(function() {
$('#refresh').on('click', function() {
location.reload()
})
})
</script>
<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
<!-- Action for a table -->
<script>
$(document).ready(function() {
// $('#tabelku').DataTable({
// processing: true,
// serverSide: true,
// ajax: '{{ route('transaksi.getCetakTigaKali') }}',
// columns: [{
// data: 'nomor',
// name: 'nomor',
// orderable: false,
// className: 'text-center'
// },
// {
// data: 'kode_pesanan',
// name: 'kode_pesanan'
// },
// {
// data: 'nama_user',
// name: 'nama_user'
// },
// {
// data: 'created_at',
// name: 'created_at',
// className: 'text-center'
// },
// {
// data: 'total_pesanan',
// name: 'total_pesanan',
// className: 'text-center'
// },
// {
// data: 'diskon_persen',
// name: 'diskon_persen',
// className: 'text-center',
// render: function(data) {
// return data ?? 0;
// }
// },
// {
// data: 'grand_total',
// name: 'grand_total'
// },
// {
// data: 'ubah',
// name: 'ubah',
// className: 'text-center'
// },
// ]
// })
})
</script>
<!-- Action Print -->
<script>
function printDapurTigaKali(id) {
var url = "{{ route('transaksi.printDapurTigaKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
// window.open(result.url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
location.reload(true);
}
function printDapurDuaKali(id) {
var url = "{{ route('transaksi.printDapurDuaKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
// window.open(result.url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
location.reload(true);
}
function printDapurSatuKali(id) {
var url = "{{ route('transaksi.printDapurSatuKali', '') }}/" + id + '?print=true'
window.open(url, '_blank');
// window.open(result.url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
location.reload(true);
}
</script>
<script>
// set interval waktu pesanan
function showTime() {
var date = new Date(),
utc = new Date(Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
date.getHours() - 7,
date.getMinutes(),
date.getSeconds()
));
// format datetime indonesia
var options = {
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
hour12: true,
minute: 'numeric',
second: 'numeric'
};
// tampilkan pada id datetime-order
document.getElementById('datetime-order').innerHTML = utc.toLocaleDateString("id-ID", options);
}
// show time every second
setInterval(showTime, 1000);
let globalId = 0;
// make function add menu to table and calculate qty and total price menu ordered and check menu ordered is exist or not in tbody table order-menus insert this in
function aadMenu(params, menuPaket = false) {
var paketFreenya = [];
var idPaketFreenya = [];
if (menuPaket == true) {
for (let index = 0; index < itemFree.length; index++) {
// const element = itemFree[index];
// console.log(itemFree[index].nama_produk);
paketFreenya.push(itemFree[index].nama_produk);
idPaketFreenya.push(itemFree[index].id);
}
// console.log(itemFree);
}
var table = document.getElementById("order-menus");
var menu = params;
var menuId = menu.id;
var menuName = menu.nama_produk;
var menuPrice = menu.harga_produk;
var menuQty = 1;
var menuTotal = menuPrice * menuQty;
var isExist = false;
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
if (menuPaket == true) {
isExist = false;
index = i;
} else {
if (id == menuId) {
// isExist = true;
// isExist = false;
index = i;
}
}
}
if (isExist) {
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
var row_id = table.rows[index].getAttribute('data-row-id');
qty = parseInt(qty) + 1;
var totalLama = parseInt(total) + parseInt(menuPrice);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) + parseInt(menuPrice)) - ((parseInt(total) + parseInt(menuPrice)) * (diskonSatuan /
100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
var harga = menuPrice;
if (paketFreenya.length != 0) {
if (paketFreenya.length == 3) {
paketFreenyaini = 'FREEALL';
} else {
paketFreenyaini = paketFreenya.join(', ');
}
table.rows[index].cells[0].innerHTML = `
<td>
${params.nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" data-keterangan="" class="form-control rounded-3" placeholder="Keterangan.." value='${paketFreenyaini}'>
</div>
</td>
`;
} else {
table.rows[index].cells[0].innerHTML = `
<td>
${params.nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" data-keterangan="" class="form-control rounded-3" placeholder="Keterangan..">
</div>
</td>
`;
}
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat tai" onclick="decrementMenu(${row_id}, '${params.nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-3" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${row_id}, '${params.nama_produk}')">+</button>
</span>
</div>
<select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border">
<option value="2" selected>Dine In</option>
<option value="0">Take Away</option>
</select>
</td>
`;
table.rows[index].cells[2].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-3" value="${diskonSatuan}" onkeyup="diskonSatuanMenu(${row_id}, '${params.nama_produk}', this.value)">
</div>
</td>
`;
table.rows[index].cells[3].innerHTML = `
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${row_id})">
<i class="fas fa-trash"></i>
</button>
</td>
`;
calculateTotal();
$('#modal-default').modal('hide');
} else {
globalId++;
// console.log(globalId);
if (paketFreenya.length != 0) {
if (paketFreenya.length == 3) {
paketFreenyaini = 'FREEALL';
} else {
paketFreenyaini = paketFreenya.join(', ');
}
$('#tbody-order-menus').append(`
<tr id="row-${params.id}" data-id="${params.id}" data-row-id="${globalId}" data-nama="${params.nama_produk}" data-harga="${params.harga_produk}" data-qty="1" data-diskon-satuan="0" data-total="${params.harga_produk}">
<td>
${params.nama_produk}
<br>
<small class="text-primary">Rp. ${params.harga_produk}</small>
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-3" data-keterangan="${paketFreenyaini}" placeholder="Keterangan.." value="${paketFreenyaini}">
</div>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${globalId}, '${params.nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-3" readonly value="${menuQty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${globalId}, '${params.nama_produk}')">+</button>
</span>
</div>
<select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border">
<option value="2" selected>Dine In</option>
<option value="0">Take Away</option>
</select>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-3" value="0" onkeyup="diskonSatuanMenu(${globalId}, '${params.nama_produk}', this.value)">
</div>
</td>
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${globalId})">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
`);
} else {
$('#tbody-order-menus').append(`
<tr id="row-${params.id}" data-id="${params.id}" data-row-id="${globalId}" data-nama="${params.nama_produk}" data-harga="${params.harga_produk}" data-qty="1" data-diskon-satuan="0" data-total="${params.harga_produk}">
<td>
${params.nama_produk}
<br>
<small class="text-primary">Rp. ${params.harga_produk}</small>
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" data-keterangan="" class="form-control rounded-3" placeholder="Keterangan..">
</div>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${globalId}, '${params.nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-3" readonly value="${menuQty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${globalId}, '${params.nama_produk}')">+</button>
</span>
</div>
<select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border">
<option value="2" selected>Dine In</option>
<option value="0">Take Away</option>
</select>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-3" value="0" onkeyup="diskonSatuanMenu(${globalId}, '${params.nama_produk}', this.value)">
</div>
</td>
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${globalId})">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
`);
}
calculateTotal();
$('#modal-default').modal('hide');
}
}
// delete menu from table and calculate qty and total price menu ordered
function deleteMenu(params) {
// console.log(params);
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-row-id');
if (id == params) {
index = i;
}
}
table.deleteRow(index);
calculateTotal();
}
// calculate qty and total price menu ordered
function calculateTotal() {
var table = document.getElementById("order-menus");
var total = 0;
var diskon = document.getElementsByName('diskon')?.[0]?.value ?? 0;
var bayar = document.getElementsByName('bayar')?.[0]?.value ?? 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var harga = row.getAttribute('data-harga');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var total = total + ((harga * qty) - ((harga * qty) * (diskonSatuan / 100)));
}
var ribuantotal = toRupiah(total);
document.getElementById('total').innerHTML = ribuantotal;
document.getElementById('total-hidden').innerHTML = total;
var totalDiskon = total - (total * (diskon / 100));
var ribuantotalDiskon = toRupiah(totalDiskon);
document.getElementById('total-diskon').innerHTML = ribuantotalDiskon;
document.getElementById('total-diskon-hidden').innerHTML = totalDiskon;
calculatekembali();
}
// increment qty menu ordered
function incrementMenu(params, nama_produk) {
// console.log(params);
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-row-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
var valueKeterangan = table.rows[index].cells[0].getElementsByTagName('input')[0].getAttribute(
'data-keterangan');
var realValueKeterangan = table.rows[index].cells[0].getElementsByTagName('input')[0].value;
if (valueKeterangan != realValueKeterangan) {
valueKeterangan = realValueKeterangan;
}
var selectNya = table.rows[index].cells[1].getElementsByTagName('select')[0].value;
qty = parseInt(qty) + 1;
var totalLama = parseInt(total) + parseInt(harga);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) + parseInt(harga)) - ((parseInt(total) + parseInt(harga)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" data-keterangan="${valueKeterangan}" value="${valueKeterangan}" class="form-control rounded-3" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params}, '${nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-3" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button>
</span>
</div>
<select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border">
<option value="2" ${selectNya == 2 ? 'selected' : ''}>Dine In</option>
<option value="0" ${selectNya == 0 ? 'selected' : ''}>Take Away</option>
</select>
</td>`;
calculateTotal();
}
// decrement qty menu ordered
function decrementMenu(params, nama_produk) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-row-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = table.rows[index].getAttribute('data-diskon-satuan');
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
var valueKeterangan = table.rows[index].cells[0].getElementsByTagName('input')[0].getAttribute(
'data-keterangan');
var selectNya = table.rows[index].cells[1].getElementsByTagName('select')[0].value;
if (qty > 1) {
qty = parseInt(qty) - 1;
var totalLama = parseInt(total) - parseInt(harga);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total) - parseInt(harga)) - ((parseInt(total) - parseInt(harga)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan > 0) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" data-keterangan="${valueKeterangan}" value="${valueKeterangan}" class="form-control rounded-3" placeholder="Keterangan..">
</div>
</td>
`;
table.rows[index].cells[1].innerHTML = `
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${params}, '${nama_produk}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-3" readonly value="${qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${params}, '${nama_produk}')">+</button>
</span>
</div>
<select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border">
<option value="2" ${selectNya == 2 ? 'selected' : ''}>Dine In</option>
<option value="0" ${selectNya == 0 ? 'selected' : ''}>Take Away</option>
</select>
</td>
`;
calculateTotal();
}
}
// diskon satuan menu ordered
function diskonSatuanMenu(params, nama_produk, diskon = 0) {
var table = document.getElementById("order-menus");
var index = 0;
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-row-id');
if (id == params) {
index = i;
}
}
var qty = table.rows[index].getAttribute('data-qty');
var diskonSatuan = parseInt(diskon);
var total = table.rows[index].getAttribute('data-total');
var harga = table.rows[index].getAttribute('data-harga');
var valueKeterangan = table.rows[index].cells[0].getElementsByTagName('input')[0].getAttribute(
'data-keterangan');
// if (diskonSatuan >= 1) {
// console.log(diskonSatuan);
var totalLama = total;
qty = parseInt(qty);
diskonSatuan = parseInt(diskonSatuan);
total = (parseInt(total)) - ((parseInt(total)) * (diskonSatuan / 100));
table.rows[index].setAttribute('data-qty', qty);
table.rows[index].setAttribute('data-diskon-satuan', diskonSatuan);
table.rows[index].setAttribute('data-total', totalLama);
table.rows[index].cells[0].innerHTML = `
<td>
${nama_produk}
<br>
${(diskonSatuan >= 1) ? '<small class="text-primary"><s>Rp. ' + (harga * qty) + '</s></small> | <small class="text-danger">Rp. ' + total + '</small>' : '<small class="text-primary">Rp. ' + totalLama + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" data-keterangan="${valueKeterangan}" value="${valueKeterangan}" class="form-control rounded-3" placeholder="Keterangan..">
</div>
</td>
`;
calculateTotal();
// }
}
// diskon use keyup
document.getElementsByName('diskon')[0].addEventListener('keyup', function() {
var diskon = document.getElementsByName('diskon')[0].value;
var total = document.getElementById('total-hidden').innerHTML;
var totalDiskon = total - (total * (diskon / 100));
var ribuan = toRupiah(totalDiskon);
document.getElementById('total-diskon-hidden').innerHTML = totalDiskon;
document.getElementById('total-diskon').innerHTML = ribuan;
calculatekembali();
});
/* Dengan Rupiah */
var dengan_rupiah = document.getElementById('nominal-bayar');
dengan_rupiah.addEventListener('keyup', function(e) {
dengan_rupiah.value = formatRupiah(this.value, 'Rp. ');
});
/* Fungsi */
function formatRupiah(angka, prefix) {
var number_string = angka.replace(/[^,\d]/g, '').toString(),
split = number_string.split(','),
sisa = split[0].length % 3,
rupiah = split[0].substr(0, sisa),
ribuan = split[0].substr(sisa).match(/\d{3}/gi);
if (ribuan) {
separator = sisa ? '.' : '';
rupiah += separator + ribuan.join('.');
}
rupiah = split[1] != undefined ? rupiah + ',' + split[1] : rupiah;
return prefix == undefined ? rupiah : (rupiah ? 'Rp. ' + rupiah : '');
}
// bayar use keyup
document.getElementsByName('nominal-bayar')[0].addEventListener('keyup', function() {
calculatekembali();
});
function calculatekembali() {
var bayar = document.getElementsByName('nominal-bayar')[0].value;
var nonimalBayar = bayar.replace(/[^,\d]/g, '').toString();
var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
var kembali = nonimalBayar - totalDiskon;
document.getElementById('kembali-hidden').innerHTML = kembali;
var ribuan = toRupiah(kembali);
if (totalDiskon == 0 || bayar == 0) {
ribuan = 0;
var bayar = document.getElementsByName('nominal-bayar')[0].value = '';
}
document.getElementById('kembali').innerHTML = ribuan;
}
// format rupiah with minus
function toRupiah(angka) {
var rupiah = '';
var angkarev = angka.toString().split('').reverse().join('');
for (var i = 0; i < angkarev.length; i++)
if (i % 3 == 0) rupiah += angkarev.substr(i, 3) + '.';
return rupiah.split('', rupiah.length - 1).reverse().join('');
}
// log button nontunaisaja
$(document).ready(function() {
$('#nonTunaiSaja').on('click', function() {
// $("#modal_bayar").modal('show')
$("#modal_nontunai").modal('show')
})
})
// bayar uang pas
$(document).ready(function() {
$('#bayar_uang_pas').on('click', function() {
// Mengambil teks dari elemen dengan menggunakan innerText
let grandTotalText = document.getElementById('total-diskon').innerText;
// Mengisi nilai ke input dengan format Rupiah
$("#nominal-bayar").val(formatRupiah(grandTotalText, 'Rp. '));
calculatekembali();
});
});
var theInterval = true;
// kirim pembayaran
$(document).ready(function() {
$('#pesan-bayar-tunai').on('click', function() {
document.getElementById('pesan-bayar-tunai').disabled = true;
let jenis_pembayaran = "1"
// return console.log(jenis_pembayaran);
var table = document.getElementById("order-menus");
var orderMenus = [];
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
var nama = row.getAttribute('data-nama');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var harga = row.getAttribute('data-harga');
var total = row.getAttribute('data-total');
if (diskonSatuan != 0 && diskonSatuan != null && diskonSatuan != undefined) {
total = total - (total * (diskonSatuan / 100));
} else {
total = total
}
if (id != null || qty != null || total != null) {
orderMenus.push({
id: id,
nama: nama,
qty: qty,
diskonSatuan: diskonSatuan,
harga: harga,
total: total,
keterangan: document.getElementsByName('keterangan_satuan')[i - 1]
.value,
status_pesanan_dinein: document.getElementsByName(
'status_pesanan_dinein')[i - 1].value,
});
}
}
var diskon = document.getElementsByName('diskon')[0].value;
var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
var bayar = document.getElementsByName('nominal-bayar')[0].value;
var nominalBayar = bayar.replace(/[^,\d]/g, '').toString();
var kembaliHidden = document.getElementById('kembali-hidden').innerHTML;
var namaPemesan = document.getElementsByName('nama-pemesan')[0].value;
var nomorPemesan = document.getElementsByName('nomor-pemesan')[0].value;
var nomorMeja = document.getElementsByName('nomor-meja')[0].value;
var rekening_coa_aba_penarikan = $("#rekening_coa_aba_penarikan").val()
var split_rekening_coa_aba_penarikan = rekening_coa_aba_penarikan.split("|")
var id_rekening_coa = split_rekening_coa_aba_penarikan[0]
var kode_coa = split_rekening_coa_aba_penarikan[1]
var keterangan_coa = split_rekening_coa_aba_penarikan[2]
if (orderMenus.length == 0) {
alert('Menu tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
if (totalDiskon != 0) {
if (nominalBayar == '' || nominalBayar == 0) {
alert('Pembayaran tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
}
if (kembaliHidden < 0) {
alert('Pembayaran kurang');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
if (namaPemesan == '' || namaPemesan == null || namaPemesan == undefined) {
alert('Nama pemesan tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
if (nomorMeja == '' || nomorMeja == null || nomorMeja == undefined) {
alert('Nomor meja tidak boleh kosong');
document.getElementById('pesan-bayar-tunai').disabled = false;
return false;
}
var data = {
_token: "{{ csrf_token() }}",
orderCode: "{{ $orderCode }}",
orderMenus: orderMenus,
namaPemesan: namaPemesan,
nomorPemesan: nomorPemesan,
nomorMeja: nomorMeja,
keteranganPesanan: document.getElementsByName('keterangan-pesanan')[0].value,
diskon: diskon,
totalDiskon: totalDiskon,
nominalBayar: nominalBayar,
kembali: kembaliHidden,
jenis_pembayaran: jenis_pembayaran,
id_rekening_coa: id_rekening_coa,
kode_coa: kode_coa,
keterangan_coa: keterangan_coa,
};
$.ajax({
url: "{{ route('transaksi.store') }}",
method: "POST",
data: data,
success: function(result) {
document.getElementById('pesan-bayar-tunai').disabled = false;
toastr.success(result.message, 'Success', {
timeOut: 2000
});
window.open(result.url, '_blank');
// window.open(result.url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
// set localStorage.OrderStorage to null
theInterval = false;
localStorage.removeItem('OrderStorage');
setTimeout(function() {
window.location.reload(1);
}, 1000);
},
error: function(xhr, status, error) {
document.getElementById('pesan-bayar-tunai').disabled = false;
toastr.error(xhr.responseJSON.message, 'Error', {
timeOut: 3000
});
}
});
})
// modal bayar non tunai
$('#pesan-bayar-nontunai').on('click', function() {
$("#modal_nontunai").modal('show')
})
// pembayaran non tunai
$('#pembayaran-nontunai').on('click', function() {
document.getElementById('pembayaran-nontunai').disabled = true;
let jenis_pembayaran = "2"
// return console.log(jenis_pembayaran);
var table = document.getElementById("order-menus");
var orderMenus = [];
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
var nama = row.getAttribute('data-nama');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var harga = row.getAttribute('data-harga');
var total = row.getAttribute('data-total');
if (diskonSatuan != 0 && diskonSatuan != null && diskonSatuan != undefined) {
total = total - (total * (diskonSatuan / 100));
} else {
total = total
}
if (id != null || qty != null || total != null) {
orderMenus.push({
id: id,
nama: nama,
qty: qty,
diskonSatuan: diskonSatuan,
harga: harga,
total: total,
keterangan: document.getElementsByName('keterangan_satuan')[i - 1]
.value,
status_pesanan_dinein: document.getElementsByName(
'status_pesanan_dinein')[i - 1].value,
});
}
}
var diskon = document.getElementsByName('diskon')[0].value;
var totalDiskon = document.getElementById('total-diskon-hidden').innerHTML;
var bayar = document.getElementsByName('nominal-bayar')[0].value;
var nominalBayar = bayar.replace(/[^,\d]/g, '').toString();
var kembaliHidden = document.getElementById('kembali-hidden').innerHTML;
var namaPemesan = document.getElementsByName('nama-pemesan')[0].value;
var nomorPemesan = document.getElementsByName('nomor-pemesan')[0].value;
var nomorMeja = document.getElementsByName('nomor-meja')[0].value;
var rekening_coa_aba_penarikan = $("#rekening_coa_aba_penarikan").val();
var split_rekening_coa_aba_penarikan = rekening_coa_aba_penarikan.split("|");
var id_rekening_coa = split_rekening_coa_aba_penarikan[0];
var kode_coa = split_rekening_coa_aba_penarikan[1];
var keterangan_coa = split_rekening_coa_aba_penarikan[2];
if (rekening_coa_aba_penarikan == '') {
alert('Pilih kas tujuan');
return false;
}
if (orderMenus.length == 0) {
alert('Menu tidak boleh kosong');
document.getElementById('pembayaran-nontunai').disabled = false;
return false;
}
// if (totalDiskon != 0) {
// if (nominalBayar == '' || nominalBayar == 0) {
// alert('Pembayaran tidak boleh kosong');
// document.getElementById('pesan-bayar-tunai').disabled = false;
// return false;
// }
// }
// if (kembaliHidden < 0) {
// alert('Pembayaran kurang');
// document.getElementById('pesan-bayar-tunai').disabled = false;
// return false;
// }
if (namaPemesan == '' || namaPemesan == null || namaPemesan == undefined) {
alert('Nama pemesan tidak boleh kosong');
document.getElementById('pembayaran-nontunai').disabled = false;
return false;
}
if (nomorMeja == '' || nomorMeja == null || nomorMeja == undefined) {
alert('Nomor meja tidak boleh kosong');
document.getElementById('pembayaran-nontunai').disabled = false;
return false;
}
var data = {
_token: "{{ csrf_token() }}",
orderCode: "{{ $orderCode }}",
orderMenus: orderMenus,
namaPemesan: namaPemesan,
nomorPemesan: nomorPemesan,
nomorMeja: nomorMeja,
keteranganPesanan: document.getElementsByName('keterangan-pesanan')[0].value,
diskon: diskon,
totalDiskon: totalDiskon,
nominalBayar: nominalBayar,
kembali: kembaliHidden,
jenis_pembayaran: jenis_pembayaran,
id_rekening_coa: id_rekening_coa,
kode_coa: kode_coa,
keterangan_coa: keterangan_coa,
};
$.ajax({
url: "{{ route('transaksi.store') }}",
method: "POST",
data: data,
success: function(result) {
document.getElementById('pembayaran-nontunai').disabled = false;
toastr.success(result.message, 'Success', {
timeOut: 2000
});
window.open(result.url, '_blank');
// window.open(result.url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
// set localStorage.OrderStorage to null
theInterval = false;
localStorage.removeItem('OrderStorage');
setTimeout(function() {
window.location.reload(1);
}, 1000);
},
error: function(xhr, status, error) {
document.getElementById('pembayaran-nontunai').disabled = false;
toastr.error(xhr.responseJSON.message, 'Error', {
timeOut: 3000
});
}
});
})
});
// select paket
var selectedMenus = [];
var menu_terpilih = document.getElementById('menu-terpilih');
// pilih paket menu terlebih dahulu kemudian cocokkan dengan menu yang ada di menu terpilih jika ada maka tidak bisa memilih paket menu yang sama
function selectPaket(params) {
if (params.urutan == 5) {
selectedPaketFree(params);
}
var isExist = false;
var index = 0;
for (var i = 0; i < selectedMenus.length; i++) {
// lakukan periksa kembali apabila menu dengan urutan yang sama sudah ada maka hapus menu tersebut dari array selectedMenus kecuali menu dengan urutan 5 boleh lebih dari 1
if (params.urutan == 5) {
if (selectedMenus[i].id == params.id) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
isExist = true;
index = i;
}
changeOrderedMenus(selectedMenus[i].id, 'batal');
} else if (selectedMenus[i].urutan == params.urutan) {
changeOrderedMenus(selectedMenus[i].id, 'batal');
selectedMenus.splice(i, 1);
} else if (selectedMenus[i].id == params.id) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
isExist = true;
index = i;
}
}
if (isExist) {
selectedMenus.splice(index, 1);
document.getElementById('select-ordered-menus').classList.remove('disabled');
// document.getElementById('ordered-menus').setAttribute('onclick', 'orderedMenus()');
} else {
selectedMenus.push(params);
document.getElementById('select-ordered-menus').classList.remove('disabled');
// document.getElementById('ordered-menus').classList.add('disabled');
// document.getElementById('ordered-menus').setAttribute('onclick', '');
}
menu_terpilih.innerHTML = '';
for (var i = 0; i < selectedMenus.length; i++) {
changeOrderedMenus(selectedMenus[i].id, 'pilih');
menu_terpilih.innerHTML += `
<li>
${selectedMenus[i].nama_produk}
</li>
`;
}
if (selectedMenus.length == 0) {
menu_terpilih.innerHTML = `
<li>
Pilih Paket Menu Terlebih Dahulu
</li>
`;
}
}
var itemFree = [];
function selectedPaketFree(params) {
// console.log(params);
var isItemFreeExist = false;
var indexItemFree = 0;
// for itemFree
for (var i = 0; i < itemFree.length; i++) {
if (params.urutan == 5) {
if (itemFree[i].id == params.id) {
isItemFreeExist = true;
indexItemFree = i;
}
}
}
if (isItemFreeExist) {
itemFree.splice(indexItemFree, 1);
} else {
itemFree.push(params);
}
}
// ordered menus change button text and onclick
function changeOrderedMenus(id, status) {
if (status == 'batal') {
var orderedMenus = document.getElementById('ordered-menus-' + id);
orderedMenus.innerHTML = 'Pilih Paket';
orderedMenus.classList.remove('btn-secondary');
orderedMenus.classList.add('btn-warning');
return false;
} else if (status == 'pilih') {
var orderedMenus = document.getElementById('ordered-menus-' + id);
orderedMenus.innerHTML = 'Batal Pilih';
orderedMenus.classList.remove('btn-warning');
orderedMenus.classList.add('btn-secondary');
return false;
}
}
// cari paket
function cariPaket(params) {
var show_modal_paket = document.getElementById('show-modal-paket');
show_modal_paket.innerHTML = ``;
// loop selectedMenus ambil kode produk
var kodeProduk = [];
if (selectedMenus.length == 0) {
alert('Pilih Paket Menu Terlebih Dahulu');
return false;
}
for (var i = 0; i < selectedMenus.length; i++) {
if (selectedMenus[i].urutan != 5) {
kodeProduk.push({
urutan: selectedMenus[i].urutan,
kode_produk: selectedMenus[i].kode_produk
});
}
}
var data = {
_token: "{{ csrf_token() }}",
kodeProduk: kodeProduk
};
$.ajax({
url: "{{ route('transaksi.cari-paket') }}",
method: "POST",
data: data,
success: function(result) {
var dataParse = JSON.stringify(result);
// Replace karakter kutipan ganda dengan HTML entities
var htmlEntitiesData = dataParse.replace(/\"/g, '&quot;');
// Tampilkan hasil
var show_modal_paket = document.getElementById('show-modal-paket');
show_modal_paket.innerHTML += `
<div class="card card-warning card-outline btn"
onclick="aadMenu(${htmlEntitiesData}, true);">
<div class="card-header">
<h5 class="card-title m-0" id="nama-produk-modal">
${result.nama_produk ?? ''}
</h5>
</div>
<div class="card-body">
<div class="col-md-12">
<img style="width: 80%;height: 80%;object-fit: cover;"
src="${result.gambar_produk}"
alt="${result.nama_produk ?? ''}">
<div class="col-md-12 mt-1"
style="align-items: center;align-content: center;">
<h5>
Rp ${result.harga_produk ?? ''}
</h5>
</div>
<div class="col-md-12">
<a class="col-6 btn btn-warning" id="ordered-menus">Pesan</a>
</div>
</div>
</div>
</div>
`;
$('#modal-default').modal('show');
},
error: function(xhr, status, error) {
toastr.error(xhr.responseJSON.message, 'Error', {
timeOut: 3000
});
// console.log(xhr.responseJSON);
// console.log(status);
// console.log(error);
}
})
}
// clear selected menus
function clearSelected() {
// console.log('batal');
for (var i = 0; i < selectedMenus.length; i++) {
changeOrderedMenus(selectedMenus[i].id, 'batal');
menu_terpilih.innerHTML = ` `;
}
selectedMenus = [];
}
function changeTab(tabId) {
// Hide all tabs
var tabContents = document.getElementsByClassName('vert-tab-content');
for (var i = 0; i < tabContents.length; i++) {
tabContents[i].classList.remove('text-left', 'show', 'active');
}
var navLinks = document.getElementsByClassName('vert-nav-content');
for (var i = 0; i < navLinks.length; i++) {
navLinks[i].classList.remove('active');
// aria-selected
navLinks[i].setAttribute('aria-selected', false);
}
document.getElementById(tabId).classList.add('text-left', 'show', 'active');
document.getElementById(tabId + '-tab').classList.add('active');
// aria-selected
document.getElementById(tabId + '-tab').setAttribute('aria-selected', true);
}
function inputNum(inputElement) {
// Hapus karakter selain angka
inputElement.value = inputElement.value.replace(/[^0-9]/g, '');
if (inputElement.value == '') {
inputElement.value = 0;
}
}
</script>
<!-- Action save to storage -->
<script>
function OrderStorage() {
var table = document.getElementById("order-menus");
var orderMenus = [];
for (var i = 1, row; row = table.rows[i]; i++) {
var id = row.getAttribute('data-id');
var nama = row.getAttribute('data-nama');
var qty = row.getAttribute('data-qty');
var diskonSatuan = row.getAttribute('data-diskon-satuan');
var harga = row.getAttribute('data-harga');
var total = row.getAttribute('data-total');
if (diskonSatuan != 0 && diskonSatuan != null && diskonSatuan != undefined) {
total = total - (total * (diskonSatuan / 100));
} else {
total = total
}
if (id != null || qty != null || total != null) {
orderMenus.push({
id: id,
nama: nama,
qty: qty,
diskonSatuan: diskonSatuan,
harga: harga,
total: total,
keterangan: document.getElementsByName('keterangan_satuan')[i - 1].value,
status_pesanan_dinein: document.getElementsByName('status_pesanan_dinein')[i - 1].value
});
}
}
let json = JSON.stringify({
name: 'Data Pesanan',
nama_pemesan: document.getElementsByName('nama-pemesan')[0].value,
nomor_pemesan: document.getElementsByName('nomor-pemesan')[0].value,
nomor_meja: document.getElementsByName('nomor-meja')[0].value,
keterangan_pesanan: document.getElementsByName('keterangan-pesanan')[0].value,
orderMenus
});
localStorage.setItem('OrderStorage', json);
}
function showOrderStorage() {
if (localStorage.OrderStorage === undefined || localStorage.OrderStorage === null) {
return false;
}
let data = JSON.parse(localStorage.OrderStorage);
document.getElementsByName('nama-pemesan')[0].value = data.nama_pemesan ?? '',
document.getElementsByName('nomor-pemesan')[0].value = data.nomor_pemesan,
document.getElementsByName('nomor-meja')[0].value = data.nomor_meja,
document.getElementsByName('keterangan-pesanan')[0].value = data.keterangan_pesanan,
// console.log(data);
data.orderMenus.forEach((i, key) => {
globalId++;
$('#tbody-order-menus').append(`
<tr id="row-${i.id}" data-id="${i.id}" data-row-id="${globalId}" data-nama="${i.nama}" data-harga="${i.harga}" data-qty="${i.qty}" data-diskon-satuan="${i.diskonSatuan}" data-total="${i.harga * i.qty}">
<td>
${i.nama}
<br>
${(parseInt(i.diskonSatuan) > 0) ? '<small class="text-primary"><s>Rp. ' + (i.harga * i.qty) + '</s></small> | <small class="text-danger">Rp. ' + ((i.harga * i.qty) - ((i.harga * i.qty) * (i.diskonSatuan / 100))) + '</small>' : '<small class="text-primary">Rp. ' + (i.harga * i.qty) + '</small>'}
<div class="input-group input-group-sm mt-1">
<input type="text" name="keterangan_satuan" class="form-control rounded-3" data-keterangan="${i.keterangan}" placeholder="Keterangan.." value="${i.keterangan}">
</div>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="decrementMenu(${globalId}, '${i.nama}')"><b>-</b></button>
</span>
<input type="text" name="bayar" class="form-control rounded-3" readonly value="${i.qty}">
<span class="input-group-append">
<button type="button" class="btn btn-default btn-xs btn-flat" onclick="incrementMenu(${globalId}, '${i.nama}')">+</button>
</span>
</div>
<select name="status_pesanan_dinein" id="status_pesanan_dinein" class="custom-select-mystyle form-control-border">
<option value="2" ${(i.status_pesanan_dinein == 2) ? 'selected' : ''}>Dine In</option>
<option value="0" ${(i.status_pesanan_dinein == 0) ? 'selected' : ''}>Take Away</option>
</select>
</td>
<td class="text-center">
<div class="input-group input-group-sm">
<input type="number" name="diskon_satuan" oninput="inputNum(this)" class="form-control rounded-3" value="${i.diskonSatuan}" onkeyup="diskonSatuanMenu(${globalId}, '${i.nama}', this.value)">
</div>
</td>
<td class="text-center">
<button class="btn btn-danger btn-sm" onclick="deleteMenu(${globalId})">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
`);
});
calculateTotal();
}
showOrderStorage();
setInterval(doTheInterval, 1000);
function doTheInterval() {
if (theInterval === true) {
console.log('interval');
// show time every second
OrderStorage();
} else {
console.log('no interval');
localStorage.removeItem('OrderStorage');
}
}
</script>
@endpush