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-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.
It is advised to use wordpad, notepad or text edit (Mac) to edit these files. Using html editors can sometimes add unsupported tags automatically.
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>
</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> <td>
</tr>
</TMPL_IF>
There are two important additional parameters 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> </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> </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> </td>
<td align="right"><TMPL_VAR NAME=PREVIOUSPAYMENTAMOUNT></td>
</tr>
</TMPL_LOOP>
<TMPL_ELSE>
<tr colspan="3">
<td> <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> </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> </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> </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> </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
SITEADDRESS1
SITEADDRESS2
SITEADDRESS3
SITEADDRESS4
SITEADDRESS5
SITEADDRESS6
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 - number 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>
</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> <td>
</tr>
</TMPL_IF>
There are two important additional parameters 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> </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> </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.