« Back to History
yarn_consumption_report_by_beam.php
|
20260721_154034.php
Initial Bulk Import
Copy Code
<?php require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('yarn_consumption_report'); $pdo = $ctx['pdo']; $company_id = (int)$ctx['company_id']; require_once __DIR__ . '/partials/header.php'; function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } /* ================= FILTER ================= */ $from = $_GET['from'] ?? date('Y-m-01'); $to = $_GET['to'] ?? date('Y-m-d'); /* ================= BEAM DATA ================= */ $sql = " SELECT quality_id, COUNT(*) total_beam, SUM(meter) total_meter FROM company_beam_stock WHERE company_id = :cid AND warp_date BETWEEN :f AND :t GROUP BY quality_id "; $stm = $pdo->prepare($sql); $stm->execute([ ':cid'=>$company_id, ':f'=>$from, ':t'=>$to ]); $beam_data = []; while($r = $stm->fetch(PDO::FETCH_ASSOC)){ $beam_data[$r['quality_id']] = $r; } /* ================= BEAM QUALITY ================= */ $sql = "SELECT id, name FROM beam_qualities WHERE company_id=:cid"; $stm = $pdo->prepare($sql); $stm->execute([':cid'=>$company_id]); $qnames = []; while($r=$stm->fetch(PDO::FETCH_ASSOC)){ $qnames[$r['id']] = $r['name']; } /* ================= YARN DATA ================= */ $sql = " SELECT beam_quality_id, yarn_type, color, denier, weight FROM beam_quality_yarns "; $yarns = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC); $yarn_map = []; foreach($yarns as $y){ $yarn_map[$y['beam_quality_id']][] = $y; } /* ================= SUMMARY ARRAY ================= */ $summary = []; ?> <div class="container-fluid mt-3"> <div class="card p-3 mb-3"> <h4>Beam Based Yarn Consumption Report</h4> <form method="get" class="row g-3"> <div class="col-md-3"> <label>From</label> <input type="date" name="from" value="<?=h($from)?>" class="form-control"> </div> <div class="col-md-3"> <label>To</label> <input type="date" name="to" value="<?=h($to)?>" class="form-control"> </div> <div class="col-md-2"> <label> </label> <button class="btn btn-primary w-100">Generate</button> </div> <div class="col-md-2"> <label> </label> <button onclick="window.print()" type="button" class="btn btn-dark w-100">Print</button> </div> </form> </div> <!-- ================= DETAIL TABLE ================= --> <div class="card p-3"> <h5>Detail (Beam Quality Wise)</h5> <table class="table table-bordered table-striped"> <thead class="table-dark"> <tr> <th>Beam Quality</th> <th>Total Beam</th> <th>Total Meter</th> <th>Yarn</th> <th>Denier</th> <th>Color</th> <th>g / 100m</th> <th>Total KG</th> </tr> </thead> <tbody> <?php $grand_total = 0; foreach($beam_data as $qid => $b){ $qname = $qnames[$qid] ?? ''; $beam_count = (int)$b['total_beam']; $total_meter = (float)$b['total_meter']; if(!isset($yarn_map[$qid])){ echo "<tr> <td>$qname</td> <td>$beam_count</td> <td>$total_meter</td> <td colspan='5'>Yarn mapping missing</td> </tr>"; continue; } foreach($yarn_map[$qid] as $y){ $g_per_100m = (float)$y['weight']; /* ✅ CORRECT FORMULA */ $total_kg = ($total_meter * $g_per_100m) / 100 / 1000; $grand_total += $total_kg; /* ===== SUMMARY BUILD ===== */ $key = $y['denier'].'|'.$y['yarn_type'].'|'.$y['color']; if(!isset($summary[$key])){ $summary[$key] = [ 'denier' => $y['denier'], 'yarn_type' => $y['yarn_type'], 'color' => $y['color'], 'kg' => 0 ]; } $summary[$key]['kg'] += $total_kg; /* ===== ROW ===== */ echo "<tr> <td>$qname</td> <td>$beam_count</td> <td>".round($total_meter)."</td> <td>{$y['yarn_type']}</td> <td>{$y['denier']}</td> <td>{$y['color']}</td> <td>".round($g_per_100m,2)."</td> <td>".round($total_kg,2)."</td> </tr>"; } } ?> <tr class="table-secondary fw-bold"> <td colspan="7" class="text-end">Grand Total</td> <td><?=round($grand_total,2)?> KG</td> </tr> </tbody> </table> </div> <!-- ================= SUMMARY TABLE ================= --> <div class="card p-3 mt-3"> <h5>Summary (Denier + Yarn Type + Color)</h5> <table class="table table-bordered table-striped"> <thead class="table-dark"> <tr> <th>Denier</th> <th>Yarn Type</th> <th>Color</th> <th>Total KG</th> </tr> </thead> <tbody> <?php $sum_total = 0; foreach($summary as $s){ $sum_total += $s['kg']; echo "<tr> <td>{$s['denier']}</td> <td>{$s['yarn_type']}</td> <td>{$s['color']}</td> <td>".round($s['kg'],2)."</td> </tr>"; } ?> <tr class="table-secondary fw-bold"> <td colspan="3" class="text-end">Total</td> <td><?=round($sum_total,2)?> KG</td> </tr> </tbody> </table> </div> </div> <?php require_once __DIR__ . '/partials/footer.php'; ?>