Phone Order Manager

    This module provides an "out of Merchant" interface for creating baskets and entering orders. The interface is completely configurable using "tokens and templates" and combines the product selection, customer information, shipping selection, and payment selection screens of the normal Merchant checkout into a single screen. Products can be added to the basket by selection from a list or from search results. Customer information can be manually added or the customer's account can be searched for and selected to "pre fill" the address information. Customer accounts can be created from the interface.

The documentation is broken down into two main areas:
A. an explanation of how to use the module (and how it works)
B. explanation of the module's admin screens

In addition:
    A primer on the use of tokens can be found here
    Lists of tokens usable in this module can be found here
    "Images" of the various pages of the user interface can be found here
    Installation instructions can be found here

A. an explanation of how to use the module (and how it works):
The module is intended as an interface to be used by individuals taking phone orders or otherwise needing a more compact check out process than that which is offered by Merchant. As such, it uses Merchant's "basket" and checkout pages and the procedure for it's use is a streamlined version of Merchant's typical procedure. The user will add products to their basket and enter the customer's information (either manually or by selecting the customer's account from search results). The shipping and payment methods are selected. When the order is ready to be completed, the "process" button is clicked and the user is taken into Merchant's checkout pages (which particular page the user is taken to is a configurable option) and the order is completed in the same manner that a normal customer would. This order will then appear in Merchant's order processing exactly like any other order.
Here is the default layout of the user interface: default interface. When the user first arrives at this page there will be no products in the basket and no customer information. However, if the module is configured to save the basket, subsequent logins would result in the basket being taken up "where it left off".
A typical procedure of taking an order might go something like this:
The customer who you're taking the order for may first provide information about the product they are seeking to order. To add this product to the basket you would enter some text, such as the product id or name, into the "Select products" field and click on the "Search/Select" button. This will pop-up a new window showing the product search screen. In the alternative, you can simply click on the "Search/Select" button without entering any product information into the text field and the product search window will pop up displaying the first page of products without using the search criteria.
On the Product Search window, you can page through the products using the "next" and "previous" buttons as well as narrow the search by entering additional text into the search field. To select a single product you click on the "Select" button for that product. To select multiple products, check the "add" checkbox for each product and click on the "Select" button at the bottom. Your selection can span multiple pages of products. When you click on the "select" button at the bottom, the module processes your selection and checks to see if any of the products have attributes. If products are found with attributes, the missing attributes page follows. Otherwise, the window will close and the main window will be refreshed to display the new selections.
The Missing Attributes page lists all of the products that were selected which have attributes. As with the standard Merchant, required attributes will return the user back to this page if no selection is made. When the attributes have been selected, click on "update" and the Main page will be refreshed with the new selections.
After the products have been selected (and of course you can return to that portion of the page at any time to edit or delete the selected products) you can provide your customer with a shipping estimate by checking the checkbox next to the "Select shipping" drop down list and then clicking on "update" (it is also possible to configure the module so that the shipping method list is regenerated every time the page is updated so this stage wouldn't be required). This will refresh the shipping rates listed. You can then read the options to your customer and let them select a method. Once they have decided, you merely select the method from the list. Some shipping modules, such as UPS modules, require the zip code before the shipping can be calculated. In that case you will need to ask your customer for their zip code and enter it into the shipping zip code field; then check the select shipping box and click on "update". It is also possible to configure the module (the 'Refresh shipping list:' option on the "Options" tab) to update the shipping list automatically when the zip code changes. If you would like the convenience of having the zip code field next to the shipping list, it can be achieved simply by placing the token %ship_zip% where you want it.
To recalculate tax, check the checkbox (displayed with the %recalculatetax% token) next to the "Sales tax" label and click on "update".
If the customer already has a Merchant account in your store, you can search for that account by entering information into the "select a customer" field and clicking on "Search/Select". This will bring up a pop up window, the Customer Search window, listing the results of your search. If nothing is entered into the field, the button will pop up the Customer Search window with the first "page" of customer accounts (without using the search criteria). Once you have found the customer, clicking on the "Select" button for that customer will close the window and refresh the main screen with that customer's information.
If the customer has a Merchant account and would like to have you change the information, check the "Update customer info with this data?" field and when the page is next updated (or the "process" button is clicked), the customer information will be updated.
If this is a new customer to your store (i.e. they don't have a Merchant account), then you can manually enter their shipping/billing information into the fields. Just as with the usual shipping/billing form in Merchant, the billing side is not required and will be duplicated from the "ship to" data. If you would like to create a new account for the customer, check the "create account" checkbox. The next time you click on "update", the account will be created. If the "Login" and/or "Password" fields are left empty, they will be created from the "Generation of new customer login/password" configuration on the "options" tab. The newly created login and password will then be displayed in the corresponding fields.
Once the customer and product information has been selected/configured, you can click on the "process" button and you will be transferred into the standard Merchant checkout pages. Which page this actually is depends on the "Process buttons leads to:" configuration on the "Options" tab. If you would like to have the "process" button take you directly to the "payment information" page you will need to first select a payment method from the Pay with: selection list. Then when the page is submitted, you will be taken directly to the payment method's information screen.

B. The Admin Screens:
1. Options
2. Main Page
3. Search Pages
4. Attributes

The module's main administration interface is found on the >System Extension Configuration screen in Merchant admin. There will be a tab on that screen for "Phone Order Manager". Clicking on that tab takes you to the module's administration screens. The module's administration is separated into four "sub-tabs" (from here on out we'll call them "tabs"). By default, the first tab you'll see is the "Options tab".

The Options tab. This tab is where most of the module's "general" options are configured as well as the format/layout of the login screen.

Options | Main Page | Search Pages | Attributes

Enable module?
If not checked, the module is not enabled and will not be accessible. The module's admin however remains operational so you can still change settings there. When disabled, no data is lost.

Link to Interface: http://127.0.0.1/Merchant4/4.12/modules/system/BROK_PHONEORDERS.mv?SC=alpha
This is the link to the Phone Order Manager's "user page".
Resume previous baskets?
If checked, the module will "resume" any basket that the user had already started. So they can start a basket, log out, then log in later and return to the same basket. If not checked, each time they log in they will begin a new basket.
Refresh shipping list: w/ every update
  when "refresh" is selected
  when zip changes or is added
The module displays a drop down list of available shipping options. The shipping modules installed in the store are polled to generate methods for the list (just as they are for the shipping/selection page in standard Merchant check out). When the refreshing of the list is triggered depends on how you have it configured here. Some shipping methods obviously rely on information from the customer such as zip code, shipping address, etc. to generate their rates. So you can configure the module to refresh the list ever time the "update" button is selected, only when the "refresh" checkbox is selected (i.e. the checkbox displayed by the %recalculateshipping% token), and/or when the shipping zip code changes.
Update shipping selection: when selection changes
  when "checkbox" is checked
The setting here determines when the actual shipping selection is changed (i.e. when the shipping method selected for this order is officially "selected"). It can be configured to assign the shipping with the currently selected shipping method whenever the page is updated OR only when the checkbox displayed by %recalculateshipping% is checked off (this is the same checkbox that is used to force the recalculation of the shipping methods for the drop down list as discussed above).
Process buttons leads to: customer information page (OINF)
  shipping/payment selection page (OSEL)
  payment information page (OPAY)
When the user is ready to complete the order they click on the "process" button. The user can then be taken to one of three different pages in the standard Merchant process. The "Customer information page" (where the shipping/billing address is entered), the "Shipping/payment selection page", or the "Payment information page". The ability to select which of these pages the "process" button takes you to lets you include third party modules such as gift certificates, coupons, etc. without requiring modification to those modules. For example, if your gift certificate module prompts for the key on the shipping/payment selection screen you can configure the Phone Order Manager to go that page when processing the order so that the gift certificate key, if any, can be entered. From this page checkout proceeds through the normal Merchant process.

Generation of new customer login/password
Template for login:
   key character types:
   key length:
Template for password:
   key character types:
   key length:
On the Phone Order user's page there is an option to create a new Merchant customer account for the customer. There are fields which can be used to prompt for a new user id/password but if these fields are left blank, the module will randomly generate a user id/password using the settings here. The login/password will have the form dictated by the appropriate "template". The random portion, the "key", represented by the token |key| in the template, will be composed of random numbers & letters as configured and have the number of digits dictated by the "key length". The |key| token is not required in either template. Other tokens that can be used the "Template for login" and "Template for password" can be seen here.

Login Page Options
When the user first visits the link for the "user's page", they will be prompted for their user id/password. This is where you can configure the layout of that page.
Login page template:
This is the html used to generate the login screen. Details on what tokens are available for use in the Invoice template can be found here.
Login button image:
Login button alt:
The Image and alt text that will be used for the "Login" button. If no image is configured, a standard button will be used with the Alt. text.

Checkout Options
Here you can configure headers/footers for the various Merchant check out pages that will be used only when those pages are arrived at from the Phone Order Manager user's page. So you can configure specific messages/instructions to the person taking phone orders
Show Merchant
navigation bar?
If selected, the Merchant navigation bar will be displayed on the checkout pages.
Alternate navbar:
You can enter html for a navbar that will replace the Merchant standard navigation bar on the checkout pages.
Shipping/Billing
page header:
Shipping/Billing
page footer:
Payment Details
page header:
Payment Details
page footer:
Invoice page header:
Invoice page footer:
These are all self explanatory. They simply replace the header/footer of the checkout pages if any text is entered.

The Main Page tab. We'll proceed through the various tabs from left to right and the next up is the "Main Page" tab. This tab is where you configure the layout/format of the module's main interface page (i.e. the main page that will be used by those entering orders).

Options | Main Page | Search Pages | Attributes

Main page template
The Main page template contains the html that will be used to display the user's page (i.e. the page where the phone orders information is entered). Individual portions of the page will be displayed with html configured in other sections below but the Main Template is the main "outline" of the displayed page. The tokens that can be used in Main Template can be seen here. Within the main template there is one token which is in turn replaced by another template. This is the %prodrows% token (replaced by the contents of the "Product Row Template"). The %prodrows% token is replaced with as many copies of the "Product row template" as required to display all of the products in the basket.
Product Row template
The Product Row template contains the html that will be used to replace the %prodrows% token in the Main page template. The Row template permits you to control how many products are displayed in each row of the product list. Each instance of a product in the row is represented by the token: %product|xx|% where xx represents the position of the token in that row. They should be numbered consecutively left to right. As you can see in the field, the default is to display only 1 product per row. If you add more products (i.e. if you add %product|02|%, %product|03|%, etc.) be careful to make sure that you make the necessary changes to the html in the other template areas.

To replace the %prodrows% token in the Main template, the module takes a copy of the Product Row template and populates the %product|01|% position with the first product, then the %product|02|% position with the second product, etc. until there are no more positions in that row. It then displays that row and starts over with a new copy of the Product Row template. Again, replacing the %product|01|% token with the next consecutive product, etc.
Product template
The Product template is the HTML that is used to replace the %product|xx|% tokens in the Row template. The tokens that can be used in this template can be seen here.
Attribute template
The Attributes main template contains the html that will be used to replace the %attributes% token in the Product template. The tokens that can be used in Attribute main template can be seen here.

"Clear page" button image: upload
"Clear page" button alt:
The Image and alt text that will be used for the "Clear page" button (displayed with the %clearbutton% token). If no image is configured, a standard button will be used with the Alt. text.
"Update" button image: upload
"Update" button alt:
The Image and alt text that will be used for the "Update" button (displayed with the %updatebutton% token). If no image is configured, a standard button will be used with the Alt. text.
"Process" button image: upload
"Process" button alt:
The Image and alt text that will be used for the "Process" button (displayed with the %processbutton% token). If no image is configured, a standard button will be used with the Alt. text.
"Search" button image: upload
"Search" button alt:
The Image and alt text that will be used for the "Search" button (displayed with the %prod_searchbutton% and %cust_searchbutton tokens). If no image is configured, a standard button will be used with the Alt. text.
"Close" button image: upload
"Close" button alt:
The Image and alt text that will be used for the "Close" button (displayed with the %close_button% token). If no image is configured, a standard button will be used with the Alt. text.
"Refresh" button image: upload
"Refresh" button alt:
The Image and alt text that will be used for the "Close" button (displayed with the %close_button% token). If no image is configured, a standard button will be used with the Alt. text.
"Logout" button image: upload
"Logout" button alt:
The Image and alt text that will be used for the "Log out" button (displayed with the %logoutbutton% token). If no image is configured, a standard button will be used with the Alt. text.

The Search Pages tab. This tab is where you configure the layout of the product and customer "search/list" screens. These screens are "pop-ups" and appear when clicking on the "search" buttons for the products or customers.

Options | Main Page | Search Pages | Attributes

Product Search Pop-up

Window height:
Window width:
The height and width used for the popped-up window.

Product Search page template:
The Product Search page template contains the html that will be used to display the product search/listing page. The tokens that can be used in Product Search page Template can be seen here. Within the main template there is one token which is in turn replaced by another template. This is the %results% token (replaced by the contents of the "Product Listing Template"). The %results% token is replaced with as many copies of the "Product Listing template" as required to display all of the products in the results/listing (i.e. one per product).
Product Listing template:
The Product Listing template contains the html that will be used to replace the %results% token in the Product Search page template. To replace the %results% token in the Product Search page template, the module takes a copy of the Product Listing template for the first product and processes it for tokens for the first product, it then takes a copy of the Product Listing template for the second product, processes it for tokens for that product, and appends it to the first. It repeats this process until all products in the results/listing have been handled. It then replaces the %results% token with this long string. The tokens that can be used in Product Listing Template can be seen here.
"Select Products"
  button image:
"Select Products"
  button alt:
The Image and alt text that will be used for the "Select products" button (displayed with the %prods_selectbutton% AND %prod_selectbutton% tokens). If no image is configured, a standard button will be used with the Alt. text.

Customer Search Pop-up

Window height:
Window width:
The height and width used for the popped-up window.

Customer Search page template
The Customer Search page template contains the html that will be used to display the customer search/listing page. The tokens that can be used in Customer Search page Template can be seen here. Within the main template there is one token which is in turn replaced by another template. This is the %results% token (replaced by the contents of the "Customer Listing Template"). The %results% token is replaced with as many copies of the "Customer listing template" as required to display all of the customers in the results/listing (i.e. one per customer).
Customer Listing template
The Customer Listing template contains the html that will be used to replace the %results% token in the Customer Search page template. To replace the %results% token in the Customer Search page template, the module takes a copy of the Customer Listing template for the first customer and processes it for tokens for that customer, it then takes a copy of the Customer Listing template for the second product, processes it for tokens for the second customer, and appends it to the first. It repeats this process until all customers in the results/listing have been handled. It then replaces the %results% token with this long string. The tokens that can be used in Customer Listing Template can be seen here.
"Select Customer"
  button image:
"Select Customer"
  button alt:
The Image and alt text that will be used for the "Select Customer" button (displayed with the %cust_selectbutton% token). If no image is configured, a standard button will be used with the Alt. text.

"Next" button image:
"Next" button alt:
"Previous" button image:
"Previous" button alt:
The Image and alt text that will be used for the "Next" and "Previous" buttons (displayed with the %next% and %previous% tokens). If no image is configured, a standard button will be used with the Alt. text.
Background color #1: color
Background color #2: color
You can select colors for these two field and use those colors in your templates with the tokens %bgcolor1% and %bgcolor2%. So you could add background color to your table with: bgcolor="%bgcolor1%". But the main reason for adding this feature to the module was to permit alternating colors in multi-line listings (such as with the display of lists of products). If you use the token %bgcolor% the module will alternate the color used to replace this field between the two configured background colors. So using bgcolor="%bgcolor% in a cell color will cause the background color of that cell to alternate between the two configured colors.
# of Customers to display:
The number of customers to display by default in the search page. If the search/listing exceeds this number, the %next% and %previous% tokens will display buttons that let you page between the pages of results.
# of Products to display:
The number of products to display by default in the search page. If the search/listing exceeds this number, the %next% and %previous% tokens will display buttons that let you page between the pages of results.

The Attributes tab. This is where you configure the "missing attributes" screen that is "popped" up when a product (or products) has been added to the basket that requires a selection of attributes.
Options | Main Page | Search Pages | Attributes

Main template
The Main template for the Attributes tab contains the html that will be used to display the missing attribute page. This page follows the product search/listing page if a product was selected that has attributes. The tokens that can be used in this Main template can be seen here. Within the main template there is one token which is in turn replaced by another template. This is the %products% token (replaced by the contents of the "Product Template"). The %products% token is replaced with as many copies of the "Product template" as required to display all of the products which have attributes requiring selection.
Product template
The Product template contains the html that will be used to replace the %products% token in the Main template. The tokens that can be used in product Template can be seen here. Within the Product template there is one token which is in turn replaced by another template. This is the %attributes% token (replaced by the contents of the "Attributes row Template" and which displays that product's attributes.

Attribute row template
The Attributes row template contains the html that will be used to replace the %attributes% token in the Product template. The Row template permits you to control how many attributes are displayed in each row of the Attributes listing. Each instance of an attribute in the row is represented by the token: %attribute|xx|% where xx represents the position of the token in that row. They should be numbered consecutively left to right.

To replace the %attributes% token in the Product template, the module takes a copy of the Attribute row template and populates the %attribute|01|% position with the first attribute, then the %attribute|02|% position with the second attribute, etc. until there are no more positions in that row. It then displays that row and starts over with a new copy of the Attribute row template. Again, replacing the %attribute|01|% token with the next consecutive attribute, etc.

Because of the way Merchant handles attributes and to provide for better control over how the templates are displayed, this module provides for separate template to be used for each TYPE of attribute. When the module replaces the %attribute|xx|% token it first checks the type of attribute and selects the appropriate token from the following list. The tokens that can be used in various attribute templates can be seen here.
Radio attr. template
Radio option template
This is the attribute that is used for the "radio" type attribute. It is a bit different than the other attribute type templates shown below. The radio type attribute displays the options with separate HTML than the main attribute prompt. So this attribute template is split into two pieces, the "Radio attr. template" and the "Radio option template". The "Radio attr. template" can contain the tokens %prompt% and %options%. The %prompt% token is replaced with the Attribute prompt as configured for that attribute and the %options% token is replaced by one copy of the "Radio option template" for each option. The "Radio option template" is represented by the purple box inside of the red %attribute|xx|% box. The "Radio option template" in turn can use the token %fields% to represent where the radio button will appear and the token %prompt% to represent where the option prompt will appear.
Select attr. template
Checkbox attr. template
Text attr. template
Memo attr. template
The templates for the other (non-radio) type attributes are all very similar. They can each contain 2 tokens: %prompt% and %fields%. The %prompt% token is replaced with the attribute prompt and the %fields% token is replaced with that Attributes field type. For example, for the Select type attribute, the %fields% token will be replaced with the drop down selection list of options. For the Memo type attribute, the %fields% token will be replaced by a textarea form element.

A primer on tokens (or at least how this module uses them):

In short, a token is any text string that is replaced with something else (ie. some other text string) in later processing. For example, if you were using mailmerge software to send out letters to customers, you might use a token to represent the customer's name in the body of the letter. Then when you do the merge (or when the emails are sent), the token is replaced with the customer's name so that even though you use a single letter template to send to all your customers, each is personalized to the particular recipient.
For example, and it's an easy one, lets assume that you want to display the user's name in the header of the user's screen (i.e. the page where the individual enters the information for the phone order). So you want it to look like:
Logged in as: Bob
Because the same html will be used to display this page regardless of which users is logged in we obviously can't simply type the users name like this into the template. So we use tokens to represent the user's name. Then when the page is displayed the user's login name is used to replace the token in the template before it is displayed. It would look like this:

The tokens usable in this module:
  • template for login & password for new accounts (on the "Options" tab)
  • Login page template(on the "Options" tab)
  • Main page template (on the "Main Page" tab)
  • Product template (on the "Main Page" tab)
  • Attribute template (on the "Main Page" tab)
  • Product Search page template (on the "Search Pages" tab)
  • Product Listing template (on the "Search Pages" tab)
  • Customer Search page template (on the "Search Pages" tab)
  • Customer Listing template (on the "Search Pages" tab)
  • Main template (on the "Attributes" tab)
  • Product template template (on the "Attributes" tab)
  • various Attribute templates (on the "Attributes" tab)

  • Tokens usable in the "template for login" and "template for password" (on the "Options" tab):

    |key|replaced with a random string of characters and/or numbers
    %storecode%the store code
    %ship_fname%order's ship first name
    %ship_lname%order's ship last name
    %ship_email%order's ship email
    %ship_comp%order's ship company
    %ship_phone%order's ship phone #
    %ship_fax%order's ship fax#
    %ship_addr%order's ship address
    %ship_city%order's ship city
    %ship_state%order's ship state
    %ship_zip%order's ship zip code
    %ship_cntry%order's ship country
    %bill_fname%order's bill first name
    %bill_lname%order's bill last name
    %bill_email%order's bill email
    %bill_comp%order's bill company
    %bill_phone%order's bill phone#
    %bill_fax%order's bill fax#
    %bill_addr%order's bill address
    %bill_city%order's bill city
    %bill_state%order's bill state
    %bill_zip%order's bill zip code
    %bill_cntry%order's bill country

    Tokens usable in the Login page template (on the "Options" tab):

    %baseurl%replaced with the baseurl of the page
    %loginbutton%will be replaced by the "Login" button image, or by a button using the "button alt" text if no image is configured
    %loginbox|xx|%This is replaced with the text field into which the customer enters their user name when logging in. The xx will determine the size of the field. For example, %loginbox|25|%.
    %passwordbox|xx|%This is replaced with the text field into which the customer enters their password when logging in. The xx will determine the size of the field. For example, %passwordbox|25|%.
    %sessionurl%replaced with the Merchant's variable g.Sessionurl
    %session_id%replaced with the Merchant's variable g.Session_id
    %store|field|%This is replaced with the specific "field" from the Stores.dbf database. It's main use is to display any fields which you might have added to the stores.dbf file OR which do not have a standard token available (such as "taxable")
    %beginform%...%endform%These tokens denote the beginning and end of the main form needed by the module. The %loginbutton%, %loginbox|xxx|%, and %passwordbox|xxx|% tokens have to be between the %beginform% and %endform% tokens.

    Tokens usable in the Main page template (on the "Main page" tab):

    %baseurl%replaced with the baseurl of the page
    %username%replaced with the admin user name of the person logged in

    %taxdescription%the label generated by the tax module
    %taxamountF%the amount of tax, formatted using the currency module
    %taxamount%the amount of tax, NOT formatted using the currency module
    %recalculatetax%replaced with a checkbox that, when selected and the page updated, forces the tax to be recalculated
    %taxbox|xx|%replaced with a text field xx characters wide in which the tax amount is displayed and can be edited
    %taxbox%replaced with a text field 5 characters wide in which the tax amount is displayed and can be edited

    %shippingdescription%the description of the shipping method as saved in the charges database
    %shippingamountF%the shipping charge, formatted using the currency module
    %shippingamount%the shipping charge, NOT formatted using the currency module
    %shippinglist%replaced with the drop down select list of available shipping methods and their rates. This is the same list generated during normal Merchant check out.
    %selectedshipping%the name of the selected shipping method as generated by the shipping module (usually better formatted and verbose than the one saved in the charges database)
    %recalculateshipping%replaced with a checkbox that, when selected and the page updated, forces the shipping to be recalcualted and the drop down selection list to be regenerated
    %shippingbox|xx|%replaced with a text field xx characters wide in which the shipping amount is displayed and can be edited
    %shippingbox%replaced with a text field 5 characters wide in which the shipping amount is displayed and can be edited

    %pricegrouplist|xx|%replaced with the drop down select list of available price groups to which the customer can be assigned (only has an affect if the customer has a customer account). The xxx fields lets you specific how many rows the drop down list displays at once.
    %paymentlist%replaced with the drop down select list of available payment methods. This is the same list generated during normal Merchant check out.
    %selectedpayment%the name of the selected payment method as generated by the payment module (usually better formatted and verbose than the one saved in basket database)

    %custpassword%the customer's Merchant account password
    %custlogin%the customer's Merchant account login name
    %custpwemail%the customer's Merchant account missing password email address
    %custid%the customer's Merchant account customer ID
    %addcustomer%replaced with a checkbox which, when checked and the page updated, will create a customer account using the entered customer information
    %custloginbox|xxx|%replaced with a text field xxx characters wide in which the customer's Merchant account login is displayed and can be edited. For new customers this is where you would enter a customer login if you want to provide one (as opposed to having it automatically generated)
    %custloginbox%replaced with a text field 20 characters wide in which the customer's Merchant account login is displayed and can be edited. For new customers this is where you would enter a customer login if you want to provide one (as opposed to having it automatically generated)
    %custpasswordbox|xxx|%replaced with a text field xxx characters wide in which the customer's Merchant account password is displayed and can be edited. For new customers this is where you would enter a customer password if you want to provide one (as opposed to having it automatically generated)
    %custpasswordbox%replaced with a text field 20 characters wide in which the customer's Merchant account password is displayed and can be edited. For new customers this is where you would enter a customer password if you want to provide one (as opposed to having it automatically generated)
    %custpwemailbox|xxx|%replaced with a text field xxx characters wide in which the customer's Merchant account login is displayed and can be edited. For new customers this is where you would enter a customer missing email password. If none is provided, the email address specified in the "If password email not provided use:" option in admin will be used instead.
    %custpwemailbox%replaced with a text field 20 characters wide in which the customer's Merchant account login is displayed and can be edited. For new customers this is where you would enter a customer missing email password. If none is provided, the email address specified in the "If password email not provided use:" option in admin will be used instead.
     
    %cust_searchbox%replaced with a text field 20 characters wide in which you can enter search criteria to search for a particular customer. If nothing is entered, clicking on the "search" button will simply produce a pop-up window with a listing of all customers.
    %cust_searchbox|xxx|%replaced with a text field xxx characters wide in which you can enter search criteria to search for a particular customer. If nothing is entered, clicking on the "search" button will simply produce a pop-up window with a listing of all customers.
    %cust_searchbutton%will be replaced by the "Search" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings up the "search customer" page.

    %prod_searchbox%replaced with a text field 20 characters wide in which you can enter search criteria to search for a particular product. If nothing is entered, clicking on the "search" button will simply produce a pop-up window with a listing of all products.
    %prod_searchbox|xxx|%replaced with a text field xxx characters wide in which you can enter search criteria to search for a particular product. If nothing is entered, clicking on the "search" button will simply produce a pop-up window with a listing of all products.
    %prod_searchbutton%will be replaced by the "Search" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings up the "search products" page.

    %totalprice%replaced with the order total, NOT formatted with the currency module
    %totalpriceF%replaced with the order total, formatted with the currency module
    %productstotal%replaced with the product subtotal, NOT formatted with the currency module
    %productstotalF%replaced with the product subtotal, formatted with the currency module

    %processbutton%will be replaced by the "Process" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button takes the user to the standard Merchant checkout (the specific page is determined by how you have the "Process button leads to:" admin option configured)
    %clearbutton%will be replaced by the "Refresh" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button clears the data from the page and empties the basket
    %logoutbutton%will be replaced by the "Logout" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button logs the user out and returns them to the login screen

    These fields pertain to collecting and displaying the customer information. For most of them there is one token, eg. %ship_fname% for simply displaying the information, and a second, eg %ship_fname|xxx|% which is replaced with a text field xxx characters wide in which the customer's information can be displayed and modified
    %ship_fname%
    %ship_fname|xxx|%
    the shipping first name
    %ship_lname%
    %ship_lname|xxx|%
    the shipping last name
    %ship_email%
    %ship_email|xxx|%
    the shipping email address
    %ship_comp%
    %ship_comp|xxx|%
    the shipping company
    %ship_phone%
    %ship_phone|xxx|%
    the shipping phone number
    %ship_fax%
    %ship_fax|xxx|%
    the shipping fax number
    %ship_addr%
    %ship_addr|xxx|%
    the shipping address
    %ship_city%
    %ship_city|xxx|%
    the shipping city
    %ship_state%
    %ship_state|xxx|%
    the shipping state
    %ship_stateselect%replaced with the drop down state selection list for the shipping address
    %ship_zip%
    %ship_zip|xxx|%
    the shipping state
    %ship_stateother%
    %ship_stateother|xxx|%
    the shipping "other" state
    %ship_cntry%
    %ship_cntry|xxx|%
    the shipping country
    %ship_cntryselect%replaced with the drop down country selection list for the shipping address
    %bill_fname%
    %bill_fname|xxx|%
    the billing first name
    %bill_lname%
    %bill_lname|xxx|%
    the billing last name
    %bill_email%
    %bill_email|xxx|%
    the billing email address
    %bill_comp%
    %bill_comp|xxx|%
    the billing company
    %bill_phone%
    %bill_phone|xxx|%
    the billing phone number
    %bill_fax%
    %bill_fax|xxx|%
    the billing fax number
    %bill_addr%
    %bill_addr|xxx|%
    the billing address
    %bill_city%
    %bill_city|xxx|%
    the billing city
    %bill_state%
    %bill_state|xxx|%
    the billing state
    %bill_stateselect%replaced with the drop down state selection list for the billing address
    %bill_zip%
    %bill_zip|xxx|%
    the billing state
    %bill_stateother%
    %bill_stateother|xxx|%
    the billing "other" state
    %bill_cntry%
    %bill_cntry|xxx|%
    the billing country
    %bill_cntryselect%replaced with the drop down country selection list for the billing address

    Tokens usable in the Product template (on the "Main page" tab):

    Some of the tokens below are "conditional" tokens. These tokens are of the form %begin_condition%....%end_condition%. They will display the contents between them only if the condition is met. In each case, you include the %begin_ token before the html/tokens that you want to make conditional, and the %end_ token at the end. If the condition is met (eg. has a price), then the html/tokens between the begin_ and end_ will be displayed. For example, to make the display of the price conditional on the product having a non-zero price replace the %prodprice% token with:

    %begin_hasprice% %prodprice% %end_hasprice%.
    %begin_hasweight%/%end_hasweight%displays only if the product has a weight > zero.
    %begin_noweight%/%end_noweight%displays only if the product weight is zero
    %begin_zeroprice%/%end_zeroprice%displays only if the product price is zero
    %begin_hasprice%/%end_hasprice%displays only if the product price is > zero
    %begin_instock%/%end_instock%displays only if the product is in stock (uses Merchant's inventory feature)
    %begin_outstock%/%end_outstock%displays only if the product is out of stock (uses Merchant's inventory feature)
    %begin_lowstock%/%end_lowstock%displays only if the product inventory is low (uses Merchant's inventory feature)
    %begin_costdiscount%/%end_costdiscount%displays only if the product price is lower than the product cost
    %begin_pricediscount%/%end_pricediscount%displays only if the calculated price (including discounts for example) is lower than the product price

    %prodname%the product name
    %prodcode%the product code
    %prodweight%the product weight
    %proddesc%the product description
    %proddesc|xxx|%the first xxx characters of the product description. If the truncation point does not fall on a whitespace character (such as a new line, space, tab, etc.), the description will be shortened until the truncation falls on a white space character
    %prodtoken|xxx|%if your product description is separated into sections by the pipe character, |, this will display the xxth section. In the description: a toy train|nice train, the text "a toy train" would be section 1 (%prodtoken|001|%)and "nice train" would be section two (%prodtoken|02|%)
    %prodimage%the product weight
    %prodimageL%the product image linked to the product page
    %prodthumb%the product thumbnail
    %prodthumbL%the product thumbnail linked to the product page
    %prodnameL%the product name
    %prodcodeL% the product name linked to the product page
    %prodprice%the product price, adjusted for discounts such as pricegroups
    %prodpriceF%the product price, adjusted for discounts and formatted with the currency module
    %prodpriceU%the product price, NOT adjusted for discounts and NOT formatted with the currency module
    %prodpriceUF%the product price, NOT adjusted for discounts and formatted with the currency module
    %prodcost%the product price, NOT formatted with the currency module
    %prodcostF%the product price, formatted with the currency module
    %discountsave%dollar amount difference between adjusted, which accounts for discounts such as price groups, and un-adjusted
    %discountsaveF%same as %discountsaveF% but formatted with the currency module
    %discountprcnt%the difference between adjusted and un-adjusted as a percentage of the unadjusted price
    %prcntsave%percentage calculated as 100 x (product cost - product price)/product cost
    %valuesave%the dollar amount (product cost - product price)
    %valuesaveF%the value of %valuesave%, formatted with the currency module
    %prodpricebox|xxx|%replaced with a text field xxx characters wide in which the product price (adjusted) is displayed and can be edited
    %prodpricebox%replaced with a text field 5 characters wide in which the product price (adjusted) is displayed and can be edited
    %product|field|%replaced with the database variable Products.d.field. For example, to display the path to the product image you could use the token %product|image|%
    %encproduct|field|%the same as the %product|field|% token except the contents is URL encoded (eg. space replaced with +) before displaying
     
    %stocklevelcode%replaced with the "stock level code" (using the Merchant inventory feature)
    %stockmessage%replaced with the long stock level message (using the Merchant inventory feature)
    %stockmessageL%replaced with the long stock level message (using the Merchant inventory feature)
    %stockmessageS%replaced with the short stock level message (using the Merchant inventory feature)
    %stocklevel%replaced with the inventory count (using the Merchant inventory feature)
     
    %prodqtybox%replaced with a text field in which the quantity in the basket is displayed and can be edited
    %prodinbasket%the number of that product in the basket
    %totalprodprice%the total price for that product (i.e. price x quantity)
    %totalprodpriceF%the total price for that product formatted using the currency module
     
    %prodremovebox%replaced with a checkbox which, when selected and the page is updated, will remove the product from the basket
     
    %store|field|%replaced with the database variable Stores.d.field. For example, to display the store name you could use the token %store|name|%
    %encstore|field|%the same as the %store|field|% token except the contents is URL encoded (eg. space replaced with +) before displaying
    %bgcolor1%replaced with "Background color #1"
    %bgcolor2%replaced with "Background color #2"
    %bgcolor%alternately replaced with the "Background color #1" and "Background color #2
    %attributes%replaced with the HTML of the Attribute template on the "Main page"

    Tokens usable in the Attribute template (on the "Main page" tab):

    %attrcode%the attribute code
    %optcode%the option code (if any)
    %attrprice%the attribute price, NOT formatted with the currency module
    %attrpriceF%the attribute price, formatted with the currency module
    %attrdata%the contents of the text field for text type attributes
    %attrdatalong%the contents of the memo field for memo type attributes

    Tokens usable in the Product Search page template (on the "Search Pages" tab):

    %prod_searchbox%replaced with a text field 20 characters wide in which you can enter search criteria to search for a particular product
    %prod_searchbox|xxx|%replaced with a text field xxx characters wide in which you can enter search criteria to search for a particular product
    %prod_searchbutton%will be replaced by the "Search" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings up the "search products" page.
    %close_button%will be replaced by the "Close" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button closes the pop-up window
    %lowrangecount%when the products displayed are paged, this is the lower count. For example, in displaying "products 1 through 10", this is the "1"
    %highrangecount%when the products displayed are paged, this is the higher count. For example, in displaying "products 1 through 10", this is the "10"
    %previous%will be replaced by the "Previous" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings the user back one page in the search/listing
    %next%will be replaced by the "Next" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings the user forward one page in the search/listing
    %displaycount%replaced with a text field in which the number of products to display on each page is displayed and can be edited
    %reset_button%will be replaced by the "Refresh" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button will refresh the page
    %prods_selectbutton%will be replaced by the "Select Products" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button will select the "checked off" products
    %bgcolor1%replaced with "Background color #1"
    %bgcolor2%replaced with "Background color #2"
    %bgcolor%alternately replaced with the "Background color #1" and "Background color #2

    Tokens usable in the Product Listing template (on the "Search Pages" tab):

    Some of the tokens below are "conditional" tokens. These tokens are of the form %begin_condition%....%end_condition%. They will display the contents between them only if the condition is met. In each case, you include the %begin_ token before the html/tokens that you want to make conditional, and the %end_ token at the end. If the condition is met (eg. in stock, out of stock, low stock), then the html/tokens between the begin_ and end_ will be displayed. For example, to make the display of the add one button conditional on the product being in stock replace the %prodaddone% button with:

    %begin_instock% %prodaddone% %end_instock%.
    %begin_hasweight%/%end_hasweight%displays only if the product has a weight > zero.
    %begin_noweight%/%end_noweight%displays only if the product weight is zero
    %begin_zeroprice%/%end_zeroprice%displays only if the product price is zero
    %begin_hasprice%/%end_hasprice%displays only if the product price is > zero
    %begin_instock%/%end_instock%displays only if the product is in stock (uses Merchant's inventory feature)
    %begin_outstock%/%end_outstock%displays only if the product is out of stock (uses Merchant's inventory feature)
    %begin_lowstock%/%end_lowstock%displays only if the product inventory is low (uses Merchant's inventory feature)
    %begin_costdiscount%/%end_costdiscount%displays only if the product price is lower than the product cost
    %begin_pricediscount%/%end_pricediscount%displays only if the calculated price (including discounts for example) is lower than the product price
    %begin_inbasket%/%end_inbasket%displays only if the product is currently in the basket
    %begin_notinbasket%/%end_notinbasket%displays only if the product is NOT currently in the basket

    %prodname%the product name
    %prodnameL%the product name
    %prodcode%the product code
    %prodcodeL% the product name linked to the product page
    %prodweight%the product weight
    %proddesc%the product description
    %proddesc|xxx|%the first xxx characters of the product description. If the truncation point does not fall on a whitespace character (such as a new line, space, tab, etc.), the description will be shortened until the truncation falls on a white space character
    %prodtoken|xxx|%if your product description is separated into sections by the pipe character, |, this will display the xxth section. In the description: a toy train|nice train, the text "a toy train" would be section 1 (%prodtoken|001|%)and "nice train" would be section two (%prodtoken|02|%)
    %prodimage%the product weight
    %prodimageL%the product image linked to the product page
    %prodthumb%the product thumbnail
    %prodthumbL%the product thumbanil linked to the product page
    %prodnameL%the product name
    %prodcodeL% the product name linked to the product page
    %prodprice%the product price, adjusted for discounts such as pricegroups
    %prodpriceF%the product price, adjusted for discounts and formatted with the currency module
    %prodpriceU%the product price, NOT adjusted for discounts and NOT formatted with the currency module
    %prodpriceUF%the product price, NOT adjusted for discounts and formatted with the currency module
    %prodcost%the product price, NOT formatted with the currency module
    %prodcostF%the product price, formatted with the currency module
    %discountsave%dollar amount difference between adjusted, which accounts for discounts such as price groups, and un-adjusted
    %discountsaveF%same as %discountsaveF% but formatted with the currency module
    %discountprcnt%the difference between adjusted and un-adjusted as a percentage of the unadjusted price
    %prcntsave%percentage calculated as 100 x (product cost - product price)/product cost
    %valuesave%the dollar amount (product cost - product price)
    %valuesaveF%the value of %valuesave%, formatted with the currency module
    %prodpricebox|xxx|%replaced with a text field xxx characters wide in which the product price (adjusted) is displayed and can be edited
    %prodpricebox%replaced with a text field 5 characters wide in which the product price (adjusted) is displayed and can be edited
    %product|field|%replaced with the database variable Products.d.field. For example, to display the path to the product image you could use the token %product|image|%
    %encproduct|field|%the same as the %product|field|% token except the contents is URL encoded (eg. space replaced with +) before displaying
     
    %stocklevelcode%replaced with the "stock level code" (using the Merchant inventory feature)
    %stockmessage%replaced with the long stock level message (using the Merchant inventory feature)
    %stockmessageL%replaced with the long stock level message (using the Merchant inventory feature)
    %stockmessageS%replaced with the short stock level message (using the Merchant inventory feature)
    %stocklevel%replaced with the inventory count (using the Merchant inventory feature)
     
    %store|field|%replaced with the database variable Stores.d.field. For example, to display the store name you could use the token %store|name|%
    %encstore|field|%the same as the %store|field|% token except the contents is URL encoded (eg. space replaced with +) before displaying
    %sessionurl%replaced with the Merchant's variable g.Sessionurl
    %session_id%replaced with the Merchant's variable g.Session_id
    %prodheader%replaced with the product header
    %prodfooter%replaced with the product footer
    %prodinbasket%the number of that product in the basket
    %bgcolor1%replaced with "Background color #1"
    %bgcolor2%replaced with "Background color #2"
    %bgcolor%alternately replaced with the "Background color #1" and "Background color #2
     
    %prodselect%replaced with a checkbox which, if checked and the "select product" button is clicked will add that product to the basket
    %prod_selectbutton%will be replaced by the "Select Products" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button will select the corresponding product
    %prodqtybox%replaced with a text field into which you can enter how many of that product to add to the basket

    Tokens usable in the Customer Search template (on the "Search Pages" tab):

    %cust_searchbox%replaced with a text field 20 characters wide in which you can enter search criteria to search for a particular customer
    %cust_searchbox|xxx|%replaced with a text field xxx characters wide in which you can enter search criteria to search for a particular customer
    %cust_searchbutton%will be replaced by the "Search" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings up the "customer search" page.
    %close_button%will be replaced by the "Close" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button closes the pop-up window
    %lowrangecount%when the list of customers displayed are paged, this is the lower count. For example, in displaying "customers 1 through 10", this is the "1"
    %highrangecount%when the list of customers displayed are paged, this is the higher count. For example, in displaying "customers 1 through 10", this is the "10"
    %previous%will be replaced by the "Previous" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings the user back one page in the search/listing
    %next%will be replaced by the "Next" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button brings the user forward one page in the search/listing
    %displaycount%replaced with a text field in which the number of customers to display on each page is displayed and can be edited
    %reset_button%will be replaced by the "Refresh" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button will refresh the page
    %bgcolor1%replaced with "Background color #1"
    %bgcolor2%replaced with "Background color #2"
    %bgcolor%alternately replaced with the "Background color #1" and "Background color #2

    Tokens usable in the Customer Listing template (on the "Search Pages" tab):

    %cust_password%customer's password
    %cust_login%customer's login
    %cust_id%customer's id
    %ship_fname%customer's ship first name
    %ship_lname%customer's ship last name
    %ship_email%customer's ship email
    %ship_comp%customer's ship company
    %ship_phone%customer's ship phone #
    %ship_fax%customer's ship fax#
    %ship_addr%customer's ship address
    %ship_city%customer's ship city
    %ship_state%customer's ship state
    %ship_zip%customer's ship zip code
    %ship_cntry%customer's ship country
    %bill_fname%customer's bill first name
    %bill_lname%customer's bill last name
    %bill_email%customer's bill email
    %bill_comp%customer's bill company
    %bill_phone%customer's bill phone#
    %bill_fax%customer's bill fax#
    %bill_addr%customer's bill address
    %bill_city%customer's bill city
    %bill_state%customer's bill state
    %bill_zip%customer's bill zip code
    %bill_cntry%customer's bill country
    %bgcolor1%replaced with "Background color #1"
    %bgcolor2%replaced with "Background color #2"
    %bgcolor%alternately replaced with the "Background color #1" and "Background color #2
    %cust_selectbutton%will be replaced by the "Select Customer" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button will select the corresponding customer

    Tokens usable in the Main template (on the "Attributes" tab):

    %baseurl%replaced with the baseurl of the page
    %close_button%will be replaced by the "Close" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button closes the pop-up window
    %back%will be replaced by the "Back" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button will use the browser's "back" button to return to the product search page
    %updatebutton%will be replaced by the "Update" button image, or by a button using the "button alt" text if no image is configured. Clicking on this button updates/submits the page
    %store|field|%replaced with the database variable Stores.d.field. For example, to display the store name you could use the token %store|name|%
    %encstore|field|%the same as the %store|field|% token except the contents is URL encoded (eg. space replaced with +) before displaying
    %bgcolor1%replaced with "Background color #1"
    %bgcolor2%replaced with "Background color #2"

    Tokens usable in the Product template template (on the "Attributes" tab):

    Some of the tokens below are "conditional" tokens. These tokens are of the form %begin_con