Good day sa lahat ng programmers dyan! Baka alam nyo to kapag gumamit pa ako ng rowspan sa pi_no column parang ayaw na mag generate ng PDF table at nagko-cause ng maximum time limit. Ano kayang posibleng solusyon nito? Gamit kong framework ay CI 3.
Ito yung code sa ibaba:
Ito naman ang pdf table na kapag hindi ginamitan ng rowspan ang pi_no column ay mag gegenerate ang table:
Ito yung code sa ibaba:
PHP:
private function printReport($data, $from, $to)
{
$dateFrom = date("M d, Y", strtotime($from));
$dateTo = date("M d, Y", strtotime($to));
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('MC');
$pdf->SetTitle('Tracking Report');
$pdf->SetSubject('CWO Transaction Tracking Report');
$pdf->SetKeywords('CWO, Transaction, Tracking, Report');
// set default header data
$pdf->SetHeaderData('alturas.png', 32, '' . '', 'Cash With Order Monitoring Report');
// set header and footer fonts
$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// set margins
$pdf->SetMargins(15, 20, 15);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->AddPage('L', array(215.9, 355.6));
$pdf->SetDisplayMode('fullpage');
$pdf->SetFont('helvetica', '', 9);
$html = '<div style=" text-align: left;">
<span style="font-size: xx-large;padding-left:20px;"><b>CWO TRANSACTION - TRACKING REPORT</b></span><br>
<span style="font-size: medium;padding-left:20px">Report Date: ' . date('F d, Y') . '</span><br>
<span style="font-size: medium;padding-left:20px">From : ' . $dateFrom . ' To : ' . $dateTo . '</span><br>
</div>
<div>
<span style="font-size: medium;padding-left:20px;">The provided table represents the CWO transactions, including supplier information, CRF/CV number and CRF date, CRF vs PSI status, SOP number and SOP date, PSI number, PSI date, PO number and PO date, PI number and PI date, and PI vs PSI status.</span><br>
</div>
<table border="1" >
<thead>
<tr>
<th colspan="2" align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16">SUPPLIER</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16">CRF/CV NO.</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16">CRF DATE</th>
<th align="center" bgcolor="#1d2120" color="#ccffff" style="border: 1px solid #c96a16">CRF VS PSI STATUS</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16">SOP NO.</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16">SOP DATE</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16"> PSI NO.</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16"> PSI DATE</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16"> PO NO.</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16"> PO DATE</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16"> PI NO.</th>
<th align="center" bgcolor="#1d2120" color="white" style="border: 1px solid #c96a16"> PI DATE</th>
<th align="center" bgcolor="#1d2120" color="#ffff99" style="border: 1px solid #c96a16"> PI VS PSI STATUS</th>
</tr>
</thead>
<tbody>';
$previousSupplier = "";
$previousCrfNo = "";
$previousProfCode = "";
$supplierRows = [];
$crfRows = [];
$psiRows = [];
$htmlRows = [];
foreach ($data as $a) {
$supplierName = $a['supplier_name'];
$crfNo = $a['crf_no'];
$profCode = $a['psi_no'];
$supplierRows[$supplierName][] = $a;
$crfRows[$crfNo][] = $a;
$psiRows[$profCode][] = $a;
}
foreach ($data as $b) {
$supplierName = $b['supplier_name'];
$crfNo = $b['crf_no'];
$profCode = $b['psi_no'];
$location = $b['l_acroname'];
$rowspan = count($supplierRows[$supplierName]);
$rowspan1 = count($crfRows[$crfNo]);
$rowspan2 = count($psiRows[$profCode]);
if ($supplierName !== $previousSupplier) {
$htmlRows[] = '<tr>
<td colspan="2" rowspan="' . $rowspan . '" align="center">' . $supplierName . '<br><span style="font-style: italic;">LOCATION: ' . $location . '</span></td>
<td align="center" rowspan="' . $rowspan1 . '">' . $crfNo . '</td>
<td align="center" rowspan="' . $rowspan1 . '">' . (empty($b['crf_date']) ? '' : date("m-d-Y", strtotime($b['crf_date']))) . '</td>
<td rowspan="' . $rowspan1 . '" align="center" style="color: ' . ($b['crf_vs_psi_status'] === 'PENDING' ? 'red' : 'green') . ';">' . $b['crf_vs_psi_status'] . '</td>
<td align="center" rowspan="' . $rowspan1 . '">' . $b['sop_no'] . '</td>
<td align="center" rowspan="' . $rowspan1 . '">' . (empty($b['sop_date']) ? '' : date("m-d-Y", strtotime($b['sop_date']))) . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . $profCode . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . (empty($b['psi_date']) ? '' : date("m-d-Y", strtotime($b['psi_date']))) . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . $b['po_no'] . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . (empty($b['po_date']) ? '' : date("m-d-Y", strtotime($b['po_date']))) . '</td>
<td align="center">' . $b['pi_no'] . '</td>
<td align="center">' . (empty($b['pi_date']) ? '' : date("m-d-Y", strtotime($b['pi_date']))) . '</td>
<td align="center" style="color: ' . ($b['pi_vs_psi_status'] === 'PENDING' ? 'red' : 'green') . ';">' . $b['pi_vs_psi_status'] . '</td>
</tr>';
} else if ($crfNo !== $previousCrfNo) {
$htmlRows[] = '<tr>
<td align="center" rowspan="' . $rowspan1 . '">' . $crfNo . '</td>
<td align="center" rowspan="' . $rowspan1 . '">' . (empty($b['crf_date']) ? '' : date("m-d-Y", strtotime($b['crf_date']))) . '</td>
<td rowspan="' . $rowspan1 . '" align="center" style="color: ' . ($b['crf_vs_psi_status'] === 'PENDING' ? 'red' : 'green') . ';">' . $b['crf_vs_psi_status'] . '</td>
<td align="center" rowspan="' . $rowspan1 . '">' . $b['sop_no'] . '</td>
<td align="center" rowspan="' . $rowspan1 . '">' . (empty($b['sop_date']) ? '' : date("m-d-Y", strtotime($b['sop_date']))) . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . $profCode . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . (empty($b['psi_date']) ? '' : date("m-d-Y", strtotime($b['psi_date']))) . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . $b['po_no'] . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . (empty($b['po_date']) ? '' : date("m-d-Y", strtotime($b['po_date']))) . '</td>
<td align="center">' . $b['pi_no'] . '</td>
<td align="center">' . (empty($b['pi_date']) ? '' : date("m-d-Y", strtotime($b['pi_date']))) . '</td>
<td align="center" style="color: ' . ($b['pi_vs_psi_status'] === 'PENDING' ? 'red' : 'green') . ';">' . $b['pi_vs_psi_status'] . '</td>
</tr>';
} else if ($profCode !== $previousProfCode) {
$htmlRows[] = '<tr>
<td align="center" rowspan="' . $rowspan2 . '">' . $profCode . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . (empty($b['psi_date']) ? '' : date("m-d-Y", strtotime($b['psi_date']))) . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . $b['po_no'] . '</td>
<td align="center" rowspan="' . $rowspan2 . '">' . (empty($b['po_date']) ? '' : date("m-d-Y", strtotime($b['po_date']))) . '</td>
<td align="center">' . $b['pi_no'] . '</td>
<td align="center">' . (empty($b['pi_date']) ? '' : date("m-d-Y", strtotime($b['pi_date']))) . '</td>
<td align="center" style="color: ' . ($b['pi_vs_psi_status'] === 'PENDING' ? 'red' : 'green') . ';">' . $b['pi_vs_psi_status'] . '</td>
</tr>';
} else {
$htmlRows[] = '<tr>
<td align="center">' . $b['pi_no'] . '</td>
<td align="center">' . (empty($b['pi_date']) ? '' : date("m-d-Y", strtotime($b['pi_date']))) . '</td>
<td align="center" style="color: ' . ($b['pi_vs_psi_status'] === 'PENDING' ? 'red' : 'green') . ';">' . $b['pi_vs_psi_status'] . '</td>
</tr>';
}
$previousSupplier = $b['supplier_name'];
$previousCrfNo = $b['crf_no'];
$previousProfCode = $b['psi_no'];
$pdf->Ln();
}
$html .= implode("", $htmlRows);
$html .= '</tbody></table>';
$pdf->writeHTML($html, true, false, true, false, '');
$fileName = 'TRANSACTION_TRACKING_REPORT_' . time() . '.pdf';
$pdf->Output(getcwd() . '/files/Reports/TrackingReports/' . $fileName, 'F');
return $fileName;
}
Attachments
-
You do not have permission to view the full content of this post. Log in or register now.
Last edited: