Files
simak/app/lap_anggaran/excel_hutang_termin.php
2025-10-10 09:25:05 +07:00

187 lines
7.7 KiB
PHP

<?php
require_once '../../assets/excel/PHPExcel.php';
// koneksi ke database
include('../koneksi.php');
$id=$_GET['id'];
$tm1=$_GET['tm1'];
$tm1=str_replace('/','-',$tm1);
$tt1=date('Y',strtotime($tm1));
$bb1=date('m',strtotime($tm1));
$hh1=date('d',strtotime($tm1));
$ts1=$_GET['ts1'];
$ts1=str_replace('/','-',$ts1);
$tt2=date('Y',strtotime($ts1));
$bb2=date('m',strtotime($ts1));
$hh2=date('d',strtotime($ts1));
$objPHPExcel = new PHPExcel();
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true);
$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5);
$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(30);
$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(25);
$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(26);
$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(33);
$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(15);
$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(15);
$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(15);
$objPHPExcel->getSheet(0)->getColumnDimension('I')->setWidth(15);
$objPHPExcel->getSheet(0)->getColumnDimension('J')->setWidth(20);
$objPHPExcel->getSheet(0)->getColumnDimension('K')->setWidth(11);
$objPHPExcel->getSheet(0)->getColumnDimension('L')->setWidth(11);
$objPHPExcel->getSheet(0)->getColumnDimension('M')->setWidth(11);
$objPHPExcel->getSheet(0)->getColumnDimension('N')->setWidth(50);
$styleBold = array('font' => array('bold' => true));
$objPHPExcel->getSheet(0)->getStyle('A1:N1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getSheet(0)->getStyle('A1:N1')->applyFromArray($styleBold);
$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(25);
$objPHPExcel->getSheet(0)->setTitle('HUTANG TERMIN');
$objPHPExcel->getSheet(0)
->setCellValue('A1', 'No')
->setCellValue('B1', 'Penyedia')
->setCellValue('C1', 'No SP/SPK/Kwi')
->setCellValue('D1', 'Berlaku')
->setCellValue('E1', 'Kegiatan pengadaan')
->setCellValue('F1', 'Nilai SP')
->setCellValue('G1', 'Termin')
->setCellValue('H1', 'Termin Lunas')
->setCellValue('I1', 'Sisa Termin')
->setCellValue('J1', 'Jenis') /* G */
->setCellValue('K1', 'Status') /* H */
->setCellValue('L1', 'Adminers') /* I */
->setCellValue('M1', 'Nota dinas') /* J */
->setCellValue('N1', 'No Nota dinas'); /* K */
/*
$query = "SELECT COALESCE(r.nama,p.cad1),p.no_sp,p.tgl_mulai_sp,p.tgl_selesai_sp,p.kegiatan_pengadaan,p.nilai_sp,k.nama,
CASE WHEN p.tgl_setor IS NOT NULL THEN 'Realisasi'
ELSE
CASE
WHEN status='Proses' THEN 'Proses Adminers'
WHEN status='Selesai Adminers' THEN 'Selesai Adminers'
ELSE 'Penyerapan'
END
END
,
COALESCE(u.nama,p.user_nama),
(SELECT COUNT(*) FROM nota_dinas n
LEFT OUTER JOIN list_relasi p1 ON (p1.nota_dinas_id=n.id)
WHERE
p1.pekerjaan_id=p.id),p.id,SUM(l.nilai_pelunasan),STRING_AGG(CAST(l.data_ke AS TEXT), ', ') as Termin
FROM pekerjaan p
LEFT OUTER JOIN rekanan r ON (r.id=p.rekanan_id)
LEFT OUTER JOIN jenis_kegiatan k ON (k.id=p.jenis_kegiatan_id)
LEFT OUTER JOIN data_user u ON (u.id=p.adminers_id)
LEFT OUTER JOIN vr_realisasi r2 ON (r2.pekerjaan_id=p.id)
LEFT OUTER JOIN vr_pelunasan l ON (l.vr_realisasi_id=r2.id)
WHERE p.no_sp IN (
SELECT DISTINCT(p1.no_sp) FROM pekerjaan p1 WHERE p1.user_nama='HUTANG TERMIN' AND p1.sub_kegiatan_id=$id
) AND l.st_hutang IS NULL AND COALESCE(p.user_nama,'') <> 'HUTANG TERMIN'
AND p.status_setor IS NULL AND p.status <> 'Extra' AND p.cad3 IS NULL AND l.data_ke IS NOT NULL
".($tm1 == null ? "" : "AND p.tgl_input::DATE BETWEEN '$tt1-$bb1-$hh1' AND '$tt2-$bb2-$hh2'")."
GROUP BY
COALESCE(r.nama,p.cad1),p.no_sp,p.tgl_mulai_sp,p.tgl_selesai_sp,p.kegiatan_pengadaan,p.nilai_sp,k.nama,
p.id,p.user_nama,l.st_hutang,u.nama
ORDER BY p.no_sp ASC
";
*/
$query = "SELECT
COALESCE(r.nama,p.cad1),p.no_sp,p.tgl_mulai_sp,p.tgl_selesai_sp,p.kegiatan_pengadaan,p.nilai_sp,k.nama,
CASE WHEN p.tgl_setor IS NOT NULL THEN 'Realisasi'
ELSE
CASE
WHEN status='Proses' THEN 'Proses Adminers'
WHEN status='Selesai Adminers' THEN 'Selesai Adminers'
ELSE 'Penyerapan'
END
END
,
COALESCE(u.nama,p.user_nama),
(SELECT COUNT(*) FROM nota_dinas n
LEFT OUTER JOIN list_relasi p1 ON (p1.nota_dinas_id=n.id)
WHERE
p1.pekerjaan_id=p.id),
p.id,
(SELECT SUM(l2.nilai_pelunasan) FROM vr_pelunasan l2 INNER JOIN vr_realisasi r3 ON (r3.id=l2.vr_realisasi_id) INNER JOIN pekerjaan p2 ON (p2.id=r3.pekerjaan_id) WHERE l2.st_hutang IS NULL AND p2.no_sp=p.no_sp),
STRING_AGG(CAST(l.data_ke AS TEXT), ', ') as Termin,
(SELECT STRING_AGG(n.no_surat,', ') FROM nota_dinas n
LEFT OUTER JOIN list_relasi p1 ON (p1.nota_dinas_id=n.id)
WHERE
p1.pekerjaan_id=p.id) as no_nodin
FROM pekerjaan p
LEFT OUTER JOIN rekanan r ON (r.id=p.rekanan_id)
LEFT OUTER JOIN jenis_kegiatan k ON (k.id=p.jenis_kegiatan_id)
LEFT OUTER JOIN data_user u ON (u.id=p.adminers_id)
LEFT OUTER JOIN vr_realisasi r2 ON (r2.pekerjaan_id=p.id)
LEFT OUTER JOIN vr_pelunasan l ON (l.vr_realisasi_id=r2.id)
WHERE p.sub_kegiatan_id=$id AND p.status_setor IS NULL AND p.status<>'Extra' AND p.cad3 IS NULL
AND COALESCE(p.user_nama,'')='HUTANG TERMIN'
".($tm1 == null ? "" : "AND p.tgl_input::DATE BETWEEN '$tt1-$bb1-$hh1' AND '$tt2-$bb2-$hh2'")."
GROUP BY
COALESCE(r.nama,p.cad1),p.no_sp,p.tgl_mulai_sp,p.tgl_selesai_sp,p.kegiatan_pengadaan,p.nilai_sp,k.nama,
p.id,p.user_nama,l.st_hutang,u.nama
ORDER BY p.no_sp ASC
";
$hasil = pg_query($query);
$baris = 2;
$a=1;
while ($r = pg_fetch_array($hasil))
{
if (($r['tgl_mulai_sp']==null) || ($r['tgl_mulai_sp']=='1970-01-01 00:00:00')) {$vv='';} else {
$vv=date('d-m-Y',strtotime($r['tgl_mulai_sp'])).' s/d '.date('d-m-Y',strtotime($r['tgl_selesai_sp']));
}
$objPHPExcel->getSheet(0)
->setCellValue('A'.$baris, $a)
->setCellValue('B'.$baris, $r[0])
->setCellValueExplicit('C'.$baris, $r[1], PHPExcel_Cell_DataType::TYPE_STRING)
->setCellValue('D'.$baris, $vv)
->setCellValue('E'.$baris, $r[4])
->setCellValueExplicit('F'.$baris, $r[5], PHPExcel_Cell_DataType::TYPE_NUMERIC)
->setCellValueExplicit('G'.$baris, $r[12])
->setCellValueExplicit('H'.$baris, $r[11], PHPExcel_Cell_DataType::TYPE_NUMERIC)
->setCellValueExplicit('I'.$baris, $r[5]-$r[11], PHPExcel_Cell_DataType::TYPE_NUMERIC)
->setCellValue('J'.$baris, $r[6])
->setCellValue('K'.$baris, $r[7])
->setCellValue('L'.$baris, $r[8])
->setCellValue('M'.$baris, $r[9])
->setCellValue('N'.$baris, $r['no_nodin']);
$objPHPExcel->getSheet(0)->getStyle('F'.$baris)->getNumberFormat()->setFormatCode('#,##0');
$objPHPExcel->getSheet(0)->getStyle('G'.$baris)->getNumberFormat()->setFormatCode('#,##0');
$objPHPExcel->getSheet(0)->getStyle('H'.$baris)->getNumberFormat()->setFormatCode('#,##0');
$objPHPExcel->getSheet(0)->getStyle('I'.$baris)->getNumberFormat()->setFormatCode('#,##0');
$objPHPExcel->getSheet(0)->getStyle('D'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getSheet(0)->getStyle('M'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getSheet(0)->getStyle('A1:N'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$a++;
$baris++;
}
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="hutang_termin.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
?>