2013-2Q (v003): Editing SIMPLer Templates (Variable Lists)

Note: It is recommended that operators have some basic HTML experience when attempting to modify their templates. Please make sure to save copies of previous versions before uploading changes.

SIMPLer uses a process of converting a HTML template file into a PDF for such things as invoices, receipts, and work orders. 
For those operators who wish to create their own templates, a list of templates can be found by clicking on the settings tab at the top of the page (See fig.1-1) and navigating to the menu on the left, then scrolling down to the sub heading "Templates" and selecting the type of template the wish to edit.(See fig. 1-2).  You can also access the templates by clicking on settings --> templates as per figure 1-3.



Fig. 1-1: Settings Tab

Fig.1-1: Settings Tab


Fig. 1-2: Template options


Fig. 1-3: Templates access



The most commonly used templates are the "Invoice" and "Attachments" (i.e. work orders) templates. When editing a template, the following best practices are recommended:
  • Make a backup of the existing template so that you can revert should anything go wrong
  • Use the existing template as a guide
  • Edit the template when there is not a risk of other users creating invoices/work orders to avoid malformed PDF's from being sent to customers
  • Preview your changes often. The module to convert the HTML to PDF is not like a browser and as such, you may get unexpected results during the conversion so working in small sections will save time.
  • Make sure that your template editor has not added </tmpl_var> tags as these are not supported in the template and will create an internal server error.  Some operators report that by clicking on the link to view the default template, then saving the file, the browser will save these unsupported codes. However, if you right click on the link and just click save instead, those tags are not added in to the code. 
  • The conversion scale is approximately 100px = 2.54cm
  • The conversion module does not accept newer HTML elements. HTML 4.0 (and above) elements, attributes, stylesheets and scripts are not supported.
Below, divided into sections, you will find the list of variables that can be used on the Invoice (Section One), Receipt (Section Two) Work Order (Section Three), Customer statement (Section Four) , Quote Template (Section Five) and End User Portal (Section Six) HTML templates. Note, that these variables pull data from the data stored on your WISP. Some data comes from Settings->Modify WISP and some comes from the individual customer accounts. Ensure that all settings are correct if you are seeing unexpected data rather than hard coding the values on the template. This is to ensure the WISP details displayed on all templates/emails/pages are consistent.

Note that once you have made changes to your template and wish to upload it to SIMPLer you must choose the type "template" and make sure that the name of your file is default and that it is in html format.  For uploading the logo, your file name should be logo and JPEG format is recommended.  Generally it should be of a maximum of 100 pixels in height and 200 pixels in width.   

Example Use: <TMPL_VAR NAME=OPERATORNAME>

The template module also allows for logic checks. This allows the template designer to check for specific values before displaying text.

<TMPL_IF EXPR="INVOICETYPE eq 'credit card'">Your Credit Card Has Been Charged</TMPL_IF>

For a more detailed example of use, view the current default template on your instance. 

If you wish to include multiple pages in your document, you should include the following line for each page break.

<div style="page-break-after:always;"></div>

Page media size is set to A4 by default. However, this can be changed with the following line being added at the top of the tempalte file:

<!-- MEDIA SIZE "Letter" -->

It sets the media size to the specified size. The size string can be "Letter", "Legal", "Universal" or "A4" for most standard sizes or "WIDTHxHEIGHTunits" for custom sizes, i.e. "8.5x11in"

Section One: Invoice Template

OPERATORNAME
OPERATORADDRESS
OPERATORADDRESS1
OPERATORADDRESS2
OPERATORADDRESS3
OPERATORADDRESS4
OPERATORADDRESS5
OPERATORADDRESS6
OPERATORCOUNTRY
OPERATORPHONE
OPERATORFAX
OPERATOREMAIL
OPERATORACCOUNTSEMAIL
OPERATORVATNUMBER
OPERATORBANKACCOUNTNO
OPERATORBANKADDRESS
OPERATORBANKADDRESS1
OPERATORBANKADDRESS2
OPERATORBANKADDRESS3
OPERATORBANKADDRESS4 
OPERATORBANKADDRESS5
OPERATORBANKADDRESS6 
OPERATORBANKADDRESS7 
OPERATORBANKSORTCODE
OPERATORBANKSWIFT  
OPERATORBANKIBAN 
OPERATORREMITADVICEEMAIL
CUSTOMERNAME
CUSTOMERADDRESS
CUSTOMERADDRESS1
CUSTOMERADDRESS2 
CUSTOMERADDRESS3 
CUSTOMERADDRESS4  
CUSTOMERADDRESS5 
CUSTOMERADDRESS6 
CUSTOMERVATNO  
CUSTOMERPAYMENTMETHOD 
CUSTOMERSALESMAN
INVOICENO  
INVOICETYPE 
INVOICEDATE   
INVOICEDUEDATE
ORDERNO    
ACCOUNTNO  
NETAMOUNT
CARRIAGEAMOUNT
TAXAMOUNT
TOTALAMOUNT 
TOTALBALANCE
BALANCEFORWARD
BALANCEFORWARD_SEP
BALANCEFORWARDRAW
BALANCEFORWARDRAW_SEP
CREDITAMOUNT
CREDITAMOUNT_SEP
VOIPROWS
MARKETINGCODE
CUSTOMEREMAIL
BILLINGPERIODSTARTDATE
PREVIOUSPAYMENTDATE
BILLINGPERIODENDDATE
BILLINGPERIODDUEDATE
TAXRATEFORMAT
PREVIOUSINVOICEDATE
PREVIOUSINVOICEAMOUNT 
CURRENCYCODE
CURRENCYSYMBOL
LEGALNOTE
CUSTOMERID
BILLINGPERIODMONTH
ADDITIONAL_HTML
PREVIOUSPAYMENTSTOTALAMOUNT
BILLINGPERIODMONTHABBR         - e.g. Jan, Feb, Mar, Apr,
BILLINGPERIODYEAR              - e.g. 2012, 2013, 2014
BILLINGPERIODFIRSTDAY          - first day of month based on invoice date month, e.g. if invoice date is 13 Mar 2013 variable value is 01
BILLINGPERIODLASTDAY           - last day of month based on invoice date month, e.g. if invoice date is 13 Mar 2013 variable value is 31
CUSTOMER_HAS_SUBACCOUNTS

The following variables can be used but there is a setting under WISP settings that must be enabled in order for them to display monthly usage correctly.  The setting is "Calculate data usage and allowance for invoice" and is located under SIMPLer Settings in WISP settings.
BANDWIDTHALLOWANCE                
BANDWIDTHUSAGE
FREE_SERVICE_NOTE         - editable under "Templates" section:

NEG_POS_BALANCE            - to display total balance (negative & positive)
NEG_POS_BALANCE_SEP        - to display total balance (negative & positive) with comma delimited thousands


Customer Products
There are two way to display customer products on an invoice:

a) dynamic HTML code - numer of added rows will depend on the number of invoice product positions 
          <TMPL_IF NAME=SUBSCRIPTION>
          <TMPL_LOOP NAME=SUBSCRIPTION>
          <tr>
            <td align="left" ><TMPL_VAR NAME=P_QUANT>
              &nbsp;</td>
            <td align=left><TMPL_VAR NAME=P_NAME></td>
            <td align="right"><TMPL_VAR NAME=P_NET_AMOU_SEP></td>
          </tr>
          </TMPL_LOOP>
          <TMPL_ELSE>
                  <tr colspan="3">
                    <td>&nbsp;<td>
         </tr>
          </TMPL_IF>

There are two important additional paramaters that were added to the invoice templating system:


 If you update the template then you will probably have to update those  values as well so all fits (ie. footer does not go down to the next page)

Other paramaters which could be used on the template are:

<TMPL_VAR NAME=TOTAL_ROWS> - number of all the subscriptions
<TMPL_VAR NAME=COUNTER>  - to count  each subscription line
<TMPL_VAR NAME=PAGE_BREAK> - mostly should be used to check if this is the last subscription on the page and we should carry over to the next page
<TMPL_VAR NAME=MORE_THAN_ONE_PAGE> - check if invoice has one or more pages - mostly used when you need to display page number but you want to do that only if you have more than one page
<TMPL_VAR NAME=PAGE_NUMBER>  - self explanatory


b) static HTML code - where a number of rows is statically specified by HTML code

In the variables listed below the # represents a changing value. For example the below can be used to represent two products on an invoice:

<tr>
    <td align=right><TMPL_VAR NAME=P_QUANT_1>&nbsp;</td>
    <td align=left><TMPL_VAR NAME=P_NAME_1></td>
    <td><TMPL_VAR NAME=P_NET_AMOU_1></td>
</tr>
<tr>
    <td align=right><TMPL_VAR NAME=P_QUANT_2>&nbsp;</td>
    <td align=left><TMPL_VAR NAME=P_NAME_2></td>
    <td><TMPL_VAR NAME=P_NET_AMOU_2></td>
</tr>

Note: If there is no value for the variable, an empty string is returned. Below find a list of available values that can be displayed either using static or dynamic product listing.

P_NAME_#
P_CODE_#
P_BASE_AMOU_#
P_BASE_AMOU_SEP_#
P_AMOU_PRE_DISC_PRE_PREM_#
P_AMOU_PRE_DISC_PRE_PREM_SEP_#
P_DISC_#
P_DISC_AMOU_#
P_PREM_#
P_PREM_AMOU_#
P_NET_AMOU_#
P_NET_AMOU_SEP_#
P_UNIT_NET_AMOU_#
P_UNIT_NET_AMOU_SEP_#
P_VAT_RATE_#
P_FREE_SER_#
P_SUBACCOUNT_CUSTOMERID_#
P_SUBACCOUNT_NICKNAME_#
P_SUBACCOUNT_INVOICINGID_#
P_SUBACCOUNT_NAME_#
P_CUSTOMER_CUSTOMERID_#
     P_CUSTOMER_INVOICINGID_#
          P_CUSTOMER_NAME_#
          P_CUSTOMER_HAS_SUBACCOUNTS_#

Customer Payments
There are two way to display customer payments on an invoice:

a) dynamic HTML code - numer of added rows will depend on the number of invoice product positions 
          <TMPL_IF NAME=PAYMENT>
          <TMPL_LOOP NAME=PAYMENT>
      <tr>
            <td align="left"><TMPL_VAR NAME=PREVIOUSPAYMENTDATE></td>
             <td><TMPL_VAR NAME=PREVIOUSPAYMENTMETHOD> <TMPL_VAR NAME=PREVIOUSPAYMENTNARRATIVE>&nbsp;</td>
             <td align="right"><TMPL_VAR NAME=PREVIOUSPAYMENTAMOUNT></td>
                 </tr>
    </TMPL_LOOP>
          <TMPL_ELSE>
   <tr colspan="3">
              <td>&nbsp;<td>
     </tr>
          </TMPL_IF>

b) static HTML code - where a number of rows is statically specified by HTML code
          <tr>
            <td align="left"><TMPL_VAR NAME=PREVIOUSPAYMENTDATE></td>
            <td><TMPL_VAR NAME=PREVIOUSPAYMENTMETHOD>
              <TMPL_VAR NAME=PREVIOUSPAYMENTNARRATIVE>&nbsp;</td>
            <td align="right"><TMPL_VAR NAME=PREVIOUSPAYMENTAMOUNT></td>
          </tr>
          <tr>
            <td align="left"><TMPL_VAR NAME=PREVIOUSPAYMENTDATE2></td>
            <td><TMPL_VAR NAME=PREVIOUSPAYMENTMETHOD2>
              <TMPL_VAR NAME=PREVIOUSPAYMENTNARRATIVE2>&nbsp;</td>
            <td align="right"><TMPL_VAR NAME=PREVIOUSPAYMENTAMOUNT2></td>
          </tr>

Note: If there is no value for the variable, an empty string is returned

PREVIOUSPAYMENTAMOUNT#
PREVIOUSPAYMENTAMOUNT_SEP#
PREVIOUSPAYMENTNARRATIVE#
PREVIOUSPAYMENTDATE#
PREVIOUSPAYMENTMETHOD#


If you want to display the breakup of tax rates for subscriptions with different tax rates for subscriptions, you can use a loop similar to the following:

<TMPL_IF NAME=DIFFERENT_VAT_RATES>    
    <TMPL_LOOP NAME=DIFFERENT_VAT_RATES>        
        <tr>            
            <td>TAX on <TMPL_VAR NAME=NETAMOUNT> at <TMPL_VAR NAME=VAT_RATE>%</td>            
            <td><TMPL_VAR NAME=TAXAMOUNT></td>        
        </tr>    
    </TMPL_LOOP>
</TMPL_IF>

The two following variables can be used if you wish to integrate a special message for those customers that have failed to pay invoices within the time alloted by your SAND settings. This can be used to help notify customers of billing issue if they are not receiving email.

<TMPL_IF NAME=INVOICESAND2>
    <table border="1" bgcolor="#143f71" width="90%">
        <tr>
            <td>
                <font color="#FFFFFF">
                <b>Amount due over 60 days</b> 
                <hr width="100px" />
                YOUR HIGH SPEED INTERNET ACCOUNT IS SERIOUSLY PAST DUE. YOU MUST PAY THE AMOUNT SHOWING BELOW TO MAINTAIN YOUR SERVICE.
                </font>                   
            </td>
        </tr>
    </table>
<TMPL_ELSE>
    <TMPL_IF NAME=INVOICESAND1>
        <table border="1" bgcolor="#8ba0c5" width="90%">
            <tr>
                <td>
                    <font color="#FFFFFF">
                    <b>Amount due over 30 days</b>
                    <hr width="100px" />
                     FRIENDLY REMINDER - YOUR ACCOUNT IS NOW PAST DUE. PLEASE REMIT THE AMOUNT SHOWING BELOW TO MAINTAIN YOUR HIGH SPEED     INTERNET SERVICE.</font>
               </td>
            </tr>
        </table>
    </TMPL_IF>  
</TMPL_IF> 

Note: If you are not using the SAND system these variables will always be false.

INVOICESAND1
INVOICESAND2

Variables are also available for the inclusion of "Custom Customer Fields" data on the invoice. The # icon should be replace with the ID number for the custom field data the designer wishes to display.

CUSTOM_FIELD_#

Section Two: Receipt Template

OPERATOR
OPERATORNAME
OPERATORADDRESS
OPERATORADDRESS1
OPERATORADDRESS2
OPERATORADDRESS3
OPERATORADDRESS4
OPERATORADDRESS5
OPERATORADDRESS6
OPERATORCOUNTRY
OPERATORPHONE
OPERATORFAX
OPERATOREMAIL
OPERATORACCOUNTSEMAIL
OPERATORVATNUMBER
OPERATORBANKACCOUNTNO
OPERATORBANKADDRESS
OPERATORBANKADDRESS1
OPERATORBANKADDRESS2
OPERATORBANKADDRESS3
OPERATORBANKADDRESS4
OPERATORBANKADDRESS5
OPERATORBANKADDRESS6
OPERATORBANKADDRESS7
OPERATORBANKSORTCODE
OPERATORBANKSWIFT
OPERATORBANKIBAN
OPERATORREMITADVICEEMAIL
CUSTOMERNAME
CUSTOMERNICKNAME
CUSTOMERINVOICINGID
CUSTOMERADDRESS
CUSTOMERADDRESS1
CUSTOMERADDRESS2
CUSTOMERADDRESS3
CUSTOMERADDRESS4
CUSTOMERADDRESS5
CUSTOMERADDRESS6
CUSTOMERINSTALLATIONADDRESS
CUSTOMERINSTALLATIONADDRESS1
CUSTOMERINSTALLATIONADDRESS2
CUSTOMERINSTALLATIONADDRESS3 
CUSTOMERINSTALLATIONADDRESS4
CUSTOMERINSTALLATIONADDRESS5
CUSTOMERINSTALLATIONADDRESS6
CUSTOMERVATNO
CUSTOMERPHONE
CUSTOMERNOTE
CUSTOMERMARKETINGCODE
CUSTOMEREMAIL
CUSTOMERSETUPFEE
CUSTOMERINSTALLATIONAREA
CUSTOMERORDERNO
INVOICENO
INVOICETYPE
INVOICEDATE
INVOICEDUEDATE
INVOICENETAMOUNT
INVOICECARRIAGEAMOUNT
INVOICETAXAMOUNT
INVOICETOTALAMOUNT
LODGEMENTREFERENCE
LODGEMENTNARRATIVE
LODGEMENTDATE
LODGEMENTTYPE
LODGEMENTAMOUNT
PAYMENTAMOUNT
PAYMENTDISCOUNT
PAYMENTFAILDATE
CURRENCYCODE
CURRENCYSYMBOL
PAYMENT_LAST4_DIGITS

In the variables listed below the # represents a changing value. For example, the below can be used to represent two products on an invoice:

<tr>
    <td align=right><TMPL_VAR NAME=P_QUANT_1>&nbsp;</td>
    <td align=left><TMPL_VAR NAME=P_NAME_1></td>
    <td><TMPL_VAR NAME=P_NET_AMOU_1></td>
</tr>
<tr>
    <td align=right><TMPL_VAR NAME=P_QUANT_2>&nbsp;</td>
    <td align=left><TMPL_VAR NAME=P_NAME_2></td>
    <td><TMPL_VAR NAME=P_NET_AMOU_2></td>
</tr>

Note: If there is no value for the variable, an empty string is returned:

P_QUANT_#
P_NAME_#
P_DISC_#
P_DISC_AMOU_#
P_NET_AMOU_#
P_VAT_RATE_#
P_VAT_AMOU_#

Section Three: Attachment (Work Order) Variables

OPERATOR
OPERATORNAME
OPERATORADDRESS
OPERATORADDRESS1
OPERATORADDRESS2
OPERATORADDRESS3
OPERATORADDRESS4
OPERATORADDRESS5
OPERATORCOUNTRY
OPERATORPHONE
OPERATORFAX
OPERATOREMAIL
OPERATORACCOUNTSEMAIL
OPERATORVATNUMBER
OPERATORBANKACCOUNTNO
OPERATORBANKADDRESS
OPERATORBANKADDRESS1
OPERATORBANKADDRESS2
OPERATORBANKADDRESS3
OPERATORBANKADDRESS4
OPERATORBANKADDRESS5
OPERATORBANKADDRESS6
OPERATORBANKADDRESS7
OPERATORBANKSORTCODE
OPERATORBANKSWIFT
OPERATORBANKIBAN
OPERATORREMITADVICEEMAIL
CUSTOMERNAME
CUSTOMERNICKNAME
CUSTOMERADDRESS
CUSTOMERADDRESS1
CUSTOMERADDRESS2
CUSTOMERADDRESS3
CUSTOMERADDRESS4
CUSTOMERADDRESS5
CUSTOMERADDRESS6
CUSTOMERINSTALLATIONADDRESS
CUSTOMERINSTALLATIONADDRESS1
CUSTOMERINSTALLATIONADDRESS2
CUSTOMERINSTALLATIONADDRESS3
CUSTOMERINSTALLATIONADDRESS4
CUSTOMERINSTALLATIONADDRESS5
CUSTOMERINSTALLATIONADDRESS6
CUSTOMERVATNO
CUSTOMERPHONE
CUSTOMERNOTE
CUSTOMERMARKETINGCODE
CUSTOMEREMAIL
CUSTOMERSETUPFEE *deprecated
CUSTOMERGATEWAY
CUSTOMERINSTALLATIONAREA
ATTACHMENTDATE
SCHEDULEDDATE
SCHEDULEDTIME
ATTACHMENTNOTE
ATTACHMENTID
ISSUETITLE
ISSUEDESCRIPTION
ISSUERESOLUTION
GPSX
GPSY
RADIUS_USERNAME
RADIUS_PASSWORD
INVOICINGID
CUSTOMERID
INSTALLER_NAME
INSTALLER_NICKNAME
INSTALLER_PHONE
INSTALLER_EMAIL
SITENAME
VAR
MA
RSM
SALESMAN

Variables are also available for the inclusion of "Custom Customer Fields" data on the attachment.
The
# icon should be replaced with the ID number for the custom field data the designer wishes to display.

CUSTOM_FIELD_#

Customer Custom Table content can be printed out on Work Order. To do that it is required to update work order template with the following code:
<TMPL_IF NAME=CUSTOM_TABLE_*TABLE_NAME*>
        <TMPL_LOOP NAME=CUSTOM_TABLE_*TABLE_NAME*>
            <tr>
                <td>
                    <TMPL_VAR NAME=CUSTOM_FIELD_*FIELD_ID*>
                </td>
                <td>
                    <TMPL_VAR NAME=CUSTOM_FIELD_*FIELD_ID*>
                </td>
            </tr>
        </TMPL_LOOP>
    </TMPL_IF>

where

*TABLE_NAME*  - name of table that should be displayed on work order
*FIELD_ID* - field id of the given field of custom table that should be displayed on work order

Variables are also available for customer subscription, ip and cpe. Operator can assign more than one ip, subscription and cpe to the customer account thus it can only be accessed by using LOOP

SUBSCRIPTION :
     
'CUSTOMER_SETUP_FEE'
            'QUANTITY'
            'PREMIUM'
            'DISCOUNT'
            'EFFECTIVE_PRICE'
            'FREQUENCY'
            'EFFECTIVE_DESCRIPTION'
            'TOTAL'
            'PRODUCTID'
            'ROUND'
            'NOMINAL'
            'CYCLES_LEFT'
            'EFFECTIVE_TAX_RATE'
            'CURRENCY'
            'ID'

IP :
    IPADDRESS
    MAC
    LABEL

CPE :
    GPSX
    GPSY
    DISTANCE
    COLOUR  
    FREQUENCY
    INSTALLEDBY
    DISHINSTALLED
    GROUNDINGCOMPLETED
    NICKNAME
    IPADDRESS
    DESCRIPTION
    SERIALNUMBER
    MACADDRESS
    STATUS
    TYPE
    SNMP_COMMUNITY
    INVDETAILS
    MEMAIL
    EQUIPNOTE
    SUPPLIER
    SUPPLIER_ORDERNO
    RECEIVE_DATE
    RECEIVE_BY
    INTERNAL_GROUPNO
    PORT
    STATUS_CHANGED_ON
    STATUS_BEFORE
    IMSI
    KI
    OPCODE
    MSISDN
    SQN
    PIN1
    PIN2
    PUK1
    ADM1
    DATEADDED
    ICCID
    EQUIPID
    PARENT
    ASSIGNED_SITE

Please find examples below:

<table>
        <tr>
            <td>
                Description  
            </td>
            <td>
                Quantity
            </td>
            <td>
                Price
            </td>
        </tr>
    <TMPL_IF NAME=SUBSCRIPTION>
        <TMPL_LOOP NAME=SUBSCRIPTION>
            <tr>
                <td>
                    <TMPL_VAR NAME=EFFECTIVE_DESCRIPTION>
                </td>
                <td>
                    <TMPL_VAR NAME=QUANTITY>
                </td>
                <td>
                    <TMPL_VAR NAME=TOTAL>
                </td>
            </tr>
        </TMPL_LOOP>
    </TMPL_IF>
    <tr>
    </tr>
</table>

<table>
        <tr>
            <td>
                IP Address  
            </td>
            <td>
                MAC Address
            </td>
            <td>
                Label
            </td>
        </tr>
    <TMPL_IF NAME=IP>
        <TMPL_LOOP NAME=IP>
            <tr>
                <td>
                    <TMPL_VAR NAME=IPADDRESS>
                </td>
                <td>
                    <TMPL_VAR NAME=MAC>
                </td>
                <td>
                    <TMPL_VAR NAME=LABEL>
                </td>
            </tr>
        </TMPL_LOOP>
    </TMPL_IF>
    <tr>
    </tr>
</table>

<table>
        <tr>
            <td>
                IP Address  
            </td>
            <td>
                Nickname
            </td>
            <td>
                MAC Address
            </td>
        </tr>
    <TMPL_IF NAME=CPE>
        <TMPL_LOOP NAME=CPE>
            <tr>
                <td>
                    <TMPL_VAR NAME=IPADDRESS>
                </td>
                <td>
                    <TMPL_VAR NAME=NICKNAME>
                </td>
                <td>
                    <TMPL_VAR NAME=MACADDRESS>
                </td>
            </tr>
        </TMPL_LOOP>
    </TMPL_IF>
    <tr>
    </tr>
</table>



Section Four: Customer Statement Variables


     OPERATOR
     OPERATORNAME
     OPERATORADDRESS
     OPERATORADDRESS1
     OPERATORADDRESS2
     OPERATORADDRESS3
     OPERATORADDRESS4
     OPERATORADDRESS5
     OPERATORCOUNTRY
     OPERATORPHONE
OPERATORFAX
OPERATOREMAIL
OPERATORACCOUNTSEMAIL
OPERATORVATNUMBER
OPERATORBANKACCOUNTNO
OPERATORBANKADDRESS
OPERATORBANKADDRESS1
OPERATORBANKADDRESS2
OPERATORBANKADDRESS3
OPERATORBANKADDRESS4
OPERATORBANKADDRESS5
OPERATORBANKADDRESS6
OPERATORBANKADDRESS7
OPERATORBANKSORTCODE
OPERATORBANKSWIFT
OPERATORBANKIBAN
OPERATORREMITADVICEEMAIL
OPERATORACCOUNTSEMAIL
OPERATORSUPPORTEMAIL
CUSTOMERCUSTOMERID
CUSTOMERNAME
CUSTOMERNICKNAME
CUSTOMERADDRESS
CUSTOMERADDRESS1
CUSTOMERADDRESS2
CUSTOMERADDRESS3
CUSTOMERADDRESS4
CUSTOMERADDRESS5
CUSTOMERADDRESS6
CUSTOMERINSTALLATIONADDRESS
CUSTOMERINSTALLATIONADDRESS1
CUSTOMERINSTALLATIONADDRESS2
CUSTOMERINSTALLATIONADDRESS3
CUSTOMERINSTALLATIONADDRESS4
CUSTOMERINSTALLATIONADDRESS5
CUSTOMERINSTALLATIONADDRESS6
CUSTOMERFREQUENCY
CUSTOMERORDERNUMBER
CUSTOMERSTARTDATE
CUSTOMERPAYMENTMETHOD
CUSTOMERVATNO
CUSTOMERPHONE
CUSTOMERNOTE
CUSTOMERMARKETINGCODE
CUSTOMEREMAIL
CUSTOMERSETUPFEE *deprecated
CUSTOMERGATEWAY
CUSTOMERINSTALLATIONAREA
PAYMENT_LAST4_DIGITS

TOTALDR
TOTALCR
BALANCECR
BALANCEDR

Operator can access statement rows variables using static variables and dynamic variables
Static variables must be added to the template manually row by row, however that enables operator to set up header and footer of statement on each customer statement page (if customer statement is longer than one page)
Dynamic variables can be accessed writing simple loop, however it disables operator from creating well-styled pages of statement

Static Statement variables:


 TYPE_#
 DATE_#
 REFERENCE_#
 NARRATIVE_#
 CR_#
 DR_#
 PAYMENT_LAST4_DIGITS_#

 where # represents row number.

 EXAMPLE:

 <TMPL_IF NAME=TYPE_1>
     <tr>
        <td align=left nowrap>
            <TMPL_VAR NAME=TYPE_1>
        </td>
        <td align=left nowrap>
            <TMPL_VAR NAME=DATE_1>
        </td>
        <td align=left nowrap>
            <TMPL_VAR NAME=REFERENCE_1>
        </td>
        <td align=left nowrap >
            <TMPL_VAR NAME=NARRATIVE_1>
<TMPL_IF NAME=PAYMENT_LAST4_DIGITS_1> - *****<TMPL_VAR NAME=PAYMENT_LAST4_DIGITS_1></TMPL_IF>       
        </td>
        <td align=right nowrap>
            <TMPL_VAR NAME=DR_1>
        </td>
        <td align=right nowrap>
            <TMPL_VAR NAME=CR_1>
        </td>
    </tr>
   </TMPL_IF>
  
<TMPL_IF NAME=TYPE_2>
     <tr>
        <td align=left nowrap>
            <TMPL_VAR NAME=TYPE_2>
        </td>
        <td align=left nowrap>
            <TMPL_VAR NAME=DATE_2>
        </td>
        <td align=left nowrap>
            <TMPL_VAR NAME=REFERENCE_2>
        </td>
        <td align=left nowrap >
            <TMPL_VAR NAME=NARRATIVE_2>
<TMPL_IF NAME=PAYMENT_LAST4_DIGITS_2> - *****<TMPL_VAR NAME=PAYMENT_LAST4_DIGITS_2></TMPL_IF>        
        
</td>
        <td align=right nowrap>
            <TMPL_VAR NAME=DR_2>
        </td>
        <td align=right nowrap>
            <TMPL_VAR NAME=CR_2>
        </td>
    </tr>
   </TMPL_IF>


Dynamic Statement Variables:


LOOP = ROWS

    TYPE
    DATE
    REFERENCE
    NARRATIVE
    CR
    DR
    PAYMENT_LAST4_DIGITS

END LOOP

EXAMPLE:


    <TMPL_IF NAME=ROWS>
        <TMPL_LOOP NAME=ROWS>
            <tr>
                <td align=left nowrap>
                    <TMPL_VAR NAME=TYPE>
                </td>
               
<td align=left nowrap>
                    <TMPL_VAR NAME=DATE>
                </td>
               
<td align=left nowrap>
                    <TMPL_VAR NAME=REFERENCE>
                </td>
               
<td align=left nowrap>
                    <TMPL_VAR NAME=NARRATIVE>
<TMPL_IF NAME=PAYMENT_LAST4_DIGITS> - *****<TMPL_VAR NAME=PAYMENT_LAST4_DIGITS></TMPL_IF>
                </td>
               
<td align=right nowrap>
                    <TMPL_VAR NAME=DR>
                </td>
               
<td align=right nowrap>
                    <TMPL_VAR NAME=CR>
                </td>

            </tr>
        </TMPL_LOOP>
    
</TMPL_IF>


Section Five: Quote Template

OPERATORNAME
OPERATORADDRESS
OPERATORADDRESS1
OPERATORADDRESS2
OPERATORADDRESS3
OPERATORADDRESS4
OPERATORADDRESS5
OPERATORADDRESS6
OPERATORCOUNTRY
OPERATORPHONE
OPERATORFAX
OPERATOREMAIL
OPERATORACCOUNTSEMAIL
OPERATORVATNUMBER
OPERATORBANKACCOUNTNO
OPERATORBANKADDRESS
OPERATORBANKADDRESS1
OPERATORBANKADDRESS2
OPERATORBANKADDRESS3
OPERATORBANKADDRESS4 
OPERATORBANKADDRESS5
OPERATORBANKADDRESS6 
OPERATORBANKADDRESS7 
OPERATORBANKSORTCODE
OPERATORBANKSWIFT  
OPERATORBANKIBAN 
OPERATORREMITADVICEEMAIL
CUSTOMERNAME
CUSTOMERADDRESS
CUSTOMERADDRESS1
CUSTOMERADDRESS2 
CUSTOMERADDRESS3 
CUSTOMERADDRESS4  
CUSTOMERADDRESS5 
CUSTOMERADDRESS6 
CUSTOMERVATNO  
CUSTOMERPAYMENTMETHOD 
CUSTOMERSALESMAN
QUOTENO  
QUOTETYPE 
QUOTEDATE   
ORDERNO    
ACCOUNTNO  
NETAMOUNT
CARRIAGEAMOUNT
TAXAMOUNT
TOTALAMOUNT 
MARKETINGCODE
CUSTOMEREMAIL
TAXRATEFORMAT
CURRENCYCODE
CURRENCYSYMBOL
LEGALNOTE
CUSTOMERID



Customer Products
There are two way to display customer products on an invoice:

a) dynamic HTML code - numer of added rows will depend on the number of invoice product positions 
          <TMPL_IF NAME=SUBSCRIPTION>
          <TMPL_LOOP NAME=SUBSCRIPTION>
          <tr>
            <td align="left" ><TMPL_VAR NAME=P_QUANT>
              &nbsp;</td>
            <td align=left><TMPL_VAR NAME=P_NAME></td>
            <td align="right"><TMPL_VAR NAME=P_NET_AMOU_SEP></td>
          </tr>
          </TMPL_LOOP>
          <TMPL_ELSE>
                  <tr colspan="3">
                    <td>&nbsp;<td>
          </tr>
          </TMPL_IF>

There are two important additional paramaters that were added to the invoice templating system:


 If you update the template then you will probably have to update those  values as well so all fits (ie. footer does not go down to the next page)

Other paramaters which could be used on the template are:

<TMPL_VAR NAME=TOTAL_ROWS> - number of all the subscriptions
<TMPL_VAR NAME=COUNTER>  - to count  each subscription line
<TMPL_VAR NAME=PAGE_BREAK> - mostly should be used to check if this is the last subscription on the page and we should carry over to the next page
<TMPL_VAR NAME=MORE_THAN_ONE_PAGE> - check if invoice has one or more pages - mostly used when you need to display page number but you want to do that only if you have more than one page
<TMPL_VAR NAME=PAGE_NUMBER>  - self explanatory


b) static HTML code - where a number of rows is statically specified by HTML code

In the variables listed below the # represents a changing value. For example the below can be used to represent two products on an invoice:

<tr>
    <td align=right><TMPL_VAR NAME=P_QUANT_1>&nbsp;</td>
    <td align=left><TMPL_VAR NAME=P_NAME_1></td>
    <td><TMPL_VAR NAME=P_NET_AMOU_1></td>
</tr>
<tr>
    <td align=right><TMPL_VAR NAME=P_QUANT_2>&nbsp;</td>
    <td align=left><TMPL_VAR NAME=P_NAME_2></td>
    <td><TMPL_VAR NAME=P_NET_AMOU_2></td>
</tr>

Note: If there is no value for the variable, an empty string is returned. Below find a list of available values that can be displayed either using static or dynamic product listing.

P_NAME_#
P_CODE_#
P_AMOU_PRE_DISC_PRE_PREM_#
P_AMOU_PRE_DISC_PRE_PREM_SEP_#
P_DISC_#
P_DISC_AMOU_#
P_PREM_#
P_PREM_AMOU_#
P_NET_AMOU_#
P_NET_AMOU_SEP_#
P_UNIT_NET_AMOU_#
P_UNIT_NET_AMOU_SEP_#
P_VAT_RATE_#
P_FREE_SER_#
P_SUBACCOUNT_CUSTOMERID_#
P_SUBACCOUNT_NICKNAME_#
P_SUBACCOUNT_INVOICINGID_#
P_SUBACCOUNT_NAME_#

If you want to display the breakup of tax rates for subscriptions with different tax rates for subscriptions, you can use a loop similar to the following:

<TMPL_IF NAME=DIFFERENT_VAT_RATES>    
    <TMPL_LOOP NAME=DIFFERENT_VAT_RATES>        
        <tr>            
            <td>TAX on <TMPL_VAR NAME=NETAMOUNT> at <TMPL_VAR NAME=VAT_RATE>%</td>            
            <td><TMPL_VAR NAME=TAXAMOUNT></td>        
        </tr>    
    </TMPL_LOOP>
</TMPL_IF>

Variables are also available for the inclusion of "Custom Customer Fields" data on the invoice. The icon should be replace with the ID number for the custom field data the designer wishes to display.

CUSTOM_FIELD_#


Section Six: End User Portal Template

There are TWO html files in use for the End User Portal template. There are:

default-nomenu.tmpl - the End User Portal template as shown BEFORE a customer logs in to the portal
AND
default.tmpl - the End User Portal template as shown AFTER a customer logs in to the portal, including all menus such as Home, Network, Account, etc.

If the operator is customizing one of those templates it would be best to work on both. The same rules apply for these templates as for others. The operator should download the two templates from SIMPLer and make copies. Make any changes in any simple tool such as notepad or text edit. Upload the new files making sure to upload under the correct item on the drop-down menu (default-nomenu.tmpl  goes to "template-nomenu" and default.tmpl  goes to "template". 

The main changes operators will usually make to these templates would be a colour scheme change, or labelling changes.

Azotel | River House | Blackpool Park | Cork | Ireland
US +1-312-239-0680 | IE +353-21-234-8100 | UK +44-207-193-4170 | SA +27-11-083-6900