dwh/incl_rep.php

198 lines
6.8 KiB
PHP
Raw Normal View History

2023-10-02 10:26:17 +00:00
<?php
include_once 'class/PregReplaceCallbackClass.php';
function show_number_formatted($value) {
if ( $value < 0 ) {
$nf = '('.number_format(abs($value),DECIMAL_POINT,DECIMAL_SEP,THOUSAND_SEP).')';
} else {
$nf = number_format($value,DECIMAL_POINT,DECIMAL_SEP,THOUSAND_SEP);
}
return $nf;
}
function explode_param(&$ora_obj, $paramValue) {
$repParam = explode(chr(31), $paramValue);
$count = count($repParam);
$paramList="";
for ($i=0;$i<=$count-2;$i++) {
$param = explode(chr(30), $repParam[$i]);
if ($param[0] != 'REP_NAME') {
$paramtitle = $ora_obj->ORA_FunctionCall("rep_general.get_param_name('$param[0]')");
$paramList .= "- ".$paramtitle."=".$param[1]."<BR>";
}
}
return $paramList;
}
function build_tanggal($tgl) {
2024-01-12 08:25:44 +00:00
$hari = substr($tgl,8,2);
$bulan = substr($tgl,5,2);
2023-10-02 10:26:17 +00:00
$tahun = substr($tgl,0,4);
$tgl_fmt = $hari.'-'.$bulan.'-'.$tahun;
return $tgl_fmt;
}
function initArchive(){
$arcTemplate['ARCHIVE'] = <<< params
<tr>
<td Align=center width=100%>
<table bgColor=#F7F7F7 border=0 cellPadding=5 cellSpacing=1 width="100%">
<tr>
<td class="font20" align=left>Archive</td>
</tr>
<tr>
<td>
<table width="100%" cellpadding="2" cellspacing="1" border="1" style="layout:auto">
<tr class="paramtable">
<td align=center class="font9BW">NO</td>
<td align=center class="font9BW">NAMA LAPORAN</td>
<td align=center class="font9BW">NO LAPORAN</td>
<td align=center class="font9BW">TANGGAL ORDER<BR>PERTAMA</td>
<td align=center class="font9BW">PARAMETER LAPORAN</td>
</tr>
<<ARCHIVE_LIST>>
</table>
</td>
</tr>
</table>
</td>
</tr>
params;
$arcTemplate['LIST'] = <<< params
<tr onclick="javascript:rep_archive(<<N_RESULTKEY>>);" onmouseover="changeColor(this,'#FFFF99');" onmouseout="changeColor(this,'#F7F7F7');">
<td align=Right valign=top class="font9"><<COUNTER>></td>
<td align=left valign=top class="font9" width=200><<REP_NAME>></td>
<td align=center valign=top nowrap class="font9"><<N_RESULTKEY>></td>
<td align=center valign=top nowrap class="font9"><<TGL_CETAK>><BR><<WAKTU_CETAK>></td>
<td align=left valign=top nowrap class="font9"><<PARAM_REPORT>></td>
</tr>
params;
$_SESSION['ARC_ARRAY_ADDR'] = &$arcTemplate;
}
function getArchiveData(&$ora_obj, $rep_id) {
$templObj = new PregReplaceCallbackClass('');
$templObj->SetTemplateArray('ARC_ARRAY_ADDR');
$sql = <<< sql
SELECT a.n_resultkey, a.rep_param, a.rep_name, TO_CHAR(a.date_created,'DD Month YYYY','NLS_DATE_LANGUAGE=INDONESIAN') as TGL_CETAK,
TO_CHAR(a.date_created,'HH24:MI:SS') as WAKTU_CETAK
FROM rep_archive a
WHERE a.kd_user = '{$_SESSION["KD_USER"]}' AND a.rep_id = '{$rep_id}'
ORDER BY a.n_resultkey DESC
sql;
$MultiDArray = $ora_obj->ORA_SelectData($sql,null,null,OCI_FETCHSTATEMENT_BY_ROW);
if ($ora_obj->nrows>0) {
foreach ($MultiDArray as $pkey => $pval) {
$variable_array['COUNTER']++;
foreach ($pval as $rkey => $rval) {
$variable_array[$rkey] = $rval;
}
$paramList = explode_param($ora_obj, $variable_array["REP_PARAM"]);
$_SESSION['ARRAY_ADDR_VAR'] = &$variable_array;
$variable_array['PARAM_REPORT'] = $paramList;
$templObj->SetFormatName('LIST');
$list .= $templObj->PregReplaceCallback();
}
$variable_array['ARCHIVE_LIST'] = $list;
$templObj->SetFormatName('ARCHIVE');
$result = $templObj->PregReplaceCallback();
}
return $result;
}
function get_archive(&$ora_obj, $rep_id) {
initArchive();
$result = getArchiveData($ora_obj, $rep_id);
return $result;
}
function generateXLSFile(&$ora_obj, $mode, $rep_id) {
require_once "class/excel.php";
$xlsFile = "{$_SERVER['DOCUMENT_ROOT']}/xls/{$mode}_{$rep_id}.xls";
if ( ! file_exists($xlsFile)) {
$sql = <<< sql
SELECT a.rep_header, i.rep_content, i.n_rowno, a.rep_name
FROM rep_info i, rep_archive a
WHERE i.kd_user = a.kd_user AND i.n_resultkey = a.n_resultkey
AND i.kd_user = '{$_SESSION["KD_USER"]}' AND i.n_resultkey = {$rep_id}
ORDER BY i.n_rowno
sql;
$MultiDArray = $ora_obj->ORA_SelectData($sql,null,null,OCI_FETCHSTATEMENT_BY_ROW);
if ($ora_obj->nrows >0) {
foreach($MultiDArray as $key => $val){
$MultiDArray[$key]['REP_CONTENT'] = str_replace(array('&'),'&amp;',$MultiDArray[$key]['REP_CONTENT']);
$xml[$key] = $MultiDArray[$key]['REP_CONTENT'];
$header = $MultiDArray[$key]['REP_HEADER'];
$repName = $MultiDArray[$key]['REP_NAME'];
}
foreach ($xml as $xkey => $xval) {
$xml_obj = simplexml_load_string($xml[$xkey]);
foreach ($xml_obj as $xml_obj_array){
$name = $xml_obj_array->getName();
if (is_null($counter[$name])){
$counter[$name] = 0;
}
$xml_result[$name][$counter[$name]] = $xml_obj_array;
$counter[$name]++;
}
}
$XLS_STREAM_ARRAY[] = array('0'=>$repName);
$XLS_STREAM_ARRAY[] = array('0'=>"");
$repHead = explode('^', $header);
$count = count($repHead);
for ($i=0;$i<=$count-2;$i++) {
$xlsHeader .= $repHead[$i]."\t";
}
$xlsHeader = substr($xlsHeader,0,strlen($xlsHeader)-1);
$tempxlsHeader = split("\t",$xlsHeader);
$XLS_STREAM_ARRAY[] = $tempxlsHeader;
foreach ($xml_result as $key => $val) {
$field = $key;
unset($element);
foreach ($val as $p_key => $p_val) {
unset($item_rep);
foreach ($p_val as $q_key => $q_val) {
$q_key = trim($q_key);
$variable_array[$q_key] = str_replace(array("\r\n","\n","\r"),'<br />',htmlspecialchars_decode($p_val->$q_key));
$xlsElement .= $variable_array[$q_key]."\t";
}
$xlsElement = substr($xlsElement,0,strlen($xlsElement)-1);
$tempxlsElement = split("\t",$xlsElement);
$XLS_STREAM_ARRAY[] = $tempxlsElement;
$xlsElement = '';
}
}
$export_file = "xlsfile:/{$xlsFile}";
$fp = fopen($export_file, "wb");
if (!is_resource($fp))
{
die("Cannot open $export_file");
}
fwrite($fp, serialize($XLS_STREAM_ARRAY));
fclose($fp);
}
}
}
?>