Difference between revisions of "How to customize PDF invoice output"

From aMember Pro Documentation
Jump to: navigation, search
Line 11: Line 11:
 
  * @param InvoicePayment $payment
 
  * @param InvoicePayment $payment
 
  */
 
  */
Am_Even::PDF_INVOICE_COL_LEFT;  //allow to customize left column with data before table
+
Am_Event::PDF_INVOICE_COL_LEFT;  //allow to customize left column with data before table
Am_Even::PDF_INVOICE_COL_RIGHT; //allow to customize right column with data before table
+
Am_Event::PDF_INVOICE_COL_RIGHT; //allow to customize right column with data before table
 
</source>
 
</source>
  
Line 28: Line 28:
 
    
 
    
 
     $col = $event->getCol();
 
     $col = $event->getCol();
     //print_rre($col); //you can uncomment this line and see waht is present in $col object
+
     //print_rre($col); //you can uncomment this line and see what is present in $col object
 
     $col->invoiceNumber = ___('Invoice Number: ') . $payment->pk(); // alter some line
 
     $col->invoiceNumber = ___('Invoice Number: ') . $payment->pk(); // alter some line
 
     unset($col->date); //remove line
 
     unset($col->date); //remove line

Revision as of 08:52, 20 August 2013

There is 4 hooks to customize pdf invoice without change core files:

2 hooks to alter left and right column before table with info

/**
 * @param stdClass $col
 * @param User $user
 * @param Invoice $invoice
 * @param InvoicePayment $payment
 */
Am_Event::PDF_INVOICE_COL_LEFT;  //allow to customize left column with data before table
Am_Event::PDF_INVOICE_COL_RIGHT; //allow to customize right column with data before table

Example of usage

You can put the following code to site.php file and this customization will not be affected by upgrade.

<?php
Am_Di::getInstance()->hook->add(Am_Event::PDF_INVOICE_COL_LEFT, 'pdfInvoiceColLeft');
 
function pdfInvoiceColLeft(Am_Event $event)
{
    /* @var $payment InvoicePayment */
    $payment = $event->getPayment();
 
    $col = $event->getCol();
    //print_rre($col); //you can uncomment this line and see what is present in $col object
    $col->invoiceNumber = ___('Invoice Number: ') . $payment->pk(); // alter some line
    unset($col->date); //remove line
    $col->custom = 'Some additional text'; //add line
}


2 hooks to customize invoice before/after table

/**
 * @param Am_Pdf_Page_Decorator $page
 * @param stdClass $pointer use $pointer->value to retrieve current offset and update it
 * @param User $user
 * @param Invoice $invoice
 * @param InvoicePayment $payment
 */
Am_Event::PDF_INVOICE_BEFORE_TABLE; //allow to output any text/graphics before table
Am_Event::PDF_INVOICE_AFTER_TABLE; //allow to output any text/graphics after table

Example of usage

You can put the following code to site.php file and this customization will not be affected by upgrade.

<?php
Am_Di::getInstance()->hook->add(Am_Event::PDF_INVOICE_BEFORE_TABLE, 'pdfInvoiceBeforeTable');
 
function pdfInvoiceBeforeTable(Am_Event $event)
{
    /* @var $page Am_Pdf_Page_Decorator */
    $page = $event->getPage();
    $pointer = $event->getPointer();
 
    $page->drawTextWithFixedWidth(<<<CUT
   Some text to output on invoice above table, it can be long
text and new line will be added automatically by demand
CUT
        , 20, &$pointer->value, 200);
}