TIF_NGANJUK_E41212020/admin/laporan/bulanan.php

209 lines
8.8 KiB
PHP

<?php
include '../template/template1.php';
include '../template/header.php';
include '../template/sidebar.php';
function formatTanggalIndonesia($tanggal) {
return date('d-m-Y', strtotime($tanggal));
}
function formatBulanIndonesia($bulan) {
$namaBulan = [
'01' => 'Januari', '02' => 'Februari', '03' => 'Maret', '04' => 'April',
'05' => 'Mei', '06' => 'Juni', '07' => 'Juli', '08' => 'Agustus',
'09' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Desember'
];
return $namaBulan[$bulan] ?? "Tidak Diketahui";
}
// Get month and year from form submission or default to current month
$bulan = isset($_GET['bulan']) ? $_GET['bulan'] : date('m');
$tahun = isset($_GET['tahun']) ? $_GET['tahun'] : date('Y');
// Set tanggal awal dan akhir berdasarkan bulan dan tahun yang dipilih
$tanggal_awal = "$tahun-$bulan-01";
$tanggal_akhir = date('Y-m-t', strtotime($tanggal_awal));
// Query untuk mengambil jumlah transaksi dan total pendapatan per hari dalam periode yang dipilih
$query_chart = "SELECT DATE(tanggal_order) as tanggal, COUNT(id_order) as total_transaksi, SUM(total_harga) as total_pendapatan
FROM orders
WHERE tanggal_order BETWEEN ? AND ? AND status_order = 'selesai'
GROUP BY DATE(tanggal_order)
ORDER BY DATE(tanggal_order)";
$stmt_chart = $conn->prepare($query_chart);
$stmt_chart->bind_param("ss", $tanggal_awal, $tanggal_akhir);
$stmt_chart->execute();
$result_chart = $stmt_chart->get_result();
$data_chart = [];
while ($row = $result_chart->fetch_assoc()) {
$data_chart[] = [
'tanggal' => formatTanggalIndonesia($row['tanggal']),
'total_transaksi' => $row['total_transaksi'],
'total_pendapatan' => $row['total_pendapatan']
];
}
$query = "SELECT id_order, id_pembeli, metode_pembayaran, total_harga, status_order, alamat, tanggal_order
FROM orders
WHERE tanggal_order BETWEEN ? AND ? AND status_order = 'selesai'
ORDER BY tanggal_order DESC";
$stmt = $conn->prepare($query);
$stmt->bind_param("ss", $tanggal_awal, $tanggal_akhir);
$stmt->execute();
$result = $stmt->get_result();
?>
<main id="main" class="main">
<div class="pagetitle">
<h1>Laporan Bulanan</h1>
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../index.php">Home</a></li>
<li class="breadcrumb-item active">Laporan Bulanan</li>
</ol>
</nav>
</div>
<div class="card mt-2">
<div class="card-body">
<h5 class="card-title">Data Transaksi Bulanan</h5>
<!-- Form untuk memilih bulan dan tahun -->
<form method="GET" class="row g-3 mb-4">
<div class="col-md-4">
<label for="bulan" class="form-label">Bulan</label>
<select class="form-select" id="bulan" name="bulan">
<?php
$bulan_list = [
'01' => 'Januari', '02' => 'Februari', '03' => 'Maret', '04' => 'April',
'05' => 'Mei', '06' => 'Juni', '07' => 'Juli', '08' => 'Agustus',
'09' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Desember'
];
foreach ($bulan_list as $key => $value) {
$selected = ($key == $bulan) ? 'selected' : '';
echo "<option value='$key' $selected>$value</option>";
}
?>
</select>
</div>
<div class="col-md-4">
<label for="tahun" class="form-label">Tahun</label>
<select class="form-select" id="tahun" name="tahun">
<?php
$tahun_sekarang = date('Y');
for ($i = $tahun_sekarang; $i >= $tahun_sekarang - 5; $i--) {
$selected = ($i == $tahun) ? 'selected' : '';
echo "<option value='$i' $selected>$i</option>";
}
?>
</select>
</div>
<div class="col-md-4 d-flex align-items-end gap-2">
<button type="submit" class="btn btn-primary">Tampilkan</button>
<a href="cetak_bulanan.php?bulan=<?php echo $bulan; ?>&tahun=<?php echo $tahun; ?>" target="_blank" class="btn btn-primary">Cetak</a>
</div>
</form>
<div class="mb-3">
<span class="badge bg-info">Periode: <?php echo formatBulanIndonesia($bulan) . " " . $tahun; ?></span>
</div>
<canvas id="chartLaporan" width="400" height="200"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
var ctx = document.getElementById('chartLaporan').getContext('2d');
var chartLaporan = new Chart(ctx, {
type: 'line',
data: {
labels: <?php echo json_encode(array_column($data_chart, 'tanggal')); ?>,
datasets: [
{
label: 'Total Transaksi',
data: <?php echo json_encode(array_column($data_chart, 'total_transaksi')); ?>,
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 2,
fill: false,
tension: 0.3
},
{
label: 'Total Pendapatan',
data: <?php echo json_encode(array_column($data_chart, 'total_pendapatan')); ?>,
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 2,
fill: false,
tension: 0.3
}
]
},
options: {
responsive: true,
plugins: {
tooltip: {
callbacks: {
label: function(context) {
let label = context.dataset.label || '';
if (label) {
label += ': ';
}
label += context.raw.toLocaleString();
return label;
}
}
}
},
scales: {
x: {
ticks: {
autoSkip: true,
maxTicksLimit: 10
}
},
y: {
beginAtZero: true
}
}
}
});
</script>
<table class="table">
<thead>
<tr>
<th>No</th>
<th>ID Order</th>
<th>ID Pembeli</th>
<th>Metode Pembayaran</th>
<th>Total Harga</th>
<th>Alamat</th>
<th>Tanggal Order</th>
</tr>
</thead>
<tbody>
<?php $no = 1; while ($row = $result->fetch_assoc()) { ?>
<tr>
<td><?= $no++; ?></td>
<td><?= $row['id_order']; ?></td>
<td><?= $row['id_pembeli']; ?></td>
<td><?= $row['metode_pembayaran']; ?></td>
<td>Rp <?= number_format($row['total_harga'], 0, ',', '.'); ?></td>
<td><?= substr($row['alamat'], 0, 10); ?><?= strlen($row['alamat']) > 30 ? '...' : '' ?></td>
<td><?= formatTanggalIndonesia($row['tanggal_order']); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</main>
<?php
$stmt->close();
$stmt_chart->close();
$conn->close();
include '../template/footer.php';
include '../template/template2.php';
?>