<!-- bootstrap 4.0.0 min.js -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
<!-- Jquery 3.6.1 -->
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<!-- js jquery ui -->
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<!-- Jquery [email protected] -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
<!-- datatables js -->
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/jq-3.6.0/jszip-2.5.0/dt-1.13.1/af-2.5.1/b-2.3.3/b-colvis-2.3.3/b-html5-2.3.3/b-print-2.3.3/cr-1.6.1/date-1.2.0/fc-4.2.1/fh-3.3.1/kt-2.8.0/r-2.4.0/rg-1.3.0/rr-1.3.1/sc-2.0.7/sb-1.4.0/sp-2.1.0/sl-1.5.0/sr-1.2.0/datatables.min.js"></script>
<!-- DataTables JS -->
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/buttons/2.2.2/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/buttons/2.2.2/js/buttons.html5.min.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/buttons/2.2.2/js/buttons.print.min.js"></script>
<!-- Tambahkan plugin DataTables API sum() -->
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/plug-ins/1.13.7/api/sum().js"></script>
<!-- selectize js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.15.2/js/selectize.min.js"></script>
<!-- script ajax pencarian -->
<script src="ajax.js"></script>
<!-- script cek kupon -->
<script src="cekkupon.js"></script>
<!-- script tampil gambar -->
<script src="tampilgambar.js"></script>
<!-- script ajax pencarian -->
<script src="recomended.js"></script>
<!--sweet alert js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.33.1/sweetalert2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css">
<!-- Include Owl Carousel JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<script>
$(document).ready(function(){
$('.owl-carousel').owlCarousel({
loop:true,
margin:10,
autoplay:true, // Mengaktifkan autoplay
autoplayTimeout:3000, // Waktu (ms) antara transisi
autoplayHoverPause:true, // Jeda autoplay saat dihover
nav:false, // Menyembunyikan navigasi (tombol next dan prev)
responsive:{
0:{
items:1
},
600:{
items:1
},
1000:{
items:1
}
}
});
});
</script>
<?php
// Default year
$defaultYear = date('Y');
// Check if the form is submitted
if (isset($_POST['sortmontly'])) {
// Jika formulir dikirim, gunakan nilai dari input 'selectedYear'
$year = htmlspecialchars($_POST['selectedYear']);
} else {
// Jika formulir tidak dikirim, gunakan tahun default
$year = $defaultYear;
}
?>
<!--BAGIAN UNTUK CHART BULANAN YANG AUTO UPDATE (PENJUALAN) -->
<?php
// Inisialisasi array untuk menyimpan hasil per bulan
$penjualan = array();
// Loop untuk setiap bulan dari Januari (1) hingga Desember (12)
for ($month = 1; $month <= 12; $month++) {
$d_invoice_sum = mysqli_query($kon, "SELECT SUM(total) as total_sum FROM invoice WHERE resto='$_SESSION[resto]' AND status='selesai' AND YEAR(tanggal) = '$year' AND MONTH(tanggal) = '$month' ORDER BY id DESC ");
$l_invoice_sum = mysqli_fetch_array($d_invoice_sum);
$total_sum = $l_invoice_sum['total_sum'];
$penjualan[] = $total_sum;
}
?>
<?php
// Inisialisasi array untuk menyimpan hasil per bulan
$pengeluaran = array();
// Loop untuk setiap bulan dari Januari (1) hingga Desember (12)
for ($month = 1; $month <= 12; $month++) {
$d_pengeluaran_sum = mysqli_query($kon, "SELECT SUM(jumlah) as total_sum FROM pengeluaran WHERE resto='$_SESSION[resto]' AND YEAR(tanggal) = '$year' AND MONTH(tanggal) = '$month' ORDER BY id DESC ");
$l_pengeluaran_sum = mysqli_fetch_array($d_pengeluaran_sum);
$total_sum = $l_pengeluaran_sum['total_sum'];
$pengeluaran[] = $total_sum;
}
?>
<?php
// Inisialisasi array untuk menyimpan hasil provit per bulan
$provitPerBulan = array();
// Loop untuk setiap bulan dari Januari (1) hingga Desember (12)
for ($month = 1; $month <= 12; $month++) {
$query = mysqli_query($kon, "
SELECT SUM(provit) as total_provit
FROM invoice
WHERE resto = '$_SESSION[resto]'
AND status='selesai'
AND YEAR(tanggal) = '$year'
AND MONTH(tanggal) = '$month'
");
$result = mysqli_fetch_array($query);
$totalProvit = $result['total_provit'] ?? 0;
$provitPerBulan[] = $totalProvit;
}
?>
<?php
// Inisialisasi array untuk menyimpan total gaji per bulan
$gajiPerBulan = array();
// Loop untuk bulan Januari (1) sampai Desember (12)
for ($month = 1; $month <= 12; $month++) {
$query = mysqli_query($kon, "
SELECT SUM(nominal) AS total_gaji
FROM gajih
WHERE YEAR(tanggal) = '$year'
AND MONTH(tanggal) = '$month'
");
$result = mysqli_fetch_assoc($query);
$totalGaji = $result['total_gaji'] ?? 0;
$gajiPerBulan[] = $totalGaji;
}
?>
<script>
var tahunSekarang = new Date().getFullYear();
var bulan = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
var penjualan = <?php echo json_encode($penjualan); ?>;
var pengeluaran = <?php echo json_encode($pengeluaran); ?>;
var provit = <?php echo json_encode($provitPerBulan); ?>;
var gaji = <?php echo json_encode($gajiPerBulan); ?>; // Data gaji per bulan
var ctx = document.getElementById('barChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: bulan,
datasets: [
{
label: 'Penjualan (bulanan)',
data: penjualan,
backgroundColor: 'blue',
},
{
label: 'Pengeluaran (bulanan)',
data: pengeluaran,
backgroundColor: 'red',
},
{
label: 'Provit (bulanan)',
data: provit,
backgroundColor: 'green',
},
{
label: 'Gaji Karyawan (bulanan)',
data: gaji,
backgroundColor: 'orange',
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
tooltip: {
callbacks: {
label: function (context) {
let value = context.parsed.y;
return 'Rp ' + value.toLocaleString('id-ID');
}
}
}
},
scales: {
y: {
beginAtZero: true
}
}
}
});
</script>
<!--BAGIAN UNTUK CHART BULANAN YANG AUTO UPDATE (PENJUALAN) -->
<!--BAGIAN UNTUK CHART BULANAN YANG AUTO UPDATE (Potongan) -->
<?php
// Inisialisasi array untuk menyimpan hasil per bulan
$diskon = array();
$kupon = array();
// Loop untuk setiap bulan dari Januari (1) hingga Desember (12)
for ($month = 1; $month <= 12; $month++) {
$d_invoice_sum = mysqli_query($kon, "SELECT SUM(jmlpotongan) as total_sum FROM invoice WHERE resto='$_SESSION[resto]' AND YEAR(tanggal) = '$year' AND MONTH(tanggal) = '$month' ORDER BY id DESC ");
$l_invoice_sum = mysqli_fetch_array($d_invoice_sum);
$total_sum = $l_invoice_sum['total_sum'];
$diskon[] = $total_sum;
}
for ($month = 1; $month <= 12; $month++) {
$d_invoice_sum = mysqli_query($kon, "SELECT SUM(jmlpotongankupon) as total_sum FROM invoice WHERE resto='$_SESSION[resto]' AND YEAR(tanggal) = '$year' AND MONTH(tanggal) = '$month' ORDER BY id DESC ");
$l_invoice_sum = mysqli_fetch_array($d_invoice_sum);
$total_sum = $l_invoice_sum['total_sum'];
$kupon[] = $total_sum;
}
for ($month = 1; $month <= 12; $month++) {
$d_voidjml = mysqli_query($kon, "SELECT COUNT(*) as total_void FROM invoice WHERE resto='$_SESSION[resto]' AND void='ya' AND YEAR(tanggal) = '$year' AND MONTH(tanggal) = '$month' ORDER BY id DESC ");
$l_voidjml = mysqli_fetch_array($d_voidjml);
$total_void = $l_voidjml['total_void'];
$void[] = $total_void;
}
?>
<script>
// Mendapatkan tahun sekarang
var tahunSekarang = new Date().getFullYear();
// Data penjualan per bulan
var bulan = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
// Data hasil query PHP untuk chart potongan diskon (merah)
var diskon = <?php echo json_encode($diskon); ?>;
// Data dummy untuk chart potongan kupon (pink)
var dataDummyKupon = <?php echo json_encode($kupon); ?>;
// Data dummy untuk chart baru (ungu)
var dataDummyHitam = <?php echo json_encode($void); ?>;
// Mengakses elemen canvas dan membuat chart
var ctx = document.getElementById('potonganChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: bulan,
datasets: [{
label: 'Potongan diskon',
data: diskon,
backgroundColor: 'red',
}, {
label: 'Potongan kupon',
data: dataDummyKupon,
backgroundColor: 'pink',
}, {
label: 'Void (total data bukan harga)',
data: dataDummyHitam,
backgroundColor: 'black',
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
</script>
<!--BAGIAN UNTUK CHART BULANAN YANG AUTO UPDATE (Potongan) -->
<!-- reqular exresion REGEX untuk semua form alias form-control bootstrap -->
<!-- <script>
const elements = document.querySelectorAll('.form-control');
elements.forEach(element => {
element.addEventListener('keyup', function() {
this.value = this.value.replace(/[^a-zA-Z0-9\s]/g, '')
.replace(/LIMIT|select|src|True|false|JOIN|UNION|FROM|Like|1=1|TABLE|DROP|TRUNCATE|delete|update|insert|into|ORDER|BY|Query|database|user|admin|hostname|tmpdir|datadir|basedir|information|schema|session_user|session|group|concat|coloum|password|0x|<script>|script|alert|function|window|iframe|document|header|location|cookie|html/gi, '');
});
});
</script> -->
<script>
$(document).ready(function () {
var table = $('#laporantable').DataTable({
dom: 'Bfrtip',
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
"footerCallback": function (row, data, start, end, display) {
var api = this.api();
// Menggunakan DataTables API sum() pada kolom keenam (indeks 5)
var total = api.column(5, { page: 'current' }).data().sum();
// Menambahkan hasil ke dalam baris footer
$(api.column(5).footer()).html('Total: ' + total);
}
});
});
</script>
<!-- <script>
$(document).ready(function () {
var table = $('#h-stoktable').DataTable({
dom: 'Bfrtip',
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
"footerCallback": function (row, data, start, end, display) {
var api = this.api();
// Menggunakan DataTables API sum() pada kolom keenam (indeks 5)
var total = api.column(5, { page: 'current' }).data().sum();
// Menambahkan hasil ke dalam baris footer
$(api.column(5).footer()).html('Total: ' + total);
}
});
});
</script> -->
<!-- laporan tabel fittur plugin button -->
<script>
$(document).ready( function () {
var table = $('#datatable').DataTable({
dom: 'Bfrtip', // menambahkan kontrol tombol
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print' // menambahkan tombol import dan cetak
],
initComplete: function(settings) {
// menambahkan event listener pada form pencarian untuk menghilangkan karakter berbahaya
$('#datatable_filter input').on('keyup', function() {
// menyaring input pencarian
var search = $(this).val().replace(/[^a-z0-9]/gi, '');
$(this).val(search);
});
}
});
});
</script>
<script>
$(document).ready( function () {
var table = $('#h-stoktable').DataTable({
dom: 'Bfrtip', // menambahkan kontrol tombol
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print' // menambahkan tombol import dan cetak
],
initComplete: function(settings) {
// menambahkan event listener pada form pencarian untuk menghilangkan karakter berbahaya
$('#datatable_filter input').on('keyup', function() {
// menyaring input pencarian
var search = $(this).val().replace(/[^a-z0-9]/gi, '');
$(this).val(search);
});
}
});
});
</script>
<script>
$(document).ready( function () {
var table = $('#keluartable').DataTable({
dom: 'Bfrtip', // menambahkan kontrol tombol
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print' // menambahkan tombol import dan cetak
],
initComplete: function(settings) {
// menambahkan event listener pada form pencarian untuk menghilangkan karakter berbahaya
$('#datatable_filter input').on('keyup', function() {
// menyaring input pencarian
var search = $(this).val().replace(/[^a-z0-9]/gi, '');
$(this).val(search);
});
}
});
});
</script>
<script>
$(document).ready( function () {
var table = $('#gajihtabel').DataTable({
dom: 'Bfrtip', // menambahkan kontrol tombol
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print' // menambahkan tombol import dan cetak
],
initComplete: function(settings) {
// menambahkan event listener pada form pencarian untuk menghilangkan karakter berbahaya
$('#datatable_filter input').on('keyup', function() {
// menyaring input pencarian
var search = $(this).val().replace(/[^a-z0-9]/gi, '');
$(this).val(search);
});
}
});
});
</script>
<script>
$(document).ready( function () {
var table = $('#karyawantabel').DataTable({
dom: 'Bfrtip', // menambahkan kontrol tombol
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print' // menambahkan tombol import dan cetak
],
initComplete: function(settings) {
// menambahkan event listener pada form pencarian untuk menghilangkan karakter berbahaya
$('#datatable_filter input').on('keyup', function() {
// menyaring input pencarian
var search = $(this).val().replace(/[^a-z0-9]/gi, '');
$(this).val(search);
});
}
});
});
</script>
<script>
$(document).ready( function () {
var table = $('#tabspoil').DataTable({
dom: 'Bfrtip', // menambahkan kontrol tombol
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print' // menambahkan tombol import dan cetak
],
initComplete: function(settings) {
// menambahkan event listener pada form pencarian untuk menghilangkan karakter berbahaya
$('#datatable_filter input').on('keyup', function() {
// menyaring input pencarian
var search = $(this).val().replace(/[^a-z0-9]/gi, '');
$(this).val(search);
});
}
});
});
</script>
<!-- jquery double membuat konflik karena itu dibuat $j -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- menampilkan nama berdasarkan no.WA -->
<script type="text/javascript">
var $j = jQuery.noConflict();
function isi_otomatis(){
var wa = $("#wa").val();
$j.ajax({
url: 'tampilkan-nama.php',
data:"wa="+wa ,
}).success(function (data) {
var json = data,
obj = JSON.parse(json);
$('#nama').val(obj.nama);
$('#email').val(obj.email);
});
}
</script>
<!-- selectize -->
<script>
$('.selectize').selectize({
plugins: ['remove_button'],
sortField: 'text'
});
</script>
<!-- format field ke rupiah -->
<script>
/* Dengan Rupiah https://codepen.io/chucky25/pen/dBevXW */
var dengan_rupiah = document.getElementById('dengan-rupiah');
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 : '');
}
</script>
<!-- uncheck radio promo -->
<script>
var allRadios = document.getElementsByName('kodepromo');
var booRadio;
var x = 0;
for(x = 0; x < allRadios.length; x++){
allRadios[x].onclick = function(){
if(booRadio == this){
this.checked = false;
booRadio = null;
}else{
booRadio = this;
}
};
}
</script>
<!-- datatables dengan ajax -->
<!-- https://datatables.net/reference/api/ajax.reload() -->
<script>
var table = $('.datatable-ajax').DataTable( {
ajax: 'data-invoice.php',
columns: [
{ data: 'id_trx'},
{ data: 'status'},
{ data: 'button'}
],
});
setInterval( function () {
table.ajax.reload();
}, 3000 );
</script>
<!-- ajax hal. orderan -->
<script>
function loadlink(){
$('#orderan').load('isi-orderan.php',function () {
$(this).unwrap();
});
}
loadlink(); // This will run on page load
setInterval(function(){
loadlink() // this will run after every 5 seconds
}, 3000);
</script>
<!-- ajax kondisi button print sudah di klik -->
<script>
var buttonku = document.getElementById('buttonku');
var kondisi = document.getElementById('kondisi');
//tambahkan event ketika keyword di ketik
buttonku.addEventListener('click', function() {
//buat oject ajax var (xhr) bebas mau apa aja nama variable nya
var xhr =new XMLHttpRequest();
//cek kesiapan ajax 4 (ajax ready) 200 (status server ok)
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
//tampilkan data dari file.php
kondisi.innerHTML = xhr.responseText;
}
}
//ekseskusi ajax metode GET & ambil isi dari file.php sambil mengirim value dari inputan field keyword
xhr.open('GET', 'kondisi.php', true);
xhr.send();
});
</script>
<script>
const button = document.getElementById("buttonku");
const sound = new Audio("bellku.mp3");
button.addEventListener("click", function() {
sound.play();
});
</script>