« Back to History
karigar_total_by_machine.php
|
20260723_000646.php
Initial Domain Snapshot
Copy Code
<?php /* ============================================================================ Machine → Karigar Report With: - Date Range - Month - Period (H1/H2) - Khata - Bootstrap Dense Print Layout No global changes ============================================================================ */ require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('machine_karigar_by_machine'); $cid = (int)$ctx['company_id']; $pdo = $ctx['pdo']; $print_mode = isset($_GET['print']) && $_GET['print'] == 1; /* ================= INPUTS ================= */ $month = $_GET['month'] ?? ''; $period= $_GET['period'] ?? ''; $khata = $_GET['khata'] ?? ''; $KHATA_MAP = [ 'mst1'=>1, 'mst2a'=>2, 'mst2b'=>3 ]; /* ================= BASE FILTER ================= */ $where = "p.company_id = :cid"; $params = ['cid'=>$cid]; if($month){ $where .= " AND DATE_FORMAT(p.entry_date,'%Y-%m')=:m"; $params['m']=$month; } if($period=='H1'){ $where .= " AND DAY(p.entry_date) BETWEEN 1 AND 15"; } if($period=='H2'){ $where .= " AND DAY(p.entry_date)>=16"; } if($khata && isset($KHATA_MAP[$khata])){ $where .= " AND p.khata_id=:kh"; $params['kh']=$KHATA_MAP[$khata]; } /* ================= MACHINE LIST ================= */ $s=$pdo->prepare("SELECT DISTINCT p.machine_id FROM production_entry p WHERE $where ORDER BY p.machine_id"); $s->execute($params); $machines=$s->fetchAll(PDO::FETCH_COLUMN); /* ================= HELPERS ================= */ function kname($pdo,$cid,$id){ $q=$pdo->prepare("SELECT karigar_name FROM loom_karigar_master WHERE company_id=:cid AND id=:id LIMIT 1"); $q->execute(['cid'=>$cid,'id'=>$id]); return $q->fetchColumn() ?: '—'; } function qname($pdo,$cid,$id){ $q=$pdo->prepare("SELECT quality_name FROM quality_rates WHERE company_id=:cid AND quality_id=:id LIMIT 1"); $q->execute(['cid'=>$cid,'id'=>$id]); return $q->fetchColumn() ?: '—'; } function machine_report_rows(PDO $pdo, array $params, string $where, $machineId): array { $agg=[]; $st=$pdo->prepare("SELECT quality_id,meter_total,lines_json FROM production_entry p WHERE $where AND p.machine_id=:mid"); $queryParams=$params; $queryParams['mid']=$machineId; $st->execute($queryParams); foreach($st->fetchAll(PDO::FETCH_ASSOC) as $r){ $qualityId=$r['quality_id']; $lines=json_decode($r['lines_json'],true); if(is_array($lines)){ foreach($lines as $line){ $karigarId=$line['karigar_id']??'unknown'; $meter=(float)($line['meter']??$line['meters']??0); $agg[$qualityId][$karigarId]=($agg[$qualityId][$karigarId]??0)+$meter; } }else{ $agg[$qualityId]['unknown']=($agg[$qualityId]['unknown']??0)+(float)$r['meter_total']; } } $flat=[]; foreach($agg as $qualityId=>$karigars){ foreach($karigars as $karigarId=>$meter){ $flat[]=['k'=>$karigarId,'q'=>$qualityId,'m'=>$meter]; } } usort($flat,function($a,$b){return $b['m']<=>$a['m'];}); return $flat; } function render_machine_report_table(PDO $pdo, int $cid, array $rows): void { if(!$rows){ echo '<div class="text-muted small">No data found.</div>'; return; } ?> <table class="table table-bordered table-sm mb-0"> <thead> <tr><th>Karigar</th><th>Quality</th><th class="text-end">Mtr</th></tr> </thead> <tbody> <?php foreach($rows as $r): ?> <tr> <td><?=htmlspecialchars($r['k']=='unknown'?'—':kname($pdo,$cid,$r['k']))?></td> <td><?=htmlspecialchars(qname($pdo,$cid,$r['q']))?></td> <td class="text-end"><?=number_format($r['m'],2)?></td> </tr> <?php endforeach; ?> </tbody> </table> <?php } /* ======================================================== UI MODE ======================================================== */ if(!$print_mode): require_once __DIR__.'/partials/header.php'; ?> <div class="card"> <div class="card-header"> <h4>Machine → Karigar Report</h4> </div> <div class="card-body"> <form method="get" class="row g-2"> <div class="col-md-2"> <label>Month</label> <input type="month" name="month" value="<?=htmlspecialchars($month)?>" class="form-control"> </div> <div class="col-md-2"> <label>Period</label> <select name="period" class="form-control"> <option value="">All</option> <option value="H1" <?=$period=='H1'?'selected':''?>>H1</option> <option value="H2" <?=$period=='H2'?'selected':''?>>H2</option> </select> </div> <div class="col-md-2"> <label>Khata</label> <select name="khata" class="form-control"> <option value="">All</option> <?php foreach($KHATA_MAP as $k=>$v): ?> <option value="<?=$k?>" <?=$khata==$k?'selected':''?>><?=$k?></option> <?php endforeach;?> </select> </div> <div class="col-md-2 d-flex align-items-end"> <button class="btn btn-primary me-2">Load</button> <a href="<?=basename(__FILE__)?>" class="btn btn-secondary me-2">Reset</a> <a href="?<?=http_build_query(array_merge($_GET,['print'=>1]))?>" target="_blank" class="btn btn-dark">Print</a> </div> </form> <hr> <?php if(!$machines): ?> <div class="alert alert-warning mb-0">Data nahi mila.</div> <?php else: ?> <div class="row g-3"> <?php foreach($machines as $mid): ?> <?php $flat=machine_report_rows($pdo,$params,$where,$mid); ?> <div class="col-md-4"> <div class="card h-100 border-dark-subtle"> <div class="card-header fw-semibold">Machine <?=htmlspecialchars($mid)?></div> <div class="card-body p-2"> <?php render_machine_report_table($pdo,$cid,$flat); ?> </div> </div> </div> <?php endforeach; ?> </div> <div class="card mt-4 border-secondary"> <div class="card-header fw-semibold">Changes</div> <div class="card-body"> <?php for($i=0;$i<6;$i++): ?> <div style="border-bottom:1px solid #999;height:34px;"></div> <?php endfor; ?> </div> </div> <?php endif; ?> </div> </div> <?php require_once __DIR__.'/partials/footer.php'; ?> <?php /* ======================================================== PRINT MODE ======================================================== */ else: ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Machine Report</title> <link rel="stylesheet" href="/erp/public/assets/css/main.css?v=<?=date('Ymd')?>"> <style> @page { size:A4 portrait; margin:8mm; } body{ font-size:10px; } .machine-grid{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; align-items:start; } .machine-box{ border:1px solid #000; padding:6px; page-break-inside:avoid; break-inside:avoid; } .machine-title{ font-weight:600; font-size:11px; border-bottom:1px solid #000; margin-bottom:4px; } .table{ font-size:9px; } .table th,.table td{ padding:2px 4px!important; } @media print{ .machine-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); } } </style> </head> <body> <div class="container-fluid"> <h5>Machine → Karigar Report</h5> <div style="font-size:9px;margin-bottom:5px;"> <?= $month ? "Month: $month | " : '' ?> <?= $period ? "Period: $period | " : '' ?> <?= $khata ? "Khata: $khata" : '' ?> </div> <hr> <div class="machine-grid"> <?php foreach($machines as $mid): $flat=machine_report_rows($pdo,$params,$where,$mid); ?> <div> <div class="machine-box"> <div class="machine-title">Machine <?=htmlspecialchars($mid)?></div> <?php render_machine_report_table($pdo,$cid,$flat); ?> </div> </div> <?php endforeach; ?> </div> <div style="margin-top:12px;page-break-inside:avoid;"> <div style="font-size:11px;font-weight:600;margin-bottom:6px;">Changes</div> <?php for($i=0;$i<8;$i++): ?> <div style="border-bottom:1px solid #000;height:22px;"></div> <?php endfor; ?> </div> <div style="font-size:9px;margin-top:8px;"> Generated <?=date('Y-m-d H:i')?> </div> </div> <script> window.onload=function(){setTimeout(()=>window.print(),300);} </script> </body> </html> <?php endif; ?>