NevoWeb NB_Store E-Commerce Module

version 01.01.07

Introduction

Welcome to the NB_Store Module.  Please take a few minutes to read this document, which will help you install and configure the module.

The Purpose of this documentation is to be a reference explaining the NB_Store features, although it gives an overview of the store it's purpose is NOT to be a User Guide.


Contents

  1. Basic Install and Setup of NB_Store
  2. Settings Administration
    1. Shipping Lists
  3. Template Administration
    1. Template List
    2. Template Replacement Tokens
      1. General Token
      2. lightbox.template tokens
      3. Productlist.template and Productdetail.template Tokens
      4. logintext.text Tokens
      5. Special Templates Tokens
      6. lblEstShipDate.Text Tokens
      7. Using No Stock Image Overlay Tokens
      8. Using Shipping Tracking Code Tokens
      9. Category Menu Tokens
    3. Setup Custom Javascript
      1. Importing Javascipt Templates
    4. Special Authorized User Templates
  4. Shipping Rates
    1. Shipping Formula
  5. Tax Rates
  6. Export/Import
  7. Category Administration
  8. Product Administration
    1. Creating Bespoke Product Fields
    2. Downloadable Products
    3. Products Image Resizing
  9. Stock Administration
  10. Client Administration
  11. Order Administration
  12. Payment Gateways
    1. Cheque
    2. PayPal
    3. SIPS
  13. Lite and Normal Modes
  14. Cart and Checkout
  15. Scheduler
  16. Product List
    1. Search Module
    2. Order By
  17. Host Options
    1. ClearDown Store
    2. Store Validation
    3. Import Settings
  18. Audit Logs


Basic Install and Setup of NB_Store

To install and setup NB_Store you should: This is all you need to do to get a basic store to work. Additional modules NB_Store_MiniCart and NB_Store_OrderHistory can also be setup as you wish.

Settings Administration

In Store Manager Menu the "Settings Admin" allows you to setup email address, roles, limits, etc..
The "Host Only" restricts access to just the host user.

NameDescription
administrator.email Email address of the store administrator, error messages will be sent to this email address.
buybutton.text Text to be displayed by the buy button on products. If left blank the resx file text is used.
cheque.provider assembly name of the cheque provider for the store checkout. Usually this will only be updated from the checkout settings.
chqpayment.emailsubject Subject of the email that is sent when a client pays by cheque.
country.list List of countries to be allowed in this portal. (e.g. "France,United Kingdom"). To create bespoke countries for different language create a new country list in DNN called "StoreCountry.(CountryCode)" e.g. StoreCountry.fr-FR
gateway.loadimage File path of the GIF image that is displayed when proccessing is passed to the bank gateway.
gateway.provider assembly name of the bank gateway provider for the store checkout. Usually this will only be updated from the checkout settings.
manager.role Name of the store manager role.
managerlite.role Name of the LITE store manager role.
merchant.culture Merchant culture string e.g.(fr-FR for France), this will set the language of the merchant.
merchant.email Merchant email address, all orders and reports will be sent to this email address
ordershipdate.days Estimated amount of days when an order will be shipped. The amount of days entered here will be added to the current date and placed in the [Order:ShipDate] field, when an order is created.
ordershipped.emailsubject Email subject when a order is shipped.
ordersreport.subject Email subject of the orders report.
ordersreport.xsl File Path of the orders report xsl.
ordervalidated.emailsubject Email subject of the validated order email.
paymentOK.emailsubject Email subject of the order confirmation email.
paymentunverified.emailsubject Email subject of the order confirmation email, when a order can not be validated automatically.
PayPal.gateway Paypal configuration settings
product.limit Sets the product limit for the store.
productlite.limit Sets the product limit for the LITE store.
SIPS.exepath Directory path of the SIPS response.exe & request.exe
SIPS.gateway SIPS configuration settings
store.email Email of the Store, all emails will be sent from this address.
image.resize Will resize a product image on upload to the specified size (450px default), if the image is smaller than the value specified the porginal size is used. If set to "0" resize of image is turned off.
image.quality Sets the quality of the image on resize, default is 85. Valid ranges are 1 - 100.
zeroprice.text Text that will be used in the product list if the price is zero. If this setting is left blank then the 0.00 is displayed
purgecartmins Number of minutes a cart will stay in the database before it is deleted (Default 10080). The Store Scheduler needs to be setup for this to work.
purgeordermins Number of minutes an uncompleted order will stay in the database before it is deleted (Default 2880). The Store Scheduler needs to be setup for this to work.
lockstockoncart If set to true any products placed into the cart will be taken into account when calculating stock levels, Portal Wide. Effectivly meaning the stock is not available to purchase by someelse when a product is placed in the basket, By default NB_Store only locks the stock when an order starts processing.
productqty.limit Sets the maximum qty allowed to be entered into the cart for a single product. (Default 999999) If set to less than 21 a dropdown list will be used for the Qty input.
minimumcarttotal.limit Sets the minimum purchase cost that needs to exist in the cart before a purchase can be made, the template "minimumcarttotal.text" will be displayed if the cost is not reached and the customer goes to the cart. Must be numeric, language specific also. (The setting is not automatically created in NB_Store.)
lightboxgallerytemplate.name Name the the template to use as the lightbox gallery template. if setting DOES NOT EXISTS "nyromodalgallery.template" will be used.
lightboxtemplate.name Name the the template to use as the lightbox template. if setting DOES NOT EXISTS "nyromodal.template" will be used.
productlistjs.includes CSV List of javascript files to be included when the product list module is displayed. Files should be placed in "/DesktopModules/NB_Store/js"
productlistcss.includes CSV List of css files to be included when the product list module is displayed. Files should be placed in "/DesktopModules/NB_Store/js"
productliststartupjs.includes List of javascipt templates that will be registered as startup scripts.
productlinksoncart.flag If set to true products listed on the cart have a link back to the website. By default this flag is set to true. (The setting is not automatically created in NB_Store.)
currency.culture The culture code to be used to display currency in the store. (The setting is not automatically created in NB_Store, the default will be the merchant culture.)

Country Lists

The country lists displayed throughout the store have been designed to default to a DNN list called "StoreCountry.(CountryCode)"  if no list by this name exists in the store then the DNN "Country" list is used. Also if you enter a "country.list" in the store settings, only the countries in the "country.list" will be displayed in the dropdown. The names in the "country.list" must match the names in the DNN list used in order to be displayed.


Template Administration

In Store Manager Menu the "Template Admin" option will allow you to setup your store with the text, emails and product formats that you wish.

Template List

TypeNameDescription
.email chqpayment.email Email that will be sent when a client pays by cheque.
.email ordershipped.email Email sent when the Manager of the store clicks the shipped button from the edit order page.
.email ordervalidated.email Email sent when the Manager of the store clicks the validated button from the edit order page.
.email paymentOK.email Email sent to client when payment has been accepted.
.email paymentunverified.email Email sent to client when payment has been accepted, but paypal has been unable to verify.
.template lightbox.template Used in productlist and productdetail to display image in lightbox. [TAG:IMAGELIGHTBOX]
.template lightboxgallery.template Used in productlist and productdetail to display image in lightbox. [TAG:GALLERY#]
.template noimage.template Used in productlist and productdetail to display noimage when lightbox token is used but no image exist. [TAG:IMAGELIGHTBOX]
.template noimagegallery.template Used in productlist and productdetail to display noimage when lightbox token is used but no image exist. [TAG:GALLERY#]
.template minicart.template Template to be show in the minicart module
.template minicartempty.template Template to be show in the minicart module, when cart is empty
.template order.email.template Template that can be used to display order details in other email templates.
.template order.text.template Template that can be used to display order details in other text templates.
.template productdetail.template Template used to display product list.
.template productlist.template Template used to display product detail.
.template nosearchresult.template Template used to display when a product search has no products returned.
.template soldoutimg.template Template used when token [TAG:SOLDOUTIMG] is used in the product list, if the product stock qty = 0 the template will be displayed.
.template productxmldata.template Template to create bespoke fields for product data.
.text chqpayment.text Text displayed after client has payed by cheque.
.text emptycart.text Text displayed when a client views an empty cart.
.text extradetail.text Message displayed above the extra detail textbox on the checkout.
.text gatewaymsg.text Message displayed above the credit card payments.
.text logintext.text Text displayed when the client goes to the checkout, but has not logged in.
.text orderprint.text Template of order when client or manager requests a printed invoice.
.text orderview.text Template of order when client or manager views order.
.text paymentFAIL.text Text displayed when payment has failed.
.text paymentinprocess.text Text displayed when a client tries to pay for an order already in process.
.text paymentOK.text Text displayed when payment successful.
.text paymentSECURITY.text Text displayed if order doesn't match userid.
.text productlimit.text Text displayed if manager tries to add a new product, when product limit has been reached.
.text specialshipping.text Text displayed if shipping can't be calculated. If you want shipping charge disabled set the shipping free limit to "0".
.text minimumcarttotal.text Text displayed if the minimum purchase price (set by the "minimumcarttotal.limit" setting) has not been reached. Use "[TAG:CARTMINIMUM]","[TAG:CARTTOTAL]" token to display value in message.
.tracktemplate *.tracktemplate Template to create shipping tracking code links. e.g. "ups.tracktemplate"
.shiptemplate *.shiptemplate Template to be displayed as the shipping option text if more than one method exists.
.code nyromodellightbox.code JS Code to be added as nyomodal startup script
.code *.code JS Code to be added as startup script for any javascipt, list of values can be specified in the "productliststartupjs.includes" setting.

Template Replacement Tokens

General Tokens

[Order:OrderID]
[Order:UserID]
[Order:PortalID]
[Order:OrderNumber]
[Order:ShortOrderNumber]
[Order:OrderDate]
[Order:ShipDate]
[Order:ShippingAddressID]
[Order:BillingAddressID]
[Order:AppliedTax]
[Order:ShippingCost]
[Order:OrderIsPlaced]
[Order:OrderStatusID]
[Order:PayType]
[Order:CalculatedTax]
[Order:NoteMsg]
[Order:VATNumber]
[Order:Discount]
[Order:PromoCode]
[Order:Total]
[Order:BankAuthCode]
[Order:TrackingLink]
[Order:DetailRows]
[Order:ShippingMethod]
[Order:TrackingLink]
[SAddress:AddressID]
[SAddress:PortalID]
[SAddress:UserID]
[SAddress:AddressDescription]
[SAddress:AddressName]
[SAddress:Address1]
[SAddress:Address2]
[SAddress:City]
[SAddress:RegionCode]
[SAddress:CountryCode]
[SAddress:Country]
[SAddress:PostalCode]
[SAddress:Phone1]
[SAddress:Phone2]
[SAddress:PrimaryAddress]
[SAddress:CreatedByUser]
[SAddress:CreatedDate]
[SAddress:OrderID]
[BAddress:AddressID]
[BAddress:PortalID]
[BAddress:UserID]
[BAddress:AddressDescription]
[BAddress:AddressName]
[BAddress:Address1]
[BAddress:Address2]
[BAddress:City]
[BAddress:RegionCode]
[BAddress:CountryCode]
[BAddress:Country]
[BAddress:PostalCode]
[BAddress:Phone1]
[BAddress:Phone2]
[BAddress:PrimaryAddress]
[BAddress:CreatedByUser]
[BAddress:CreatedDate]
[BAddress:OrderID]
[Cart:TaxAmt]
[Cart:TaxAppliedAmt]
[Cart:ShipAmt]
[Cart:DiscountAmt]
[Cart:TotalAmt]
[Cart:OrderTotal]
[Cart:Qty]
[OrderUser:Email]
[OrderUser:username]
[OrderUser:FirstName]
[OrderUser:LastName]
[OrderUser:DisplayName]
[Currency:Symbol]

lightbox.template Tokens

[Product:ImageThumb]
[Product:ImageURL]
[Product:ImageDesc]

Productlist.template and Productdetail.template Tokens

[TAG:PRODUCTNAME]
[TAG:PRODUCTREF]
[TAG:SUMMARY]
[TAG:DESCRIPTION]
[TAG:IMAGE]
[TAG:MANUFACTURER]
<a href="[TAG:LINK]">Link</a> - create a hyperlink to the product detail page.
<a href="[TAG:LINKSIMPLE]">Link</a> - create a hyperlink to the product detail page without extra parameters.
[TAG:FROMPRICE] - Cheapest price of models attched to the product.
[TAG:FROMPRICECURRENCY] - Cheapest price of models attched to the product formatted as a currency.
[TAG:CURRENCYSYMBOL]
[TAG:QTYREMAINING]
[TAG:SALEPRICE]
[TAG:EDITLINK] - Edit button appears if user has rights to edit the product list module.
[TAG:ADDTOBASKET] - Buy button
[TAG:MODELS:{properties xml}] - Combo list of models if more than one exists, if not nothing will be displayed.
[TAG:MODELSRADIO:{properties xml}] - Rabdio Button list of models if more than one exists, if not nothing will be displayed.
[TAG:OPTIONNAME1]
[TAG:OPTION1:{properties xml}]
additional [TAG:OPTION<Number>:{properties xml}] can be added as yout wish. The number will match the sort order of options
[TAG:OPTIONRADIO1:{properties xml}]
additional [TAG:OPTIONRADIO<Number>:{properties xml}] can be added as yout wish. The number will match the sort order of options
[TAG:OPTIONTEXT1:{properties xml}]
additional [TAG:OPTIONTEXT<Number>:{properties xml}] can be added as yout wish. The number will match the sort order of options
[TAG:OPTIONVALRANGE:{properties xml}] - Range validator for options
[TAG:OPTIONVALREGX:{properties xml}] - Regular Expression validator for options
[TAG:OPTIONVALREQ:{properties xml}] - validator for options
[TAG:OPTIONVALSUMMARY:{properties xml}] - validator for options
[TAG:QTY:{properties xml}] - Product Quantity textbox.
[TAG:IMAGELIGHTBOX] - this tag will be replaced with the "lightbox.template" template.
[TAG:GALLERY1] - this tag will be replaced with the "lightboxgallery.template" template.
additional [TAG:GALLERY<Number>] can be added as yout wish.
[TAG:GALLERYURL1] - this tag will be replaced with the image url.
additional [TAG:GALLERY<Number>] can be added as yout wish.
[TAG:GALLERYID1] - this tag will be replaced with the image id. Usually for use with the thumbnail resizer.
additional [TAG:GALLERY<Number>] can be added as yout wish.
[TAG:DOC1:{properties xml}] - this tag will be replaced with the download document icon.
additional [TAG:DOC<Number>] can be added as yout wish.
[TAG:DOCLINK1:{properties xml}] - this tag will be replaced with the download link.
additional [TAG:DOCLINK<Number>] can be added as yout wish.
[TAG:DOCPURCHASED1:{properties xml}] - this tag will be replaced with the download document icon.
additional [TAG:DOC<Number>] can be added as yout wish.
[TAG:DOCPURCHASEDLINK1:{properties xml}] - this tag will be replaced with the download link.
additional [TAG:DOCLINK<Number>] can be added as yout wish.
[TAG:IMAGEURL]
[TAG:THUMBURL]
[TAG:THUMBSIZE]
[TAG:MODULEPATH]
[TAG:TRACKINGCODE]
[TAG:SOLDOUTIMG] - If the product stock qty = 0 this token will display the "soldoutimg.template" template.
[TAG:STOCKPERCENT] - Displays the percantage of stock left, based on the Max Stock amount.

{properties xml} = A list of properties that can be linked to the control created. These porperties MUST be case sensitive and match to normal asp.Net properties.
E.g.
<prop CssClass="MyCssClass" RepeatColumns="2" RepeatDirection="1" />

Examples:
[TAG:QTY:<prop ErrorMessage="Invalid Quantity"/>]
[TAG:OPTIONRADIO1:<prop CssClass="MyCssClass" RepeatColumns="2" RepeatDirection="1" />]
[TAG:OPTIONTEXT3:<prop CssClass="MyCssClass" Width="50" MaxLength="3" ToolTip="Option3"/>][TAG:OPTIONVALREQ:<prop ErrorMessage="Invalid Option3 must be entered" Text="*" ControlToValidate="OPTIONTEXT3" />][TAG:OPTIONVALRANGE:<prop ErrorMessage="Invalid Option3 Text" Text="*" Type="Integer" MaximumValue="500" MinimumValue="0" ControlToValidate="OPTIONTEXT3" />]
[TAG:XMLDATA:<xpath>]

NOTES:
- The ToolTip property of the textbox is used to display option in the cart
- When using the Textbox uncheck the "Increment Cart:" option in product list settings, otherwise text inputs may be lost when multiple items are added to the cart.
- To ensure formatting of case and {properties XML} is uneffected by editor re-formatting use the edit with Textbox option, in the template editing admin.
- For downloadable item use the [TAG:DOCPURCHASED1] and [TAG:DOCPURCHASEDLINK1] tokens. The links to download will only appear when the user has orders in the their order history on status "Payment OK" or "Closed", if the order is on any other stauts the link will not be displayed.

logintext.text Tokens

These tokens can be used to replace the javascript call to register,login and also to skip the login for stores that do not require a login to purchase.
[TAG:Register]
[TAG:Login]
[TAG:SkipLogin]

Special Templates Tokens

[Template:<name of template>]

* NB_Store will look for a template that exists by the name and insert it into the calling template. Recursive template calling is supported to a depth of 4 levels.

lblEstShipDate.Text Tokens

This token can be found in the Checkout.ascx.resx file
[TAG:ESTIMATEDDATE]
This resource file entry allows you to put a estimated date of shipping onto the checkout.

Using No Stock Image Overlay Tokens

Ther [TAG:SOLDOUTIMG] can be used to display a image which overlays the product image when a product is out of stock.
Example:-

productlist.template

<div class="ImageHolder">
[TAG:SOLDOUTIMG]
<a title="[TAG:PRODUCTNAME]" href="[TAG:LINK]">
<div class="ThumbNail">[TAG:IMAGE]
</div>
</a>
</div>
[TAG:FROMPRICE] € [TAG:EDITLINK]

soldoutimg.template

<img alt="" class="SoldOut" src="/Desktopmodules/nb_store/img/soldout.png" />

css class needed

.ImageHolder{position: relative;top:0px;left:0px}
.ThumbNail img{position:relative;z-index:0;}
.SoldOut{position:absolute;z-index:2000;}

Using Shipping Tracking Code Tokens

Tracking codes for shipping can be used to create a link to the postal service website.
1. Create a template called "*.tracktemplate" e.g. ups.template

<a href="http://wwwapps.ups.com/WebTracking/processInputRequest?sort_by=status&tracknums_displayed=1&TypeOfInquiryNumber=T&loc=en_US&InquiryNumber1=[TAG:TRACKINGCODE]&track.x=0&track.y=0" target="_blank" >Tracking Code</a>

2. Link the tracking template to the shipping method. Shipping>Methods menu
3. Use the [Order:TrackingLink] token in the "order.text.template" or "order.email.template" to display the link created.
4. Enter the tracking code into the order by editing the order from the Orders menu.

Use [Order:ShippingMethod] token to display the shipping method selected.

Category Menu Tokens

Category Menu tokens can be used to display the category menu in a html format.

[TAG:CATEGORYNAME],[TAG:PRODUCTCOUNT]

These tokens are used in the categorymenu module settings in the "Accordion Name Template", "Tree Name Template", "Root Name Template" and "Sub Name Template"

Setup Custom Javascript

Using the token system it is possible to load and configure jQuery javascript to run on you porduct list / Detail page.

The example below shows how the jQuery Lightbox has been setup, but this method could be alters to use your own version of any jquery plugin:

Example:
1 - Move you js script into the NB_Store/js folder. (In the case of jquerylightbox, it is installed with NB_Store)

2 - Create "jquerylightbox.template" template.

e.g.

<table height="302" width="302" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff">
  <tbody>
  <tr>
   <td valign="middle" align="center" style="border: 1px solid rgb(216, 208, 187);">
    <a href="[Product:ImageURL]" class="jquerylightbox" rel="GRP1" title="[Product:ImageDesc]">
     <img border="0" src="[Product:ImageThumb]" alt="[Product:ImageDesc]" />
    </a>
   </td>
  </tr>
  </tbody>
</table>

3 - Create "jquerylightboxgallery.template" template.

e.g.

<table height="122" width="122" cellspacing="0" cellpadding="0" border="0" bgcolor="#ffffff">
  <tbody>
  <tr>
   <td valign="middle" align="center" style="border: 1px solid rgb(216, 208, 187);">
    <a href="[Product:ImageURL]" rel="GRP1" class="jquerylightbox" title="[Product:ImageDesc]">
     <img border="0" src="[Product:ImageThumb]" alt="[Product:ImageDesc]" />
    </a>
   </td>
  </tr>
  </tbody>
</table>

4 - Tell NB_store to loaded up you custom js by creating the "productlistjs.includes" settings, the values in this setting should be a "csv" list of file names, that exist in the NB_Store/js directory.

5 - Tell NB_store to loaded up you custom css by creating the "productlistcss.includes" settings, the values in this setting should be a "csv" list of file names, that exist in the NB_Store/js directory.

6 - Tell NB_store to loaded up you custom js startup script by creating the "productliststartupjs.includes" settings, the value" list of file names, that exist as templates in NB_Store.

7 - Create any needed js startup scripts in the NB_Store templates menu. (Names have been specified in step 6)

e.g.

jQuery(function() { jQuery('.jquerylightbox').lightBox(); });

or if runnig DNN4 the jquery noconflict has been setup so use "j":

<script language='javascript' type='text/javascript'> j(function() { j('.jquerylightbox').lightBox(); }); </script>

8 - Specify the template to be used as the lightbox template in the "lightboxtemplate.name" setting. The name must exist as a template in NB_Store.ate to be used as the lightbox gallery template in the "lightboxgallerytemplate.name" setting. The name must exist as a template in NB_Store.br />

The required JS should now work in the products list module.

For Javascript in the category menu (Treeview) you can setup includes the same using "categorymenujs.includes","categorymenustartupjs.includes" and "categorymenucss.includes".

Importing Javascipt Templates

NB_Store also has some default javascript settings that can be imported. These can be found in /Desktopmodules/NB_Store/templates

"JQueryAccordionMenu_Settings.xml" - javascipt settings needed to run the accordion menu
"JQueryTreeViewMenu_Settings.xml" - javascript settings needed to run the TreeView Menu
"JQueryMenu_Settings.xml" - javascript settings needed to run the both the accordion and TreeView Menus
"JQueryLightBox_Settings.xml" - javascript settings needed to run the JqueryLightbox
"ManagerMenuDefault.xml" - This file can also be imported and is a import for all default settings.

Import can be done via the "Back Office>Admin>Import Settings" option. Check the overwrite option, select the settings import file your want and click "Import"

To make your our settings templates, export the settings "Back Office>Admin>Export Settings" and edit the exported xml as required.

After changing these settings you may need to restart the DNN application to clear the cache and make sure you pickup the changes. "Back Office>Admn>Restart DNN"

Special Authorized User Templates

If you require a different "productlist" and "productdetail" template to be displayed when a user is logged on then you can create a settings called "usertemplates.flag" and set it to "1".
If this flag is set to true the the store will search the templating system for the template specified in the settings of the productlist module, but with an appendix of "user", if the template exists then the "user" template will be used.

For example:
If we have a productlist template called "myproductlist.template" specified in the productlist module settings and the user is logged in then the "myproductlist.templateuser" template will be used. if the user is not logged in the normal specified "myproductlist.template" will be used.


Shipping Rates

The shipping rates that can be set are split into 6 elements, each element is used to calculate the shipping based on the details entered. The actual shipping applied is then calcualted using the shipping formula.

Methods

This allows you to create multiple shipping methods that are displayed as shipping options in the cart. The first method in the list is the default shipping.

By Quantity

This allows you to setup shipping based on the quanity of products in the cart.

By Price

Allows shipping costs by price range.

By Weight

Allows shipping costs to be setup by product weight ranges.

Extra per Country

Allows an extra costs to be added based on the shipping country.

Extra per product

Each product can have a special added shipping cost applied.

Free shipping limit

Allow you to enter a free shipping limit by price, if this is reached then shipping amount will be zero, regardless of anyother settings.

Shipping Formula

Each element in the shipping is calculated, after which the actual shipping if determined by applying a simple formula

  • Calculate cost for Weight, Quantity or Price.
  • Take the lowest cost between price and qty.
  • Take the weight cost if more than price and qty.
  • Add any extra costs for specific products.
  • Add any extra costs for shipping country.
  • Set costs to 0.00 if passed the free shipping limit.

If the shipping amount cannot be calculated then a "-1.00" is returned from the calculation. In the case that a shipping method cannot be calculated is will not appear in the list of available shipping methods.
In the case that NO shipping can be calculated a "-1.00" may appear as the calcuated shipping, in these cases you must ensure that a shipping cost can be calculated by the default shipping. If no shipping is to be calculated (shipping included in price) then you must set the default shipping method to have a "Free Limit" of "0.00". (Be careful that if you want to remove a "Free Limit" you use the deleted button, setting it to zero will always return a shipping cost of "0.00")


Tax Rates

The tax rate system can be set in 3 modes:

  • No Tax.
  • Tax included in the unit price.
  • Tax NOT included in Unit Cost.

Tax rates can be entered at 3 levels, Store level (Default), Category Level and product level. The tax rate the applies to each product is calculated in order of Product>Category>Default.


Export/Import

The store supports the Export of products, categories, images and orders. And the Import of Products, categories and product images.
For large imports you may need to update the web.cong to allow for the execution, in which case you need to change the httpRuntime section to something like this:
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="8192" requestLengthDiskThreshold="8192" executionTimeout="6000"/>

Export

  • Products, categories Tax ans Shipping Rates exported in XML format.
  • Order exported in XML format.
  • Images Exported in ZIP format.
  • Documents Exported in ZIP format.

Import

  • Import products as existing products, this will search for a product with a matching product reference, if found it will update this product, if not found it will create a new product.
  • Import products as new products.
  • created categories for the products, if not selected all imported products will be created in a default "Imported" category.
  • Import Shipping Rates. If selected all current shipping rates will be removed. (Product level shipping weights and costs will be imported with the products)
  • Product images can be imported using a zip file. If the size of the zip file is large, depanding on the portal and web.config settings the zip file may not upload.
  • Documents can be imported using a zip file. If the size of the zip file is large, depanding on the portal and web.config settings the zip file may not upload.

Category Administration

Categories and sub categories can be maintained from this page. Categories can be setup in multiple languages.


Product Administration

Products in the store have 3 levels of detail:

  • General Product Details
    • Manufacturer
    • Product Name
    • Product Ref
    • Summary
    • Tax Category
    • Multiple Product Categories
    • Description
    • Archived - Remove the product from the store, but do not delete it.
    • Featured - Mark the product to display in the featured product list.
    • Deleted - If a product is deleted but exists in an order the product is marked for deletion when the orderis archived from the system.
    • Product Images - Any amount of images can be uploaded and linked to a product, Images upload will be resized to web format and to a width set by the "image.resize" setting.
    • Product Documents - Any amount of documents can be uploaded and linked to a product, a single document can be linked to any number of products.
  • Product models
    • Model Ref
    • Name
    • Barcode
    • Weight
    • Unit Cost
    • Stock quantity - If set to "-1" the stock control is turned off.
    • Sort order to be displayed in the dropdown list.
  • Product options
    • Options - Options can be added to a product.
      • Option Value - If only one option value is added to a product option, the option appears as a checkbox.
      • Option cost - The additional cost of the option that will be added to the product.
      • Sort order to display in the options dropdown list.

Products can be copied from the product administration, a copy product will copy all details, models and options. Images will reference the same images as the copied product.

Creating Bespoke Product Fields

NB_Store allows your to define your own additional products fields. This is done by creating a template called "productxmldata.template" and specifying your required fields.

Example:

Step 1: Create a "productxmldata.template".
In the Utilities>templates Menu create a new template called "productxmldata.template" and enter the example code below

TextBox : [<tag id="txtTextBox" type="textbox" width="60" cssclass="normal" maxlength="20" />]
DropDown : [<tag id="dlDropDown" type="dropdownlist" cssclass="normal" data="list1;list2;list3;list4;list5" />]
Checkbox : [<tag id="chkCheckbox" type="checkbox" cssclass="normal" text="Checkbox" />]
Radio : [<tag id="radRadio" type="radiobuttonlist" cssclass="normal" data="list1;list2;list3;list4;list5" RepeatColumns="5" />]

Step 2: Create Display Template Tokens in your product list or product detail template.

[TAG:XMLDATA:genxml/textbox/txttextbox]
[TAG:XMLDATA:genxml/checkbox/chkcheckbox]
[TAG:XMLDATA:genxml/dropdownlist/dldropdown]
[TAG:XMLDATA:genxml/radiobuttonlist/radradio]

Downloadable Products

NB_Store supports downloadable products.

How it works.

When a client purchases a downloadable product, the model ID is saved in the clients order.
If the template token [TAG:DOCPURCHASED] or [TAG:DOCLINKPURCHASED] is used in the product detail or list template, NB_Store will check the clients orders for a matching model ID.
If an order exists and has a status of "Payment OK" or "Closed" the document Link will be displayed when the client views the product detail.

NOTES:
- A link for the product details page now exists in the client order email. A message of how to download a product can be added to the "order.text.template" and "order.email.template" templates.
- Downloadable products are only supported at product level. (i.e. Only one model should exist for downloadable products.)
- If using downloadable products the manager should make sure cancelled or unpaid orders are not moved to the closed stauts, as this will allow the client to download without paying. In these cases the order should be moved to archived directly.

Products Image Resizing

Image resizing can be controlled by using the "image.resize" and "image.quality" settings.
As default image.quality is set to 85, if you wish to have higher quality images it is recommended to use 95. 100% quality images may be to large (kb) for normal web operation.

Image settings for advanced image resizing.
 
Settings "image.advanced" The value of this settings is a list of options in order of "InterpolationMode","SmoothingMode","PixelOffsetMode","CompositingQuality"
example:

7,2,0,0

would give

InterpolationMode = HighQualityBicubic
SmoothingMode =HighQuality
PixelOffsetMode =Default
CompositingQuality =Default

Values of advance setting possible are:

InterpolationMode (NB_Store Default=HighQualityBicubic)
-1 = Invalid ,0 = Default, 1 = Low, 2 = High, 3 = Bilinear, 4 = Bicubic, 5 = NearestNeighbor, 6 = HighQualityBilinear, 7 = HighQualityBicubic
SmoothingMode (NB_Store Default=HighQuality)
-1 = Invalid, 0 = Default, 1 = HighSpeed, 2 = HighQuality, 3 = None, 4 = AntiAlias
PixelOffsetMode (NB_Store Default=Default)
-1 = Invalid, 0 = Default, 1 = HighSpeed, 2 = HighQuality, 3 = None, 4 = Half
CompositingQuality (NB_Store Default=Default)
-1 = Invalid, 0 = Default, 1 = HighSpeed, 2 = HighQuality, 3 = GammaCorrected, 4 = AssumeLinear
NOTE: The Advance settings has a very fine effect on the image, for normal processing use the image.resize and image.quality settings to get the effect you need.


Stock Administration

Stock levels for a product are entered at model level.  Each model of a product can have a stock quantity entered against it or a "-1" to turn off the stock control for the product.  These stock levels can be edited from the product admin page or the stock / price list page.  When a product reaches 0 stock the product will show a "Out of Stock" message if the user view the product.  Products that exist in the users cart also are taken into account when calculating the stock levels for a product.

Max Stock level - This is the maximum stock for a model, it is used to calculate the percentage of stock left. If the stock is updated to a value greater than the current max then the max field is also updated.


Client Administration

Because in DNN only the Administrator role can a edit user, a simple user maintenace control has been created, with this your can update user email address, reset password, unlock users and view the orders for a client.


Order Administration

You can use the order administration to view details of an order, change the status, update the shipping date, send a validated order email, send order shipped email and print the order.


Payment Gateways

The parameters of the gateways can be changed from the Settings menu, these settings are now in XML and it is recommended to upgrade any old text based settings (Which will still work!) into the new XML format. An example of each settings can be found the documentation directory of the NB_Store module.

Cheque

The Cheque gateway provider is created as a integral part of NB_Store, it can be turn off from the checkout settings, but has no other modifiable settings.

PayPal

The parameters of the Paypal gateway can be changed from the Settings menu using the "PayPal.gateway" setting.
The [ORDERID] tag will be replaced by the internal order number.

NOTES:
paymentURL=https://www.sandbox.paypal.com/xclick (change to acutal paypal url, this is the test one, best to use this in order to get it up and running)
verifyURL=https://www.sandbox.paypal.com/cgi-bin/webscr (As Above!)
PayPalID=paypal@MyWebsite.com
CartName=TEST
ButtonImageURL=http://localhost/Desktopmodules/NB_Store/img/paypal60x38.gif (http://localhost/ needs to be your website root )
Currency=EUR
ReturnURL=http://www.MyWebsite.com/Cart/tabid/56/stg/5/ordID/[ORDERID]/Default.aspx?PayPalExit=RETURN (This URL needs to be set as your cart page url, with the ?PayPalExit=RETURN added on the end, stg/5 param tels thecart what response to do)
ReturnCancelURL=http://www.MyWebsite.com/Cart/tabid/56/stg/5/ordID/[ORDERID]/Default.aspx?PayPalExit=CANCEL (As Above!)
ReturnNotifyURL=http://www.MyWebsite.com/Cart/tabid/56/stg/4/Default.aspx (As Above!, but with stg/4.)
MerchantLanguage=fr

SIPS

The parameters of the SIPS gateway can be changed from the Settings menu using the "SIPS.gateway" and "SIPS.exepath" settings.
Tags : [ORDERID]
[ORDERID]
[TRANSID]
[ORDERNUMBER]
[ORDERAMOUNT]
[CUSTOMERID]
[LANGUAGE]
[PROMOCODE]
[CARTID]

NOTES:
For a detailed explanation of the SIPS settings look at the SIPS documentation. The only difference is that the recommended method of implementing the settings in NB_Store is to use a XML format.


Lite and Normal Modes

The Store can be ran in 2 mode:

  • Normal - All functionality of the store is presented to the manager.
  • Lite - The manager has a cut down version of functionality which makes administration easier for client who don't required the product options, multiple models on a product, shipping and taxes. This is ideal for product catalogs.

Cart and Checkout

The Store Cart and Checkout have been joined to provide a single module.

Process Chart

View Cart --> Enter Address --> View Checkout-- |-->
|
|---
Direct to Bank

--------------
-->

-->
Return to Store

Pay by Cheque
  • View Cart - When a user views their cart they can select a country for shipping, change product quantity and recalculate the cart. This gives them a total cost including shipping, before going to the chckout.  On a recalcuate the stock levels are checked and adjusted if required, if the quantity has been set to 0 then the item is removed from the cart.  The shipping is recalculated based on the shipping rates set.
    If the VAT registered field is visible and the user has entered a value that has a different lead country value from the merchant country code, the VAT is removed from the order. (No validation of the validity of the VAT number is done by the store)
    The discount code field is currently not implemented by the store.  This is designed for future needs.
  • Enter Address - The Address form takes the user default address and email from the DNN user profile.  If the user ticks the checkbox(s) to set the entered field as a default address/email the DNN user profile is updated.  When the next button is click the order is created by copying the cart to a new order in the database, the addresses are also saved against the order at this time.  So if the user changes address after the order, the address on the order will not change.  During the order creation process the cart is validated against store levels and deleted and archived product, product quantities are ajusted as required.  This could mean the view of the order is different to the original cart view or even could mean the cart is now empty. 
  • View Checkout - A view of the order and total is displayed to the user along with the prompts to link to the bank or pay by cheque.
  • Direct to Bank - The store is directed to the bank based on the gateway provided selected. (An Email based on the "paymentOK.email" template is sent to the client and also to the email address setup in the "merchant.email" settings, this email is dealt with by the gateway provider in the "AutoResponse" procedure.)
  • Return to Store - The "paymentOK.text" template is displayed to the user. "paymentFAIL.text" if the payment failed.
  • Pay by Cheque Message - The "chqpayment.text" template is displayed to the user.  An Email based on the "chqpayment.email" template is sent to the client and also to the email address setup in the "merchant.email" settings

Scheduler

The store has scheduler jobs that can be activated. By default these jobs are not setup when you install the module.

NEvoWeb.Modules.NB_Store.StoreOrderReport,NEvoweb.DNN.Modules.NB_Store
The purpose of this schedule job is to produce a report every day which is emailed to the store merchant email address.
This report then provides a daily overview of the site orders, also the fact that the report is sent daily ensures the store email functionaity is working.

Time Lapse: 1 hour*
Retry Frequency: 2 hours

*The functionality of the report saves the last runtime in the store setting, and will only run the report once a day.

The report is produced using XSL the path of the "ordersreport_<Culture>.xsl" which is uploaded into the module directory when it is installed, must be entered in the store settings. This defaults to the module directory, but is modifiable so different portals can have different reports.

NEvoWeb.Modules.NB_Store.CleanUpCarts,NEvoweb.DNN.Modules.NB_Store
This schedule job will delete carts from the database that are older than 7 days and removed uncompleted orders that are older that 24 hours.

SPROC:NEvoweb_NB_Store_Cart_DeleteOldCarts

delete from dbo.[NB_Store_Cart]
where DateCreated < dateadd(day,-7,getdate())

delete from dbo.[NB_Store_Orders]
where OrderDate < dateadd(day,-1,getdate())
and OrderNumber = ''

Time Lapse: 1 day
Retry Frequency: 2 days


Product List

Multiple product lists can be setup on a single portal. This allows for a list showing featured products only, different skins to display product lists or product details and different pages showing different categories. The control of how these modules interact can be done from the settings of each module. The product return tab after purchase can be set to the cart or the tab from which the user selected to view the product (Using the RtnTab query string parameter). The default return tab in the settings is currently overwritten by the query string param, but has been left in for future development.

Search Module

The NB_Store_Search module is a replacement for the DNN Search module. Using this modules allows the product list to act as the search results module for the DNN search index. The "nosearchresult.template" template is displayed when no products are found by the search.

Order By

In the product list settings a default order can be selected. Also if a queryString parameter of "orderby" is added the product list sort by the select value, a "desc" parameter can also be added to give a decending order.

  • orderby=man [Order by manufacturer]
  • orderby=ref [Order by product ref]
  • orderby=name [Order by name]
  • orderby=price [Order by price]
  • orderby=cdate [Order by Created Date]
  • desc=1 [Descending]

Host Options

From the Store Manager Menu, a number of option are available if logged on as host.

ClearDown Store

This option clears all products, categories, carts and orders from the store. In order to do this you must enter the host password.

Store Validation

Store validation will run a number of checks on the store to ensure the data integrity. To fix any errors found check the fix errors checkbox. Any errors fixed will be logged in the audit logs.

Product Image Validation - This will check to see if the imagepath in the NB_Store_ProductImage table matches the Server Root MapPath + imageURL.  If it does not and the FIX error has been checked, the imagepath is updated with the Server Root MapPath + imageURL path, if this file doesn't exist the productimage record is removed from the database.
Product Document Validation - This will check to see if the document path in NB_Store_ProductDocs tables matches the Server Root Path, if not the the FIX will change to path to the correct one. If the document doesn't exists it will be removed from the database.
Product Langugae Validation - This will check to make sure product descriptions and options exist in all languages.  Used if a website has a lanugae added.
Category Language Validation - This will check to make sure category descriptions exist in all languages.  Used if a website has a lanugae added.

Import Settings

Importing settings and templates can now be done through this option. The drop down list show any xml file in the NB_Store/templates directory, by selecting a import file Template, settings and Status table values can be imported. The format of the import files is exactly the same of the export of the module.

TIPS:
- To upgrade your settings and templates to add any new ones which may appear in later releases of NB_Store, import the "ManagerMenuDefault.xml" with the Overwrite option unchecked.
- To create your own template set export your templates using the module export, edit it as required, and place it in the NB_Store/templates directory.
- To change the laguage of order status table edit a exported module file and import it with the changes, uncheck the overwrite option. (Status Names are always imported)

Audit Logs

The Store will automatically create an audit log for changes made to the Settings, Templates, Tax Rates and Shipping Rates.
The audit logs are saved in a folder called LogFiles in the Portal root and contain,
"datetime - usename - controlname - procedurename - xml of objject changed".
The SIPS bank gateway will also use this audit log when payments are made.