« Back to History
warping_yarn_coverage.php
|
20260722_120325.php
Initial Domain Snapshot
Copy Code
<?php require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('warping_yarn_coverage'); $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'); } /* ================= STOCK ================= */ function get_stock(PDO $pdo, $cid, $den, $col){ $sql = " SELECT SUM(weight) FROM yarn_stock WHERE company_id = :cid AND TRIM(LOWER(denier)) = TRIM(LOWER(:den)) AND TRIM(LOWER(color)) = TRIM(LOWER(:col)) "; $st = $pdo->prepare($sql); $st->execute([ ':cid'=>$cid, ':den'=>$den, ':col'=>$col ]); return (float)($st->fetchColumn() ?? 0); } /* ================= BEST PRODUCTION DATE ================= */ $st = $pdo->prepare(" SELECT DATE(beam_load_date) as d FROM company_beam_stock WHERE company_id=:cid GROUP BY DATE(beam_load_date) ORDER BY COUNT(*) DESC LIMIT 1 "); $st->execute([':cid'=>$company_id]); $date = $st->fetchColumn(); /* ================= DATA ================= */ $debug_quality = []; $debug_yarn = []; $yarn_req = []; /* ================= PRODUCTION ================= */ if($date){ $st = $pdo->prepare(" SELECT cbs.quality_id, bq.name AS quality_name, wm.machine_no, SUM(cbs.taka) total_taka, MAX(cbs.taka) taka_per_beam FROM company_beam_stock cbs LEFT JOIN beam_qualities bq ON bq.id = cbs.quality_id AND bq.company_id = cbs.company_id LEFT JOIN warping_machine wm ON wm.operator_id = cbs.warper_id AND wm.company_id = cbs.company_id WHERE cbs.company_id=:cid AND DATE(cbs.beam_load_date)=:dt GROUP BY cbs.quality_id, wm.machine_no "); $st->execute([ ':cid'=>$company_id, ':dt'=>$date ]); $quality_data = $st->fetchAll(PDO::FETCH_ASSOC); foreach($quality_data as $q){ $qid = (int)$q['quality_id']; $qname = $q['quality_name'] ?? 'Unknown'; $machine = $q['machine_no'] ?? '-'; $total_meter = $q['total_taka'] * 120; $debug_quality[] = [ 'qid'=>$qid, 'name'=>$qname, 'machine'=>$machine, 'taka'=>$q['total_taka'], 'beam'=>$q['total_taka']/$q['taka_per_beam'], 'meter'=>$total_meter ]; /* ===== YARN BREAKDOWN ===== */ $st2 = $pdo->prepare(" SELECT denier, color, total_tar, weight FROM beam_quality_yarns WHERE beam_quality_id=:qid "); $st2->execute([':qid'=>$qid]); $yarns = $st2->fetchAll(PDO::FETCH_ASSOC); $total_ratio = array_sum(array_column($yarns,'total_tar')); if($total_ratio <= 0) continue; foreach($yarns as $y){ $meter = $total_meter * ($y['total_tar'] / $total_ratio); $kg = ($meter * $y['weight']) / 100000; $den = strtoupper(trim($y['denier'])); $col = strtoupper(trim($y['color'])); $debug_yarn[] = [ 'denier'=>$den, 'color'=>$col, 'meter'=>$meter, 'kg'=>$kg ]; $key = $den.'|'.$col; if(!isset($yarn_req[$key])){ $yarn_req[$key] = [ 'denier'=>$den, 'color'=>$col, 'req'=>0 ]; } $yarn_req[$key]['req'] += $kg; } } } /* ================= FINAL ================= */ $report = []; foreach($yarn_req as $r){ $stock = get_stock($pdo, $company_id, $r['denier'], $r['color']); $req = $r['req']; $days = ($req>0) ? ($stock / $req) : 0; $status='SAFE'; $cls='bg-success'; if($days<3){ $status='CRITICAL'; $cls='bg-danger'; }elseif($days<7){ $status='LOW'; $cls='bg-warning'; } $report[] = [ 'denier'=>$r['denier'], 'color'=>$r['color'], 'req'=>$req, 'stock'=>$stock, 'days'=>$days, 'status'=>$status, 'cls'=>$cls ]; } ?> <div class="container-fluid mt-4"> <div class="card shadow"> <div class="card-header bg-dark text-white"> Warping Yarn Coverage (Full Plant) </div> <div class="card-body"> <div class="mb-3"> <b>All Machines Included</b><br> Last Production Date: <b><?=h($date)?></b> </div> <!-- QUALITY --> <table class="table table-bordered mb-3"> <tr> <th>Machine</th> <th>Quality</th> <th>Total Taka</th> <th>Beam</th> <th>Meter</th> </tr> <?php foreach($debug_quality as $d): ?> <tr> <td><b><?=$d['machine']?></b></td> <td><?=h($d['name'])?> (<?=$d['qid']?>)</td> <td><?=number_format($d['taka'],2)?></td> <td><?=number_format($d['beam'],2)?></td> <td><?=number_format($d['meter'],2)?></td> </tr> <?php endforeach; ?> </table> <!-- YARN --> <table class="table table-bordered mb-3"> <tr> <th>Denier</th> <th>Color</th> <th>Meter</th> <th>KG</th> </tr> <?php foreach($debug_yarn as $d): ?> <tr> <td><?=$d['denier']?></td> <td><?=$d['color']?></td> <td><?=number_format($d['meter'],2)?></td> <td><?=number_format($d['kg'],2)?></td> </tr> <?php endforeach; ?> </table> <!-- FINAL --> <h5>Stock Coverage</h5> <table class="table table-bordered"> <tr> <th>Denier</th> <th>Color</th> <th>Daily Req</th> <th>Stock</th> <th>Days</th> <th>Status</th> </tr> <?php foreach($report as $r): ?> <tr> <td><?=$r['denier']?></td> <td><?=$r['color']?></td> <td><?=number_format($r['req'],2)?></td> <td><?=number_format($r['stock'],2)?></td> <td><?=number_format($r['days'],1)?></td> <td><span class="badge <?=$r['cls']?>"><?=$r['status']?></span></td> </tr> <?php endforeach; ?> </table> </div> </div> </div> <?php require_once __DIR__ . '/partials/footer.php'; ?>