Advertisement
Guest User

Invoice.php

a guest
Sep 3rd, 2012
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.94 KB | None | 0 0
  1. <?php
  2.  
  3. class Company_Invoice_Model_Order_Pdf_Invoice extends Mage_Sales_Model_Order_Pdf_Invoice
  4. {
  5.     /**
  6.      * Draw header for item table
  7.      *
  8.      * @param Zend_Pdf_Page $page
  9.      * @return void
  10.      */
  11.     protected function _drawHeader(Zend_Pdf_Page $page)
  12.     {
  13.         /* Add table head */
  14.         $this->_setFontRegular($page, 10);
  15.         $page->setFillColor(new Zend_Pdf_Color_RGB(0.93, 0.92, 0.92));
  16.         $page->setLineColor(new Zend_Pdf_Color_GrayScale(0.5));
  17.         $page->setLineWidth(0.5);
  18.         $page->drawRectangle(25, $this->y, 570, $this->y -15);
  19.         $this->y -= 10;
  20.         $page->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));
  21.  
  22.         //columns headers
  23.         $lines[0][] = array(
  24.             'text' => Mage::helper('sales')->__('Products'),
  25.             'feed' => 35
  26.         );
  27.  
  28.         $lines[0][] = array(
  29.             'text'  => Mage::helper('sales')->__('SKU'),
  30.             'feed'  => 290,
  31.             'align' => 'right'
  32.         );
  33.  
  34.         $lines[0][] = array(
  35.             'text'  => Mage::helper('sales')->__('Qty'),
  36.             'feed'  => 435,
  37.             'align' => 'right'
  38.         );
  39.  
  40.         $lines[0][] = array(
  41.             'text'  => Mage::helper('sales')->__('Price'),
  42.             'feed'  => 360,
  43.             'align' => 'right'
  44.         );
  45.  
  46.         $lines[0][] = array(
  47.             'text'  => Mage::helper('sales')->__('Tax'),
  48.             'feed'  => 495,
  49.             'align' => 'right'
  50.         );
  51.  
  52.         $lines[0][] = array(
  53.             'text'  => Mage::helper('sales')->__('Subtotal'),
  54.             'feed'  => 565,
  55.             'align' => 'right'
  56.         );
  57.  
  58.         $lineBlock = array(
  59.             'lines'  => $lines,
  60.             'height' => 5
  61.         );
  62.  
  63.         $this->drawLineBlocks($page, array($lineBlock), array('table_header' => true));
  64.         $page->setFillColor(new Zend_Pdf_Color_GrayScale(0));
  65.         $this->y -= 20;
  66.     }
  67.  
  68.     /**
  69.      * Return PDF document
  70.      *
  71.      * @param  array $invoices
  72.      * @return Zend_Pdf
  73.      */
  74.     public function getPdf($invoices = array())
  75.     {
  76.         $this->_beforeGetPdf();
  77.         $this->_initRenderer('invoice');
  78.  
  79.         $pdf = new Zend_Pdf();
  80.         $this->_setPdf($pdf);
  81.         $style = new Zend_Pdf_Style();
  82.         $this->_setFontBold($style, 10);
  83.  
  84.         foreach ($invoices as $invoice) {
  85.             if ($invoice->getStoreId()) {
  86.                 Mage::app()->getLocale()->emulate($invoice->getStoreId());
  87.                 Mage::app()->setCurrentStore($invoice->getStoreId());
  88.             }
  89.             $page  = $this->newPage();
  90.             $order = $invoice->getOrder();
  91.             /* Add image */
  92.             $this->insertLogo($page, $invoice->getStore());
  93.             /* Add address */
  94.             $this->insertAddress($page, $invoice->getStore());
  95.             /* Add head */
  96.             $this->insertOrder(
  97.                 $page,
  98.                 $order,
  99.                 Mage::getStoreConfigFlag(self::XML_PATH_SALES_PDF_INVOICE_PUT_ORDER_ID, $order->getStoreId())
  100.             );
  101.             /* Add document text and number */
  102.             $this->insertDocumentNumber(
  103.                 $page,
  104.                 Mage::helper('sales')->__('Invoice # ') . $invoice->getIncrementId()
  105.             );
  106.             /* Add table */
  107.             $this->_drawHeader($page);
  108.             /* Add body */
  109.             foreach ($invoice->getAllItems() as $item){
  110.                 if ($item->getOrderItem()->getParentItem()) {
  111.                     continue;
  112.                 }
  113.                 /* Draw item */
  114.                 $this->_drawItem($item, $page, $order);
  115.                 $page = end($pdf->pages);
  116.             }
  117.             /* Add totals */
  118.             $this->insertTotals($page, $invoice);
  119.             $this->_drawFooter($page);
  120.             if ($invoice->getStoreId()) {
  121.                 Mage::app()->getLocale()->revert();
  122.             }
  123.  
  124.         }
  125.         $this->_afterGetPdf();
  126.         return $pdf;
  127.     }
  128.  
  129.     /**
  130.      * Create new page and assign to PDF object
  131.      *
  132.      * @param  array $settings
  133.      * @return Zend_Pdf_Page
  134.      */
  135.     public function newPage(array $settings = array())
  136.     {
  137.         /* Add new table head */
  138.         $page = $this->_getPdf()->newPage(Zend_Pdf_Page::SIZE_A4);
  139.         $this->_getPdf()->pages[] = $page;
  140.         $this->y = 800;
  141.         if (!empty($settings['table_header'])) {
  142.             $this->_drawHeader($page);
  143.         }
  144.         return $page;
  145.     }
  146.  
  147.     /**
  148.      * Draw footer for the invoice
  149.      *
  150.      * @param Zend_Pdf_Page $page
  151.      * @return  Zend_Pdf_Page
  152.      */
  153.  
  154.     protected function _drawFooter(Zend_Pdf_Page $page)
  155.     {
  156.         //$this->_setFontRegular($page, 10);
  157.         $page->drawLine(37,170,568,170);
  158.         $text=Mage::helper('sales')->__('Some text');
  159.         $thankyou=Mage::helper('sales')->__('Some text');
  160.         $page->drawText($text,150,150);
  161.         $page->drawText($thankyou,200,130);
  162.         return $page;
  163.     }
  164.  
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement