Official KoolCat Venders KoolCat Availability Recent Press Releases Official KoolCat Venders
KoolCat Demo KoolCat Docs Contact Information
         

v1.23 Documentation


Back to Home "The Document Is The Application," "Open Web Document Connectivity (OWDC)," "The Htmlscript Developers Registry," "hts-connect," "Jyve," "Koolcat," "htmlscript" and the htmlscript "blades" logo are trademarks of Htmlscript Corporation. "NSAPI" is a trademark of Netscape Communications Corporation. All other trademarks are the property of their respective owners. ©1995, 1996, 1997 Htmlscript Corporation. All rights reserved.

I. OVERVIEW

II. INSTALLATION

III. PRELIMINARY PLANNING

IV. BUILDING YOUR CATALOG

V. CATALOG CONFIGURATION

VI. THE UPSELL SYSTEM

VII. EDITING CATALOG CONTENT

VIII. ORDER PROCESSING SYSTEM

IX. DATA STRUCTURES

I. OVERVIEW

An online catalog may be many different things depending on its actual implementation. Essentially, a catalog is a collection if information formatted to be navigated by those interested in it's contents (i.e. potential customers). Catalogs are typically organized into categories which contain selections of related items (i.e. products) for the shopper to peruse. Items selected for purchase are displayed to the shopper before the they commit to "purchasing" them by entering information to an order form. Upon submittal of the completed order form, the shopping experience terminates, and the process of fulfilling the customer's order begins.

The KoolCat System follows the above specified guideline, and adds powerful features for the shopper and for the catalog developer/administrator. The result is a robust and powerful shopping/selling machine.

Catalog Functionality: The Consumer Perspective
Depending on how many catalogs have been created using the KoolCat system, the shopper is shown either a catalog, or a selection of catalogs to browse. Once a catalog is selected, the system creates a uniquely named shopping basket file which contains information on the shopper's trip through the catalog, and and offers the shopper a choice of either browsing, searching through, or closing the catalog. "Closing" the catalog takes the shopper back to the main screen to select a different catalog.

  • The KoolCat Shopping Basket System
    For the purposes of this discussion, the first catalog selected will be known as "Catalog A". The shopper may choose, at any time during the shopping trip through Catalog A, to bookmark their position in Catalog A, go back to the main catalog page and shop in Catalogs B, C, D, etc. before returning to their bookmarked position in Catalog A to follow through with a purchase by filling out an order form. When returning to Catalog A, the shopping basket file created at the point of catalog selection will be used to finish the shopper's trip through the catalog and generate an order - as long as the shopper hasn't closed the catalog. If Catalog A was closed before going to another catalog, the next time Catalog A is opened, a new shopping basket will be created with a different file name.

    Abandoned baskets expire after a specified period of time which is configurable in the KoolCat Administration System. If the shopper returns to a bookmarked screen in a catalog and the basket file has expired, an error message will appear when the system tries to read from- or write to- the basket file.

  • The KoolCat Shopping Experience
    The beginning screen of a selected catalog presents the option to "Browse" through a selection of categories in the catalog, to "Search" the entire contents of the catalog, or to "Close" and move to a different catalog (in the case that multiple catalogs exist on the system).
    • Browsing The Catalog
      The "Browse Catalog" option gives the shopper a similar selection, only the display table is borderless and contains hyper-linked category names, or hyperlinked graphics representing the different categories in the catalog. Under the category selection table, the shopper has the option to view "Entire Catalog," or to return to the "Main Menu" of the catalog.

    • Searching The Catalog
      The "Search" option gives the shopper a text entry field for a search query, and a submit button. Product names and or descriptions that match the search query are then displayed as hyper-linked text with thumbnail graphics in a bordered, three-column table. Thumbnail graphics are an optional component of product records.

      The selected category screen contains the current category title or representative graphic at the top of the screen. Product names in a selected category display the same as they do in any screen responding to a search query, but show the names of all products classified under that category selected. Below the product selection table, all other category titles or representative graphics appear as hyper-links. Standard "Back" and "Return To Main" buttons appear at the bottom of the screen.

    • Product Display And Selection
      A product selected from a category display generates the display for that individual product. A description of the product appears under the product name. Below the description, the price of the product appears centered in blue text. Further down the screen, the product display graphic appears with the product code, weight of the product, and the current number of such products currently in the basket. Options to add to or remove from the basket a specific quantity of the item are made available to the shopper as are navigation options to go to other categories, "Back," and "Main."

    • Committing To Purchase And Ordering
      As soon as products are added to the shopping basket, new options to "View Contents of Basket," and "Order Now!" become available throughout the catalog's navigation. The shopper may then either view and edit any of the information in the shopping basket and continue shopping, view and edit the contents of the basket and fill out the order form, or simply fill out the order form and commit to purchase. After the order form is completed and submitted by the customer, the optional upsell system selects a special offer from a list of valid upsell items to give the customer before writing the order to the order file. The customer may either choose to accept the special offer and add the upsell item to the order, or to decline and submit the order as is.

    • Order Confirmation and Processing
      When the order is written to the order file, an order notification email message is automatically sent to the order notification list, and the final "Thank You" screen is generated for the customer.

Prerequisites
The entire KoolCat System is written in in the htmlscript 4GL v2.99. KoolCat will run on any web server where htmlscript v2.99 has been installed.

If you are a user on a system that has not yet installed the htmlscript engine, you have one of three options:

  • Refer Your ISP or Hosting provider to us
    Get your system administrator to install htmlscript so that you may begin using the KoolCat system.

  • License KoolCat from an "Official KoolCat Vender"

  • Find an htmlscript-enabled ISP or Hosting Service in hts-connect
    Contact one of the many ISP's and Hosting Services that offer htmlscript access for free with their service.

  • Become An htmlscript Licensee
    Purchase an htmlscript license, and install the htmlscript engine on your own web server or CGI-BIN. Many ISP's offer a personal CGI-BIN with virtual domain accounts hosted on their servers. If your ISP offers such a service, install your own copy of the htmlscript engine and configure it to run exclusively in your own CGI-BIN directory.

Administration System
Creating online catalogs with the KoolCat System is as easy as filling out a form. No HTML or programming experience of any kind is necessary to build and maintain catalogs using KoolCat. However, advanced knowledge of htmlscript, and web development in general, will make the configuration and functionality of your finished catalog system more robust. The administration system takes information entered to its forms and writes that data to catalog-specific files from which the run-time module can later read to generate catalogs.

Maintaining catalogs, and processing their orders is very easy. Generate shipping and accounting reports from order batches that you control. Edit any order or delete it if necessary. When order batches have been fully processed, an archiving system lets you save those order records for future use. The system may be configured to email you, as well as your order processing departments, when a new order is written to the catalog's main orders file.

With a single installation of KoolCat, you may create any number of catalogs which contain any number of product categories which may contain any number of products. Each product in the catalog may contain an unlimited number of attribute selections associated with it for specifying sizes, colors, flavors, makes, models, comments, etc.

Upsell System
Optionally, you may use the upsell system to assign a special discount price to a list of selected products and assign a specific list of other "prerequisite" products to each item in the upsell list to ensure that upsell products are logically offered.

Run-Time System
Depending on the number of catalogs you've created using the Administration system, the run-time system will display either a single catalog, or a selection of catalogs for the shopper to visit. As the consumer begins navigating a catalog created with the KoolCat System, a shopping basket file is automatically generated with a unique name and updated according to the decisions made by the user during their shopping trip. Different catalogs created by the same system will generate different shopping basket files.

The user may fill their basket with products from any category in the catalog - adding or deleting any quantity of items at any time. When the shopper has finished shopping and filled out the order form, the upsell system chooses an appropriate item to display with a special price that is good only at that very moment. The upsell system will not try to sell an item at the special upsell price if that item has already been added to the shopping basket. Shopping basket files left untouched within a specified period of time are subject to possible deletion.

II. INSTALLATION

KoolCat installs the same way as any htmlscript application. Copy files containing htmlscript source into your htmlscript applications directory. Copy data files into a directory where your htmlscript applications can read and write data.

You can have KoolCat automatically installed into your user account by visiting one of the Official Venders in our "KCVender" vending machine network.

Source code for the KoolCat v1.23 System is made up of three modules:

  1. The "Administration System" (kcadmin.hts) is used to create and manage catalogs.

  2. The "Run-Time System" (koolcat.hts) implements catalogs which you've created based on the information found in their associated data files.

  3. The optional Data Converter (kcupdate.hts) changes the structure of all your existing v1.0 data to work with the new v1.23 system.

Step-by-Step Installation Instructions:
If you've had one of our Official Venders auto install KoolCat for you, the following source code and data files should already be in place for you to properly run the system.

  1. Install Source -
    Place all source code modules ("koolcat.hts," "kcupdate.hts," and "kcadmin.hts") into your configured htmlscript applications directory. Edit "koolcat.hts" and "kcadmin.hts" to read and write data files in the correct data directory relative to your configured htmlscript data directory. A configuration variable called 'mydatadir' contains a value which is the name of the directory under your htmlscript data directory where your KoolCat data files are (will be). The default value of "" for 'mydatadir' tells the application to read and write data in your top htmlscript data directory. If your data directory for KoolCat is a subdirectory of your htmlscript data directory, you must enter the name of that directory prepended to a forward slash (/) as the value of 'mydatadir'.

    EXAMPLE:

    <LET mydatadir = "subdirectory/">

    Following are the line numbers in each where your must edit the value of 'mydatadir':

    • "kcadmin.hts" -- Line 36
    • "koolcat.hts" -- Line 38


    Note: If you are simply upgrading your catalog system to v1.23, the only step necessary after installing source files and pointing them to the proper data directory, is to convert your data.

  2. Place data files ("kcaccess.dat," "koolcat.conf," "clrslist.dat," and "taxtemp.dat") in your KoolCat data directory. This directory is specified from within the source for each module as the value of a configuration variable called 'mydatadir' (the default value for 'mydatadir' in each module is "" - which points to your top htmlscript data directory).

  3. Create a directory called 'archive' under your KoolCat data directory for order batches which have been fully processed. The order processing module will only move order batches to this 'archive' directory on your command. If KoolCat has been auto-installed for you, the "archive/" subdirectory should already be in place.

III. PRELIMINARY PLANNING

KoolCat's functionality is designed to simplify the task of editing any of your catalogs' content, but it is a good idea to start with a plan for your catalog before you jump in and start building anything. When you are ready to begin building the catalog, we suggest that you have the following items prepared to help you stay organized:

  • List of Categories
    Group all of your products into a list of categories

  • Product Database
    Include the following information for each product:

    • Product Code

    • Product Title

    • URL for thumbnail graphic

    • Prices
      • Regular Price
        The price used for the standard product display screen.

      • Upsell Price
        The price of the product when it is displayed as an upsell item after the order form has been filled and submitted.

    • Taxability

    • URL for display graphic

    • Description
      Description of the product as it will appear in the catalog

    • Weight
      Establish a standard measure of weight to use for all of your products. If a product weighs less than the standard unit of measure that you have chosen, establish a numeric value for the unit of measure (i.e. 0.5 lbs.) When the product is later added to a customer's shopping basket, the product's weight will be used to calculate shipping charges.

    • Product Category

    • URL to Product Category Graphic

    • Product Attributes
      Products in your catalog may have and unlimited number of attributes. List all attributes associated with each product, and possible selections for each attribute. Make sure to specify which attribute prompts may contain multiple selections and which may contain one single selection.

  • Customizing Messages
    Create all of the messages that KoolCat will generate in your catalogs:
    • HTML Displays
      Construct HTML documents containing all of the information (text and graphics) that will be displayed in the browser when integrated with the rest of the catalog's interface. Make sure that all <IMG SRC references are hard, full path URL's to the graphic, and that all <A HREF links contain full path URL's to the actual location of the link's destination.

      1. Catalog System Intro
        The introduction to the catalog system as a whole, and to its selection of catalogs.

      2. Catalog Main Screen
        The "Welcome" message on the first screen of the catalog selected.

      3. "Thank You"
        The "Thank You" message at the very end of the shopping experience when the shopper becomes a customer and fills out the order form.

    • Email Message to Order Processing Department
      The order notification message sent to order processing departments and to anyone else to be included in the order notification list.

IV. BUILDING YOUR CATALOG

Accessing KoolCat in Your Browser
As soon as you've installed the KoolCat distribution into the right directories on your server, you can go about building your catalog by pointing your browser to run "kcadmin.hts". KoolCat is an application written in htmlscript, and because the htmlscript language is designed to be parsed and executed by the Htmlscript Engine (which is a CGI program), you must specify a URL to the application that will envoke the engine from your server's cgi-bin to run it. Following is the anatomy of such a URL:

EXAMPLE:

Graphic Explanation of URL-- http://www.server.com/cgi-bin/htmlscript?file.hts

The above example applies when building catalogs using "kcadmin.hts", and when running the catalogs you create using "koolcat.hts". "file.hts" above may be preceded with a directory name and slash if the directory where you've installed KoolCat is a level below your configured htmlscript applications directory ("subdirectory/file.hts").

EXAMPLE:

http://www.server.com/cgi-bin/htmlscript?subdirectory/file.hts

Another possibility is that the name of the Htmlscript Engine on your server is something other than "htmlscript." Consult with your site administrator.

EXAMPLE:

http://www.server.com/cgi-bin/someprogram?subdirectory/file.hts

Getting Started
Run "kcadmin.hts" in your browser. From the Administration System's main screen, hit "Create New Catalog". The system will return with prompts for catalog title and administrator password. After you've re-entered the new administrator password, KoolCat will tell you that a new catalog has been created and assigned a Catalog ID#. When a new catalog begins life, all data files associated with that catalog are initialized with the Catalog ID# prepended to the string names of each respectively. As a convenience, you may want to keep a log of the catalog titles and catalog IDs created with the system to monitor the maintenance of each different catalog in your system.

Adding Categories
After you've gone through catalog creation, you may begin the process of filling your catalog with it's content. Hit "Contents of Catalog" from the main administration menu, then hit "Add Category". KoolCat is natively configured to look at catalog content as a list of products where each product is associated with one product category. The first logical step in building your catalog is creating the names of these product categories.

The text entry fields on the "Add Category" screen are designed to accept both a URL to a graphic that will represent the category and a string of text as the name for the category. If there is no graphic to represent the category, the text entered to the "Category Title" entry field will display in <H1> size where category names appear. URL's entered to the field will cause the graphic referenced by the URL to display in the catalog wherever that category name appears. When the category name appears as a screen header, the graphic will appear as a display only. The graphic will otherwise display as a link with a default border wherever categories display as menu options for the end user or for the catalog administrator.

Add as many categories as you want. Categories display in a three column borderless table.

Adding Products
Hit "Add Product" from the "Catalog Contents" menu and begin filling the product information form. The process of filling your catalog with products will be much easier if you've assembled a product list confining all of the information needed for the form. Following is a breakdown of all the fields in the "Add Product" form:

  1. Product Code Text Field
    The best product codes to use are those which indicate the kind of product and it's associated category. You may already have established an SKU# system for your inventory. Product codes may only contain alphabetic and numeric characters without spaces.

    Note: Product codes must begin with a letter, a number, or an underscore ("_"), may contain no spaces, and may only be a string made of alphabetic or numeric characters.

  2. Product Title Text Field
    The name of the product as it will show in the standard product display screen of the catalog.

  3. Thumbnail Graphic URL Text Field
    Smaller "thumbnail" sized product graphic appearing in a given category's product selection screen. The graphic will display left-aligned and adjacent to the product name in table cells of a bordered three column selection table. Both the thumbnail graphic and the product name will be linked to the standard product display for the given product. If the product is one that needs no thumbnail graphic, simply enter "none," and the product name will be all that's displayed in the product category display.

  4. Product Price Text Field
    Regular Price that will appear in the standard product displays of the catalog. Upsell pricing will be established later in the construction of your catalog. Enter only numeric information here. The KoolCat system will format that numeric value to display with U.S. money format and will also use it for various calculations.

  5. Taxability
    Whether or not the product is taxable.

  6. Product Image URL Text Field
    Regular sized product display graphic appearing in the standard product display screen.

  7. Product Description Text Field
    The description of the product appearing in the standard product display screen.

  8. Weight Text Field
    The total weight of the product. Enter only a decimal numeric value here. Shipping charges will be calculated using the value entered, so string data will result in unspecified outcome for shipping charges. The default unit of measure for all products in the catalog is pounds. This unit of measure will appear next to the text entry field as it is read from the standard shipping data file which was generated when the catalog was created. Later, you will be able to change the catalog's standard unit of measure if necessary.

  9. Product Category
    Select the product's category from the list of radio selections.

  10. Creating Attribute Prompts and Selections (Y/N)
    KoolCat's product attribute management system lets you offer many different versions of the same product with options like make, model, color, size, flavor, etc. Select "Yes," then hit "Add Product" to submit the product information entered so far. The system will return with another form containing the following fields:

    • Prompt Text
      Enter text for the prompt which will instruct the shopper how to specify the given attribute (i.e. "Select Size").

    • Selection Formats
      Choose the type of form input device to be used in the catalog to display attribute options for the shopper. A response from the shopper is required for all attribute selection prompts except those formatted with checkboxes. Following are the formatting options available and some examples of each:
      • Radio Buttons (Single possible value)
        Formats options under the prompt into radio buttons from which only one may be selected by the shopper.

        Product:Cheeseburger
        Attribute 1:
        Kind of Cheese
        (Single selection)
        Swiss
        Mild Cheddar
        Mozzarella
        American
        Muenster
        Gorgonzola

      • Checkboxes (Multiple possible value)
        Formats options under the prompt into checkboxes. The shopper may select one, several, or all of the options displayed in this format. The limit for attribute selection options formatted into checkboxes using KoolCat is 15. This is the only selection formatting device containing a limit for options created.

        Attribute 3:
        Condiments
        (Multiple selection)
        Lettuce
        Tomato
        Pickles
        Onions
        Mayo
        Mustard
      • Scrolling Selection Box (Single possible value)
        Similar to the radio button format where only one option in the selection may be chosen, the selection box format displays options in a scrolling box for the shopper to peruse. This method is of use when space is a consideration. If there are many options to display for a given attribute, they may all be fit into this size-fixed selection device.
        Product:Cheeseburger
        Attribute 1:
        Kind of Meat
        (Single selection)

      • Text Box (Single possible value)
        If the prompt for the shopper will simply be asking for a string of text as a specific description of the product attribute, this formatting selection will generate a text entry field for the shopper to enter a custom order, request, specific description of the item, or any other kind of note.

        Attribute 4:
        How "well done" would you like your burger?

      After choosing a selection display method for an attribute prompt, hit "Create". The next form to appear prompts you to enter the text of the first option in the list. Enter text for the first option and hit "Add Option". Another "Add Option" form then appears for you to add text for the next option.

      When creating a prompt with a text box, the contents entered by the shopper in the text box will be the only possible value for that attribute. After submitting the text for the prompt, the following screen will be a form to enter the next attribute selection prompt for the product.

    Each time the "Add Option" form comes up after submitting information on another option, you may choose to hit "No More Options" to cap off the number of options for a given attribute prompt. After hitting "No More Options," the responding screen is a new form giving you the choice of either adding another attribute prompt with a new selection format or altogether terminating the data entry for the product in question by hitting "No More Data".

V. CATALOG CONFIGURATION

The catalog configuration part of the Administration System lets you alter the way your catalog will behave in many different ways. Here you can create a list of payment options, and shipping methods, as well as establish the standard unit of measure for calculating different shipping charges. You can also create a custom tax table which your catalog will use to calculate sales tax figures for the way that your company does business. You may also want to apply some advanced techniques to the way that your catalog will display and function.

Texts and Email
Hit "Texts / Email" in the configuration menu. The form that appears is a set of text entry fields which automatically generate both HTML displays and email messages when shoppers navigate a catalog and when orders are submitted. The entry fields that generate HTML displays may accept HTML, htmlscript, text, or a combination of all three. The entry field which generates the order notification email message must contain text alone or text with htmlscript code. Following is a brief explanation of how to use each of the entry fields in the Message Customization form:

  • Catalog Title (Text Only)
    Each catalog created with the system will be accessible as a selection of many catalogs from one place - both to you as the administrator, and to your customers as they shop your catalogs. Text entered to this field will be understood by KoolCat to be the title of the catalog, and will be made available as an option inside of a selection box containing titles of all catalogs created in a given catalog system. As customers enter the KoolCat catalog system, they select from a list of catalog titles one catalog at a time. Each different catalog generates a different shopping basket and order record for the same customer.


    NOTE: Text is the only acceptable data type for entry to this field. Arbitrary results will occur when the entry for catalog title contains HTML as an attempt to manipulate the display of the catalog title in the catalog's start-up screen and the catalog selection device. Selection boxes cannot contain HTML. Since the same string of text will be used by KoolCat to both display the title in the browser, and make it available as a selection option.

  • Introduction on Catalog Selection Page (Text, HTML, or htmlscript)
    When your catalog system is first loaded to a browser, part of the content incorporated into its start-up is a welcome message that appears to mark the beginning of the catalog system, and to deliver information about you, your company, and or the contents of the different catalogs in the system. Content entered to this field will generate such a display only if you create more than one catalog for your customers. As you use the Administration System to manage your catalogs, and possibly alter the configuration of one or another, this field always appears in the "Customize Messages" form regardless which catalog's messages you happen to be editing.

    Make sure that any <IMG SRC... references to graphics are full URL's to the graphic, and not simple paths relative to a current working directory on your web server. The KoolCat system will be run by htmlscript in a specified directory, so relative references to graphic files will not work.

    EXAMPLE:

    <IMG SRC = "http://www.server.com/images/graphic.jpg"...> - correct
     
    <IMG SRC = "./images/graphic.jpg"...> - incorrect

  • Introduction on Main Catalog Page (Text, HTML, or htmlscript)
    This field will generate the "Welcome" message that appears below the title of a catalog when selected from the main catalog system. As with the "Catalog System Introduction" field, you may put any HTML or htmlscript code here as well as plain text to generate the greeting for your selected catalog. Remember to reference graphics with full URLs and not relative paths.

  • "Thank You" At Final Page (Text, HTML, or htmlscript)
    After shoppers have entered information to an order form and committed to purchasing, their shopping experience ends with a "Thank You" message. This message may be as simple or as complex as you want. To simply tell the customer "Thank You" and display some contact information on your company with a graphic, compose a basic HTML display and place it's content into this field. You may also enter a simple text string, like "Thank You for your order...".

    To get more serious about what to tell the customer after they've committed to spending their money, you may want to construct a "thank you" message that potentially gives them information on their order (i.e. tax and shipping information, fulfillment scheduling, etc.). This may be accomplished with some very basic htmlscript coding that uses variables created in the order form.

    Included with the instructions that are built into the "Catalog Texts and Emails" form, is a list of variables available when constructing the catalog's messages. These variables have no values until the order form has been filled out and submitted by the customer and a new record has been written to the "*orders.dat" file. Because of this, the variables in the list are only available for the "Thankyou" browser message and for the email messages sent by the catalog system since they all are generated after the order form is filled out by the customer.

    Available Variables
    name Shipping Name
    shipaddress Shipping Address
    city Shipping City
    state Shipping State
    zip Shipping Zip Code
    country Shipping Country
    phone Shipping Phone Number
    fax Shipping Fax Number
    email Shipping Email Address
    company Shipping Company
    ship Shipping Charge for Order
    tax Sales Tax on Order
    total Order Grand Total
    ordernum Order Number
    bname Billing Name
    baddress Billing Address
    bcity Billing City
    bstate Billing State
    bzip Billing Zip Code
    bcountry Billing Country
    bphone Billing Phone Number
    bfax Billing Fax Number
    bemail Billing Email Address
    bcompany Billing Company
    cardtype Type of Credit Card
    cardname Name on Credit Card
    method Shipping Method
    startdatetime Time order was placed

    The htmlscript code necessary for evaluating variables from the order form is as easy as <EVALUATE variablename>. The following example is how the first line of a "Thank You" message might look for the customer to personalize the message:

    "Thank You <EVALUATE name>,...."
    

    will replace itself with the contents of 'name' in the context of the particular order.

  • Email to Order Processing Department
    • Email address that sends a message to order processing department (Must be a valid email address)

    • Subject of message sent to order processing (Text Only)

    • Body of message sent to order processing (Text and htmlscript code)

Colors
Hit "Colors" in the configuration menu. The "Color Schemes" screen lets you choose from a selection of existing color schemes and gives you the power to create you own. Using a table of established "names" for hex triplet colors, you can create and update new and existing color schemes by choosing the names of colors for different things in your catalog - like background, text, links, selected links, viewed links, cells in basket contents tables, cells in product list tables, and the cells in the table that makes up the invoice.

After selecting an existing color scheme from the drop-down menu, you may choose to either "apply" that color scheme to the catalog, or to "update" the configuration of that color scheme. Below, you can add other custom color schemes with their own names, or delete existing color schemes from the selection.

Upsell System
KoolCat's upsell system is an optional configuration option which allows the you to create a list of specially priced products from which an "upsell item" is chosen to offer the customer after they've submitted the order form. Please see section VI. THE UPSELL SYSTEM for detailed information.

Shipping Charges
Hit "Shipping Charges" from the configuration menu. The responding screen contains a single field form for updating the standard unit of weight measure for calculating shipping charges added to an order. Below this form, a table displays the following information on existing shipping methods:

  • The name of the shipping method
  • The rate charged per standard unit of weight measure
  • The minimum charge for using the shipping option regardless of weight
Hit the "Update Shipping Table" button after changing any of the information in the text entry fields for each shipping method listed or selecting one to be removed.

Hit "Add Shipping Method" to add new shipping options to the table with the all above information.

Sales Tax
KoolCat is packaged with a pre-installed tax table containing the standard sales tax rates for the 48 contiguous American states, Alaska, Hawaii, The District of Columbia, The US Virgin Islands, and Puerto Rico. Each tax region (state) is left deactivated as a default. Create your own custom sales tax configuration by either activating, deactivating, or removing regions listed, changing the pre-installed tax rate for a region (Default zero%), or adding new ones with special tax rates.

To edit contents of the table, make your changes to the tax table and hit "Update Tax Table." To add a new tax region, hit "Add To Table" located below. Enter the name of the tax region and the percentage figure (numeric value only) for tax in that region.

Tax regions in the table left inactive will not display in the order form selection box for the field named "Region". If you plan to use data from the order form to generate mailing or shipping labels, it is a good idea to activate all of the states in the pre-installed table, but to edit the tax rate to zero for all of the states where you don't charge sales tax.

Payment Methods
Hit "Payment Methods" in the configuration menu. KoolCat is packaged with a default selection of pre-installed acceptable payment methods - all of which are credit cards (Visa, American Express, and Mastercard). To remove payment methods, simply check one or several of the check boxes located beside each payment option in the table and hit "Update Table". To add a payment method, hit "Add Method" and enter the name of the payment method in the single-field form provided. Payment methods will appear in a pull-down menu as part of the order form.

Plug-Ins
This powerful feature of KoolCat is an option for more advanced users of the system, and is non-essential to bringing a catalog on line. At nine different points in the catalog system, you may incorporate content from any document or application accessible via the WWW into your catalog without the need of hosting that content on your server. The way that KoolCat does this is by emulating a browser and "calling" the remote host to make a standard HTTP request. Documents and applications called by your KoolCat catalog may also be hosted on the same server as your catalog system.

Hit "Plug-Ins" in the configuration menu, and view the form that appears. Eighteen text entry fields prompt for URL's to different applications or documents, and sets of radio buttons next to each entry field prompt for the method to use in calling these applications or documents. For nine different screens in the catalog system, you may assign two different plug-ins to bring content into the given screen - one as a "header" above the standard content generated by KoolCat and another as a "footer" below. When calling documents that are simple HTML pages, use a method of "GET". When calling applications written in htmlscript, use a method of "POST". Any kind of code that can generate anything in a browser may be the content of the remote document called into your catalog.

The most basic implementation of plug-ins is to call static HTML pages that display graphical menu bars and or any information about your company - like trademark information. You may want to use different plug-in pages for headers and footers of different screens in each catalog.

The option of updating plug-ins assignment in the "Catalog Selection Screen" appears while configuring plug-ins for each catalog in your KoolCat system. While the plug-ins chosen for screens 2 through 9 will display only in a given catalog, the plug-ins chosen for screen 1, "Catalog Selection," will affect your KoolCat system as a whole. If only one catalog has been implemented in the system, plug-ins assigned to the Catalog Selection Page will not appear as there will be only one catalog in the system to shop.

Following are the screens in your catalog(s) for which you may configure plug-ins for "header" and "footer" information.

  1. Catalog Selection Page
  2. Main Screen of Selected Catalog
  3. Category Selection Screen
  4. Category Contents Display Screen (Also, "View Entire Catalog" Screen)
  5. Search Results Screen
  6. Product Display Page
  7. Product Attribute Selection Screen
  8. Product Upsell "Special Offer" Screen
  9. Thank You Screen

Advanced Options
This option allows you to set a life span limit for abandoned shopping baskets, and to specify a URL to the secure version of KoolCat running on a secure server.

Abandoned Baskets
Each time someone begins shopping through your catalog, a new shopping basket file is created containing information on all of the purchasing decisions the customer makes while in the catalog. If at any time during the shopping experience, the customer needs to go elsewhere, they can bookmark where they are in the catalog, actually turn off their computer all together, and later return to the catalog with their shopping basket intact. If the customer forgets about the bookmark and the shopping basket, the basket file will be there waiting for them until it expires according to the life span limit specified in the "Abandoned Baskets" configuration.

Baskets that have been used to actually generate a finished order stay in the data directory until their associated order batches are archived and deleted. Processing orders and order batches is discussed in Section IX. ORDER PROCESSING SYSTEM.

The "Advanced Options" screen shows the current shopping basket life span configuration and provides an interface for editing that configuration. Specify the number of minutes, hours, or days that you wish to be the standard life span limit for baskets that are left active without generating a finished order. Complete the new configuration by hitting "Update Catalog." Any baskets that have been left abandoned for longer than your configured life span will be deleted with their corresponding ".mem" files the next time a new batch of orders is created. Again, the baskets that have generated orders will remain until they are deleted when their corresponding order batch is archived.

Secure Transactions
If you will be running your catalogs and administration system on a secure server, enter the URL to "koolcat.hts" as it will be on your secure server. Note that both the secure and non-secure servers must utilize the same data space for KoolCat to function properly.

EXAMPLE:

https://secure.server.com/cgi-bin/htmlscript?koolcat.hts

For optimum performance, only the order processing parts of the catalog and the administration system will run in the secure environment. This field left blank will allow the KoolCat system to run in standard "http://" mode.

VI. THE UPSELL SYSTEM

As shoppers explore your catalog, they will be making purchase decisions that will lead up to an opportunity to review the items they've added to their shopping basket. When the shopper becomes a customer and fills out the order form, committing to purchase an item or a group of items, the Upsell System gives the customer one last opportunity to purchase on impulse while "their wallet is open at the counter".

Setting The Percentage Point
Select "Upsell System" from the Configuration menu, and establish a percentage point at which the system will compare the upsell price of an candidate upsell item to the subtotal of the customer's order. If the percentage point is 75%, for example, the upsell system will look through the list of upsell items for items with a upsell prices which are less than or equal to 75% of the basket subtotal.

The Upsell System performs a series of operations to determine which products can and cannot be displayed to the customer as upsell items. Following are the steps that are taken by the system to weed out unqualified upsell items, and then select an appropriate upsell item for a given purchase.

  1. The system looks through the entire list of upsell items and considers only those with prices at or below the percentage point set for upsell item candidacy.

  2. Any upsell item which has already been selected at regular price may not be selected as an appropriate upsell item. The upsell system looks through the currently qualified list of upsell items and disqualifies any upsell item who's regular-priced counterpart is already in the shopping basket.

  3. Product prerequisites are checked to verify that necessary items have been purchased to offer the upsell item. For example, if light bulbs are on special, you may not want to offer them unless the customer is purchasing a lamp.

  4. From the the final cut, the upsell system then randomly selects the single item that will be displayed to the customer as a final opportunity to purchase at the compelling upsell price.

  5. The selected upsell item is then displayed to the customer with a "Special Offer" message explaining that "If you act now, you can get the following product at special discounted price of only $N, a savings of $n off the regular price...", calculating the savings when compared against the regular price of the item as advertised in the standard catalog display for that product.

    Below the "Special Offer" message, all associated product attribute prompts for that product are then displayed at once with the product description and product display graphic. The only possible quantity of the upsell item to purchase is one.

    The customer may choose to hit a single checkbox to accept the offer, or they may choose to leave the box unchecked - rejecting the offer, and then simply hit the "Fill My Order" button.

From the Upsell menu, hit "Add Products", then select a product from your "List Of Products and Codes" table to be added to the upsell list of products. If you know the product code of a given item, you can skip the selection table, and simply enter the product code and upsell price to the "Add Upsell Product" form, and submit this new upsell data by hitting "Add It". The system then confirms that the product has been added to the list of upsell items, and prompts for the next upsell item to be added.

Updating Upsell Product Information
When all items have been added to the upsell list with special prices, you can then go about grouping the items in the upsell list with products in the regular priced inventory. Hit "Update Products" in the Upsell System menu and select an upsell item to update. The update form will allow you to update the upsell price for the product as well as edit the prerequisite table for the product.

Left to default configurations, the upsell system will consider an upsell product an appropriate candidate for the sale even if the upsell product is not specifically related to any of the products in the customer's basket. This may be good if all products in a catalog are inter-related, and if the upsell product chosen for one sale could be the upsell product chosen for any sale in the catalog.

If, however, different categories in your catalog contain items that are completely unrelated to products in other categories of the same catalog, the upsell item chosen for a given sale must be specifically valuable to that customer in order for it to be an appropriate upsell item presented for that sale. A solution to this problem is the Prerequisite Table. To selectively assign products as "prerequisites" for items in the list upsell of products, hit "Update Products" from the Upsell System menu. Pick a product in the "List Of Upsell Products" to update, check the checkbox labeled "Update Prerequisites Table", and hit "EDIT".

The Prerequisites Table displays below a header telling you which upsell item you are currently updating. The table contains information on all of the products in your regular-priced inventory with a checkbox beside each product labeled "Prerequisite". Below the table you may choose one or many of the following:

  • Select All
    Regenerates the table with all of the checkboxes checked as prerequisites for the upsell item.

  • Deselect All
    Regenerates the table with all of the checkboxes "un-checked" as prerequisites for the upsell item.

  • Update
    If all of the products that you want to be prerequisites for the upsell item in question are checked, the "Update" button will cause the system to update the data file to reflect the new status of the upsell item.

  • Done Updating
    This button takes you out of the "Update Products" system, and presents you with navigation options.

VII. EDITING CATALOG CONTENT

Literally anything entered to any catalog may be edited or deleted at any time. Hit "Contents," and view the options available in the responding screen. Products may be "moved" from one category to another or deleted, and any information associated with any product may be edited including product code, name, description, etc. Categories may be created, edited, and deleted.

List of Codes and Titles
Throughout the "Contents" portion of the Administration System, the option to view "List of Codes and Titles" is always available where necessary. This button will list all of the products in your catalog with their product codes, names, and the associated category of each.

Editing Product Information
Hit "Update Product." If you know the product code of the product that you wish to update, enter that code to the field labeled "Product Code (Current)," and go directly to the field needing the updated information. Once you've entered the new information to all of the fields needing an update, hit "Update" at the bottom of the form, and the record for that product in the catalog file will be updated.

If you do not know the product code of the item needing an update, hit the "List of Codes and Titles" button and select a product from the table displaying products in the catalog. The same "Update Product" form will then return to the screen with all current product information filled into the fields of the form. Change the necessary product information, then decide if any of the product attribute information will need editing as well. If so, choose the check box for adding or updating the attribute information at the end of the form and hit "Update". A new table will display for updating that product's attribute information.

The update table for product attributes displays each attribute prompt that has been created for the product and each attribute selection listed below each prompt. This information is displayed in a column labeled "Current" at the left of the table.

In the next column of the table, labeled "New", the same information is displayed inside of different form input devices for you to edit. The selection method for displaying the attribute selections appears in a drop down menu to change if needed, and the text for each prompt and attribute is displayed in a text box for you to edit.

To the right of the "New" column, a "Remove" column contains a checkbox for each prompt and option. Any option may be removed alone or as one of several to be removed at once. All items who's remove boxes are checked when you hit the "Update Info" button at the bottom of the table will be deleted. After hitting "Update Info" for anything, the table will regenerate to display the newly updated information. If a prompt is checked to be removed when you hit "Update Info," all of the options grouped with that prompt will be deleted with the prompt.

Edit Category Information
To change the name of a category, go to the "Contents of Catalog" screen, and hit the "Edit" button under the "Category" section of the table. Similar to the "Update Product" screen, a "List of Categories" button at the top of the page shows a selection of the category names currently in the catalog. If you already know the current name of the category you wish to change, enter that name into the field labeled "Category Title (Current)," then enter the new name for the category in the "Category Title (New)" field. You may also enter a new URL to a graphic that will represent the category in the field provided. To submit your changes, hit "Update Category." Changes made to a given category will also update the records of all products which were associated with the previous category name.

VIII. ORDER PROCESSING SYSTEM

Orders that come into the catalog are written to a main orders file called "*orders.dat" (where "*" is the catalog ID#). This is where orders stay until they are grouped into a new batch of orders. This enables you to deal with orders in an organized manner while collecting new orders. When orders in the "*orders.dat" file are grouped into a new batch file, the "*orders.dat" file is zeroed out to prepare it for new orders that come in next, and the new batch is automatically assigned a batch ID# that corresponds with a batch label specified by the order processor.

Hit "Order Processing" in the Administration System Main menu. The appearance of the responding screen will be depend on whether there are any new orders to process. If there are no new orders in the main orders file, the system automatically takes you to the "Select Batch" screen to choose a batch to process. If there are new orders in the main orders file, the system generates a screen displaying the number of new orders that are in "*orders.dat" and gives you a text entry field to label the new batch. To create a new batch, enter a label for the batch and hit "Create Batch." To leave the orders file the way it is and accumulate more orders before grouping them into a batch, hit "Select Batch." Following is a guide to what happens depending on the circumstances present when starting up the order processing system:

  • Create New Batch If you've selected to create a new batch, the system takes you to a screen that displays the new batch label and batch ID# above the two processing options for the orders in the batch:

    • Editing Orders
      The "Edit" button generates a table containing the order number, the customer's name, the date of the order, and a radio button to select the order for editing. The "Edit Order" screen lets you edit any information entered to the order including quantities of items ordered as well as purchase, shipping, billing, and contact information entered by the customer.

    • Order Reports
      The "Report" button makes a multi-purpose "Accounting Report" on each order in the batch. The system goes to all of the data files containing data on the orders in the batch, reads in all of that data, and displays it formatted in the browser.

      Reports on all of the orders in the batch are generated at once in the same browser display, but are sequential and show all information gleaned from each individual order - one order at a time.

  • Select Batch
    The "Select Batch" screen displays information on all active batches organized into a five column table containing the batch label, batch number, time created, total orders, and a "Select" button for each batch represented in the table.

    The system then displays a screen with the same information issued in the "Select Batch" table, but only for the batch selected. Below the table, three processing options are made available: "Edit," "Accounting Report," or "Archive and Delete." The "Edit" and "Accounting Report" options from this screen function identically as discussed above in the processing of a new batch created.

IX. DATA STRUCTURES

With the exception of the main catalog configuration files "koolcat.conf," "kcaccess.dat," "taxtemp.dat," and "clrslist.dat," all data files generated for each catalog are of the format "*filename.dat" - where "*" is the would-be catalog ID # prepended to the name of each data file. Each data file is a bar ("|") delimited flat file where each record is a new line. However, "kcaccess.dat" only contains a sidle line which contains a single field.

The Data Converter
For those who have built their catalog system with the KoolCat v1.0 System, the v1.23 distribution contains a data conversion module called "kcupdate.hts" for changing the structures of all your data files to function properly with the new versions of administration and run-time systems. Following are the recommended steps to take in converting your v1.0 data to work with KoolCat v1.23:

  1. Back Up Your Data
    Save all your existing data as it's been working with KoolCat v1.0. and store it in a safe place other than the directory where it currently is. Leave all of your data in place.

  2. Run "kcupdate.hts"
    This application presents you with a single text entry field form that asks for the location of your data. Enter the location of your existing data in relationship to your configured htmlscript data directory. The default directory where "kcupdate.hts" looks for your data is a subdirectory called "koolcat/" under your configured htmlscript data directory. Enter the name of this directory if it is something other than "koolcat/" and hit "Update Data." If all of your KoolCat data resides in your top htmlscript data directory, enter a dot (".") in the field labeled "KoolCat Data Directory" and hit "Update Data."

You should only need to use "kcupdate.hts" one time. After running "kcupdate.hts," all of the data that you've been using with your KoolCat v1.0 system should be ready to run with the new KoolCat v1.23 system.

The following list of data files come bundled with the standard distribution of the KoolCat System:

  • "koolcat.conf"
    This file acts as the global configuration file for your KoolCat system, and contains all information specific to each catalog created with the system.

    Each catalog is represented by at least one record in "koolcat.conf," but may be represented by many. Each product category created in the catalog will produce a new record in "koolcat.conf" that will contain that product category in the "category" field of the record. Information in all other fields will be identical to the rest of the records associated with that catalog.

    Data Structure:
    catid ID# for a catalog created with the system. This number is established as the value of the htmlscript system variable "time_t" when the catalog is created.
    pwd Password for administering the catalog
    category Name of a category under which items in the catalog may be classified.
    catgif Image URL for a graphic representing a category name in the catalog
    title The official title of the catalog
    welcome Welcome message displayed at the first page of the catalog
    thankyou Thank you message displayed after an order is placed
    selection The message displayed at the catalog selection page (if there are multiple catalogs on the same system)
    sendord "From" address for email sent to order processor.
    subjord "Subject" of email sent to order processor
    bodyord Body of email sent to order processor
    header1 Plug-In called at top of catalog selection page
    hmethod1 method for calling header 1 ("GET" or "POST")
    footer1 Plug-In called at bottom of catalog selection page
    fmethod1 method for calling footer 1 ("GET" or "POST")
    header2 Plug-In called at top of catalog main page
    hmethod2 method for calling header 2 ("GET" or "POST"
    footer2 Plug-In called at bottom of catalog main page
    fmethod2 method for calling footer 2 ("GET" or "POST")
    header3 Plug-In called at top of category selection page
    hmethod3 method for calling header 3 ("GET" or "POST")
    footer3 Plug-In called at bottom of category selection page
    fmethod3 method for calling footer 3 ("GET" or "POST")
    header4 Plug-In called at top of catalog/category contents page
    hmethod4 method for calling header 4 ("GET" or "POST")
    footer4 Plug-In called at bottom of catalog/category contents page
    fmethod4 method for calling footer 4 ("GET" or "POST")
    header5 Plug-In called at top of search results
    hmethod5 method for calling header 5 ("GET" or "POST")
    footer5 Plug-In called at bottom of search results page
    fmethod5 method for calling footer 5 ("GET" or "POST")
    header6 Plug-In called at top of product display page
    hmethod6 method for calling header 6 ("GET" or "POST")
    footer6 Plug-In called at bottom of product display page
    fmethod6 method for calling footer 6 ("GET" or "POST")
    header7 Plug-In called at top of product attribute selection page
    hmethod7 method for calling header 7 ("GET" or "POST")
    footer7 Plug-In called at bottom of product attribute selection page
    fmethod7 method for calling footer 7 ("GET" or "POST")
    header8 Plug-In called at top of Product Upsell page
    hmethod8 method for calling header 8 ("GET" or "POST")
    footer8 Plug-In called at bottom of Product Upsell page
    fmethod8 method for calling footer 8 ("GET" or "POST")
    header9 Plug-In called at top of Thank You page
    hmethod9 method for calling header 9 ("GET" or "POST")
    footer9 Plug-In called at bottom of Thank You page
    fmethod9 method for calling footer 9 ("GET" or "POST")
    ordrcpnt Email address (or comma delimited list of address) of person(s) to inform when an order is placed
    secure indicates whether server supports "https" (secure) protocol
    exptime Expiration time for shopping baskets
    mailserver Name of mailserver to use for sending email
    colorscheme Name of color scheme used in the catalog
    usdata Percentage of order total under which prices for possible upsell items fall
    wtunits Standard unit of weight measure used for items in the catalog

  • "kcaccess.dat"
    At start-up, "kcadmin.hts" prompts the catalog administrator to establish a password for using the system. Upon submittal of the form, "kcaccess.dat" is written to with the newly established password.

    Data Structure:
    accessword Password to access the Administration System ("kcadmin.hts") as a whole

  • "clrslist.dat"
    This is a file of single field records which contain the names of 140 hex triplet colors which are recognized by name alone. "kcadmin.hts" reads from this file to generate a colored list of these color names from which you may select a name to use in creating color schemes.

    Data Structure:
    colorname The name of a color that generates a hex triplet value for use as a color attribute value in customizing text and background colors.

  • "*colors.dat"
    This file contains information on each color shcheme available for use in creating color schemes in your KoolCat system. Each color scheme created is represented by one record in the data file.

    Data Structure:
    scheme name of the scheme
    newlink color for unbrowsed links
    atlink color for selected links
    viewedlink color for browsed links
    background background color
    inventory color for table of products placed in basket
    products color for table of products in the catalog
    invoice color for invoice on thank you page
    txcolor color for all text

  • "*catalog.dat" (i.e. "123456789catalog.dat")
    Each product in the catalog is represented by at least one record in "*catalog.dat." When a product contains no attributes, only one record represents that product in the file. When a product contains at least one attribute associated with it, two or more records will represent that product in "*catalog.dat" - depending on how many attribute prompts the product contains, and how many selection options each attribute prompt contains.

    In the case where the product contains one or more attribute selections, and the first attribute selection is made up of five options, seven or more records will represent that product in "*catalog.dat". All of the records representing that product will be identical with the exception of the values contained in the flag and extras fields:

    • Record I.
      Contains the value "type" in the flag field, and the text for the type of selection device used for displaying options in the extras field: "radio," "checkbox," "select," or "text" in the extras field.

    • Record II.
      Contains the value "prompt" in the flag field, and the text for the attribute selection prompt in the extras field.

    • Record III.
      Contains the value "option" in the flag field, and the text for the first attribute selection option in the extras field.

    • Record IV.
      Contains the value "option" in the flag field, and the text for the second attribute selection option in the extras field.

    • Record V.
      Contains the value "option" in the flag field, and the text for the third attribute selection option in the extras field.

    • Record VI.
      Contains the value "option" in the flag field, and the text for the fourth attribute selection option in the extras field.

    • Record VII.
      Contains the value "option" in the flag field, and the text for the fifth attribute selection option in the extras field.

    If the next product attribute were a single text area under a prompt, three more records would represent that product attribute:

    • Record IX.
      Contains the value "type" in the flag field, and the value "text" in the extras field.

    • Record X.
      Contains the value "prompt" in the flag field, and the text for that attribute prompt in the extras field.

    • Record XI.
      If there are no more attributes associated with the product, this record acts as a delimiter, and contains the value "none" in both the flag and extras fields indicating that the next record in the data file is the first record representing a different product.

      In the case were there are more attributes associated with the product, this record looks just like record I., only it contains information about the next attribute with the value "type" in the flag field, and the text for the type of selection device used for displaying options in the extras field: "radio," "checkbox," "select," or "text" in the extras field.

    Data Structure:
    prodcode Product code assigned to the product.
    title Name given to the product
    thumb URL to thumbnail graphic for the product
    price Regular price of product
    gifurl URL to product display graphic
    description Product description
    category Category under which the product is classified
    weight Product weight
    taxable Indicates whether product is taxable
    flag Flag indicating whether record contains additional product info: "type," "prompt," "option," or "none"
    extras Attribute Information: prompt text, option text, "radio," "checkbox," "select," "text," or "none"

  • "*orders.dat" (i.e. "123456789orders.dat")
    This is the main orders file into which new orders are placed until the order processor groups them into a new batch of orders. When ever the new orders in "*orders.dat" are grouped into a batch, this file is zeroed out to ready it for receiving more new orders.

    A single order may be represented by at least one record in "*orders.dat," depending on whether an upsell product was added to the basket total at the time when the order was processed. If no upsell product was sold, only one record represents the order taken.

    A single record will also represent the order when the upsell product sold has no attributes. When the upsell product does contain at least one attribute selection, the order is represented by at least four records:

    • Record I.
      Contains the value of variable 'usprod' in the flag field, and the product code for the upsell product in the usdata field.

    • Record II.
      Contains the value of "prompt" in the flag field, and the prompt text for the upsell product attribute selection.

    • Record III.
      Contains the value of "option" in the flag field, and the text for the upsell product attribute option selected in the usdata field.

    • Record IV.
      Contains the value of "none" in both the flag and usdata fields to mark the current record as the final record representing the order.

    In the special case where the only attribute associated with the upsell product is formatted with as a selection of checkboxes, and the customer has chosen to purchase the upsell product displayed but has left the checkbox formatted attribute information unmarked with any selections, the order may be represented by only three records:

    • Record I.
      Contains the value of "usprod" in the flag field, and the product code for the upsell product in the usdata field.

    • Record II.
      Contains the value of "prompt" in the flag field, and the prompt text for the upsell product attribute checkbox selection.

    • Record III.
      Contains the value of "none" for both the flag and usdata fields in the record as none of the options in the attribute selection have been checked by the customer.

    Data Structure:
    ordernum Order Number
    name Contact person at shipping address
    shipaddress Street address for shipping location
    city City for shipping address
    state State for shipping address
    zip Zip Code for shipping address
    country Country for shipping address
    phone Phone number at shipping location
    fax Fax number at shipping location
    email Email address of contact person at shipping location
    company Company Name at shipping location
    bname Contact person at billing location
    baddress Street address of billing location
    bcity City for billing address
    bstate State for billing address
    bzip Zip Code for billing address
    bcountry Country for billing address
    bphone Phone number at billing location
    bfax Fax number at billing location
    bemail Email address of contact person at billing location
    bcompany Company name at billing location
    cardtype Credit card type to which the order is charged
    cardno Credit card number charged
    expdate Expiration date on credit card charged
    cardname Name of card holder on credit card charged
    cartfile Name of shopping basket file that generated the order
    ship Total shipping charges for the order
    tax Total sales tax for the order
    total Grand total of the order charged to credit card
    method Shipping method chosen for the order
    startdatetime Date and time of the order (numeric 'time_t' value)
    flag Flag indicating whether an upsell product was displayed to the customer after the order form was submitted: "usprodcode," "prompt," "option," or "none"
    usdata Contains information on the upsell product if applicable. Contains the value of "none" if no upsell product was sold or if the current record is the last sequential record representing a given order in the data file.

  • "*basklist.dat" (i.e. "123456789basklist.dat")
    This file contains the file names of all of the open shopping baskets that have not yet generated orders, and the time that the basket files were created.

    Data Structure:
    fname The file name of the open shopping basket
    startdatetime The date and time the basket file was created (string value)

  • "*usdata.dat" (i.e. "123456789usdata.dat")
    This file contains a list of products available for upsale, their upsell (discount) prices, and a list of related prerequisite products that must be in the customer's shopping basket when the order form is submitted before the given upsell product may be presented to the customer.

    Each product in the list of upsell products is represented by at least one record in "*usdata.dat" - one record per related prerequisite product associated with the upsell product.

    Data Structure:
    usprod Product code of upsell product
    usprice Upsell price for that product
    relprod Product code of related prerequisite product

  • "*credit.dat" (i.e. "123456789credit.dat")
    This file contains the list of credit cards accepted as payment for ordering products in the catalog

    Data Structure:
    creditcard Name of the credit card accepted for payment

  • "*taxes.dat" (i.e. "123456789taxes.dat")
    As a default, this file contains the names of the 48 contiguous American states, Alaska, Hawaii, The US Virgin Islands, and Puerto Rico. In the same record, two other fields contain the numeric value of the tax rate required in that area, and a toggle "on/off" value for whether that state will appear in the selection of states available for shipping and billing addresses in the order form.

    Data Structure:
    taxstate Name of the region (state)
    tax Rate of sales tax for the region (state)
    usage Toggle switch value to determine whether the option will appear in the state selection portion of the order form. Contains the value of "on" or "off."

  • "*shipping.dat"(i.e. "12456789shipping.dat")
    This file contains the list of shipping methods available to the customer. In the each record with the name of the shipping method, two other fields contain the minimum charge and rate per unit of weight measure for using each shipping method.

    Data Structure:
    method Name of the shipping method
    base Minimum charge for using the shipping method.
    rate Decimal numeric value of the rate per unit of measure charged for using the shipping method

  • *journal.dat
    This file contains a list of order batch ID #s associated with the batches of orders created from "*orders.dat," the label assigned to the batch by the order processor, and the date and time the order batch was created.

    Data Structure:
    bnumber Unique batch ID # automatically assigned the order batch when it was created
    bname The label assigned to the order batch by the order processor
    startdatetime Date and time the order batch was created (string value)

  • Sample Basket Files (i.e. "kc9557858640976.dat")
    When a customer begins shopping through a catalog, this file is created and named with a prefix "kc" combined with the concatenated values of environment variables "process_id" and "time_t," and a file extension of ".dat".

    The fields in each record contain the product code of each item, a unique identifier for that item in the basket, quantity of the item selected, a flag field indicating whether the item contains any associated attribute information, and an extras field containing the attribute selected for the item.

    The shopping basket file, "kc*.dat" is very similar in structure to that of "*orders.dat" and "*catalog.dat" in that each item added to the basket must be represented by at least one record in the data file, but may be represented by many - depending on how many attribute selections are associated with each product added to the basket, and on the number of options available for each attribute selection.

    In the case where the product added to the basket contains one attribute selection associated with it, three records represent the product in the basket file:

    • Record I.
      Contains the value of "prompt" in the flag field, the text for the attribute selection prompt in the extras field.

    • Record II.
      Contains the value "option" in the flag field, and the text of the attribute option selected for the product in the extras field.

    • Record III.
      Contains the value "none" for both the flag and extras fields indicating that the current record is the last record in the file representing the product added to the shopping basket.

    When the product contains multiple associated attribute selections, 'Record III.' with "none" values for both flag and extras fields acts as a delimiting record indicating that the following record contains information about another product added to the basket.

    Data Structure:
    prodident Unique product identifier for the item in the basket with it's particular attribute selection information
    prodcode Standard product code of the item in the basket
    qty Quantity of the item in the basket
    flag Contains data indicating the presence of any product attribute information for the item in the basket. May contain the value of "prompt," "option," or "none."
    extras Contains attribute option selected for the item in the basket if any. Otherwise contains the value "none."

  • Sample Memory Files (i.e. "kc9557858640976.mem")
    The "memory variables" file is used to maintain variables and their values when it is not possible to pass them through a form or the command line. The most generally useful implementation of the memory variables file is in it's use of the "secretcode" memory variable. This variable is a randomly generated number which can be used as a security verification mechanism from within your Plug-Ins.

    Possible Implementation:
    Say, for example, that you are marketing electronic media which can be obtained via FTP. Upon receipt of an order after the "Thank You" message is displayed to the customer, Plug-In 3 could be used to send login and password information to the customer for downloading merchandise.

    However, you would not want to simply send them the information without any verification that they just placed an order (the customer may be a hacker who has figured out how to call your Plug-In, in which case, you would not want to let them know the FTP information).

    The solution to this problem is to verify that the calling module (e.g.: "koolcat.hts") is actually what called the plug-in. This is accomplished via the "secretcode" memory variable, which is passed through to the plug-in, and can be referred to as "secretcode" from within the plug-in.

    Also passed through to the plug-in is the name of the basket file (from which it is possible to derive the name of the memory variables file), and the path name of the order file (starting from configured htsdata directory) from which the name of the configured koolcat data directory can be derived. As stated earlier, the memory variables file has an identical name as that of the basket file, but one with a file extension of ".mem".

    To verify security, simply check that the secret code passed to the script is the same as the secretcode contained in the basket file. Following is some htmlscript code that will perform such a security check:

    Further explanation of htmlscript code may be found in the Htmlscript Reference Manual.

    <## store the "secretcode" variable passed to the plug-in so that it 
    is not lost or reassigned, and so that it can be referenced later ##>
    <LET savesecretcode = secretcode>
    
    <## next, derive the name of the koolcat data directory (derived from 
    "orderfile" variable - which is also passed through to the plug-in) ##>
    <LET len = orderfile EIN orderfile>
    <LET savelen = len>
    <LET mydatadir = orderfile>
    <WHILE (len NE 0) AND (orderfile SUBSTR "&[len], 1" NE "/")>
    	<LET len = len - 1>
    </WHILE>
    <IF len NE 0>
    	<LET mydatadir = orderfile SUBSTR "1, &[len]">
    </IF>
    
    <## get the name of the memory file (derived from "basket_id" 
    variable - also passed through to plug-in from "koolcat.hts") ##>
    <LET membasket_id = basket_id FMT "0[Aa#]"$".mem">
    
    <## load in memory variables then perform security check ##>
    <IMPORT FILE = mydatadir$membasket_id>
    <IMPORT ORDER = varname, value>
    <IMPORT DELIMITER = "|">
    <IMPORT DATA>
    	<LET &[varname] = value>
    </IMPORT>
    
    <## perform security check ##>
    <IF savesecretcode NE secretcode>
    <## "secretcode" read from mem file ##>
    	ERROR: <EVAL arg1>: Can't authenticate security code
    	<EXIT>
    </IF>
    

    In the case that the security check fails, the following error message is displayed:

    ERROR: [name of plug-in]: Can't authenticate security code

    Data Structure:
    varname assigned name of variable
    value value to be assigned to "varname"

Top