414 lines
18 KiB
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
|