« Back to History
beam_register.php
|
20260722_120325.php
Initial Domain Snapshot
Copy Code
<?php error_reporting(E_ALL); ini_set('display_errors', 1); require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('beam_register'); $company_id = (int)$ctx['company_id']; $pdo = $ctx['pdo']; function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } $beam_no = trim($_GET['beam_no'] ?? ''); $view = $_GET['view'] ?? ''; /* ========================================================= CARD VIEW ========================================================= */ if ($view === 'card' && $beam_no !== '') { $stmt = $pdo->prepare(" SELECT cbs.beam_no, cbs.warp_date, cbs.beam_slot, cbs.taka, cbs.tar, cbs.meter AS total_meter, bq.name AS quality_name, em.name AS warper_name FROM company_beam_stock cbs LEFT JOIN beam_qualities bq ON bq.id = cbs.beam_quality AND bq.company_id = cbs.company_id LEFT JOIN company_employee_master em ON em.id = cbs.warper_id WHERE cbs.company_id=? AND cbs.beam_no=? LIMIT 1 "); $stmt->execute([$company_id, $beam_no]); $beam = $stmt->fetch(PDO::FETCH_ASSOC); if (!$beam) die('Beam not found'); $lc = $pdo->prepare(" SELECT jt.machine_no, jt.load_date FROM beam_life_cycle blc JOIN JSON_TABLE( blc.life_events, '$[*]' COLUMNS( machine_no VARCHAR(20) PATH '$.machine_no', load_date DATE PATH '$.load_date' ) ) jt WHERE blc.company_id=? AND blc.beam_no=? ORDER BY jt.load_date "); $lc->execute([$company_id, $beam_no]); $events = $lc->fetchAll(PDO::FETCH_ASSOC); $segments = []; $cnt = count($events); for ($i = 0; $i < $cnt; $i++) { $from = $events[$i]['load_date']; $to = ($i + 1 < $cnt) ? $events[$i + 1]['load_date'] : date('Y-m-d'); $segments[] = [ 'machine_no' => $events[$i]['machine_no'], 'from_date' => $from, 'to_date' => $to ]; } $prodStmt = $pdo->prepare(" SELECT COALESCE(SUM(meter_total),0) FROM production_entry WHERE company_id=? AND machine_id=? AND entry_date BETWEEN ? AND ? "); $timeline = []; $sum_all = 0; foreach ($segments as $seg) { $prodStmt->execute([ $company_id, $seg['machine_no'], $seg['from_date'], $seg['to_date'] ]); $meter = (float)$prodStmt->fetchColumn(); $sum_all += $meter; $timeline[] = [ 'machine_no' => $seg['machine_no'], 'from_date' => $seg['from_date'], 'to_date' => $seg['to_date'], 'meter' => $meter ]; } $total = (float)$beam['total_meter']; $produced = $sum_all; $shortage = max(0, $total - $produced); $percent = $total > 0 ? round(($shortage / $total) * 100, 2) : 0; $page_title = 'Beam Card'; require_once __DIR__ . '/partials/header.php'; ?> <div class="container py-4"> <div class="card shadow-sm mb-4"> <div class="card-body"> <h4 class="text-center mb-4"> BEAM NO : <?=h($beam['beam_no'])?> | QUALITY : <?=h($beam['quality_name'])?> | WARPER : <?=h($beam['warper_name'])?> </h4> <table class="table table-bordered"> <tr><th>Warp Date</th><td><?=h($beam['warp_date'])?></td></tr> <tr><th>Beam Slot</th><td><?=h($beam['beam_slot'])?></td></tr> <tr><th>Taka</th><td><?=h($beam['taka'])?></td></tr> <tr><th>Tar</th><td><?=h($beam['tar'])?></td></tr> <tr><th>Total Meter</th><td><?=number_format($total,2)?></td></tr> <tr><th>Produced Meter</th><td><?=number_format($produced,2)?></td></tr> <tr><th>Shortage</th> <td class="fw-bold text-danger"><?=number_format($shortage,2)?></td></tr> <tr><th>Shortage %</th> <td class="fw-bold text-danger"><?=number_format($percent,2)?>%</td></tr> </table> </div> </div> <div class="card shadow-sm mb-4"> <div class="card-body"> <h5>Machine-wise Production Timeline</h5> <div class="table-responsive"> <table class="table table-bordered table-hover"> <thead class="table-light"> <tr> <th>Machine</th> <th>From</th> <th>To</th> <th class="text-end">Produced</th> </tr> </thead> <tbody> <?php foreach ($timeline as $t): ?> <tr> <td><?=h($t['machine_no'])?></td> <td><?=h($t['from_date'])?></td> <td><?=h($t['to_date'])?></td> <td class="text-end"><?=number_format($t['meter'],2)?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> <div class="d-flex gap-2 no-print"> <button class="btn btn-primary" onclick="window.print()">Print Card</button> <a class="btn btn-secondary" href="beam_register.php">Back</a> </div> </div> <?php require_once __DIR__ . '/partials/footer.php'; exit; } /* ========================================================= REGISTER LIST ========================================================= */ $list = $pdo->prepare(" SELECT cbs.beam_no, bq.name AS quality_name, em.name AS warper_name, cbs.warp_date, cbs.beam_slot, cbs.meter AS total_meter, COALESCE(bb.production,0) AS produced FROM company_beam_stock cbs LEFT JOIN beam_qualities bq ON bq.id = cbs.beam_quality AND bq.company_id = cbs.company_id LEFT JOIN company_employee_master em ON em.id = cbs.warper_id LEFT JOIN beam_book bb ON bb.company_id=cbs.company_id AND bb.beam_no=cbs.beam_no WHERE cbs.company_id=? ORDER BY cbs.warp_date DESC, cbs.beam_no DESC "); $list->execute([$company_id]); $rows = $list->fetchAll(PDO::FETCH_ASSOC); $page_title = 'Beam Register'; require_once __DIR__ . '/partials/header.php'; ?> <div class="container py-4"> <div class="d-flex justify-content-between align-items-center mb-4"> <h3>Beam Register</h3> <button class="btn btn-outline-dark no-print" onclick="window.print()">Print Register</button> </div> <div class="card shadow-sm"> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-bordered table-hover mb-0"> <thead class="table-light"> <tr> <th>Beam No</th> <th>Quality</th> <th>Warper</th> <th>Warp Date</th> <th>Slot</th> <th class="text-end">Total</th> <th class="text-end">Produced</th> <th class="text-end">Shortage</th> <th class="text-end">%</th> <th></th> </tr> </thead> <tbody> <?php foreach ($rows as $r): $total = (float)$r['total_meter']; $prod = (float)$r['produced']; $short = max(0, $total - $prod); $perc = $total > 0 ? round(($short / $total) * 100, 2) : 0; ?> <tr> <td class="fw-bold"><?=h($r['beam_no'])?></td> <td><?=h($r['quality_name'])?></td> <td><?=h($r['warper_name'])?></td> <td><?=h($r['warp_date'])?></td> <td><?=h($r['beam_slot'])?></td> <td class="text-end"><?=number_format($total,2)?></td> <td class="text-end"><?=number_format($prod,2)?></td> <td class="text-end text-danger fw-semibold"> <?=number_format($short,2)?> </td> <td class="text-end text-danger fw-semibold"> <?=number_format($perc,2)?>% </td> <td> <a class="btn btn-sm btn-outline-primary" href="beam_register.php?beam_no=<?=h($r['beam_no'])?>&view=card" target="_blank"> Print Card </a> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> <?php require_once __DIR__ . '/partials/footer.php'; ?>