/**
  * @param FormView      $view
  * @param FormInterface $form
  * @param array         $options
  */
 public function buildView(FormView $view, FormInterface $form, array $options)
 {
     $dataType = self::DATA_INTEGER;
     if (isset($options['data_type'])) {
         $dataType = $options['data_type'];
     }
     $formatterOptions = array();
     switch ($dataType) {
         case self::PERCENT:
             $formatterOptions['decimals'] = 2;
             $formatterOptions['grouping'] = false;
             $formatterOptions['percent'] = true;
             break;
         case self::DATA_DECIMAL:
             $formatterOptions['decimals'] = 2;
             $formatterOptions['grouping'] = true;
             break;
         case self::DATA_INTEGER:
         default:
             $formatterOptions['decimals'] = 0;
             $formatterOptions['grouping'] = false;
     }
     $formatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::DECIMAL);
     $formatterOptions['orderSeparator'] = $formatterOptions['grouping'] ? $formatter->getSymbol(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL) : '';
     $formatterOptions['decimalSeparator'] = $formatter->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
     $view->vars['formatter_options'] = array_merge($formatterOptions, $options['formatter_options']);
 }
Exemple #2
0
 /**
  * \copydoc ::Erebot::Styling::VariableInterface::render()
  *
  * \note
  *      If no currency was passed to this class' constructor,
  *      the currency associated with the translator's locale
  *      is used.
  */
 public function render(\Erebot\IntlInterface $translator)
 {
     $locale = $translator->getLocale(\Erebot\IntlInterface::LC_MONETARY);
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $currency = $this->currency !== null ? $this->currency : $formatter->getSymbol(\NumberFormatter::INTL_CURRENCY_SYMBOL);
     return (string) $formatter->formatCurrency($this->value, $currency);
 }
 public function currencySymbolFunction($locale)
 {
     $locale = $locale == null ? \Locale::getDefault() : $locale;
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
     return $symbol;
 }
Exemple #4
0
 public function currency_symbol($config = array())
 {
     $config = new KObjectConfig($config);
     $config->append(array('currency_code' => 'USD', 'locale' => 'en_US'));
     if (class_exists('NumberFormatter')) {
         $formatter = new \NumberFormatter($config->locale . '@currency=' . $config->currency_code, \NumberFormatter::CURRENCY);
         $result = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
     } else {
         $result = $config->currency_code;
     }
     return $result;
 }
Exemple #5
0
 public function check_number_locale()
 {
     $number_locale = $this->input->post('number_locale');
     $fmt = new \NumberFormatter($number_locale, \NumberFormatter::CURRENCY);
     $currency_symbol = empty($this->input->post('currency_symbol')) ? $fmt->getSymbol(\NumberFormatter::CURRENCY_SYMBOL) : $this->input->post('currency_symbol');
     if ($this->input->post('thousands_separator') == "false") {
         $fmt->setAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '');
     }
     $fmt->setSymbol(\NumberFormatter::CURRENCY_SYMBOL, $currency_symbol);
     $number_local_example = $fmt->format(1234567890.123);
     echo json_encode(array('success' => $number_local_example != FALSE, 'number_locale_example' => $number_local_example, 'currency_symbol' => $currency_symbol, 'thousands_separator' => $fmt->getAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL) != ''));
 }
Exemple #6
0
 private function format()
 {
     $numberFormatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::CURRENCY);
     $result = $numberFormatter->format($this->getValue());
     if ($this->format !== null || self::$globalFormat !== null) {
         // need a special format?
         if ($this->format === null) {
             // if the local format was not setted, the global format is used
             $this->format = self::$globalFormat;
         }
         $symbol = $numberFormatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
         $number = trim(str_replace($symbol, '', $result));
         $result = str_replace('{symbol}', $symbol, $this->format);
         $result = str_replace('{number}', $number, $result);
     }
     return $result;
 }
Exemple #7
0
 /**
  * Locale-aware number and monetary formatting.
  * Due to issues with the operating system functions on some platforms intl extension is used if available
  *
  *     // In English, "1,200.05"
  *     // In Spanish, "1200,05"
  *     // In Portuguese, "1 200,05"
  *     echo Num::format(1200.05, 2);
  *
  *     // In English, "1,200.05"
  *     // In Spanish, "1.200,05"
  *     // In Portuguese, "1.200.05"
  *     echo Num::format(1200.05, 2, true);
  *
  * @param   float   $number     number to format
  * @param   integer $places     decimal places
  * @param   boolean $monetary   monetary formatting?
  * @return  string
  */
 public static function format($number, $places, $monetary = false)
 {
     if (extension_loaded('intl')) {
         $mode = $monetary ? \NumberFormatter::CURRENCY : \NumberFormatter::DECIMAL;
         $formatter = new \NumberFormatter(\Locale::getDefault(), $mode);
         $formatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, $places);
         $result = $formatter->format($number);
         return $monetary ? str_replace($formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL), '', $result) : $result;
     }
     $info = localeconv();
     if ($monetary) {
         $decimal = $info['mon_decimal_point'];
         $thousands = $info['mon_thousands_sep'];
     } else {
         $decimal = $info['decimal_point'];
         $thousands = $info['thousands_sep'];
     }
     return number_format($number, $places, $decimal, $thousands);
 }
 private function format()
 {
     $locale = $this->locale === null ? \Locale::getDefault() : $this->locale;
     $numberFormatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $result = $numberFormatter->format($this->getValue());
     if ($this->format !== null || self::$globalFormat !== null) {
         // need a special format?
         if ($this->format === null) {
             // if the local format was not setted, the global format is used
             $this->format = self::$globalFormat;
         }
         // remove the parenthesis indicating negative value, it will be placed afterwards
         $result = trim($result, '()');
         $symbol = $numberFormatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
         $number = trim(str_replace($symbol, '', $result));
         $result = str_replace('{symbol}', $symbol, $this->format);
         $result = str_replace('{number}', $number, $result);
     }
     return $result;
 }
 /**
  * {@inheritdoc}
  */
 public function validate($value, Constraint $constraint)
 {
     if (null === $value || '' === $value) {
         return;
     }
     if (!is_scalar($value)) {
         throw new UnexpectedTypeException($value, 'string');
     }
     $formatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::DECIMAL);
     $formatter->setAttribute(\NumberFormatter::ROUNDING_MODE, \NumberFormatter::ROUND_DOWN);
     $formatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, 0);
     $formatter->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
     $formatter->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 0);
     $decimalSeparator = $formatter->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
     $position = 0;
     $formatter->parse($value, PHP_INT_SIZE == 8 ? $formatter::TYPE_INT64 : $formatter::TYPE_INT32, $position);
     if (intl_is_failure($formatter->getErrorCode()) || strpos($value, $decimalSeparator) !== false || $position < strlen($value)) {
         /** @var Integer $constraint */
         $this->context->addViolation($constraint->message, ['{{ value }}' => $this->formatValue($value)]);
     }
 }
 /**
  * Cetak kwitansi restitusi.
  *
  * @Route("/cetak-restitusi/{rid}", name="pembayaran_pendaftaran__cetak_restitusi")
  */
 public function cetakRestitusiAction($sid, $rid)
 {
     $sekolah = $this->getSekolah();
     $em = $this->getDoctrine()->getManager();
     $siswa = $em->getRepository('LanggasSisdikBundle:Siswa')->find($sid);
     if (!(is_object($siswa) && $siswa instanceof Siswa)) {
         throw $this->createNotFoundException('Entity Siswa tak ditemukan.');
     }
     if ($this->get('security.authorization_checker')->isGranted('view', $siswa) === false) {
         throw new AccessDeniedException($this->get('translator')->trans('akses.ditolak'));
     }
     $pembayaranPendaftaran = $em->getRepository('LanggasSisdikBundle:PembayaranPendaftaran')->findBy(['siswa' => $siswa]);
     $restitusi = $em->getRepository('LanggasSisdikBundle:RestitusiPendaftaran')->find($rid);
     if (!$restitusi instanceof RestitusiPendaftaran) {
         throw $this->createNotFoundException('Entity RestitusiPendaftaran tak ditemukan.');
     }
     $restitusiPendaftaran = $em->getRepository('LanggasSisdikBundle:RestitusiPendaftaran')->findBy(['sekolah' => $sekolah, 'siswa' => $siswa], ['waktuSimpan' => 'ASC']);
     $counterRestitusi = 0;
     $nomorRestitusi = 1;
     $totalRestitusi = 0;
     foreach ($restitusiPendaftaran as $r) {
         if ($r instanceof RestitusiPendaftaran) {
             $counterRestitusi++;
             $totalRestitusi += $r->getNominalRestitusi();
             if ($r->getId() == $rid) {
                 $nomorRestitusi = $counterRestitusi;
             }
         }
     }
     $jumlahRestitusi = $em->createQueryBuilder()->select('COUNT(restitusi.id)')->from('LanggasSisdikBundle:RestitusiPendaftaran', 'restitusi')->where('restitusi.sekolah = :sekolah')->andWhere('restitusi.siswa = :siswa')->setParameter('sekolah', $sekolah)->setParameter('siswa', $siswa)->getQuery()->getSingleScalarResult();
     $totalBayar = $em->createQueryBuilder()->select('SUM(transaksi.nominalPembayaran) AS jumlah')->from('LanggasSisdikBundle:TransaksiPembayaranPendaftaran', 'transaksi')->leftJoin('transaksi.pembayaranPendaftaran', 'pembayaran')->where('transaksi.sekolah = :sekolah')->andWhere('pembayaran.siswa = :siswa')->setParameter('sekolah', $sekolah)->setParameter('siswa', $siswa)->getQuery()->getSingleScalarResult();
     $totalPotongan = $em->createQueryBuilder()->select('SUM(pembayaran.persenPotonganDinominalkan + pembayaran.nominalPotongan) AS jumlah')->from('LanggasSisdikBundle:PembayaranPendaftaran', 'pembayaran')->where('pembayaran.siswa = :siswa')->setParameter('siswa', $siswa)->getQuery()->getSingleScalarResult();
     $qbDaftarBiaya = $em->createQueryBuilder()->select('daftar')->from('LanggasSisdikBundle:DaftarBiayaPendaftaran', 'daftar')->leftJoin('daftar.biayaPendaftaran', 'biaya')->leftJoin('daftar.pembayaranPendaftaran', 'pembayaran')->where('pembayaran.siswa = :siswa')->orderBy('biaya.urutan', 'ASC')->setParameter('siswa', $siswa);
     $daftarBiaya = $qbDaftarBiaya->getQuery()->getResult();
     $itemBiayaTersimpan = [];
     foreach ($daftarBiaya as $daftar) {
         if ($daftar instanceof DaftarBiayaPendaftaran) {
             $itemBiayaTersimpan[] = $daftar->getBiayaPendaftaran()->getId();
         }
     }
     /* @var $pembayaran PembayaranPendaftaran */
     /* @var $biaya BiayaPendaftaran */
     $totalBiayaMasuk = 0;
     foreach ($pembayaranPendaftaran as $pembayaran) {
         foreach ($pembayaran->getDaftarBiayaPendaftaran() as $biaya) {
             $totalBiayaMasuk += $biaya->getNominal();
         }
     }
     $totalBiayaSisa = 0;
     if (count($itemBiayaTersimpan) != 0) {
         if ($siswa->getPenjurusan() instanceof Penjurusan) {
             $response = $this->forward('LanggasSisdikBundle:BiayaPendaftaran:getFeeInfoRemain', ['tahun' => $siswa->getTahun()->getId(), 'gelombang' => $siswa->getGelombang()->getId(), 'usedfee' => implode(',', $itemBiayaTersimpan), 'penjurusan' => $siswa->getPenjurusan()->getId()]);
         } else {
             $response = $this->forward('LanggasSisdikBundle:BiayaPendaftaran:getFeeInfoRemain', ['tahun' => $siswa->getTahun()->getId(), 'gelombang' => $siswa->getGelombang()->getId(), 'usedfee' => implode(',', $itemBiayaTersimpan)]);
         }
         $totalBiayaSisa = $response->getContent();
     } else {
         if ($siswa->getPenjurusan() instanceof Penjurusan) {
             $response = $this->forward('LanggasSisdikBundle:BiayaPendaftaran:getFeeInfoTotal', ['tahun' => $siswa->getTahun()->getId(), 'gelombang' => $siswa->getGelombang()->getId(), 'penjurusan' => $siswa->getPenjurusan()->getId()]);
         } else {
             $response = $this->forward('LanggasSisdikBundle:BiayaPendaftaran:getFeeInfoTotal', ['tahun' => $siswa->getTahun()->getId(), 'gelombang' => $siswa->getGelombang()->getId()]);
         }
         $totalBiayaSisa = $response->getContent();
     }
     $totalBiaya = $totalBiayaSisa + ($totalBiayaMasuk - $totalPotongan);
     $tahun = $restitusi->getWaktuSimpan()->format('Y');
     $bulan = $restitusi->getWaktuSimpan()->format('m');
     $translator = $this->get('translator');
     $formatter = new \NumberFormatter($this->container->getParameter('locale'), \NumberFormatter::CURRENCY);
     $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
     $output = 'pdf';
     $pilihanCetak = $em->getRepository('LanggasSisdikBundle:PilihanCetakKwitansi')->findOneBy(['sekolah' => $sekolah]);
     if ($pilihanCetak instanceof PilihanCetakKwitansi) {
         $output = $pilihanCetak->getOutput();
     }
     $fs = new Filesystem();
     $dirKwitansiSekolah = $this->get('kernel')->getRootDir() . self::RECEIPTS_DIR . $sekolah->getId();
     if (!$fs->exists($dirKwitansiSekolah . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan)) {
         $fs->mkdir($dirKwitansiSekolah . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan);
     }
     if ($output == 'esc_p') {
         $filetarget = $restitusi->getNomorTransaksi() . ".sisdik.direct";
         $documenttarget = $dirKwitansiSekolah . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan . DIRECTORY_SEPARATOR . $filetarget;
         $commands = new EscapeCommand();
         $commands->addLineSpacing_1_6();
         $commands->addPageLength33Lines();
         $commands->addMarginBottom5Lines();
         $commands->addMaster10CPI();
         $commands->addMasterCondensed();
         $commands->addModeDraft();
         // max 137 characters
         $maxwidth = 137;
         $labelwidth1 = 20;
         $labelwidth2 = 15;
         $marginBadan = 7;
         $maxwidth2 = $maxwidth - $marginBadan;
         $spasi = "";
         $commands->addContent($sekolah->getNama() . "\r\n");
         $commands->addContent($sekolah->getAlamat() . ", " . $sekolah->getKodepos() . "\r\n");
         $phonefaxline = $sekolah->getTelepon() != "" ? $translator->trans('telephone', [], 'printing') . " " . $sekolah->getTelepon() : "";
         $phonefaxline .= $sekolah->getFax() != "" ? $phonefaxline != "" ? ", " . $translator->trans('faximile', [], 'printing') . " " . $sekolah->getFax() : $translator->trans('faximile', [], 'printing') . " " . $sekolah->getFax() : "";
         $commands->addContent($phonefaxline . "\r\n");
         $commands->addContent(str_repeat("=", $maxwidth) . "\r\n");
         $commands->addContent("\r\n");
         $nomorkwitansi = $translator->trans('receiptnum', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth2 - strlen($nomorkwitansi));
         $barisNomorkwitansi = $nomorkwitansi . $spasi . ": " . $restitusi->getNomorTransaksi();
         $namasiswa = $translator->trans('applicantname', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth1 - strlen($namasiswa));
         $barisNamasiswa = $namasiswa . $spasi . ": " . $siswa->getNamaLengkap();
         $tanggal = $translator->trans('date', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth2 - strlen($tanggal));
         $dateFormatter = $this->get('bcc_extra_tools.date_formatter');
         $barisTanggal = $tanggal . $spasi . ": " . $dateFormatter->format($restitusi->getWaktuSimpan(), 'long');
         $nomorpendaftaran = $translator->trans('applicationnum', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth1 - strlen($nomorpendaftaran));
         $barisNomorPendaftaran = $nomorpendaftaran . $spasi . ": " . $siswa->getNomorPendaftaran();
         $pengisiBaris1 = strlen($barisNomorkwitansi);
         $pengisiBaris2 = strlen($barisTanggal);
         $pengisiBarisTerbesar = $pengisiBaris1 > $pengisiBaris2 ? $pengisiBaris1 : $pengisiBaris2;
         $sisaBaris1 = $maxwidth2 - strlen($barisNamasiswa) - $pengisiBarisTerbesar;
         $sisaBaris2 = $maxwidth2 - strlen($barisNomorPendaftaran) - $pengisiBarisTerbesar;
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNamasiswa . str_repeat(" ", $sisaBaris1) . $barisNomorkwitansi . "\r\n");
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNomorPendaftaran . str_repeat(" ", $sisaBaris2) . $barisTanggal . "\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         /****** kwitansi format formular ******/
         $labelwidth3 = 25;
         $symbolwidth = count($symbol);
         $pricewidth = 15;
         $lebarketerangan = 93;
         $labelTotalBiaya = $translator->trans('total.biaya.pendaftaran', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelTotalBiaya));
         $barisTotalBiaya = $labelTotalBiaya . $spasi . ": " . number_format($totalBiaya, 0, ',', '.');
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisTotalBiaya . "\r\n");
         $labelTotalPembayaran = $translator->trans('total.pembayaran', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelTotalPembayaran));
         $barisTotalPembayaran = $labelTotalPembayaran . $spasi . ": " . number_format($totalBayar, 0, ',', '.');
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisTotalPembayaran . "\r\n");
         if ($jumlahRestitusi > 1) {
             $commands->addContent("\r\n");
             $labelRestitusiKe = $translator->trans('restitusi.ke', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelRestitusiKe));
             $barisRestitusiKe = $labelRestitusiKe . $spasi . ": {$nomorRestitusi} / {$jumlahRestitusi}";
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisRestitusiKe . "\r\n");
         } else {
             $commands->addContent("\r\n");
         }
         $labelBesarRestitusi = $translator->trans('besar.restitusi', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelBesarRestitusi));
         $barisBesarRestitusi = $labelBesarRestitusi . $spasi . ": " . number_format($restitusi->getNominalRestitusi(), 0, ',', '.');
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisBesarRestitusi . "\r\n");
         $labelKeteranganRestitusi = $translator->trans('description', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelKeteranganRestitusi));
         $barisKeteranganRestitusi = $labelKeteranganRestitusi . $spasi . ": " . $restitusi->getKeterangan();
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisKeteranganRestitusi . "\r\n");
         if ($jumlahRestitusi > 1) {
             $commands->addContent("\r\n");
             $labelTotalRestitusi = $translator->trans('total.restitusi', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelTotalRestitusi));
             $barisTotalRestitusi = $labelTotalRestitusi . $spasi . ": " . number_format($totalRestitusi, 0, ',', '.');
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisTotalRestitusi . "\r\n");
         }
         if ($jumlahRestitusi <= 1) {
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
         }
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         /****** selesai kwitansi format formular ******/
         $marginKiriTtd = 20;
         $lebarKolom7 = 62;
         $lebarKolom8 = 59;
         $kolomPendaftar1 = $translator->trans('pendaftar', [], 'printing');
         $spasiKolomPendaftar1 = $lebarKolom7 - (strlen($kolomPendaftar1) + $marginKiriTtd);
         $barisTandatangan1 = str_repeat(" ", $marginKiriTtd) . $kolomPendaftar1 . str_repeat(" ", $spasiKolomPendaftar1);
         $kolomPenerima1 = $translator->trans('cashier.or.treasurer', [], 'printing');
         $spasiKolomPenerima1 = $lebarKolom8 - strlen($kolomPenerima1);
         $barisTandatangan1 .= $kolomPenerima1 . str_repeat(" ", $spasiKolomPenerima1);
         $commands->addContent($barisTandatangan1 . "\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $kolomPendaftar2 = $siswa->getNamaLengkap();
         $spasiKolomPendaftar2 = $lebarKolom7 - (strlen($kolomPendaftar2) + $marginKiriTtd);
         $barisTandatangan2 = str_repeat(" ", $marginKiriTtd) . $kolomPendaftar2 . str_repeat(" ", $spasiKolomPendaftar2);
         $kolomPenerima2 = $restitusi->getDibuatOleh()->getName();
         $spasiKolomPenerima2 = $lebarKolom8 - strlen($kolomPenerima2);
         $barisTandatangan2 .= $kolomPenerima2 . str_repeat(" ", $spasiKolomPenerima2);
         $commands->addContent($barisTandatangan2 . "(" . $translator->trans('page', [], 'printing') . " 1/1)");
         $commands->addFormFeed();
         $commands->addResetCommand();
         $fp = fopen($documenttarget, "w");
         if (!$fp) {
             throw new IOException($translator->trans("exception.directprint.file"));
         } else {
             fwrite($fp, $commands->getCommands());
             fclose($fp);
         }
         $response = new Response(file_get_contents($documenttarget), 200);
         $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $filetarget);
         $response->headers->set('Content-Disposition', $d);
         $response->headers->set('Content-Description', 'Dokumen kwitansi restitusi pendaftaran');
         $response->headers->set('Content-Type', 'application/vnd.sisdik.directprint');
         $response->headers->set('Content-Transfer-Encoding', 'binary');
         $response->headers->set('Expires', '0');
         $response->headers->set('Cache-Control', 'must-revalidate');
         $response->headers->set('Pragma', 'public');
         $response->headers->set('Content-Length', filesize($documenttarget));
     } else {
         $filetarget = $restitusi->getNomorTransaksi() . ".sisdik.pdf";
         $documenttarget = $dirKwitansiSekolah . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan . DIRECTORY_SEPARATOR . $filetarget;
         $facade = $this->get('ps_pdf.facade');
         $tmpResponse = new Response();
         $this->render('LanggasSisdikBundle:PembayaranPendaftaran:restitusi.pdf.twig', ['sekolah' => $sekolah, 'siswa' => $siswa, 'pembayaranPendaftaran' => $pembayaranPendaftaran, 'restitusi' => $restitusi, 'totalBiaya' => $totalBiaya, 'totalBayar' => $totalBayar, 'totalRestitusi' => $totalRestitusi, 'jumlahRestitusi' => $jumlahRestitusi, 'nomorRestitusi' => $nomorRestitusi], $tmpResponse);
         $xml = $tmpResponse->getContent();
         $content = $facade->render($xml);
         $fp = fopen($documenttarget, "w");
         if (!$fp) {
             throw new IOException($translator->trans("exception.open.file.pdf"));
         } else {
             fwrite($fp, $content);
             fclose($fp);
         }
         $response = new Response(file_get_contents($documenttarget), 200);
         $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $filetarget);
         $response->headers->set('Content-Disposition', $d);
         $response->headers->set('Content-Description', 'Dokumen kwitansi restitusi pendaftaran');
         $response->headers->set('Content-Type', 'application/pdf');
         $response->headers->set('Content-Transfer-Encoding', 'binary');
         $response->headers->set('Expires', '0');
         $response->headers->set('Cache-Control', 'must-revalidate');
         $response->headers->set('Pragma', 'public');
         $response->headers->set('Content-Length', filesize($documenttarget));
     }
     return $response;
 }
Exemple #11
0
 /**
  * @param String $number
  * @return String
  */
 private function normalize($number)
 {
     $numberFormatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::DECIMAL);
     $decPoint = $numberFormatter->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
     $thousandPoint = $numberFormatter->getSymbol(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL);
     if (strstr($number, $decPoint)) {
         $number = str_replace($thousandPoint, '', $number);
         $number = str_replace($decPoint, '.', $number);
     }
     return $number;
 }
Exemple #12
0
 /**
  * @param Currency $currency
  * @param string|null $locale
  * @return string
  */
 public static function getCurrencySymbol(Currency $currency, $locale = null)
 {
     $locale = null === $locale ? \Yii::$app->language : $locale;
     $result = '';
     try {
         $fake = $locale . '@currency=' . $currency->iso_code;
         $fmt = new \NumberFormatter($fake, \NumberFormatter::CURRENCY);
         $result = $fmt->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
     } catch (\Exception $e) {
         $result = preg_replace('%[\\d\\s,]%i', '', $currency->format(0));
     }
     return $result;
 }
 /**
  * @param string $uiLocale
  *
  * @return string
  */
 public function setDecimalSeparator($uiLocale)
 {
     $number = new \NumberFormatter($uiLocale, \NumberFormatter::DECIMAL);
     $this->decimalSeparator = $number->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
 }
Exemple #14
0
 /**
  * Returns the code of the currency that is default for a specified country/region code.
  *
  * @param  string $code The two-letter ISO 3166 (or ISO 639) country/region code (case-insensitive).
  *
  * @return CUStringObject The three-letter currency code for the country/region code.
  */
 public static function currencyForCountryCode($code)
 {
     assert('is_cstring($code)', vs(isset($this), get_defined_vars()));
     $code = CString::toUpperCase($code);
     $locale = self::fromCountryCode($code);
     if (!$locale->hasRegionCode()) {
         return self::DEFAULT_CURRENCY;
     }
     $numberFormatter = new NumberFormatter($locale->m_name, NumberFormatter::CURRENCY);
     return $numberFormatter->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL);
 }
 /**
  * @Route("/{sid}/{id}/update", name="pembayaran_biaya_sekali__update")
  * @Method("POST")
  * @Template("LanggasSisdikBundle:PembayaranSekali:edit.html.twig")
  */
 public function updateAction($sid, $id)
 {
     $sekolah = $this->getSekolah();
     $this->setCurrentMenu();
     $em = $this->getDoctrine()->getManager();
     $siswa = $em->getRepository('LanggasSisdikBundle:Siswa')->find($sid);
     if (!(is_object($siswa) && $siswa instanceof Siswa)) {
         throw $this->createNotFoundException('Entity Siswa tak ditemukan.');
     }
     if ($this->get('security.authorization_checker')->isGranted('edit', $siswa) === false) {
         throw new AccessDeniedException($this->get('translator')->trans('akses.ditolak'));
     }
     // total payment start here because of the unknown behavior during submitting request
     $totalPayment = $siswa->getTotalNominalPembayaranSekali();
     $entity = $em->getRepository('LanggasSisdikBundle:PembayaranSekali')->find($id);
     if (!(is_object($entity) && $entity instanceof PembayaranSekali)) {
         throw $this->createNotFoundException('Entity PembayaranSekali tak ditemukan.');
     }
     $transaksiSebelumnya = [];
     /* @var $transaksi TransaksiPembayaranSekali */
     foreach ($entity->getTransaksiPembayaranSekali() as $transaksi) {
         $tmp['sekolah'] = $transaksi->getSekolah();
         $tmp['dibuatOleh'] = $transaksi->getDibuatOleh();
         $tmp['nominalPembayaran'] = $transaksi->getNominalPembayaran();
         $tmp['keterangan'] = $transaksi->getKeterangan();
         $transaksiSebelumnya[] = $tmp;
     }
     $itemBiaya = $this->getBiayaProperties($siswa);
     $daftarBiayaSekali = $entity->getDaftarBiayaSekali();
     if (count($daftarBiayaSekali) != 1) {
         throw new AccessDeniedException($this->get('translator')->trans('exception.biaya.sekali.bayar.gt.one'));
     }
     $totalNominalTransaksiSebelumnya = $entity->getTotalNominalTransaksiPembayaranSekali();
     $nominalBiaya = $daftarBiayaSekali[0]->getNominal();
     $adaPotongan = $entity->getAdaPotongan();
     $jenisPotongan = "";
     $nominalPotongan = 0;
     $persenPotongan = 0;
     if ($adaPotongan) {
         $jenisPotongan = $entity->getJenisPotongan();
         if ($jenisPotongan == 'nominal') {
             $nominalPotongan = $entity->getNominalPotongan();
         } elseif ($jenisPotongan == 'persentase') {
             $nominalPotongan = $nominalBiaya * ($entity->getPersenPotongan() / 100);
             $persenPotongan = $entity->getPersenPotongan();
         }
     }
     if ($totalNominalTransaksiSebelumnya == $nominalBiaya - $nominalPotongan && $totalNominalTransaksiSebelumnya > 0) {
         throw new AccessDeniedException($this->get('translator')->trans('exception.biaya.sekali.bayar.telah.lunas'));
     }
     $editForm = $this->createForm('sisdik_pembayaransekalicicilan', $entity);
     $editForm->submit($this->getRequest());
     if ($editForm->isValid()) {
         $now = new \DateTime();
         $qbmaxnum = $em->createQueryBuilder()->select('MAX(transaksi.nomorUrutTransaksiPerbulan)')->from('LanggasSisdikBundle:TransaksiPembayaranSekali', 'transaksi')->where("YEAR(transaksi.waktuSimpan) = :tahunsimpan")->andWhere("MONTH(transaksi.waktuSimpan) = :bulansimpan")->andWhere('transaksi.sekolah = :sekolah')->setParameter('tahunsimpan', $now->format('Y'))->setParameter('bulansimpan', $now->format('m'))->setParameter('sekolah', $sekolah);
         $nomormax = intval($qbmaxnum->getQuery()->getSingleScalarResult());
         $nomormax++;
         foreach ($transaksiSebelumnya as $value) {
             $transaksi = $entity->getTransaksiPembayaranSekali()->current();
             $transaksi->setSekolah($value['sekolah']);
             $transaksi->setDibuatOleh($value['dibuatOleh']);
             $transaksi->setNominalPembayaran($value['nominalPembayaran']);
             $transaksi->setKeterangan($value['keterangan']);
             $entity->getTransaksiPembayaranSekali()->next();
         }
         $currentPaymentAmount = 0;
         $transaksi = $entity->getTransaksiPembayaranSekali()->last();
         if ($transaksi instanceof TransaksiPembayaranSekali) {
             $currentPaymentAmount = $transaksi->getNominalPembayaran();
             $transaksi->setNomorUrutTransaksiPerbulan($nomormax);
             if ($sekolah->getAtributNomorTransaksiBiayaSekali() !== null) {
                 $nomorTransaksiSekali = $sekolah->getAtributNomorTransaksiBiayaSekali();
                 $nomorTransaksiSekali = str_replace("%tahun%", $now->format('Y'), $nomorTransaksiSekali);
                 $nomorTransaksiSekali = str_replace("%bulan%", $now->format('m'), $nomorTransaksiSekali);
                 $nomorTransaksiSekali = str_replace("%tanggal%", $now->format('d'), $nomorTransaksiSekali);
                 $tmpNomorTransaksi = $nomormax;
                 $matches = [];
                 $penambah = preg_match('/{\\+(\\d+)}/', $nomorTransaksiSekali, $matches);
                 if ($penambah === 1) {
                     $tmpNomorTransaksi = $tmpNomorTransaksi + $matches[1];
                 }
                 $nomorTransaksiSekali = preg_replace('/{\\+\\d+}/', '', $nomorTransaksiSekali);
                 if (preg_match('/#+%nomor-urut-perbulan%/', $nomorTransaksiSekali) === 1) {
                     $placeholder = preg_match_all('/#/', $nomorTransaksiSekali);
                     if ($placeholder >= 1 && strlen($tmpNomorTransaksi) <= $placeholder) {
                         $tmpNomorTransaksi = str_repeat('0', $placeholder - strlen($tmpNomorTransaksi) + 1) . $tmpNomorTransaksi;
                     }
                 }
                 $nomorTransaksiSekali = str_replace('#', '', $nomorTransaksiSekali);
                 $nomorTransaksiSekali = str_replace("%nomor-urut-perbulan%", $tmpNomorTransaksi, $nomorTransaksiSekali);
                 $transaksi->setNomorTransaksi($nomorTransaksiSekali);
             } else {
                 $transaksi->setNomorTransaksi(TransaksiPembayaranSekali::tandakwitansi . $now->format('Y') . $now->format('m') . $nomormax);
             }
         }
         $entity->setNominalTotalTransaksi($entity->getNominalTotalTransaksi() + $currentPaymentAmount);
         $payableAmountDue = $siswa->getTotalNominalBiayaSekali();
         $payableAmountRemain = $this->getPayableFeesRemain($siswa->getTahun(), $itemBiaya['tersisa'], $siswa->getPenjurusan());
         $totalPayment = $totalPayment + $currentPaymentAmount;
         $totalDiscount = $siswa->getTotalPotonganPembayaranSekali();
         if ($payableAmountRemain + $payableAmountDue == $totalPayment + $totalDiscount) {
             $siswa->setLunasBiayaSekali(true);
         }
         // print("\$totalPayment: $totalPayment<br />");
         // print("\$totalDiscount: $totalDiscount<br />");
         // print("\$payableAmountDue: $payableAmountDue<br />");
         // print("\$payableAmountRemain: $payableAmountRemain<br />");
         // exit;
         $em->persist($entity);
         $em->persist($siswa);
         $em->flush();
         $vendorSekolah = $em->getRepository('LanggasSisdikBundle:VendorSekolah')->findOneBy(['sekolah' => $sekolah]);
         $pilihanLayananSms = $em->getRepository('LanggasSisdikBundle:PilihanLayananSms')->findOneBy(['sekolah' => $sekolah, 'jenisLayanan' => 'za-biaya-sekali-bayar', 'status' => true]);
         if ($pilihanLayananSms instanceof PilihanLayananSms) {
             if ($pilihanLayananSms->getStatus()) {
                 $layanan = $em->getRepository('LanggasSisdikBundle:LayananSms')->findOneBy(['sekolah' => $sekolah, 'jenisLayanan' => 'za-biaya-sekali-bayar']);
                 if ($layanan instanceof LayananSms) {
                     $tekstemplate = $layanan->getTemplatesms()->getTeks();
                     $namaOrtuWali = "";
                     $ponselOrtuWali = "";
                     $orangtuaWaliAktif = $siswa->getOrangtuaWaliAktif();
                     if ($orangtuaWaliAktif instanceof OrangtuaWali) {
                         $namaOrtuWali = $orangtuaWaliAktif->getNama();
                         $ponselOrtuWali = $orangtuaWaliAktif->getPonsel();
                     }
                     $tekstemplate = str_replace("%nama-ortuwali%", $namaOrtuWali, $tekstemplate);
                     $tekstemplate = str_replace("%nama-siswa%", $siswa->getNamaLengkap(), $tekstemplate);
                     $nomorTransaksi = "";
                     $em->refresh($entity);
                     foreach ($entity->getTransaksiPembayaranSekali() as $transaksi) {
                         if ($transaksi instanceof TransaksiPembayaranSekali) {
                             $em->refresh($transaksi);
                             $nomorTransaksi = $transaksi->getNomorTransaksi();
                         }
                     }
                     $tekstemplate = str_replace("%nomor-kwitansi%", $nomorTransaksi, $tekstemplate);
                     $counter = 1;
                     $daftarBiayaDibayar = [];
                     foreach ($entity->getDaftarBiayaSekali() as $biaya) {
                         if ($counter > 3) {
                             $daftarBiayaDibayar[] = $this->get('translator')->trans('dll');
                             break;
                         }
                         $daftarBiayaDibayar[] = $biaya->getNama();
                         $counter++;
                     }
                     $tekstemplate = str_replace("%daftar-biaya%", implode(", ", $daftarBiayaDibayar), $tekstemplate);
                     $formatter = new \NumberFormatter($this->container->getParameter('locale'), \NumberFormatter::CURRENCY);
                     $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
                     $tekstemplate = str_replace("%besar-pembayaran%", $symbol . ". " . number_format($currentPaymentAmount, 0, ',', '.'), $tekstemplate);
                     if ($ponselOrtuWali != "") {
                         $nomorponsel = preg_split("/[\\s,\\/]+/", $ponselOrtuWali);
                         foreach ($nomorponsel as $ponsel) {
                             $messenger = $this->get('sisdik.messenger');
                             if ($messenger instanceof Messenger) {
                                 if ($vendorSekolah instanceof VendorSekolah) {
                                     if ($vendorSekolah->getJenis() == 'khusus') {
                                         $messenger->setUseVendor(true);
                                         $messenger->setVendorURL($vendorSekolah->getUrlPengirimPesan());
                                     }
                                 }
                                 $messenger->setPhoneNumber($ponsel);
                                 $messenger->setMessage($tekstemplate);
                                 $messenger->sendMessage($sekolah);
                             }
                         }
                     }
                 }
             }
         }
         if ($siswa->isLunasBiayaSekali()) {
             $pilihanLayananSms = $em->getRepository('LanggasSisdikBundle:PilihanLayananSms')->findOneBy(['sekolah' => $sekolah, 'jenisLayanan' => 'zb-biaya-sekali-bayar-lunas', 'status' => true]);
             if ($pilihanLayananSms instanceof PilihanLayananSms) {
                 if ($pilihanLayananSms->getStatus()) {
                     $layanan = $em->getRepository('LanggasSisdikBundle:LayananSms')->findOneBy(['sekolah' => $sekolah, 'jenisLayanan' => 'zb-biaya-sekali-bayar-lunas']);
                     if ($layanan instanceof LayananSms) {
                         $tekstemplate = $layanan->getTemplatesms()->getTeks();
                         $namaOrtuWali = "";
                         $ponselOrtuWali = "";
                         $orangtuaWaliAktif = $siswa->getOrangtuaWaliAktif();
                         if ($orangtuaWaliAktif instanceof OrangtuaWali) {
                             $namaOrtuWali = $orangtuaWaliAktif->getNama();
                             $ponselOrtuWali = $orangtuaWaliAktif->getPonsel();
                         }
                         $tekstemplate = str_replace("%nama-ortuwali%", $namaOrtuWali, $tekstemplate);
                         $tekstemplate = str_replace("%nama-siswa%", $siswa->getNamaLengkap(), $tekstemplate);
                         $tekstemplate = str_replace("%daftar-biaya%", implode(", ", $this->getDaftarBiayaSiswa($siswa)), $tekstemplate);
                         $formatter = new \NumberFormatter($this->container->getParameter('locale'), \NumberFormatter::CURRENCY);
                         $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
                         $tekstemplate = str_replace("%total-pembayaran%", $symbol . ". " . number_format($totalPayment, 0, ',', '.'), $tekstemplate);
                         if ($ponselOrtuWali != "") {
                             $nomorponsel = preg_split("/[\\s,\\/]+/", $ponselOrtuWali);
                             foreach ($nomorponsel as $ponsel) {
                                 $messenger = $this->get('sisdik.messenger');
                                 if ($messenger instanceof Messenger) {
                                     if ($vendorSekolah instanceof VendorSekolah) {
                                         if ($vendorSekolah->getJenis() == 'khusus') {
                                             $messenger->setUseVendor(true);
                                             $messenger->setVendorURL($vendorSekolah->getUrlPengirimPesan());
                                         }
                                     }
                                     $messenger->setPhoneNumber($ponsel);
                                     $messenger->setMessage($tekstemplate);
                                     $messenger->sendMessage($sekolah);
                                 }
                             }
                         }
                     }
                 }
             }
         }
         $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('flash.pembayaran.cicilan.biaya.sekali.bayar.terbarui'));
         return $this->redirect($this->generateUrl('pembayaran_biaya_sekali__show', ['sid' => $sid, 'id' => $id]));
     }
     $this->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('flash.pembayaran.cicilan.biaya.sekali.bayar.gagal.disimpan'));
     return ['siswa' => $siswa, 'entity' => $entity, 'totalNominalTransaksiSebelumnya' => $totalNominalTransaksiSebelumnya, 'nominalBiaya' => $nominalBiaya, 'adaPotongan' => $adaPotongan, 'jenisPotongan' => $jenisPotongan, 'nominalPotongan' => $nominalPotongan, 'persenPotongan' => $persenPotongan, 'edit_form' => $editForm->createView()];
 }
 public function testGetSymbol()
 {
     $this->skipIfIntlExtensionIsNotLoaded();
     $intlDecimalFormatter = new \NumberFormatter('en', \NumberFormatter::DECIMAL);
     $intlCurrencyFormatter = new \NumberFormatter('en', \NumberFormatter::CURRENCY);
     $stubDecimalFormatter = $this->getStubFormatterWithDecimalStyle();
     $stubCurrencyFormatter = $this->getStubFormatterWithCurrencyStyle();
     for ($i = 0; $i <= 17; $i++) {
         $this->assertSame($stubDecimalFormatter->getSymbol($i), $intlDecimalFormatter->getSymbol($i), $i);
         $this->assertSame($stubCurrencyFormatter->getSymbol($i), $intlCurrencyFormatter->getSymbol($i), $i);
     }
 }
    }
    if ($new2bwoptions != $Settings->getSetting('kBitOptions')) {
        $Settings->setSetting('kBitOptions', $new2bwoptions);
        $success[] = T_("Bandwidth Options Updated");
    }
    // Call validate&change functions for changed items
}
$templateEngine->assign("location", $Settings->getSetting('locationName'));
$templateEngine->assign("mboptions", $Settings->getSetting('mbOptions'));
$templateEngine->assign("timeoptions", $Settings->getSetting('timeOptions'));
$templateEngine->assign("bwoptions", $Settings->getSetting('kBitOptions'));
// Locale stuff
$locale = $Settings->getSetting('locale');
$fmt = new NumberFormatter($locale, NumberFormatter::CURRENCY);
$templateEngine->assign("locale", $locale);
$templateEngine->assign("currency", $fmt->getSymbol(NumberFormatter::CURRENCY_SYMBOL));
$templateEngine->assign("language", locale_get_display_language($locale));
$templateEngine->assign("region", locale_get_display_region($locale));
$templateEngine->assign("support_name", $Settings->getSetting('supportContactName'));
$templateEngine->assign("support_link", $Settings->getSetting('supportContactLink'));
$templateEngine->assign("website_name", $Settings->getSetting('websiteName'));
$templateEngine->assign("website_link", $Settings->getSetting('websiteLink'));
$templateEngine->assign("available_languages", \Grase\Locale::getAvailableLanguages());
if (sizeof($error) > 0) {
    $templateEngine->assign("error", $error);
}
if (sizeof($success) > 0) {
    $templateEngine->assign("success", $success);
}
// Location
function updateLocation($location)
 /**
  * @Route("-cicil/{sid}/{pid}", name="pembayaran_biaya_rutin__update")
  * @Method("POST")
  * @Template("LanggasSisdikBundle:PembayaranBiayaRutin:edit.html.twig")
  */
 public function updateAction($sid, $pid)
 {
     $sekolah = $this->getSekolah();
     $this->setCurrentMenu();
     $em = $this->getDoctrine()->getManager();
     $siswa = $em->getRepository('LanggasSisdikBundle:Siswa')->find($sid);
     if (!$siswa instanceof Siswa) {
         throw $this->createNotFoundException('Entity Siswa tak ditemukan.');
     }
     if ($this->get('security.authorization_checker')->isGranted('edit', $siswa) === false) {
         throw new AccessDeniedException($this->get('translator')->trans('akses.ditolak'));
     }
     $entity = $em->getRepository('LanggasSisdikBundle:PembayaranRutin')->find($pid);
     if (!(is_object($entity) && $entity instanceof PembayaranRutin)) {
         throw $this->createNotFoundException('Entity PembayaranRutin tak ditemukan.');
     }
     $totalBiayaHarusDibayar = $entity->getNominalBiaya() - ($entity->getNominalPotongan() + $entity->getPersenPotonganDinominalkan());
     if ($totalBiayaHarusDibayar == $entity->getTotalNominalTransaksiPembayaranRutin()) {
         throw new AccessDeniedException($this->get('translator')->trans('exception.periode.pembayaran.rutin.telah.lunas'));
     }
     $transaksiSebelumnya = [];
     /* @var $transaksi TransaksiPembayaranRutin */
     foreach ($entity->getTransaksiPembayaranRutin() as $transaksi) {
         $tmp['sekolah'] = $transaksi->getSekolah();
         $tmp['dibuatOleh'] = $transaksi->getDibuatOleh();
         $tmp['nominalPembayaran'] = $transaksi->getNominalPembayaran();
         $tmp['keterangan'] = $transaksi->getKeterangan();
         $transaksiSebelumnya[] = $tmp;
     }
     $editForm = $this->createForm('sisdik_pembayaranrutincicilan', $entity);
     $editForm->submit($this->getRequest());
     $totalBayar = 0;
     $transaksiCollection = $editForm->get('transaksiPembayaranRutin')->getData();
     foreach ($transaksiCollection as $transaksi) {
         $totalBayar += $transaksi->getNominalPembayaran();
     }
     if ($totalBiayaHarusDibayar < $totalBayar) {
         $message = $this->get('translator')->trans('shortinfo.pay.notbiggerthan.fee');
         $editForm->get('transaksiPembayaranRutin')->addError(new FormError($message));
     }
     if ($editForm->isValid()) {
         $now = new \DateTime();
         $qbmaxnum = $em->createQueryBuilder()->select('MAX(transaksi.nomorUrutTransaksiPerbulan)')->from('LanggasSisdikBundle:TransaksiPembayaranRutin', 'transaksi')->where("YEAR(transaksi.waktuSimpan) = :tahunsimpan")->andWhere("MONTH(transaksi.waktuSimpan) = :bulansimpan")->andWhere('transaksi.sekolah = :sekolah')->setParameter('tahunsimpan', $now->format('Y'))->setParameter('bulansimpan', $now->format('m'))->setParameter('sekolah', $sekolah);
         $nomormax = intval($qbmaxnum->getQuery()->getSingleScalarResult());
         $nomormax++;
         foreach ($transaksiSebelumnya as $value) {
             $transaksi = $entity->getTransaksiPembayaranRutin()->current();
             $transaksi->setSekolah($value['sekolah']);
             $transaksi->setDibuatOleh($value['dibuatOleh']);
             $transaksi->setNominalPembayaran($value['nominalPembayaran']);
             $transaksi->setKeterangan($value['keterangan']);
             $entity->getTransaksiPembayaranRutin()->next();
         }
         $totalPayment = 0;
         $nomorTransaksi = "";
         $transaksi = $entity->getTransaksiPembayaranRutin()->last();
         if ($transaksi instanceof TransaksiPembayaranRutin) {
             $transaksi->setNomorUrutTransaksiPerbulan($nomormax);
             if ($sekolah->getAtributNomorTransaksiBiayaBerulang() !== null) {
                 $nomorTransaksiRutin = $sekolah->getAtributNomorTransaksiBiayaBerulang();
                 $nomorTransaksiRutin = str_replace("%tahun%", $now->format('Y'), $nomorTransaksiRutin);
                 $nomorTransaksiRutin = str_replace("%bulan%", $now->format('m'), $nomorTransaksiRutin);
                 $nomorTransaksiRutin = str_replace("%tanggal%", $now->format('d'), $nomorTransaksiRutin);
                 $tmpNomorTransaksi = $nomormax;
                 $matches = [];
                 $penambah = preg_match('/{\\+(\\d+)}/', $nomorTransaksiRutin, $matches);
                 if ($penambah === 1) {
                     $tmpNomorTransaksi = $tmpNomorTransaksi + $matches[1];
                 }
                 $nomorTransaksiRutin = preg_replace('/{\\+\\d+}/', '', $nomorTransaksiRutin);
                 if (preg_match('/#+%nomor-urut-perbulan%/', $nomorTransaksiRutin) === 1) {
                     $placeholder = preg_match_all('/#/', $nomorTransaksiRutin);
                     if ($placeholder >= 1 && strlen($tmpNomorTransaksi) <= $placeholder) {
                         $tmpNomorTransaksi = str_repeat('0', $placeholder - strlen($tmpNomorTransaksi) + 1) . $tmpNomorTransaksi;
                     }
                 }
                 $nomorTransaksiRutin = str_replace('#', '', $nomorTransaksiRutin);
                 $nomorTransaksiRutin = str_replace("%nomor-urut-perbulan%", $tmpNomorTransaksi, $nomorTransaksiRutin);
                 $transaksi->setNomorTransaksi($nomorTransaksiRutin);
             } else {
                 $transaksi->setNomorTransaksi(TransaksiPembayaranRutin::tandakwitansi . $now->format('Y') . $now->format('m') . $nomormax);
             }
             $totalPayment = $transaksi->getNominalPembayaran();
             $nomorTransaksi = $transaksi->getNomorTransaksi();
         }
         $em->persist($entity);
         $em->flush();
         $vendorSekolah = $em->getRepository('LanggasSisdikBundle:VendorSekolah')->findOneBy(['sekolah' => $sekolah]);
         $pilihanLayananSms = $em->getRepository('LanggasSisdikBundle:PilihanLayananSms')->findOneBy(['sekolah' => $sekolah, 'jenisLayanan' => 'zda-biaya-rutin-bayar', 'status' => true]);
         if ($pilihanLayananSms instanceof PilihanLayananSms) {
             if ($pilihanLayananSms->getStatus()) {
                 $layanan = $em->getRepository('LanggasSisdikBundle:LayananSms')->findOneBy(['sekolah' => $sekolah, 'jenisLayanan' => 'zda-biaya-rutin-bayar']);
                 if ($layanan instanceof LayananSms) {
                     $tekstemplate = $layanan->getTemplatesms()->getTeks();
                     $namaOrtuWali = "";
                     $ponselOrtuWali = "";
                     $orangtuaWaliAktif = $siswa->getOrangtuaWaliAktif();
                     if ($orangtuaWaliAktif instanceof OrangtuaWali) {
                         $namaOrtuWali = $orangtuaWaliAktif->getNama();
                         $ponselOrtuWali = $orangtuaWaliAktif->getPonsel();
                     }
                     $tekstemplate = str_replace("%nama-ortuwali%", $namaOrtuWali, $tekstemplate);
                     $tekstemplate = str_replace("%nama-siswa%", $siswa->getNamaLengkap(), $tekstemplate);
                     $tekstemplate = str_replace("%nis%", $siswa->getNomorInduk(), $tekstemplate);
                     $tekstemplate = str_replace("%nomor-kwitansi%", $nomorTransaksi, $tekstemplate);
                     $tekstemplate = str_replace("%nama-biaya%", $entity->getNamaBiaya(), $tekstemplate);
                     $formatter = new \NumberFormatter($this->container->getParameter('locale'), \NumberFormatter::CURRENCY);
                     $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
                     $tekstemplate = str_replace("%besar-pembayaran%", $symbol . ". " . number_format($totalPayment, 0, ',', '.'), $tekstemplate);
                     if ($ponselOrtuWali != "") {
                         $nomorponsel = preg_split("/[\\s,\\/]+/", $ponselOrtuWali);
                         foreach ($nomorponsel as $ponsel) {
                             $messenger = $this->get('sisdik.messenger');
                             if ($messenger instanceof Messenger) {
                                 if ($vendorSekolah instanceof VendorSekolah) {
                                     if ($vendorSekolah->getJenis() == 'khusus') {
                                         $messenger->setUseVendor(true);
                                         $messenger->setVendorURL($vendorSekolah->getUrlPengirimPesan());
                                     }
                                 }
                                 $messenger->setPhoneNumber($ponsel);
                                 $messenger->setMessage($tekstemplate);
                                 $messenger->sendMessage($sekolah);
                             }
                         }
                     }
                 }
             }
         }
         $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('flash.pembayaran.cicilan.biaya.berulang.terbarui'));
         return $this->redirect($this->generateUrl('pembayaran_biaya_rutin__edit', ['sid' => $siswa->getId(), 'pid' => $entity->getId()]));
     }
     return ['siswa' => $siswa, 'entity' => $entity, 'edit_form' => $editForm->createView()];
 }
 /**
  * Cetak nota pembayaran biaya berulang
  *
  * @Route("/{pid}/{tid}", name="pembayaran_biaya_rutin__cetaknota")
  */
 public function printReceiptAction($sid, $pid, $tid)
 {
     $sekolah = $this->getSekolah();
     /* @var $em EntityManager */
     $em = $this->getDoctrine()->getManager();
     $siswa = $em->getRepository('LanggasSisdikBundle:Siswa')->find($sid);
     if (!(is_object($siswa) && $siswa instanceof Siswa)) {
         throw $this->createNotFoundException('Entity Siswa tak ditemukan.');
     }
     if ($this->get('security.authorization_checker')->isGranted('view', $siswa) === false) {
         throw new AccessDeniedException($this->get('translator')->trans('akses.ditolak'));
     }
     $pembayaran = $em->getRepository('LanggasSisdikBundle:PembayaranRutin')->find($pid);
     if (!(is_object($pembayaran) && $pembayaran instanceof PembayaranRutin)) {
         throw $this->createNotFoundException('Entity PembayaranRutin tak ditemukan.');
     }
     $biaya = $pembayaran->getBiayaRutin();
     $transaksi = $em->getRepository('LanggasSisdikBundle:TransaksiPembayaranRutin')->find($tid);
     if (!$transaksi && !$transaksi instanceof TransaksiPembayaranRutin) {
         throw $this->createNotFoundException('Entity TransaksiPembayaranRutin tak ditemukan.');
     }
     $transaksiPembayaran = $em->getRepository('LanggasSisdikBundle:TransaksiPembayaranRutin')->findBy(['pembayaranRutin' => $pid], ['waktuSimpan' => 'ASC']);
     $counterTransaksi = 0;
     $nomorCicilan = 1;
     $nomorTransaksi = [];
     foreach ($transaksiPembayaran as $t) {
         if ($t instanceof TransaksiPembayaranRutin) {
             $counterTransaksi++;
             $nomorTransaksi[$t->getNomorTransaksi()] = $t->getNomorTransaksi();
             if ($t->getId() == $tid) {
                 $nomorCicilan = $counterTransaksi;
                 break;
             }
         }
     }
     $nomorCicilan = count($transaksiPembayaran) <= 1 ? 1 : $nomorCicilan;
     $totalPembayaranHinggaTransaksiTerpilih = $pembayaran->getTotalNominalTransaksiPembayaranRutinHinggaTransaksiTerpilih($nomorTransaksi);
     $hargaItem = $pembayaran->getNominalBiaya() - ($pembayaran->getNominalPotongan() + $pembayaran->getPersenPotonganDinominalkan());
     $adaCicilan = false;
     if (count($pembayaran->getTransaksiPembayaranRutin()) > 1) {
         $adaCicilan = true;
     } elseif (count($pembayaran->getTransaksiPembayaranRutin()) == 1) {
         if ($hargaItem > $pembayaran->getTotalNominalTransaksiPembayaranRutin()) {
             $adaCicilan = true;
         }
     }
     $pembayaranBiaya = $em->createQueryBuilder()->select('pembayaran')->from('LanggasSisdikBundle:PembayaranRutin', 'pembayaran')->leftJoin('pembayaran.transaksiPembayaranRutin', 'transaksi')->where('pembayaran.siswa = :siswa')->andWhere('pembayaran.biayaRutin = :biayaRutin')->setParameter('siswa', $siswa)->setParameter('biayaRutin', $biaya)->getQuery()->getResult();
     $counter = 0;
     foreach ($pembayaranBiaya as $p) {
         if ($p instanceof PembayaranRutin) {
             $counter++;
             if ($p->getId() == $pembayaran->getId()) {
                 $periodePembayaran = $counter;
             }
         }
     }
     $jumlahPeriode = count($pembayaranBiaya);
     $tmpHariKe = $biaya->getBulananHariKe() && $biaya->getBulananHariKe() <= 28 ? $biaya->getBulananHariKe() : '01';
     $tanggalAwalBayar = new \DateTime($siswa->getPembiayaanSejak()->format('Y-m-') . $tmpHariKe);
     $bedaBulan = abs($biaya->getBulanAwal() - $siswa->getPembiayaanSejak()->format('n'));
     $tempoPeriode = $periodePembayaran - 1;
     switch ($biaya->getPerulangan()) {
         case 'a-harian':
             $tanggalAwalBayar->modify('+' . $tempoPeriode . ' days');
             break;
         case 'b-mingguan':
             $tanggalAwalBayar->modify('+' . $tempoPeriode . ' weeks');
             break;
         case 'c-bulanan':
             $tanggalAwalBayar->modify('+' . $tempoPeriode . ' months');
             break;
         case 'd-triwulan':
             if ($biaya->getBulanAwal() < $siswa->getPembiayaanSejak()->format('n')) {
                 $tanggalAwalBayar->modify("+1 year");
                 $tanggalAwalBayar->modify("-{$bedaBulan} months");
             } else {
                 $tanggalAwalBayar->modify("+{$bedaBulan} months");
             }
             $tanggalAwalBayar->modify('+' . ($tempoPeriode - 1) * 3 . ' months');
             break;
         case 'e-caturwulan':
             if ($biaya->getBulanAwal() < $siswa->getPembiayaanSejak()->format('n')) {
                 $tanggalAwalBayar->modify("+1 year");
                 $tanggalAwalBayar->modify("-{$bedaBulan} months");
             } else {
                 $tanggalAwalBayar->modify("+{$bedaBulan} months");
             }
             $tanggalAwalBayar->modify('+' . ($tempoPeriode - 1) * 4 . ' months');
             break;
         case 'f-semester':
             if ($biaya->getBulanAwal() < $siswa->getPembiayaanSejak()->format('n')) {
                 $tanggalAwalBayar->modify("+1 year");
                 $tanggalAwalBayar->modify("-{$bedaBulan} months");
             } else {
                 $tanggalAwalBayar->modify("+{$bedaBulan} months");
             }
             $tanggalAwalBayar->modify('+' . ($tempoPeriode - 1) * 6 . ' months');
             break;
         case 'g-tahunan':
             if ($biaya->getBulanAwal() < $siswa->getPembiayaanSejak()->format('n')) {
                 $tanggalAwalBayar->modify("+1 year");
                 $tanggalAwalBayar->modify("-{$bedaBulan} months");
             } else {
                 $tanggalAwalBayar->modify("+{$bedaBulan} months");
             }
             $tanggalAwalBayar->modify('+' . $tempoPeriode . ' years');
             break;
     }
     $tahun = $transaksi->getWaktuSimpan()->format('Y');
     $bulan = $transaksi->getWaktuSimpan()->format('m');
     /* @var $translator Translator */
     $translator = $this->get('translator');
     $formatter = new \NumberFormatter($this->container->getParameter('locale'), \NumberFormatter::CURRENCY);
     $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
     $output = 'pdf';
     $pilihanCetak = $em->getRepository('LanggasSisdikBundle:PilihanCetakKwitansi')->findOneBy(['sekolah' => $sekolah]);
     if ($pilihanCetak instanceof PilihanCetakKwitansi) {
         $output = $pilihanCetak->getOutput();
     }
     $fs = new Filesystem();
     $schoolReceiptDir = $this->get('kernel')->getRootDir() . self::RECEIPTS_DIR . $sekolah->getId();
     if (!$fs->exists($schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan)) {
         $fs->mkdir($schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan);
     }
     if ($output == 'esc_p') {
         $filetarget = $transaksi->getNomorTransaksi() . ".sisdik.direct";
         $documenttarget = $schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan . DIRECTORY_SEPARATOR . $filetarget;
         $dateFormatter = $this->get('bcc_extra_tools.date_formatter');
         $commands = new EscapeCommand();
         $commands->addLineSpacing_1_6();
         $commands->addPageLength33Lines();
         $commands->addMarginBottom5Lines();
         $commands->addMaster10CPI();
         $commands->addMasterCondensed();
         $commands->addModeDraft();
         // max 137 characters wide, 28 lines height
         $maxwidth = 137;
         $labelwidth1 = 20;
         $labelwidth2 = 15;
         $marginBadan = 7;
         $maxwidth2 = $maxwidth - $marginBadan;
         $spasi = "";
         $commands->addContent($sekolah->getNama() . "\r\n");
         $commands->addContent($sekolah->getAlamat() . ", " . $sekolah->getKodepos() . "\r\n");
         $phonefaxline = $sekolah->getTelepon() != "" ? $translator->trans('telephone', [], 'printing') . " " . $sekolah->getTelepon() : "";
         $phonefaxline .= $sekolah->getFax() != "" ? $phonefaxline != "" ? ", " . $translator->trans('faximile', [], 'printing') . " " . $sekolah->getFax() : $translator->trans('faximile', [], 'printing') . " " . $sekolah->getFax() : "";
         $commands->addContent($phonefaxline . "\r\n");
         $commands->addContent(str_repeat("=", $maxwidth) . "\r\n");
         $commands->addContent("\r\n");
         $nomorkwitansi = $translator->trans('receiptnum', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth2 - strlen($nomorkwitansi));
         $barisNomorkwitansi = $nomorkwitansi . $spasi . ": " . $transaksi->getNomorTransaksi();
         $namasiswa = $translator->trans('nama.siswa', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth1 - strlen($namasiswa));
         $barisNamasiswa = $namasiswa . $spasi . ": " . $siswa->getNamaLengkap();
         $tanggal = $translator->trans('date', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth2 - strlen($tanggal));
         $barisTanggal = $tanggal . $spasi . ": " . $dateFormatter->format($transaksi->getWaktuSimpan(), 'long');
         $nomorIdentitas = $translator->trans('identitas.sisdik', [], 'printing') . ' / ' . $translator->trans('nomor.induk', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth1 - strlen($nomorIdentitas));
         $barisNomorIdentitas = $nomorIdentitas . $spasi . ": " . $siswa->getNomorIndukSistem() . ' / ' . $siswa->getNomorInduk();
         $pengisiBaris1 = strlen($barisNomorkwitansi);
         $pengisiBaris2 = strlen($barisTanggal);
         $pengisiBarisTerbesar = $pengisiBaris1 > $pengisiBaris2 ? $pengisiBaris1 : $pengisiBaris2;
         $sisaBaris1 = $maxwidth2 - strlen($barisNomorIdentitas) - $pengisiBarisTerbesar;
         $sisaBaris2 = $maxwidth2 - strlen($barisNamasiswa) - $pengisiBarisTerbesar;
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNomorIdentitas . str_repeat(" ", $sisaBaris1) . $barisNomorkwitansi . "\r\n");
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNamasiswa . str_repeat(" ", $sisaBaris2) . $barisTanggal . "\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         /****** kwitansi format formular ******/
         $labelwidth3 = 25;
         $symbolwidth = count($symbol);
         $pricewidth = 15;
         $lebarketerangan = 93;
         $labelItemPembayaran = $translator->trans('paymentitem', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelItemPembayaran));
         $barisItemPembayaran = $labelItemPembayaran . $spasi . ": " . $pembayaran->getNamaBiaya();
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisItemPembayaran . "\r\n");
         $labelPeriodePembayaran = $translator->trans('periode.pembayaran.ke', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelPeriodePembayaran));
         $barisPeriodePembayaran = $labelPeriodePembayaran . $spasi . ": " . $periodePembayaran;
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisPeriodePembayaran . "\r\n");
         $labelJatuhTempo = $translator->trans('jatuh.tempo', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelJatuhTempo));
         $barisJatuhTempo = $labelJatuhTempo . $spasi . ": " . $dateFormatter->format($tanggalAwalBayar, 'long');
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisJatuhTempo . "\r\n");
         $labelHargaItemPembayaran = $translator->trans('itemprice', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelHargaItemPembayaran));
         $valueHargaItemPembayaran = number_format($pembayaran->getNominalBiaya(), 0, ',', '.');
         $spasi2 = str_repeat(" ", $pricewidth - strlen($valueHargaItemPembayaran));
         $barisHargaItemPembayaran = $labelHargaItemPembayaran . $spasi . ": " . $symbol . $spasi2 . $valueHargaItemPembayaran;
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisHargaItemPembayaran . "\r\n");
         $nominalPotongan = $pembayaran->getNominalPotongan() + $pembayaran->getPersenPotonganDinominalkan();
         if ($pembayaran->getAdaPotongan()) {
             $labelPotongan = $translator->trans('discount', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelPotongan));
             $persenPotongan = "";
             if ($pembayaran->getJenisPotongan() == 'nominal') {
                 $nominalPotongan = $pembayaran->getNominalPotongan();
                 $valuePotongan = number_format($pembayaran->getNominalPotongan(), 0, ',', '.');
             } else {
                 $nominalPotongan = $pembayaran->getPersenPotonganDinominalkan();
                 $valuePotongan = number_format($pembayaran->getPersenPotonganDinominalkan(), 0, ',', '.');
                 $persenPotongan = " (" . $pembayaran->getPersenPotongan() . "%)";
             }
             $spasi2 = str_repeat(" ", $pricewidth - strlen($valuePotongan));
             $barisPotongan = $labelPotongan . $spasi . ": " . $symbol . $spasi2 . $valuePotongan . $persenPotongan;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisPotongan . "\r\n");
             $labelTotalHarga = $translator->trans('totalprice', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelTotalHarga));
             $valueTotalHarga = number_format($hargaItem, 0, ',', '.');
             $spasi2 = str_repeat(" ", $pricewidth - strlen($valueTotalHarga));
             $barisTotalHarga = $labelTotalHarga . $spasi . ": " . $symbol . $spasi2 . $valueTotalHarga;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisTotalHarga . "\r\n");
         }
         if ($adaCicilan) {
             $commands->addContent("\r\n");
             $labelPembayaranKe = $translator->trans('paymentnum', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelPembayaranKe));
             $barisPembayaranKe = $labelPembayaranKe . $spasi . ": " . $nomorCicilan;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisPembayaranKe . "\r\n");
         }
         $labelNominalPembayaran = $translator->trans('paymentamount', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelNominalPembayaran));
         $valueNominalPembayaran = number_format($transaksi->getNominalPembayaran(), 0, ',', '.');
         $spasi2 = str_repeat(" ", $pricewidth - strlen($valueNominalPembayaran));
         $barisNominalPembayaran = $labelNominalPembayaran . $spasi . ": " . $symbol . $spasi2 . $valueNominalPembayaran;
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNominalPembayaran . "\r\n");
         $labelKeteranganPembayaran = $translator->trans('description', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth3 - strlen($labelKeteranganPembayaran));
         $valueKeteranganPembayaran = $transaksi->getKeterangan();
         $valueKeteranganPembayaran = strlen($valueKeteranganPembayaran) > $lebarketerangan ? substr($valueKeteranganPembayaran, 0, $lebarketerangan - 3) . "..." : $valueKeteranganPembayaran;
         $barisKeteranganPembayaran = $labelKeteranganPembayaran . $spasi . ": " . $valueKeteranganPembayaran;
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisKeteranganPembayaran . "\r\n");
         if ($adaCicilan) {
             $commands->addContent(str_repeat(" ", $marginBadan) . "* * *\r\n");
             $labelTotalSudahBayar = $translator->trans('totalpaidamount', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelTotalSudahBayar));
             $valueTotalSudahBayar = number_format($totalPembayaranHinggaTransaksiTerpilih, 0, ',', '.');
             $spasi2 = str_repeat(" ", $pricewidth - strlen($valueTotalSudahBayar));
             $barisTotalSudahBayar = $labelTotalSudahBayar . $spasi . ": " . $symbol . $spasi2 . $valueTotalSudahBayar;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisTotalSudahBayar . "\r\n");
             $labelSisaPembayaran = $translator->trans('unpaidamount', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelSisaPembayaran));
             $nominalSisaPembayaran = $hargaItem - $totalPembayaranHinggaTransaksiTerpilih;
             if ($nominalSisaPembayaran == 0) {
                 $valueSisaPembayaran = "(" . $translator->trans('settled', [], 'printing') . ")";
                 $barisSisaPembayaran = $labelSisaPembayaran . $spasi . ": " . $valueSisaPembayaran;
             } else {
                 $valueSisaPembayaran = number_format($nominalSisaPembayaran, 0, ',', '.');
                 $spasi2 = str_repeat(" ", $pricewidth - strlen($valueSisaPembayaran));
                 $barisSisaPembayaran = $labelSisaPembayaran . $spasi . ": " . $symbol . $spasi2 . $valueSisaPembayaran;
             }
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisSisaPembayaran . "\r\n");
         }
         if (!$pembayaran->getAdaPotongan() && !$adaCicilan) {
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
         } elseif ($pembayaran->getAdaPotongan() && !$adaCicilan) {
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
         } elseif (!$pembayaran->getAdaPotongan() && $adaCicilan) {
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
         } elseif ($pembayaran->getAdaPotongan() && $adaCicilan) {
             $commands->addContent("\r\n");
         }
         /****** selesai kwitansi format formular ******/
         $marginKiriTtd = 20;
         $lebarKolom7 = 62;
         $lebarKolom8 = 59;
         $kolomNama1 = $translator->trans('nama.siswa', [], 'printing');
         $spasiKolomNama1 = $lebarKolom7 - (strlen($kolomNama1) + $marginKiriTtd);
         $barisTandatangan1 = str_repeat(" ", $marginKiriTtd) . $kolomNama1 . str_repeat(" ", $spasiKolomNama1);
         $kolomPenerima1 = $translator->trans('cashier.or.treasurer', [], 'printing');
         $spasiKolomPenerima1 = $lebarKolom8 - strlen($kolomPenerima1);
         $barisTandatangan1 .= $kolomPenerima1 . str_repeat(" ", $spasiKolomPenerima1);
         $commands->addContent($barisTandatangan1 . "\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $kolomNama2 = $siswa->getNamaLengkap();
         $spasiKolomNama2 = $lebarKolom7 - (strlen($kolomNama2) + $marginKiriTtd);
         $barisTandatangan2 = str_repeat(" ", $marginKiriTtd) . $kolomNama2 . str_repeat(" ", $spasiKolomNama2);
         $kolomPenerima2 = $transaksi->getDibuatOleh()->getName();
         $spasiKolomPenerima2 = $lebarKolom8 - strlen($kolomPenerima2);
         $barisTandatangan2 .= $kolomPenerima2 . str_repeat(" ", $spasiKolomPenerima2);
         $commands->addContent($barisTandatangan2 . "(" . $translator->trans('page', [], 'printing') . " 1/1)");
         $commands->addFormFeed();
         $commands->addResetCommand();
         $fp = fopen($documenttarget, "w");
         if (!$fp) {
             throw new IOException($translator->trans("exception.directprint.file"));
         } else {
             fwrite($fp, $commands->getCommands());
             fclose($fp);
         }
         $response = new Response(file_get_contents($documenttarget), 200);
         $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $filetarget);
         $response->headers->set('Content-Disposition', $d);
         $response->headers->set('Content-Description', 'Dokumen kwitansi pembayaran biaya berulang');
         $response->headers->set('Content-Type', 'application/vnd.sisdik.directprint');
         $response->headers->set('Content-Transfer-Encoding', 'binary');
         $response->headers->set('Expires', '0');
         $response->headers->set('Cache-Control', 'must-revalidate');
         $response->headers->set('Pragma', 'public');
         $response->headers->set('Content-Length', filesize($documenttarget));
     } else {
         $filetarget = $transaksi->getNomorTransaksi() . ".sisdik.pdf";
         $documenttarget = $schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan . DIRECTORY_SEPARATOR . $filetarget;
         /* @var $facade Facade */
         $facade = $this->get('ps_pdf.facade');
         $tmpResponse = new Response();
         $this->render('LanggasSisdikBundle:PembayaranBiayaRutin:receipts.pdf.twig', ['sekolah' => $sekolah, 'siswa' => $siswa, 'pembayaran' => $pembayaran, 'transaksi' => $transaksi, 'namaBiaya' => $pembayaran->getNamaBiaya(), 'nominalBiaya' => $pembayaran->getNominalBiaya(), 'adaCicilan' => $adaCicilan, 'nomorCicilan' => $nomorCicilan, 'totalPembayaranHinggaTransaksiTerpilih' => $totalPembayaranHinggaTransaksiTerpilih, 'jumlahPeriode' => $jumlahPeriode, 'periodePembayaran' => $periodePembayaran, 'tanggalAwalBayar' => $tanggalAwalBayar], $tmpResponse);
         $xml = $tmpResponse->getContent();
         $content = $facade->render($xml);
         $fp = fopen($documenttarget, "w");
         if (!$fp) {
             throw new IOException($translator->trans("exception.open.file.pdf"));
         } else {
             fwrite($fp, $content);
             fclose($fp);
         }
         $response = new Response(file_get_contents($documenttarget), 200);
         $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $filetarget);
         $response->headers->set('Content-Disposition', $d);
         $response->headers->set('Content-Description', 'Dokumen kwitansi biaya berulang');
         $response->headers->set('Content-Type', 'application/pdf');
         $response->headers->set('Content-Transfer-Encoding', 'binary');
         $response->headers->set('Expires', '0');
         $response->headers->set('Cache-Control', 'must-revalidate');
         $response->headers->set('Pragma', 'public');
         $response->headers->set('Content-Length', filesize($documenttarget));
     }
     return $response;
 }
 /**
  * This method has been copy/pasted from
  * Oro\Bundle\FilterBundle\Form\Type\Filter\NumberFilterType
  * because it was only available in the buildView() method.
  *
  * Since we don't build the view anymore for the metadata, we need this logic here.
  *
  * @param string $dataType
  *
  * @return array
  */
 protected function getFormatterOptions($dataType)
 {
     $formatterOptions = [];
     switch ($dataType) {
         case NumberFilterType::DATA_DECIMAL:
             $formatterOptions['decimals'] = 2;
             $formatterOptions['grouping'] = true;
             break;
         case NumberFilterType::DATA_INTEGER:
         default:
             $formatterOptions['decimals'] = 0;
             $formatterOptions['grouping'] = false;
     }
     $formatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::DECIMAL);
     $formatterOptions['orderSeparator'] = $formatterOptions['grouping'] ? $formatter->getSymbol(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL) : '';
     $formatterOptions['decimalSeparator'] = $formatter->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
     return $formatterOptions;
 }
 /**
  * Cetak nota pembayaran biaya sekali bayar
  *
  * @Route("/{pid}/{id}", name="pembayaran_biaya_sekali__cetaknota")
  */
 public function printReceiptAction(Request $request, $sid, $pid, $id)
 {
     $sekolah = $this->getSekolah();
     /* @var $em EntityManager */
     $em = $this->getDoctrine()->getManager();
     $siswa = $em->getRepository('LanggasSisdikBundle:Siswa')->find($sid);
     if (!(is_object($siswa) && $siswa instanceof Siswa)) {
         throw $this->createNotFoundException('Entity Siswa tak ditemukan.');
     }
     $pembayaran = $em->getRepository('LanggasSisdikBundle:PembayaranSekali')->find($pid);
     if (!(is_object($pembayaran) && $pembayaran instanceof PembayaranSekali)) {
         throw $this->createNotFoundException('Entity PembayaranSekali tak ditemukan.');
     }
     $daftarBiayaSekali = $pembayaran->getDaftarBiayaSekali();
     $transaksi = $em->getRepository('LanggasSisdikBundle:TransaksiPembayaranSekali')->find($id);
     if (!$transaksi && !$transaksi instanceof TransaksiPembayaranSekali) {
         throw $this->createNotFoundException('Entity TransaksiPembayaranSekali tak ditemukan.');
     }
     $transaksiPembayaran = $em->getRepository('LanggasSisdikBundle:TransaksiPembayaranSekali')->findBy(['pembayaranSekali' => $pid], ['waktuSimpan' => 'ASC']);
     $counterTransaksi = 0;
     $nomorCicilan = 1;
     $nomorTransaksi = [];
     foreach ($transaksiPembayaran as $t) {
         if ($t instanceof TransaksiPembayaranSekali) {
             $counterTransaksi++;
             $nomorTransaksi[$t->getNomorTransaksi()] = $t->getNomorTransaksi();
             if ($t->getId() == $id) {
                 $nomorCicilan = $counterTransaksi;
                 break;
             }
         }
     }
     $nomorCicilan = count($transaksiPembayaran) <= 1 ? 1 : $nomorCicilan;
     if (count($daftarBiayaSekali) > 1) {
         $adaCicilan = false;
     } else {
         if ($transaksiPembayaran[0]->getNominalPembayaran() == $pembayaran->getTotalNominalTransaksiPembayaranSekali() && count($transaksiPembayaran) == 1) {
             $hargaItem = 0;
             foreach ($daftarBiayaSekali as $biaya) {
                 if ($biaya instanceof DaftarBiayaSekali) {
                     $hargaItem = $biaya->getNominal();
                 }
             }
             if ($pembayaran->getAdaPotongan()) {
                 $hargaItem = $hargaItem - ($pembayaran->getNominalPotongan() + $pembayaran->getPersenPotonganDinominalkan());
             }
             if ($hargaItem > $pembayaran->getTotalNominalTransaksiPembayaranSekali()) {
                 $adaCicilan = true;
             } else {
                 $adaCicilan = false;
             }
         } else {
             $adaCicilan = true;
         }
     }
     $totalPembayaranHinggaTransaksiTerpilih = $pembayaran->getTotalNominalTransaksiPembayaranSekaliHinggaTransaksiTerpilih($nomorTransaksi);
     $tahun = $transaksi->getWaktuSimpan()->format('Y');
     $bulan = $transaksi->getWaktuSimpan()->format('m');
     /* @var $translator Translator */
     $translator = $this->get('translator');
     $formatter = new \NumberFormatter($this->container->getParameter('locale'), \NumberFormatter::CURRENCY);
     $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
     $output = 'pdf';
     $pilihanCetak = $em->getRepository('LanggasSisdikBundle:PilihanCetakKwitansi')->findBy(['sekolah' => $sekolah]);
     foreach ($pilihanCetak as $pilihan) {
         $output = $pilihan->getOutput();
     }
     $fs = new Filesystem();
     $schoolReceiptDir = $this->get('kernel')->getRootDir() . self::RECEIPTS_DIR . $sekolah->getId();
     if (!$fs->exists($schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan)) {
         $fs->mkdir($schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan);
     }
     if ($output == 'esc_p') {
         $filetarget = $transaksi->getNomorTransaksi() . ".sisdik.direct";
         $documenttarget = $schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan . DIRECTORY_SEPARATOR . $filetarget;
         $commands = new EscapeCommand();
         $commands->addLineSpacing_1_6();
         $commands->addPageLength33Lines();
         $commands->addMarginBottom5Lines();
         $commands->addMaster10CPI();
         $commands->addMasterCondensed();
         $commands->addModeDraft();
         // max 137 characters
         $maxwidth = 137;
         $labelwidth1 = 20;
         $labelwidth2 = 15;
         $marginBadan = 7;
         $maxwidth2 = $maxwidth - $marginBadan;
         $spasi = "";
         $commands->addContent($sekolah->getNama() . "\r\n");
         $commands->addContent($sekolah->getAlamat() . ", " . $sekolah->getKodepos() . "\r\n");
         $phonefaxline = $sekolah->getTelepon() != "" ? $translator->trans('telephone', [], 'printing') . " " . $sekolah->getTelepon() : "";
         $phonefaxline .= $sekolah->getFax() != "" ? $phonefaxline != "" ? ", " . $translator->trans('faximile', [], 'printing') . " " . $sekolah->getFax() : $translator->trans('faximile', [], 'printing') . " " . $sekolah->getFax() : "";
         $commands->addContent($phonefaxline . "\r\n");
         $commands->addContent(str_repeat("=", $maxwidth) . "\r\n");
         $commands->addContent("\r\n");
         $nomorkwitansi = $translator->trans('receiptnum', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth2 - strlen($nomorkwitansi));
         $barisNomorkwitansi = $nomorkwitansi . $spasi . ": " . $transaksi->getNomorTransaksi();
         $namasiswa = $translator->trans('nama.siswa', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth1 - strlen($namasiswa));
         $barisNamasiswa = $namasiswa . $spasi . ": " . $siswa->getNamaLengkap();
         $tanggal = $translator->trans('date', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth2 - strlen($tanggal));
         $dateFormatter = $this->get('bcc_extra_tools.date_formatter');
         $barisTanggal = $tanggal . $spasi . ": " . $dateFormatter->format($transaksi->getWaktuSimpan(), 'long');
         $nomorIdentitas = $translator->trans('identitas.sisdik', [], 'printing') . ' / ' . $translator->trans('nomor.induk', [], 'printing');
         $spasi = str_repeat(" ", $labelwidth1 - strlen($nomorIdentitas));
         $barisNomorIdentitas = $nomorIdentitas . $spasi . ": " . $siswa->getNomorIndukSistem() . ' / ' . $siswa->getNomorInduk();
         $pengisiBaris1 = strlen($barisNomorkwitansi);
         $pengisiBaris2 = strlen($barisTanggal);
         $pengisiBarisTerbesar = $pengisiBaris1 > $pengisiBaris2 ? $pengisiBaris1 : $pengisiBaris2;
         $sisaBaris1 = $maxwidth2 - strlen($barisNamasiswa) - $pengisiBarisTerbesar;
         $sisaBaris2 = $maxwidth2 - strlen($barisNomorIdentitas) - $pengisiBarisTerbesar;
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNamasiswa . str_repeat(" ", $sisaBaris1) . $barisNomorkwitansi . "\r\n");
         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNomorIdentitas . str_repeat(" ", $sisaBaris2) . $barisTanggal . "\r\n");
         $commands->addContent("\r\n");
         $twoPages = false;
         if ($adaCicilan) {
             /****** kwitansi format cicilan: formular ******/
             $commands->addContent("\r\n");
             $labelwidth3 = 25;
             $symbolwidth = count($symbol);
             $pricewidth = 15;
             $lebarketerangan = 93;
             $namaItemPembayaran = "";
             $nominalHargaItemPembayaran = 0;
             foreach ($daftarBiayaSekali as $biaya) {
                 if ($biaya instanceof DaftarBiayaSekali) {
                     $namaItemPembayaran = $biaya->getNama();
                     $nominalHargaItemPembayaran = $biaya->getNominal();
                 }
             }
             $labelItemPembayaran = $translator->trans('paymentitem', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelItemPembayaran));
             $barisItemPembayaran = $labelItemPembayaran . $spasi . ": " . $namaItemPembayaran;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisItemPembayaran . "\r\n");
             $labelHargaItemPembayaran = $translator->trans('itemprice', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelHargaItemPembayaran));
             $valueHargaItemPembayaran = number_format($nominalHargaItemPembayaran, 0, ',', '.');
             $spasi2 = str_repeat(" ", $pricewidth - strlen($valueHargaItemPembayaran));
             $barisHargaItemPembayaran = $labelHargaItemPembayaran . $spasi . ": " . $symbol . $spasi2 . $valueHargaItemPembayaran;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisHargaItemPembayaran . "\r\n");
             $nominalPotongan = 0;
             if ($pembayaran->getAdaPotongan()) {
                 $labelPotongan = $translator->trans('discount', [], 'printing');
                 $spasi = str_repeat(" ", $labelwidth3 - strlen($labelPotongan));
                 $persenPotongan = "";
                 if ($pembayaran->getJenisPotongan() == 'nominal') {
                     $nominalPotongan = $pembayaran->getNominalPotongan();
                     $valuePotongan = number_format($pembayaran->getNominalPotongan(), 0, ',', '.');
                 } else {
                     $nominalPotongan = $pembayaran->getPersenPotonganDinominalkan();
                     $valuePotongan = number_format($pembayaran->getPersenPotonganDinominalkan(), 0, ',', '.');
                     $persenPotongan = " (" . $pembayaran->getPersenPotongan() . "%)";
                 }
                 $spasi2 = str_repeat(" ", $pricewidth - strlen($valuePotongan));
                 $barisPotongan = $labelPotongan . $spasi . ": " . $symbol . $spasi2 . $valuePotongan . $persenPotongan;
                 $commands->addContent(str_repeat(" ", $marginBadan) . $barisPotongan . "\r\n");
                 $labelTotalHarga = $translator->trans('totalprice', [], 'printing');
                 $spasi = str_repeat(" ", $labelwidth3 - strlen($labelTotalHarga));
                 $valueTotalHarga = number_format($nominalHargaItemPembayaran - $nominalPotongan, 0, ',', '.');
                 $spasi2 = str_repeat(" ", $pricewidth - strlen($valueTotalHarga));
                 $barisTotalHarga = $labelTotalHarga . $spasi . ": " . $symbol . $spasi2 . $valueTotalHarga;
                 $commands->addContent(str_repeat(" ", $marginBadan) . $barisTotalHarga . "\r\n");
             }
             $commands->addContent("\r\n");
             $labelPembayaranKe = $translator->trans('paymentnum', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelPembayaranKe));
             $barisPembayaranKe = $labelPembayaranKe . $spasi . ": " . $nomorCicilan;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisPembayaranKe . "\r\n");
             $labelNominalPembayaran = $translator->trans('paymentamount', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelNominalPembayaran));
             $valueNominalPembayaran = number_format($transaksi->getNominalPembayaran(), 0, ',', '.');
             $spasi2 = str_repeat(" ", $pricewidth - strlen($valueNominalPembayaran));
             $barisNominalPembayaran = $labelNominalPembayaran . $spasi . ": " . $symbol . $spasi2 . $valueNominalPembayaran;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisNominalPembayaran . "\r\n");
             $labelKeteranganPembayaran = $translator->trans('description', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelKeteranganPembayaran));
             $valueKeteranganPembayaran = $transaksi->getKeterangan();
             $valueKeteranganPembayaran = strlen($valueKeteranganPembayaran) > $lebarketerangan ? substr($valueKeteranganPembayaran, 0, $lebarketerangan - 3) . "..." : $valueKeteranganPembayaran;
             $barisKeteranganPembayaran = $labelKeteranganPembayaran . $spasi . ": " . $valueKeteranganPembayaran;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisKeteranganPembayaran . "\r\n");
             $commands->addContent("\r\n");
             $commands->addContent(str_repeat(" ", $marginBadan) . "* * *\r\n");
             $labelTotalSudahBayar = $translator->trans('totalpaidamount', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelTotalSudahBayar));
             $valueTotalSudahBayar = number_format($totalPembayaranHinggaTransaksiTerpilih, 0, ',', '.');
             $spasi2 = str_repeat(" ", $pricewidth - strlen($valueTotalSudahBayar));
             $barisTotalSudahBayar = $labelTotalSudahBayar . $spasi . ": " . $symbol . $spasi2 . $valueTotalSudahBayar;
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisTotalSudahBayar . "\r\n");
             $labelSisaPembayaran = $translator->trans('unpaidamount', [], 'printing');
             $spasi = str_repeat(" ", $labelwidth3 - strlen($labelSisaPembayaran));
             $nominalSisaPembayaran = $nominalHargaItemPembayaran - $nominalPotongan - $totalPembayaranHinggaTransaksiTerpilih;
             if ($nominalSisaPembayaran == 0) {
                 $valueSisaPembayaran = "(" . $translator->trans('settled', [], 'printing') . ")";
                 $barisSisaPembayaran = $labelSisaPembayaran . $spasi . ": " . $valueSisaPembayaran;
             } else {
                 $valueSisaPembayaran = number_format($nominalSisaPembayaran, 0, ',', '.');
                 $spasi2 = str_repeat(" ", $pricewidth - strlen($valueSisaPembayaran));
                 $barisSisaPembayaran = $labelSisaPembayaran . $spasi . ": " . $symbol . $spasi2 . $valueSisaPembayaran;
             }
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisSisaPembayaran . "\r\n");
             if (!$pembayaran->getAdaPotongan()) {
                 $commands->addContent("\r\n");
             }
             $commands->addContent("\r\n");
             $commands->addContent("\r\n");
             /****** selesai kwitansi format cicilan ******/
         } else {
             /****** kwitansi format non-cicilan: tabular ******/
             $lebarKolom1 = 5;
             $lebarKolom2 = 70;
             $lebarKolom3 = 23;
             $marginKiriKolom = 1;
             $marginKananKolom = 1;
             $barisGarisTabel = "+" . str_repeat("-", $lebarKolom1) . "+" . str_repeat("-", $lebarKolom2) . "+" . str_repeat("-", $lebarKolom3) . "+";
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
             $kolomNomor = $translator->trans('num', [], 'printing');
             $spasiKolomNomor = $lebarKolom1 - (strlen($kolomNomor) + $marginKiriKolom);
             $barisNamaKolom = "|" . str_repeat(" ", $marginKiriKolom) . $kolomNomor . str_repeat(" ", $spasiKolomNomor);
             $kolomItem = $translator->trans('paymentitem', [], 'printing');
             $spasiKolomItem = $lebarKolom2 - (strlen($kolomItem) + $marginKiriKolom);
             $barisNamaKolom .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomItem . str_repeat(" ", $spasiKolomItem);
             $kolomHarga = $translator->trans('price', [], 'printing') . " ({$symbol})";
             $spasiKolomHarga = $lebarKolom3 - (strlen($kolomHarga) + $marginKiriKolom);
             $barisNamaKolom .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomHarga . str_repeat(" ", $spasiKolomHarga) . "|";
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisNamaKolom . "\r\n");
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
             // uncomment the following line for double page test
             // $daftarBiayaSekali = array_merge($daftarBiayaSekali);
             $maxitemPageone = 9;
             $itemThreshold = 15;
             if ($pembayaran->getAdaPotongan()) {
                 // jumlah item pembayaran maximum dalam 1 halaman: 7
                 // jumlah item pembayaran > 7, buat dua halaman
                 $maxitemPageone = 7;
                 if (count($daftarBiayaSekali) > $maxitemPageone) {
                     $twoPages = true;
                 }
                 // jumlah item pembayaran 8 - 14: 6 item di halaman pertama, 8 - 14 di halaman 2
                 // jumlah item pembayaran >= 15: 13 item di halaman pertama, 14+ item di halaman 2
             } else {
                 if (count($daftarBiayaSekali) > $maxitemPageone) {
                     $twoPages = true;
                 }
             }
             $twoPageFormat = 0;
             if ($twoPages === true && count($daftarBiayaSekali) < $itemThreshold) {
                 $twoPageFormat = 1;
             } elseif ($twoPages === true && count($daftarBiayaSekali) >= $itemThreshold) {
                 $maxitemPageone = 14;
                 $twoPageFormat = 2;
             }
             $num = 1;
             $totalNominalTransaksi = 0;
             foreach ($daftarBiayaSekali as $biaya) {
                 if ($biaya instanceof DaftarBiayaSekali) {
                     $totalNominalTransaksi += $biaya->getNominal();
                     if ($twoPageFormat == 1 && $num == $maxitemPageone) {
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
                         $barisKeteranganBerlanjut = $translator->trans('continue.to.pagetwo', [], 'printing');
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisKeteranganBerlanjut . "\r\n");
                         if ($pembayaran->getAdaPotongan()) {
                             $commands->addContent("\r\n");
                             $commands->addContent("\r\n");
                         }
                         $commands->addContent("\r\n");
                         $commands->addContent("\r\n");
                         $commands->addContent("\r\n");
                         $commands->addContent("\r\n");
                         $commands->addContent("\r\n");
                         $commands->addContent("\r\n");
                         $labelwidthHal2 = 18;
                         $barisHalaman1 = "(" . $translator->trans('page', [], 'printing') . " 1/2)";
                         $spasiBarisHalaman1 = str_repeat(" ", $maxwidth2 - strlen($barisHalaman1));
                         $commands->addContent(str_repeat(" ", $marginBadan) . $spasiBarisHalaman1 . $barisHalaman1 . "\r\n");
                         $nomorKwitansiHal2 = $translator->trans('receiptnum', [], 'printing');
                         $spasi = str_repeat(" ", $labelwidthHal2 - strlen($nomorKwitansiHal2));
                         $barisNomorKwitansiHal2 = $nomorKwitansiHal2 . $spasi . ": " . $transaksi->getNomorTransaksi();
                         $nomorIdentitasHal2 = $translator->trans('identitas.sisdik', [], 'printing') . ' / ' . $translator->trans('nomor.induk', [], 'printing');
                         $spasi = str_repeat(" ", $labelwidthHal2 - strlen($nomorIdentitasHal2));
                         $barisNomorIdentitasHal2 = $nomorIdentitasHal2 . $spasi . ": " . $transaksi->getPembayaranSekali()->getSiswa()->getNomorIndukSistem() . ' / ' . $transaksi->getPembayaranSekali()->getSiswa()->getNomorInduk();
                         $pengisiBaris1 = strlen($barisNomorKwitansiHal2);
                         $pengisiBaris2 = strlen($barisNomorIdentitasHal2);
                         $pengisiBarisTerbesar = $pengisiBaris1 > $pengisiBaris2 ? $pengisiBaris1 : $pengisiBaris2;
                         $sisaBaris = $maxwidth2 - $pengisiBarisTerbesar;
                         $commands->addContent(str_repeat(" ", $marginBadan) . str_repeat(" ", $sisaBaris) . $barisNomorKwitansiHal2 . "\r\n");
                         $commands->addContent(str_repeat(" ", $marginBadan) . str_repeat(" ", $sisaBaris) . $barisNomorIdentitasHal2 . "\r\n");
                         $barisKeteranganLanjutan = $translator->trans('continued.from.pageone', [], 'printing');
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisKeteranganLanjutan . "\r\n");
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
                         $kolomNomor = $translator->trans('num', [], 'printing');
                         $spasiKolomNomor = $lebarKolom1 - (strlen($kolomNomor) + $marginKiriKolom);
                         $barisNamaKolom = "|" . str_repeat(" ", $marginKiriKolom) . $kolomNomor . str_repeat(" ", $spasiKolomNomor);
                         $kolomItem = $translator->trans('paymentitem', [], 'printing');
                         $spasiKolomItem = $lebarKolom2 - (strlen($kolomItem) + $marginKiriKolom);
                         $barisNamaKolom .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomItem . str_repeat(" ", $spasiKolomItem);
                         $kolomHarga = $translator->trans('price', [], 'printing') . " ({$symbol})";
                         $spasiKolomHarga = $lebarKolom3 - (strlen($kolomHarga) + $marginKiriKolom);
                         $barisNamaKolom .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomHarga . str_repeat(" ", $spasiKolomHarga) . "|";
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNamaKolom . "\r\n");
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
                         $kolomNomorPembayaran = strval($num);
                         $spasiKolomNomorPembayaran = $lebarKolom1 - (strlen($kolomNomorPembayaran) + $marginKananKolom);
                         $barisPembayaran = "|" . str_repeat(" ", $spasiKolomNomorPembayaran) . $kolomNomorPembayaran . str_repeat(" ", $marginKananKolom);
                         $kolomItemPembayaran = $biaya->getNama();
                         $spasiKolomItemPembayaran = $lebarKolom2 - (strlen($kolomItemPembayaran) + $marginKiriKolom);
                         $barisPembayaran .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomItemPembayaran . str_repeat(" ", $spasiKolomItemPembayaran);
                         $kolomHargaPembayaran = number_format($biaya->getNominal(), 0, ',', '.');
                         $spasiKolomHargaPembayaran = $lebarKolom3 - (strlen($kolomHargaPembayaran) + $marginKananKolom);
                         $barisPembayaran .= "|" . str_repeat(" ", $spasiKolomHargaPembayaran) . $kolomHargaPembayaran . str_repeat(" ", $marginKananKolom) . "|";
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisPembayaran . "\r\n");
                     } elseif ($twoPageFormat == 2 && $num == $maxitemPageone) {
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
                         $barisKeteranganBerlanjut = $translator->trans('continue.to.pagetwo', [], 'printing');
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisKeteranganBerlanjut . "\r\n");
                         $commands->addContent("\r\n");
                         $labelwidthHal2 = 18;
                         $barisHalaman1 = "(" . $translator->trans('page', [], 'printing') . " 1/2)";
                         $spasiBarisHalaman1 = str_repeat(" ", $maxwidth2 - strlen($barisHalaman1));
                         $commands->addContent(str_repeat(" ", $marginBadan) . $spasiBarisHalaman1 . $barisHalaman1 . "\r\n");
                         $nomorKwitansiHal2 = $translator->trans('receiptnum', [], 'printing');
                         $spasi = str_repeat(" ", $labelwidthHal2 - strlen($nomorKwitansiHal2));
                         $barisNomorKwitansiHal2 = $nomorKwitansiHal2 . $spasi . ": " . $transaksi->getNomorTransaksi();
                         $nomorIdentitasHal2 = $translator->trans('identitas.sisdik', [], 'printing') . ' / ' . $translator->trans('nomor.induk', [], 'printing');
                         $spasi = str_repeat(" ", $labelwidthHal2 - strlen($nomorIdentitasHal2));
                         $barisNomorIdentitasHal2 = $nomorIdentitasHal2 . $spasi . ": " . $transaksi->getPembayaranSekali()->getSiswa()->getNomorIndukSistem() . ' / ' . $transaksi->getPembayaranSekali()->getSiswa()->getNomorInduk();
                         $pengisiBaris1 = strlen($barisNomorKwitansiHal2);
                         $pengisiBaris2 = strlen($barisNomorIdentitasHal2);
                         $pengisiBarisTerbesar = $pengisiBaris1 > $pengisiBaris2 ? $pengisiBaris1 : $pengisiBaris2;
                         $sisaBaris = $maxwidth2 - $pengisiBarisTerbesar;
                         $commands->addContent(str_repeat(" ", $marginBadan) . str_repeat(" ", $sisaBaris) . $barisNomorKwitansiHal2 . "\r\n");
                         $commands->addContent(str_repeat(" ", $marginBadan) . str_repeat(" ", $sisaBaris) . $barisNomorIdentitasHal2 . "\r\n");
                         $barisKeteranganLanjutan = $translator->trans('continued.from.pageone', [], 'printing');
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisKeteranganLanjutan . "\r\n");
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
                         $kolomNomor = $translator->trans('num', [], 'printing');
                         $spasiKolomNomor = $lebarKolom1 - (strlen($kolomNomor) + $marginKiriKolom);
                         $barisNamaKolom = "|" . str_repeat(" ", $marginKiriKolom) . $kolomNomor . str_repeat(" ", $spasiKolomNomor);
                         $kolomItem = $translator->trans('paymentitem', [], 'printing');
                         $spasiKolomItem = $lebarKolom2 - (strlen($kolomItem) + $marginKiriKolom);
                         $barisNamaKolom .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomItem . str_repeat(" ", $spasiKolomItem);
                         $kolomHarga = $translator->trans('price', [], 'printing') . " ({$symbol})";
                         $spasiKolomHarga = $lebarKolom3 - (strlen($kolomHarga) + $marginKiriKolom);
                         $barisNamaKolom .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomHarga . str_repeat(" ", $spasiKolomHarga) . "|";
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisNamaKolom . "\r\n");
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
                         $kolomNomorPembayaran = strval($num);
                         $spasiKolomNomorPembayaran = $lebarKolom1 - (strlen($kolomNomorPembayaran) + $marginKananKolom);
                         $barisPembayaran = "|" . str_repeat(" ", $spasiKolomNomorPembayaran) . $kolomNomorPembayaran . str_repeat(" ", $marginKananKolom);
                         $kolomItemPembayaran = $biaya->getNama();
                         $spasiKolomItemPembayaran = $lebarKolom2 - (strlen($kolomItemPembayaran) + $marginKiriKolom);
                         $barisPembayaran .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomItemPembayaran . str_repeat(" ", $spasiKolomItemPembayaran);
                         $kolomHargaPembayaran = number_format($biaya->getNominal(), 0, ',', '.');
                         $spasiKolomHargaPembayaran = $lebarKolom3 - (strlen($kolomHargaPembayaran) + $marginKananKolom);
                         $barisPembayaran .= "|" . str_repeat(" ", $spasiKolomHargaPembayaran) . $kolomHargaPembayaran . str_repeat(" ", $marginKananKolom) . "|";
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisPembayaran . "\r\n");
                     } else {
                         $kolomNomorPembayaran = strval($num);
                         $spasiKolomNomorPembayaran = $lebarKolom1 - (strlen($kolomNomorPembayaran) + $marginKananKolom);
                         $barisPembayaran = "|" . str_repeat(" ", $spasiKolomNomorPembayaran) . $kolomNomorPembayaran . str_repeat(" ", $marginKananKolom);
                         $kolomItemPembayaran = $biaya->getNama();
                         $spasiKolomItemPembayaran = $lebarKolom2 - (strlen($kolomItemPembayaran) + $marginKiriKolom);
                         $barisPembayaran .= "|" . str_repeat(" ", $marginKiriKolom) . $kolomItemPembayaran . str_repeat(" ", $spasiKolomItemPembayaran);
                         $kolomHargaPembayaran = number_format($biaya->getNominal(), 0, ',', '.');
                         $spasiKolomHargaPembayaran = $lebarKolom3 - (strlen($kolomHargaPembayaran) + $marginKananKolom);
                         $barisPembayaran .= "|" . str_repeat(" ", $spasiKolomHargaPembayaran) . $kolomHargaPembayaran . str_repeat(" ", $marginKananKolom) . "|";
                         $commands->addContent(str_repeat(" ", $marginBadan) . $barisPembayaran . "\r\n");
                     }
                 }
                 $num++;
             }
             $commands->addContent(str_repeat(" ", $marginBadan) . $barisGarisTabel . "\r\n");
             $lebarKolom4 = 55;
             $lebarKolom5 = 22;
             $lebarKolom6 = 23;
             $kolomKeterangan = $translator->trans('description', [], 'printing');
             $kolomKeterangan .= " : " . $transaksi->getKeterangan();
             $kolomKeterangan = strlen($kolomKeterangan) > $lebarKolom4 ? substr($kolomKeterangan, 0, $lebarKolom4 - 3) . "..." : $kolomKeterangan;
             $spasiKolomKeterangan = $lebarKolom4 - strlen($kolomKeterangan);
             $barisKolomTotal = $kolomKeterangan . str_repeat(" ", $spasiKolomKeterangan);
             if ($pembayaran->getAdaPotongan()) {
                 $kolomSubtotal = $translator->trans('subtotal', [], 'printing');
                 $spasiKolomSubtotal = $lebarKolom5 - (strlen($kolomSubtotal) + $marginKananKolom);
                 $barisKolomSubtotal = $barisKolomTotal . str_repeat(" ", $spasiKolomSubtotal) . $kolomSubtotal . str_repeat(" ", $marginKananKolom) . ":";
                 $kolomSubtotalHarga = number_format($totalNominalTransaksi, 0, ',', '.');
                 $spasiKolomSubtotalHarga = $lebarKolom6 - (strlen($kolomSubtotalHarga) + $marginKananKolom);
                 $barisKolomSubtotal .= str_repeat(" ", $spasiKolomSubtotalHarga) . $kolomSubtotalHarga . str_repeat(" ", $marginKananKolom) . " ";
                 $commands->addContent(str_repeat(" ", $marginBadan) . $barisKolomSubtotal . "\r\n");
                 $nominalPotongan = 0;
                 $persenPotongan = "";
                 if ($pembayaran->getJenisPotongan() == 'nominal') {
                     $nominalPotongan = $pembayaran->getNominalPotongan();
                 } else {
                     $nominalPotongan = $pembayaran->getPersenPotonganDinominalkan();
                     $persenPotongan = " (" . $pembayaran->getPersenPotongan() . "%)";
                 }
                 $kolomPotongan = $translator->trans('discount', [], 'printing');
                 $spasiKolomPotongan = $lebarKolom4 + $lebarKolom5 - (strlen($kolomPotongan) + $marginKananKolom);
                 $barisKolomPotongan = str_repeat(" ", $spasiKolomPotongan) . $kolomPotongan . str_repeat(" ", $marginKananKolom) . ":";
                 $kolomPotonganHarga = number_format($nominalPotongan, 0, ',', '.');
                 $spasiKolomPotonganHarga = $lebarKolom6 - (strlen($kolomPotonganHarga) + $marginKananKolom);
                 $barisKolomPotongan .= str_repeat(" ", $spasiKolomPotonganHarga) . $kolomPotonganHarga . str_repeat(" ", $marginKananKolom) . $persenPotongan;
                 $commands->addContent(str_repeat(" ", $marginBadan) . $barisKolomPotongan . "\r\n");
                 $kolomTotal = $translator->trans('total', [], 'printing');
                 $spasiKolomTotal = $lebarKolom4 + $lebarKolom5 - (strlen($kolomTotal) + $marginKananKolom);
                 $barisKolomTotal = str_repeat(" ", $spasiKolomTotal) . $kolomTotal . str_repeat(" ", $marginKananKolom) . ":";
                 $kolomTotalHarga = number_format($totalNominalTransaksi - $nominalPotongan, 0, ',', '.');
                 $spasiKolomTotalHarga = $lebarKolom6 - (strlen($kolomTotalHarga) + $marginKananKolom);
                 $barisKolomTotal .= str_repeat(" ", $spasiKolomTotalHarga) . $kolomTotalHarga . str_repeat(" ", $marginKananKolom) . " ";
                 $commands->addContent(str_repeat(" ", $marginBadan) . $barisKolomTotal . "\r\n");
                 $commands->addContent("\r\n");
                 if (count($daftarBiayaSekali) < $maxitemPageone) {
                     $maxJarakVertikal = $maxitemPageone;
                     $jarakVertikal = str_repeat("\r\n", $maxJarakVertikal - count($daftarBiayaSekali));
                     $commands->addContent($jarakVertikal);
                 }
                 if ($twoPageFormat == 1) {
                     $maxJarakVertikal = 10;
                     $jarakVertikal = str_repeat("\r\n", $maxJarakVertikal - (count($daftarBiayaSekali) - ($maxitemPageone + 1)));
                     $commands->addContent($jarakVertikal);
                 }
                 if ($twoPageFormat == 2) {
                     $maxJarakVertikal = 10;
                     $jarakVertikal = str_repeat("\r\n", $maxJarakVertikal - (count($daftarBiayaSekali) - 15));
                     $commands->addContent($jarakVertikal);
                 }
             } else {
                 $kolomTotal = $translator->trans('total', [], 'printing');
                 $spasiKolomTotal = $lebarKolom5 - (strlen($kolomTotal) + $marginKananKolom);
                 $barisKolomTotal .= str_repeat(" ", $spasiKolomTotal) . $kolomTotal . str_repeat(" ", $marginKananKolom) . ":";
                 $kolomTotalHarga = number_format($totalNominalTransaksi, 0, ',', '.');
                 $spasiKolomTotalHarga = $lebarKolom6 - (strlen($kolomTotalHarga) + $marginKananKolom);
                 $barisKolomTotal .= str_repeat(" ", $spasiKolomTotalHarga) . $kolomTotalHarga . str_repeat(" ", $marginKananKolom) . " ";
                 $commands->addContent(str_repeat(" ", $marginBadan) . $barisKolomTotal . "\r\n");
                 $commands->addContent("\r\n");
                 if (count($daftarBiayaSekali) < $maxitemPageone) {
                     $maxJarakVertikal = 9;
                     $jarakVertikal = str_repeat("\r\n", $maxJarakVertikal - count($daftarBiayaSekali));
                     $commands->addContent($jarakVertikal);
                 }
                 if ($twoPageFormat == 1) {
                     $maxJarakVertikal = 12;
                     $jarakVertikal = str_repeat("\r\n", $maxJarakVertikal - (count($daftarBiayaSekali) - ($maxitemPageone + 1)));
                     $commands->addContent($jarakVertikal);
                 }
                 if ($twoPageFormat == 2) {
                     $maxJarakVertikal = 12;
                     $jarakVertikal = str_repeat("\r\n", $maxJarakVertikal - (count($daftarBiayaSekali) - 15));
                     $commands->addContent($jarakVertikal);
                 }
             }
             /****** selesai kwitansi format non-cicilan ******/
         }
         $marginKiriTtd = 20;
         $lebarKolom7 = 62;
         $lebarKolom8 = 59;
         $kolomNama1 = $translator->trans('nama.siswa', [], 'printing');
         $spasiKolomNama1 = $lebarKolom7 - (strlen($kolomNama1) + $marginKiriTtd);
         $barisTandatangan1 = str_repeat(" ", $marginKiriTtd) . $kolomNama1 . str_repeat(" ", $spasiKolomNama1);
         $kolomPenerima1 = $translator->trans('cashier.or.treasurer', [], 'printing');
         $spasiKolomPenerima1 = $lebarKolom8 - strlen($kolomPenerima1);
         $barisTandatangan1 .= $kolomPenerima1 . str_repeat(" ", $spasiKolomPenerima1);
         $commands->addContent($barisTandatangan1 . "\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $commands->addContent("\r\n");
         $kolomNama2 = $siswa->getNamaLengkap();
         $spasiKolomNama2 = $lebarKolom7 - (strlen($kolomNama2) + $marginKiriTtd);
         $barisTandatangan2 = str_repeat(" ", $marginKiriTtd) . $kolomNama2 . str_repeat(" ", $spasiKolomNama2);
         $kolomPenerima2 = $transaksi->getDibuatOleh()->getName();
         $spasiKolomPenerima2 = $lebarKolom8 - strlen($kolomPenerima2);
         $barisTandatangan2 .= $kolomPenerima2 . str_repeat(" ", $spasiKolomPenerima2);
         if ($twoPages === true) {
             $commands->addContent($barisTandatangan2 . "(" . $translator->trans('page', [], 'printing') . " 2/2)");
         } else {
             $commands->addContent($barisTandatangan2 . "(" . $translator->trans('page', [], 'printing') . " 1/1)");
         }
         $commands->addFormFeed();
         $commands->addResetCommand();
         $fp = fopen($documenttarget, "w");
         if (!$fp) {
             throw new IOException($translator->trans("exception.directprint.file"));
         } else {
             fwrite($fp, $commands->getCommands());
             fclose($fp);
         }
         $response = new Response(file_get_contents($documenttarget), 200);
         $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $filetarget);
         $response->headers->set('Content-Disposition', $d);
         $response->headers->set('Content-Description', 'Dokumen kwitansi pembayaran biaya sekali bayar');
         $response->headers->set('Content-Type', 'application/vnd.sisdik.directprint');
         $response->headers->set('Content-Transfer-Encoding', 'binary');
         $response->headers->set('Expires', '0');
         $response->headers->set('Cache-Control', 'must-revalidate');
         $response->headers->set('Pragma', 'public');
         $response->headers->set('Content-Length', filesize($documenttarget));
     } else {
         $filetarget = $transaksi->getNomorTransaksi() . ".sisdik.pdf";
         $documenttarget = $schoolReceiptDir . DIRECTORY_SEPARATOR . $tahun . DIRECTORY_SEPARATOR . $bulan . DIRECTORY_SEPARATOR . $filetarget;
         $totalHarga = 0;
         foreach ($daftarBiayaSekali as $biaya) {
             if ($biaya instanceof DaftarBiayaSekali) {
                 $namaItemPembayaranCicilan = $biaya->getNama();
                 $totalHarga += $biaya->getNominal();
             }
         }
         /* @var $facade Facade */
         $facade = $this->get('ps_pdf.facade');
         $tmpResponse = new Response();
         $this->render('LanggasSisdikBundle:PembayaranBiayaSekali:receipts.pdf.twig', ['sekolah' => $sekolah, 'siswa' => $siswa, 'pembayaran' => $pembayaran, 'transaksi' => $transaksi, 'totalHarga' => $totalHarga, 'adaCicilan' => $adaCicilan, 'namaItemPembayaranCicilan' => $namaItemPembayaranCicilan, 'nomorCicilan' => $nomorCicilan, 'totalPembayaranHinggaTransaksiTerpilih' => $totalPembayaranHinggaTransaksiTerpilih], $tmpResponse);
         $xml = $tmpResponse->getContent();
         $content = $facade->render($xml);
         $fp = fopen($documenttarget, "w");
         if (!$fp) {
             throw new IOException($translator->trans("exception.open.file.pdf"));
         } else {
             fwrite($fp, $content);
             fclose($fp);
         }
         $response = new Response(file_get_contents($documenttarget), 200);
         $d = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $filetarget);
         $response->headers->set('Content-Disposition', $d);
         $response->headers->set('Content-Description', 'Dokumen kwitansi biaya sekali bayar');
         $response->headers->set('Content-Type', 'application/pdf');
         $response->headers->set('Content-Transfer-Encoding', 'binary');
         $response->headers->set('Expires', '0');
         $response->headers->set('Cache-Control', 'must-revalidate');
         $response->headers->set('Pragma', 'public');
         $response->headers->set('Content-Length', filesize($documenttarget));
     }
     return $response;
 }
 /**
  * Returns true if and only if $value is a number correctly expressed with the scientific notation
  *
  * Note that it can only validate string inputs.
  *
  * @param mixed $value
  * @return bool
  */
 public function isValid($value)
 {
     if (!is_scalar($value) || is_bool($value)) {
         $this->error(self::INVALID_INPUT);
         return false;
     }
     $formatter = new \NumberFormatter($this->getLocale(), \NumberFormatter::SCIENTIFIC);
     $flags = 'i';
     $expSymbol = 'E';
     if (StringUtils::hasPcreUnicodeSupport()) {
         $expSymbol = preg_quote($formatter->getSymbol(\NumberFormatter::EXPONENTIAL_SYMBOL));
         $flags .= 'u';
     }
     // Check that exponentation symbol is present
     $search = str_replace("‎", '', sprintf('/%s/%s', $expSymbol, $flags));
     $value = str_replace("‎", '', $value);
     if (!preg_match($search, $value)) {
         $this->error(self::NOT_SCIENTIFIC);
         return false;
     }
     // Check that the number expressed in scientific notation is a valid number
     $float = new IsFloat(['locale' => $this->getLocale()]);
     if (!$float->isValid($value)) {
         $this->error(self::NOT_NUMBER);
         return false;
     }
     return true;
 }
 /**
  * {@inheritdoc}
  */
 public function getFormat($locale)
 {
     $number = new \NumberFormatter($locale, \NumberFormatter::DECIMAL);
     return ['decimal_separator' => $number->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL)];
 }
Exemple #24
0
 /**
  * Codice valuta (?)
  *
  * @return bool|string
  */
 public function getCurrencyCode()
 {
     $nf = new NF($this->locale, NF::CURRENCY);
     return $nf->getSymbol(NF::CURRENCY_CODE);
 }
 /**
  * Returns the 3-letter (ISO 4217) currency code of the current locale
  *
  * @return string
  */
 public function getCurrencyISOCode()
 {
     $numberFormatter = new \NumberFormatter($this->_currentLocale, \NumberFormatter::CURRENCY);
     return $numberFormatter->getSymbol(\NumberFormatter::INTL_CURRENCY_SYMBOL);
 }