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
- Basic Install and Setup of NB_Store
- Settings Administration
- Shipping Lists
- Template Administration
- Template List
- Template Replacement Tokens
- General Token
- lightbox.template tokens
- Productlist.template and Productdetail.template Tokens
- logintext.text Tokens
- Special Templates Tokens
- lblEstShipDate.Text Tokens
- Using No Stock Image Overlay Tokens
- Using Shipping Tracking Code Tokens
- Category Menu Tokens
- Setup Custom Javascript
- Importing Javascipt Templates
- Special Authorized User Templates
- Shipping Rates
- Shipping Formula
- Tax Rates
- Export/Import
- Category Administration
- Product Administration
- Creating Bespoke Product Fields
- Downloadable Products
- Products Image Resizing
- Stock Administration
- Client Administration
- Order Administration
- Payment Gateways
- Cheque
- PayPal
- SIPS
- Lite and Normal Modes
- Cart and Checkout
- Scheduler
- Product List
- Search Module
- Order By
- Host Options
- ClearDown Store
- Store Validation
- Import Settings
- Audit Logs
Basic Install and Setup of NB_Store
To install and setup NB_Store you should:
- Install - Browse to the "Host/Module Definitions" page and select "Update New Module". In the file upload control browse for the the NB_Store module and click Upload custom Module.
- Setting up roles - Create a new role called "Manager" and another role called "ManagerLite"
- Create a Store Manager Menu - Add a new page to your website called "Store Menu". On this new page add the module NB_Store_ManagerMenu. Give module edit rights to the "Manager" and "ManagerLite" roles. (On the first loadup of the manager menu it will load the default settings and templates into the database.) TIP: To add content to the store start by adding categories, before products.
- Create Cart and Checkout - Add a new page to your website called "Cart". On this new page add the module NB_Store_Checkout. On the settings menu of the module specify your requirments, default settings are loaded the first time you enter the settings.
- Create ProductList - Add a new page to your website called "Shop". On this new page add the module NB_Store_ProductList. On the settigs menu of the module specify your requirments, default settings are loaded the first time you enter the settings.
- Create Category Menu -At the top of the "Shop" Page add the module NB_Store_CategoryMenu. On the settigs menu of the module specify your requirments, default settings are loaded the first time you enter the settings.
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.
| Name | Description |
| 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
| Type | Name | Description |
| .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.