CORE-POS/IS4C

View on GitHub
fannie/admin/labels/pdf_layouts/Zebra_Single_Label.php

Summary

Maintainability
C
7 hrs
Test Coverage
A
92%
<?php
/*******************************************************************************

    Copyright 2009 Whole Foods Co-op

    This file is part of CORE-POS.

    CORE-POS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    CORE-POS is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    in the file license.txt along with IT CORE; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*********************************************************************************/
if (!class_exists('FpdfWithBarcode')) {
    include(dirname(__FILE__) . '/../FpdfWithBarcode.php');
}

  class Zebra_Single_Label_PDF extends FpdfWithBarcode
  {
    function barcodeText($x, $y, $h, $barcode, $len)
    {
      $this->SetFont('Arial','',9);
      if (filter_input(INPUT_GET, 'narrow') !== null)
          $this->Text($x,$y+$h+11/$this->k,substr($barcode,-$len));
      else
          $this->Text($x+6,$y+$h+11/$this->k,substr($barcode,-$len));
    }
  }

  /**------------------------------------------------------------
   *       End barcode creation class
   *-------------------------------------------------------------*/


  /**
   * begin to create PDF file using fpdf functions
   */

  function Zebra_Single_Label($data, $offset=0, $filename=NULL){
    $hspace = 0.89375;
    $h = 31;
    $w = 53;
    $top = 0;
    $left = 0;
    $space = 1.190625 * 2;

    $pdf=new Zebra_Single_Label_PDF('L', 'mm', array(31.75, 57.15));
    $pdf->SetMargins(0, 0);
    $pdf->SetAutoPageBreak('off', 0);
    $pdf->SetFont('Arial', '', 10);

    /**
    * set up location variable starts
    */
    $barLeft = $left + 4;
    $descTop = $top + $hspace;
    $barTop = $descTop + 16;
    $priceTop = $descTop + 4;
    $brandTop = $descTop + 4;
    $sizeTop = $descTop + 8;
    $genLeft = $left;
    $skuTop = $descTop + 12;
    $vendLeft = $left + 13;
    $down = 30.95625;
    $LeftShift = 51.990625;
    $priceLeft = ($w / 2) + ($space);

    foreach($data as $item) {
      $pdf->AddPage('L');


      /**
      * instantiate variables for printing on barcode from
      * $testQ query result set
      */
      if ($item['scale'] == 0) {$price = $item['normal_price'];}
      elseif ($item['scale'] == 1) {$price = $item['normal_price'] . "/lb";}
      $desc = strtoupper(substr($item['description'],0,27));
      $brand = ucwords(strtolower(substr($item['brand'],0,13)));
      $pak = $item['units'];
      $size = $item['units'] . "-" . $item['size'];
      $sku = $item['sku'];
      $upc = substr($item['upc'],1,12);
      /**
      * determine check digit using barcode.php function
      */
      $check = $pdf->GetCheckDigit($upc);
      /**
      * get tag creation date (today)
      */
      $tagdate = date('m/d/y');
      $vendor = substr($item['vendor'],0,7);

      /**
      * begin creating tag
      */
      $pdf->SetXY($genLeft, $descTop);
      $pdf->Cell($w,4,substr($desc,0,20),0,0,'L');
      $pdf->SetXY($genLeft,$brandTop);
      $pdf->Cell($w/2,4,$brand,0,0,'L');
      $pdf->SetXY($genLeft,$sizeTop);
      $pdf->Cell($w/2,4,$size,0,0,'L');
      $pdf->SetXY($priceLeft+9,$skuTop);
      $pdf->Cell($w/3,4,$tagdate,0,0,'R');
      // $pdf->SetFont('Arial','',10);
      $pdf->SetXY($genLeft,$skuTop);
      $pdf->Cell($w/3,4,$sku,0,0,'L');
      $pdf->SetXY($vendLeft,$skuTop);
      $pdf->Cell($w/3,4,$vendor,0,0,'C');
      $pdf->SetFont('Arial','B',20);
      $pdf->SetXY($priceLeft,$priceTop);
      $pdf->Cell($w/2,8,$price,0,0,'R');
      /**
      * add check digit to pid from testQ
      */
      $newUPC = $upc . $check;
      $pdf->UPC_A($barLeft, $barTop, $upc, 10);
    }

    /**
    * write to PDF
    */
    if(is_null($filename)) {
      $pdf->Output();
    } else {
      $pdf->Output($filename, "F");
    }
  }