« Back to History
va_send_report.php
|
20260721_154033.php
Initial Bulk Import
Copy Code
<?php require_once __DIR__ . '/modules/auth/page_acl.php'; // Yahan access control ke liye appropriate key daalein, default: 'va_send_report' $ctx = page_require_access('va_send_report'); $pdo = $ctx['pdo']; $company_id = (int)$ctx['company_id']; /* ===== FILTER LOGIC ===== */ $from_date = $_GET['from_date'] ?? date('Y-m-01'); $to_date = $_GET['to_date'] ?? date('Y-m-d'); // By default "Date" aur "Party" wise summary dikhane ke liye condition $is_first_load = empty($_GET); $group_date = isset($_GET['group_date']) ? 1 : ($is_first_load ? 1 : 0); $group_party = isset($_GET['group_party']) ? 1 : ($is_first_load ? 1 : 0); $group_quality = isset($_GET['group_quality']) ? 1 : 0; /* ===== QUERY BUILDER ===== */ $selects = []; $groups = []; $orders = []; if ($group_date) { $selects[] = "v.send_date"; $groups[] = "v.send_date"; $orders[] = "v.send_date DESC"; } if ($group_party) { $selects[] = "v.party_name"; $groups[] = "v.party_name"; $orders[] = "v.party_name ASC"; } if ($group_quality) { $selects[] = "q.quality_name"; $groups[] = "v.quality"; // Group by ID for accuracy, but display Name $orders[] = "q.quality_name ASC"; } $is_summary = !empty($groups); $params = [':cid' => $company_id, ':f' => $from_date, ':t' => $to_date]; $where_sql = "v.company_id = :cid AND v.send_date BETWEEN :f AND :t"; if ($is_summary) { // Summary Mode $select_sql = implode(', ', $selects) . ", SUM(v.pcs) as total_pcs"; $group_sql = "GROUP BY " . implode(', ', $groups); $order_sql = "ORDER BY " . implode(', ', $orders); } else { // Detail Mode (Agar koi grouping select nahi ki) $select_sql = "v.send_date, v.challan_no, v.party_name, q.quality_name, v.pcs as total_pcs, v.remark"; $group_sql = ""; $order_sql = "ORDER BY v.send_date DESC, v.id DESC"; } $sql = "SELECT $select_sql FROM va_send_entry v LEFT JOIN fabric_quality_master q ON q.id = v.quality WHERE $where_sql $group_sql $order_sql"; $stmt = $pdo->prepare($sql); $stmt->execute($params); $records = $stmt->fetchAll(PDO::FETCH_ASSOC); $grand_total_pcs = 0; require_once __DIR__ . '/partials/header.php'; ?> <div class="container-fluid mt-4"> <div class="card p-3 mb-3 border-0 shadow-sm bg-light"> <form method="get" class="row g-3 align-items-end"> <div class="col-md-2"> <label class="small fw-bold text-muted">From Date</label> <input type="date" name="from_date" value="<?= $from_date ?>" class="form-control form-control-sm"> </div> <div class="col-md-2"> <label class="small fw-bold text-muted">To Date</label> <input type="date" name="to_date" value="<?= $to_date ?>" class="form-control form-control-sm"> </div> <div class="col-md-5"> <label class="small fw-bold text-muted d-block mb-2">Summary Grouping (Select Multiple)</label> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" name="group_date" id="group_date" value="1" <?= $group_date ? 'checked' : '' ?>> <label class="form-check-label fw-bold text-primary" for="group_date">Date Wise</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" name="group_party" id="group_party" value="1" <?= $group_party ? 'checked' : '' ?>> <label class="form-check-label fw-bold text-success" for="group_party">Party Wise</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" name="group_quality" id="group_quality" value="1" <?= $group_quality ? 'checked' : '' ?>> <label class="form-check-label fw-bold text-danger" for="group_quality">Quality Wise</label> </div> </div> <div class="col-md-3 d-flex gap-2"> <button type="submit" class="btn btn-dark btn-sm w-100 fw-bold">GENERATE REPORT</button> <a href="va_send_report.php" class="btn btn-outline-secondary btn-sm fw-bold">RESET</a> </div> </form> </div> <div class="card p-3 border-0 shadow-sm"> <div class="d-flex justify-content-between align-items-center mb-3"> <h5 class="m-0 text-primary fw-bold"> <?= $is_summary ? 'VA Send Summary Report' : 'VA Send Detailed Report' ?> </h5> <span class="badge bg-secondary p-2">Period: <?= date('d-m-Y', strtotime($from_date)) ?> to <?= date('d-m-Y', strtotime($to_date)) ?></span> </div> <div class="table-responsive"> <table class="table table-bordered table-hover align-middle"> <thead class="table-dark"> <tr> <th style="width: 50px;" class="text-center">#</th> <?php if ($group_date || !$is_summary): ?> <th>Date</th> <?php endif; ?> <?php if (!$is_summary): ?> <th>Challan No</th> <?php endif; ?> <?php if ($group_party || !$is_summary): ?> <th>Party Name</th> <?php endif; ?> <?php if ($group_quality || !$is_summary): ?> <th>Quality</th> <?php endif; ?> <th class="text-end" style="width: 150px;">Total PCS</th> <?php if (!$is_summary): ?> <th>Remark</th> <?php endif; ?> </tr> </thead> <tbody> <?php if (empty($records)): ?> <tr> <td colspan="10" class="text-center text-muted fw-bold py-4">No records found for the selected criteria.</td> </tr> <?php else: ?> <?php foreach ($records as $index => $row): $pcs = (float)$row['total_pcs']; $grand_total_pcs += $pcs; ?> <tr> <td class="text-center fw-bold text-muted"><?= $index + 1 ?></td> <?php if ($group_date || !$is_summary): ?> <td class="fw-bold"><?= date('d-m-Y', strtotime($row['send_date'])) ?></td> <?php endif; ?> <?php if (!$is_summary): ?> <td class="text-primary fw-bold"><?= htmlspecialchars($row['challan_no']) ?></td> <?php endif; ?> <?php if ($group_party || !$is_summary): ?> <td class="text-success fw-bold"><?= htmlspecialchars($row['party_name']) ?></td> <?php endif; ?> <?php if ($group_quality || !$is_summary): ?> <td class="text-danger fw-bold"><?= htmlspecialchars($row['quality_name']) ?></td> <?php endif; ?> <td class="text-end fw-bold" style="font-size: 1.1em;"> <?= sprintf('%g', $pcs) ?> </td> <?php if (!$is_summary): ?> <td class="small text-muted"><?= htmlspecialchars($row['remark'] ?? '') ?></td> <?php endif; ?> </tr> <?php endforeach; ?> <?php endif; ?> </tbody> <?php if (!empty($records)): ?> <tfoot class="table-light"> <tr> <?php // Colspan calculation logic based on visible columns $colspan = 1; if ($group_date || !$is_summary) $colspan++; if (!$is_summary) $colspan++; if ($group_party || !$is_summary) $colspan++; if ($group_quality || !$is_summary) $colspan++; ?> <td colspan="<?= $colspan ?>" class="text-end fw-bold fs-5 text-dark">GRAND TOTAL:</td> <td class="text-end fw-bold fs-5 text-primary"><?= sprintf('%g', $grand_total_pcs) ?></td> <?php if (!$is_summary): ?> <td></td> <?php endif; ?> </tr> </tfoot> <?php endif; ?> </table> </div> </div> </div> <?php require_once __DIR__ . '/partials/footer.php'; ?>