« Back to History
rapier_efficiency_report.php
|
20260721_154033.php
Initial Bulk Import
Copy Code
<?php /* ========================================================= Rapier Efficiency Report — FINAL (NEW WINDOW PRINT + x2) ========================================================= */ /* ---------- AUTH ---------- */ require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('rapier_efficiency_report'); $pdo = $ctx['pdo']; $company_id = (int)$ctx['company_id']; /* ---------- INPUT ---------- */ $from = $_GET['from'] ?? date('Y-m-01'); $to = $_GET['to'] ?? date('Y-m-d'); /* ---------- TARGETS ---------- */ define('DAY_PICK_100', 105600); define('NIGHT_PICK_100', 124800); /* ---------- HELPERS ---------- */ function clamp($v){ return max(0, min(100, $v)); } function eff_color($v){ if ($v >= 90) return '#16a34a'; if ($v >= 80) return '#facc15'; if ($v >= 70) return '#fb923c'; return '#dc2626'; } function eff_gauge($v){ $v = clamp(round($v,1)); $c = eff_color($v); $dash = round(($v/100)*126,1); return ' <svg width="42" height="42" viewBox="0 0 42 42"> <circle cx="21" cy="21" r="20" fill="none" stroke="#e5e7eb" stroke-width="4"/> <circle cx="21" cy="21" r="20" fill="none" stroke="'.$c.'" stroke-width="4" stroke-dasharray="'.$dash.' 126" stroke-linecap="round" transform="rotate(-90 21 21)"/> <text x="21" y="24" text-anchor="middle" font-size="10" font-weight="700">'.$v.'%</text> </svg>'; } /* ---------- SQL ---------- */ /* KARIGAR */ $sql_karigar = " SELECT e.name, SUM(r.material_meter)*2 AS meter, /* ×2 RULE */ SUM(CASE WHEN r.shift='Day' THEN r.pick ELSE 0 END) pick_day, SUM(CASE WHEN r.shift='Night' THEN r.pick ELSE 0 END) pick_night, COUNT(DISTINCT CASE WHEN r.shift='Day' THEN CONCAT(r.entry_date,'-',r.machine_no) END) mc_day, COUNT(DISTINCT CASE WHEN r.shift='Night' THEN CONCAT(r.entry_date,'-',r.machine_no) END) mc_night FROM rapier_efficiency_data r JOIN company_employee_master e ON e.id=r.karigar_id WHERE r.company_id=? AND r.entry_date BETWEEN ? AND ? GROUP BY r.karigar_id "; /* MACHINE */ $sql_machine = " SELECT r.machine_no, SUM(r.material_meter)*2 AS meter, /* ×2 RULE */ SUM(CASE WHEN r.shift='Day' THEN r.pick ELSE 0 END) pick_day, SUM(CASE WHEN r.shift='Night' THEN r.pick ELSE 0 END) pick_night, COUNT(DISTINCT CASE WHEN r.shift='Day' THEN CONCAT(r.entry_date,'-',r.shift) END) sh_day, COUNT(DISTINCT CASE WHEN r.shift='Night' THEN CONCAT(r.entry_date,'-',r.shift) END) sh_night FROM rapier_efficiency_data r WHERE r.company_id=? AND r.entry_date BETWEEN ? AND ? GROUP BY r.machine_no "; /* ---------- FETCH ---------- */ $karigars=[]; $machines=[]; $st=$pdo->prepare($sql_karigar); $st->execute([$company_id,$from,$to]); foreach($st as $r){ $den = ($r['mc_day']*DAY_PICK_100)+($r['mc_night']*NIGHT_PICK_100); $eff = $den>0 ? (($r['pick_day']+$r['pick_night'])/$den)*100 : 0; $r['eff']=clamp($eff); $karigars[]=$r; } $st=$pdo->prepare($sql_machine); $st->execute([$company_id,$from,$to]); foreach($st as $r){ $den = ($r['sh_day']*DAY_PICK_100)+($r['sh_night']*NIGHT_PICK_100); $eff = $den>0 ? (($r['pick_day']+$r['pick_night'])/$den)*100 : 0; $r['eff']=clamp($eff); $machines[]=$r; } /* ---------- SORT ---------- */ usort($karigars, fn($a,$b)=> $b['eff'] <=> $a['eff']); usort($machines, fn($a,$b)=> $b['eff'] <=> $a['eff']); /* ---------- SUMMARY ---------- */ $machine_avg = count($machines) ? round(array_sum(array_column($machines,'eff'))/count($machines),2) : 0; $total_production = array_sum(array_column($machines,'meter')); $bestKarigar = $karigars[0]['name'] ?? '-'; $bestKarigarEff = $karigars[0]['eff'] ?? 0; /* ========================================================= PRINT WINDOW (NO HEADER / FOOTER) ========================================================= */ if (isset($_GET['print_window'])) { ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Rapier Efficiency Report</title> <link rel="stylesheet" href="/erp/public/assets/css/main.css"> <style> /* force hide ERP chrome */ header, nav, footer, .topbar, .brandbar, .main-nav { display:none!important; } body{background:#fff;} </style> </head> <body onload="window.print()"> <div class="wrap"> <?php include __FILE__; /* reuse same content */ ?> </div> </body> </html> <?php exit; } /* ========================================================= SCREEN VIEW ========================================================= */ require_once __DIR__ . '/partials/header.php'; ?> <div class="wrap"> <form class="card report-toolbar no-print" method="get"> <div class="report-toolbar-row"> <label>From<input type="date" name="from" value="<?=$from?>"></label> <label>To<input type="date" name="to" value="<?=$to?>"></label> <button class="btn">Load</button> <!-- NEW WINDOW PRINT --> <a class="btn" target="_blank" href="?from=<?=$from?>&to=<?=$to?>&print_window=1">Print</a> </div> </form> <div class="report-cards"> <div class="report-card1"> <div class="label">Machine Avg Efficiency</div> <?=eff_gauge($machine_avg)?> </div> <div class="report-card2"> <div class="label">Total Production</div> <div class="value"><?=number_format($total_production,2)?> m</div> </div> <div class="report-card4"> <div class="label">Best Karigar</div> <div class="value"><?=$bestKarigar?></div> <?=eff_gauge($bestKarigarEff)?> </div> </div> <div class="report-body"> <h3>Karigar Performance (Top → Worst)</h3> <table class="table"> <tr><th>Karigar</th><th>Meter</th><th>Efficiency</th></tr> <?php foreach($karigars as $r): ?> <tr> <td><?=$r['name']?></td> <td><?=$r['meter']?></td> <td><?=eff_gauge($r['eff'])?></td> </tr> <?php endforeach; ?> </table> <h3>Machine Performance (Top → Worst)</h3> <table class="table"> <tr><th>Machine</th><th>Meter</th><th>Efficiency</th></tr> <?php foreach($machines as $r): ?> <tr> <td><?=$r['machine_no']?></td> <td><?=$r['meter']?></td> <td><?=eff_gauge($r['eff'])?></td> </tr> <?php endforeach; ?> </table> </div> </div> <?php require_once __DIR__ . '/partials/footer.php'; ?>