footer.php PHP
<!-- 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>