Advertisement
widana

gtu lah

Dec 18th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.52 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Sts\CmsCommon\Controllers;
  4.  
  5. use App;
  6. use Log;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Routing\Controller as BaseController;
  9. use Sts\PleafCore\CoreException;
  10. use Session;
  11. use BO;
  12. use MathieuViossat\Util\ArrayToTextTable;
  13. use Sts\PleafCore\DateUtil;
  14. use Zend\Text\Table\Decorator\Ascii;
  15. use Sts\CmsCommon\Helpers\ArrayTextTable;
  16. /**
  17.  * Controller untuk Charts
  18.  *
  19.  * @author Widana, 29 Aug 2018
  20.  *
  21.  */
  22. class DownloadReportController extends BaseController
  23. {
  24.  
  25.     private $lines = [];
  26.  
  27.     public function downloadReport(Request $request)
  28.     {
  29.         // Generate lines
  30.  
  31.         $this->generateLine();
  32.  
  33.         // added escp command to data
  34.         $nl = chr(0x0D).chr(0x0A);
  35.         $initialized = chr(27).chr(64);
  36.         $condensed1 = chr(15);
  37.         $condensed0 = chr(18);
  38.         $breakLine = chr(12);
  39.  
  40.         // space 1/8
  41.         $spaceOnePerEight = chr(27).chr(48);
  42.  
  43.         $data  = $initialized;
  44.         $data .= $condensed1;
  45.  
  46.         foreach( $this->lines as $line  ){
  47.             $data .= $line.$nl;
  48.         }
  49.  
  50.         print $data;
  51.  
  52.     }
  53.  
  54.     public function generateLine(){
  55.         $pageWidthHeader = 46;
  56.         $defaultSize = 0;
  57.         $pageWidthRight = 39;
  58.  
  59.         $table = new \Zend\Text\Table\Table(['columnWidths' => [2, 20, 22, 10, 20]]);
  60.         $table->setDecorator("ascii");
  61.         $table->setDefaultColumnAlign(0, 'center');
  62.         $table->setDefaultColumnAlign(1, 'center');
  63.         $table->setDefaultColumnAlign(2, 'center');
  64.         $table->setDefaultColumnAlign(3, 'center');
  65.         $table->setDefaultColumnAlign(4, 'center');
  66.  
  67.         $table->appendRow(["No","Kode Barang", "Nama Barang", "Qty", "Keterangan"]);
  68.  
  69.         $data = [
  70.             [
  71.                 'line_no' => '1',
  72.                 'product_code' => 'MILKCLEANSER',
  73.                 'product_name' => 'MILK CLEANSER',
  74.                 'qty' => '10',
  75.                 'uom_name' => 'BOTOL',
  76.                 'remark' => '',
  77.             ],
  78.             [
  79.                 'line_no' => '2',
  80.                 'product_code' => 'PRODUKPANJANGSEKALIUNTUKKODE01',
  81.                 'product_name' => 'PRODUK PANJANG SEKALI UNTUK KODE',
  82.                 'qty' => '10',
  83.                 'uom_name' => 'PCS',
  84.                 'remark' => '',
  85.             ],
  86.             [
  87.                 'line_no' => '3',
  88.                 'product_code' => 'PRODUKPANJANGSEKALIUNTUKKODE02',
  89.                 'product_name' => 'PRODUK PANJANG SEKALI UNTUK NAMA YANG INI PLLUS PANJANG LAGI',
  90.                 'qty' => '100',
  91.                 'uom_name' => 'BOTOL',
  92.                 'remark' => 'ini keterangan untuk produk yang akan dikirim dari gudang pusat',
  93.             ],
  94.             [
  95.                 'line_no' => '4',
  96.                 'product_code' => 'PRODUKPANJANGSEKALIUNTUKKODE03',
  97.                 'product_name' => 'PRODUK PANJANG SEKALI UNTUK NAMA YANG INI PLLUS PANJANG LAGI',
  98.                 'qty' => '100',
  99.                 'uom_name' => 'BOX',
  100.                 'remark' => 'ini keterangan untuk produk yang akan dikirim dari gudang pusat',
  101.             ]
  102.         ];
  103.  
  104.         foreach($data as $value) {
  105.  
  106.             $row = new \Zend\Text\Table\Row();
  107.             $row->appendColumn(new \Zend\Text\Table\Column($value["line_no"]));
  108.             $row->appendColumn(new \Zend\Text\Table\Column($value["product_code"]));
  109.             $row->appendColumn(new \Zend\Text\Table\Column($value["product_name"]));
  110.             $row->appendColumn(new \Zend\Text\Table\Column($value["qty"]." ".$value["uom_name"], "right"));
  111.             $row->appendColumn(new \Zend\Text\Table\Column($value["remark"]));
  112.             $table->appendRow($row);
  113.  
  114.         }
  115.  
  116.         // process header
  117.         $this->lines = array(); // reset lines
  118.  
  119.         $this->lines[] = trimCentered(size("P.T Delovely Wow Cantiknya", $defaultSize), 120);
  120.         $this->lines[] = (trimLeft(size("KEPADA Yth.", $defaultSize), $pageWidthHeader)).(' ').trimRight(size("Surat Jalan", $defaultSize), $pageWidthRight);
  121.         $this->lines[] = (trimLeft(size("P.T Delovely Wow Cantiknya", $defaultSize), $pageWidthHeader)).(' ').trimRight(size("No: GTO-001", $defaultSize), $pageWidthRight);
  122.         $this->lines[] = (trimLeft(size("Harap diterima barang - barang berikut ini:", $defaultSize), $pageWidthHeader));
  123.         $this->lines[] = chr(0x0D).chr(0x0A).$table->render();
  124.         $this->lines[] = (trimLeft(size("User: Super Admin Paling Super", $defaultSize), $pageWidthHeader)).(' ').trimRight(size("Semarang, 22-11,2018", $defaultSize), $pageWidthRight);
  125.         $this->lines[] = "\n";
  126.         $this->lines[] = (trimLeft(size("  Penerima", $defaultSize), 16)).('            ')
  127.                          .trimLeft(size(" Mengetahui", $defaultSize), 16)
  128.                          .('           ').trimLeft(size(" Cek Akhir", $defaultSize), 16)
  129.                          .('       ').trimLeft(size("Pembuat", $defaultSize), 16);
  130.         $this->lines[] = "\n";
  131.         $this->lines[] = "\n";
  132.         $this->lines[] = (trimLeft(size("(           )", $defaultSize), 16)).('            ')
  133.             .trimLeft(size("(           )", $defaultSize), 16)
  134.             .('           ').trimLeft(size("(           )", $defaultSize), 16)
  135.             .('     ').trimLeft(size("(          )", $defaultSize), 16);
  136.         $this->lines[] = "\n";
  137.         $this->lines[] = trimLeft(size("TANGGAL CETAK : ".date_format(date_create(DateUtil::dateNow()),"d-m-Y")
  138.                                         ." JAM : ".date_format(date_create(DateUtil::dateTimeNow()),"H:i:s"), $defaultSize), 50);
  139.  
  140.     }
  141.  
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement