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.
    • 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>

&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 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>&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

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>

&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 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>&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.