resto-dhepot/resources/views/pages/admin/penjualan/js.blade.php

414 lines
18 KiB
PHP

@push('scripts')
<script src="{{ asset('assets/datatables/datatables.min.js') }}"></script>
<script src="{{ asset('assets/plugins/sweetalert2/sweetalert2.min.js') }}"></script>
<script src="{{ asset('assets/plugins/select2/js/select2.full.min.js') }}"></script>
<script>
// $('.select2').select2();
$(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('penjualan.getDataPenjualan') }}',
data: function(d) {
d.filter_tanggal_1 = $("#filter_tanggal_1").val();
d.filter_tanggal_2 = $("#filter_tanggal_2").val();
d.akun_coa = $("#jenis_coa").val();
}
},
columns: [{
data: 'nomor',
name: 'nomor',
orderable: false,
className: 'text-center'
},
{
data: 'kode_pesanan',
name: 'kode_pesanan'
},
{
data: 'nama_pemesan',
name: 'nama_pemesan'
},
{
data: 'jenis_pembayarannya',
name: 'jenis_pembayarannya'
},
{
data: 'created_at',
name: 'created_at'
},
{
data: 'total_pesanan',
name: 'total_pesanan',
className: 'text-center'
},
{
data: 'total_bayar',
name: 'total_bayar',
className: 'text-right',
render: function(data) {
// change to IDR
return 'Rp. ' + data.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
}
},
{
data: 'diskon_persen',
name: 'diskon_persen',
className: 'text-center',
render: function(data) {
return data ?? 0;
}
},
{
data: 'grand_total',
name: 'grand_total',
className: 'text-right',
render: function(data) {
// change to IDR
return 'Rp. ' + data.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
}
},
{
data: 'ubah',
name: 'ubah',
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);
// GrandTotal over all pages
// Total over this page
pageTotal = api
.column(6, {
page: 'current'
})
.data()
.reduce((a, b) => intVal(a) + intVal(b), 0);
// total pesanan
totalPesanan = api
.column(5)
.data()
.reduce((a, b) => intVal(a) + intVal(b), 0);
// Update footer
api.column(5).footer().innerHTML = totalPesanan + ' Item';
api.column(6).footer().innerHTML =
'Rp. ' + pageTotal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
api.column(8).footer().innerHTML =
'Rp. ' + totalAll.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
}
})
$('#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>
function print(id) {
var url = "{{ route('penjualan.print', '') }}/" + id + '?print=true'
// window.open(url, '_blank');
window.open(url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
}
</script>
<script>
function detail(id_pesanan) {
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "POST",
url: "{{ route('penjualan.getDataDetailPenjualan') }}",
data: {
id_pesanan: id_pesanan,
},
success: function(result) {
$('#view_penjualan_detail').empty()
if (result.status) {
const data = result.data
let nomor = 1
// console.log(data);
data.forEach(x => {
let tr = $('<tr></tr>')
tr.append('<td class="text-center">' + nomor + '</td>')
tr.append('<td>' + x.nama_produk + '</td>')
tr.append('<td class="text-center">' + (x.keterangan_produk ?? '-') +
'</td>')
tr.append('<td>' + formatRupiah(x.harga_produk) + '</td>')
tr.append('<td class="text-center">' + x.jumlah_produk + '</td>')
tr.append('<td class="text-center">' + x.diskon_persen + '%</td>')
tr.append('<td>' + formatRupiah(x.total_harga_produk) + '</td>')
if (x.status_pesanan != 3) {
tr.append(
'<td class="text-center"><button class="btn btn-danger btn-sm cancelOrderDetailBtn" data-id="' +
x.id + '" data-produk="' + x.nama_produk +
'">cancel</button></td>')
} else {
tr.append(
'<td class="text-center"><button class="btn btn-warning btn-sm disabled" data-id="' +
x.id + '" data-produk="' + x.nama_produk +
'">tercancel</button></td>')
}
// cetakStruk
$('#cetakStruk').attr('onclick', 'print(' + result.pesanan.id + ')')
$('#view_penjualan_detail').append(tr)
nomor++
})
// add footer
let tfoot = $('<tr></tr>')
tfoot.append('<td colspan="6" class="text-right font-weight-bold">Total</td>')
tfoot.append('<td>' + formatRupiah(result.pesanan.grand_total) + '</td>')
tfoot.append('<td colspan="2"></td>')
$('#view_penjualan_detail_tfoot').empty().append(tfoot)
// set attribute to label
$('#kode_pesanan').text('Kode Pesanan: ' + result.pesanan.kode_pesanan)
$('#nama_pemesan').text('Nama Pemesan: ' + result.pesanan.nama_pemesan)
$('#nomor_meja').text('Nomor Meja: ' + result.pesanan.nomor_meja)
$('#urutan_pesanan').text('Urutan Pesanan: ' + result.pesanan.nomor_antrian)
$('#tanggal_pesan').text('Tanggal Pesan: ' + result.pesanan.tanggal_pesanan)
$('#total_pesanan').text('Total Pesanan: ' + result.pesanan.total_pesanan + ' Item')
$('#sub_total_pesanan').text('Sub Total: ' + formatRupiah(result.pesanan.total_bayar))
if (result.pesanan.diskon_persen == null) {
result.pesanan.diskon_persen = 0
}
$('#diskon_persen_pesanan').text('Diskon(%): ' + result.pesanan.diskon_persen + '%')
$('#grand_total_pesanan').text('Grand Total: ' + formatRupiah(result.pesanan
.grand_total))
// attach attribute to button
$('#cancelPesanan').attr('data-id', result.pesanan.id)
$('#cancelPesanan').attr('data-kode', result.pesanan.kode_pesanan)
$('#cancelPesanan').attr('data-nama', result.pesanan.nama_pemesan)
// attach a function to button
$('#cancelPesanan').attr('onclick', 'cancelPesanan(' + result.pesanan.id + ', "' +
result.pesanan.kode_pesanan + '", "' + result.pesanan.nama_pemesan + '")')
}
}
})
$('#modal_detail_penjualan').modal('show')
}
</script>
<script>
function formatRupiah(angka) {
var bilangan = parseInt(angka);
// Cek apakah bilangan negatif atau positif
var minus = "";
if (bilangan < 0) {
minus = "-";
bilangan = Math.abs(bilangan);
}
// Konversi angka menjadi format ribuan dengan menambahkan titik
var reverse = bilangan.toString().split("").reverse().join("");
var ribuan = reverse.match(/\d{1,3}/g);
var hasil = ribuan.join(".").split("").reverse().join("");
// Gabungkan hasil dengan simbol rupiah
var rupiah = "Rp " + minus + hasil;
return rupiah;
}
$(document).on('click', '.cancelOrderBtn', function() {
// get arttibute data-kode_pesanan from button
let id = $(this).attr('data-id');
let kode_pesanan = $(this).attr('data-kode_pesanan');
let nama_pemesanan = $(this).attr('data-nama_pemesan');
var text = "Membatalkan pesanan dengan data <br> Kode Pesanan: " + kode_pesanan +
" <br> Nama Pemesan: " +
nama_pemesanan +
" ?";
Swal.fire({
title: 'Apakah anda yakin?',
html: text,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Hapus!',
cancelButtonText: 'Batal'
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "DELETE",
url: "{{ route('penjualan.cancel') }}",
data: {
_token: "{{ csrf_token() }}",
id: id
},
success: function(result) {
console.log(result);
if (result.status) {
Swal.fire(
'Berhasil!',
result.message,
'success'
)
$('#tabelku').DataTable().ajax.reload();
} else {
Swal.fire(
'Gagal!',
result.message,
'error'
)
}
}
})
}
})
})
$(document).on('click', '.cancelOrderDetailBtn', function() {
// get arttibute data-kode_pesanan from button
let id = $(this).attr('data-id');
let produk = $(this).attr('data-produk');
var text = "Membatalkan pesanan dengan data <br> Menu Pesanan: " + produk +
" ?";
Swal.fire({
title: 'Apakah anda yakin?',
html: text,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Hapus!',
cancelButtonText: 'Batal'
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "DELETE",
url: "{{ route('penjualan.cancelDetail') }}",
data: {
_token: "{{ csrf_token() }}",
id: id
},
success: function(result) {
console.log(result);
if (result.status) {
Swal.fire(
'Berhasil!',
result.message,
'success'
)
$('#tabelku').DataTable().ajax.reload();
} else {
Swal.fire(
'Gagal!',
result.message,
'error'
)
}
}
})
}
})
})
function cancelPesanan(id, kode, nama) {
var text = "Membatalkan pesanan dengan data Kode Pesanan: " + kode +
" Nama Pemesan: " +
nama +
" ?";
Swal.fire({
title: 'Apakah anda yakin?',
text: text,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Hapus!',
cancelButtonText: 'Batal'
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "DELETE",
url: "{{ route('penjualan.cancel') }}",
data: {
_token: "{{ csrf_token() }}",
id: id
},
success: function(result) {
if (result.status) {
Swal.fire(
'Berhasil!',
result.message,
'success'
)
$('#modal_detail_penjualan').modal('hide');
$('#tabelku').DataTable().ajax.reload();
} else {
Swal.fire(
'Gagal!',
result.message,
'error'
)
}
}
})
}
})
}
// // cetak_laporan
// $('#cetak_laporan').on('click', function() {
// let filter_tanggal_1 = $("#filter_tanggal_1").val()
// let filter_tanggal_2 = $("#filter_tanggal_2").val()
// if (filter_tanggal_1 == "" || filter_tanggal_2 == "") {
// alert("Input pencarian tidak boleh kosong")
// } else {
// $.ajax({
// url: "{{ route('penjualan.laporan') }}",
// type: "POST",
// xhrFields: {
// responseType: 'blob' // Menggunakan responseType 'blob' untuk menerima data sebagai blob
// },
// dataType: 'native',
// data: {
// _token: "{{ csrf_token() }}",
// filter_tanggal_1: filter_tanggal_1,
// filter_tanggal_2: filter_tanggal_2
// },
// success: function(result) {
// console.log(result);
// var link = document.createElement('a');
// link.href = window.URL.createObjectURL(blob);
// link.download = "Laporan_Penjualan.pdf";
// link.click();
// }
// })
// }
// })
</script>
@endpush