TIF_NGANJUK_E41212020/admin/laporan/mingguan.php

177 lines
7.5 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));
}
// Get date range from form submission or default to last 7 days
$tanggal_awal = isset($_GET['tanggal_awal']) ? $_GET['tanggal_awal'] : date('Y-m-d', strtotime('-7 days'));
$tanggal_akhir = isset($_GET['tanggal_akhir']) ? $_GET['tanggal_akhir'] : date('Y-m-d');
// Query untuk mengambil jumlah transaksi dan total pendapatan per hari dalam 1 minggu terakhir
$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 Mingguan</h1>
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../index.php">Home</a></li>
<li class="breadcrumb-item active">Laporan Mingguan</li>
</ol>
</nav>
</div>
<div class="card mt-2">
<div class="card-body">
<h5 class="card-title">Data Transaksi Mingguan</h5>
<!-- Form untuk memilih rentang tanggal -->
<form method="GET" class="row g-3 mb-4">
<div class="col-md-4">
<label for="tanggal_awal" class="form-label">Tanggal Awal</label>
<input type="date" class="form-control" id="tanggal_awal" name="tanggal_awal" value="<?php echo $tanggal_awal; ?>">
</div>
<div class="col-md-4">
<label for="tanggal_akhir" class="form-label">Tanggal Akhir</label>
<input type="date" class="form-control" id="tanggal_akhir" name="tanggal_akhir" value="<?php echo $tanggal_akhir; ?>">
</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_mingguan.php?tanggal_awal=<?php echo $tanggal_awal; ?>&tanggal_akhir=<?php echo $tanggal_akhir; ?>" target="_blank" class="btn btn-primary">Cetak</a>
</div>
</form>
<div class="mb-3">
<span class="badge bg-info">Periode: <?php echo formatTanggalIndonesia($tanggal_awal) . " - " . formatTanggalIndonesia($tanggal_akhir); ?></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: 7
}
},
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';
?>