Ejemplo n.º 1
0
 public function actionTanggungJawab()
 {
     if (Yii::app()->request->isAjaxRequest) {
         return;
     }
     if (isset($_POST) && !empty($_POST)) {
         $format = $_POST['format'];
         $bulan = $_POST['periode_bulan'];
         $tahun = $_POST['periode_tahun'];
         $periode = period2date($bulan, $tahun);
         $start_date = $periode['start'];
         $end_date = $periode['end'];
         $start = 1;
         $file_name = 'Pertanggungjawaban';
         $worksheet_name = 'Pertanggungjawaban';
         $objPHPExcel = new PHPExcel();
         $objPHPExcel->setActiveSheetIndex(0)->mergeCells("A{$start}:G{$start}")->setCellValue("A{$start}", "PERIODE: " . date2longperiode($start_date, 'MMMM yyyy'))->getStyle("A{$start}")->getFont()->setSize(12)->setBold(true);
         $objPHPExcel->getActiveSheet()->setTitle($worksheet_name);
         $start++;
         $start++;
         $start_body = $start;
         $saldo_awal_kas = Pe::get_balance_before_for_bank_account("{$tahun}-{$bulan}-01");
         $index_kas_masuk = $start;
         $objPHPExcel->setActiveSheetIndex(0)->mergeCells("A{$start}:C{$start}")->setCellValue("A{$start}", "Saldo Kas per " . date2longperiode($start_date, 'd MMMM yyyy'))->setCellValue("D{$start}", $format == 'excel' ? $saldo_awal_kas : acc_format($saldo_awal_kas));
         $start++;
         $total_pendapatan = Pe::get_total_pendapatan($start_date, $end_date);
         $index_total_pendapatan = $start;
         $objPHPExcel->setActiveSheetIndex(0)->mergeCells("A{$start}:C{$start}")->setCellValue("A{$start}", "Penerimaan")->setCellValue("D{$start}", $format == 'excel' ? $total_pendapatan : acc_format($total_pendapatan));
         $start++;
         $objPHPExcel->setActiveSheetIndex(0)->mergeCells("A{$start}:C{$start}")->setCellValue("A{$start}", "Pengeluaran");
         $rows = Pe::get_pengeluaran_per_kode_rekening($start_date, $end_date);
         $start++;
         $total_pengeluaran = 0;
         $start_pengeluaran = $start;
         foreach ($rows as $row) {
             $total_beban = $format == 'excel' ? $row['total_beban'] : acc_format($row['total_beban']);
             $total_pengeluaran += $row['total_beban'];
             $objPHPExcel->setActiveSheetIndex(0)->setCellValue("B{$start}", $row['account_code'] . " " . $row['nama_rekening'])->setCellValue("C{$start}", $total_beban);
             $start++;
         }
         $end_pengeluaran = $start - 1;
         $total_pengeluaran = $format == 'excel' ? $total_pengeluaran : acc_format($total_pengeluaran);
         $objPHPExcel->setActiveSheetIndex(0)->mergeCells("B{$start}:C{$start}")->setCellValue("B{$start}", "Total Pengeluaran")->setCellValue("D{$start}", $total_pengeluaran)->getStyle("B{$start}:D{$start}")->getFont()->setBold(true);
         $index_total_pengeluaran = $start;
         $start++;
         $saldo_akhir_kas = Pe::get_balance_before_for_bank_account("{$tahun}-" . ($bulan + 1) . "-01");
         $index_kas_akhir = $start;
         $objPHPExcel->setActiveSheetIndex(0)->mergeCells("A{$start}:C{$start}")->setCellValue("A{$start}", "Total Kas per " . date2longperiode($end_date, 'dd MMMM yyyy'))->setCellValue("D{$start}", $format == 'excel' ? $saldo_akhir_kas : acc_format($saldo_akhir_kas));
         $end_body = $start;
         $start++;
         $styleArray = array('borders' => array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN)));
         $objPHPExcel->setActiveSheetIndex(0)->getStyle("A{$start_body}:D{$end_body}")->applyFromArray($styleArray);
         $start_row = $start_pengeluaran + 1;
         if ($format == 'excel') {
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_kas_masuk}")->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_ACCOUNTING);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_total_pendapatan}")->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_ACCOUNTING);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("C{$start_pengeluaran}:C{$end_pengeluaran}")->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_ACCOUNTING);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_total_pengeluaran}")->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_ACCOUNTING);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_kas_akhir}")->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_ACCOUNTING);
         } else {
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_kas_masuk}")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_total_pendapatan}")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("C{$start_pengeluaran}:C{$end_pengeluaran}")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_total_pengeluaran}")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
             $objPHPExcel->setActiveSheetIndex(0)->getStyle("D{$index_kas_akhir}")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
         }
         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension("A")->setWidth(5);
         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension("B")->setAutoSize(true);
         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension("C")->setAutoSize(true);
         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension("D")->setAutoSize(true);
         $this->footer($objPHPExcel, $start, $file_name, $format, "Laporan Pertanggungjawaban");
         Yii::app()->end();
     }
 }