Electronic Manual - SunnyShop
© SunnyScript - www.sunnyscript.com

 
Table of contents
 
Installation and configuration [go] Directory structure
[go] File transfer to the server
[go] Configuration
General information about shops [go] Successful shop planning
[go] Shop size vs. system resources
Administration panel [go] Admin menu
Shop settings adjustment [go] Edit shop parameters
[go] Consumers groups - overview
[go] Consumers groups - available consumers group settings (part 1)
[go] Consumers groups - available ... settings (part 2, payment methods)
Store management [go] Manage your own stores
[go] Create and edit stores (product tables)
[go] Create product table fields
[go] Edit or remove existing fields
[go] Category handling
[go] Table maintenance
[go] Product options (also price-/weight-/volume-affecting)
[go] Product time management
[go] Product associations
[go] Warehouse management and quantity handling
[go] Sale analysis
[go] Images / Binaries / Memos
[go] Temporarily blocking of product records
[go] User voting and comments of products
[go] Automatic backup generation (applicable to product & system tables)
[go] Re-randomization (applicable to product tables)
[go] Search requests statistics
[go] View, add, clone, update and delete product records
[go] Database import and export tools
Office tools management [go] Manage the office behind your shop
[go] Registered users database
[go] Order and payment tracking
[go] Invoice management
[go] Print address labels
[go] Send out mailings
Shop-frontend and template management [go] Access the shop-frontend
[go] Adjust product table parameters
[go] Shop-frontend customization with templates
[go] Available templates
[go] Customization of templates
Helpful hints and technical reference [go] Affiliate management with YourAffiliates
[go] Special order of product listings
[go] Advanced search features
[go] Collected technical notes and tips
[go] Forgot your admin password ?
[go] Shop-frontend and template translations
Customer services [go] Need help ? Contact the SunnyScript service department !

Smart tip: This handbook is also designed to be printed... set your printer's page orientation to landscape format, so there is enough space to place hand-written notes on the left and right margin easily.
 


 
Installation and configuration
 
SunnyScript offers an optional available installation service, if you don't want to install the software yourself.
Please contact our customer service department by e-mail for detailed information and pricing.
 
Directory structure...

The software can be installed at any place that allows the execution of CGI software: Most server systems provide a special directory called "cgi-bin" where you have to install the application, while others are not limited to a particular location.

In a common environment, we recommend to create a new sub-directory within the existing "cgi-bin" folder to separate the software from other already installed products.

Required "template.en" directory:

Inside the directory you desired for installation, please create a new sub-directory called "template.en". It's used to hold the content of "template.en" directory delivered with your software package.

Required "data" directory:

Inside the directory you desired for installation, please create a new sub-directory called "data". It's used to hold the content of "data" directory delivered with your software package.

Adjust path to Perl:

Open all program files (*.pl and *.cgi) in a text editor and change the first line "#!/usr/bin/perl" that it reflects the correct path to Perl 5 (or higher version) on your system. This is required to let your server know where the Perl interpreter is located.

Usage note: On most systems, /usr/bin/perl is already the default path to Perl and so no modifications are required.
 

File transfer to the server...

Upload all files to the created directories. If a ftp client is used, ensure to set the "ASCII transfer mode" for file submissions.

Detailed file table: Scheme: [filename | suggested place to upload (short description); file permission]:
 
Filename...
Description...
Filename...
Description...
* cgi-bin (program & data files); 755 template.en/* template.en (templates); 666
    data/* data (basic data files); 666

Important notes: Please double-check file permissions and transfer mode, otherwise the software may not work as intended. Depending upon the server configuration, different file permissions than the ones stated above may be necessary.

Smart tip: Our installation helper install.cgi makes it easier... just call it from your web browsing software (requires correct installation of this script) and it automatically checks your entire installation, adjusts permissions and fixes typical errors.
 

Configuration...

After you have uploaded all files, you may wish to start the admin panel first time to initialize the system parameters. In order to do so, please call admin.cgi with your favorite web browsing software:
 
Action to perform...
URL to call (location varies on your system, of course)...
Open admin panel http://www.sunnyscript.com/cgi-bin/ss/admin.cgi

Before you proceed, it is highly recommended to set an administration password. After this is done, access to the admin panel is granted only by authenticating yourself with the chosen password.

Now click on the button "Edit system parameters" and configure the shown parameters according your needs.

Usage note: Since all parameters are automatically filled with correct values, modifications on your side may not be required.

Directories and files:
 
Name of parameter to set...
Description...
CGI files directory
Example: /usr/www/cgi-bin/ss
Absolute path to the location of SunnyShop on your server.
"data" directory
Example: /usr/www/cgi-bin/ss/data
Absolute path to the location that holds databases and related files.
"binarydata" directory *
Example: /usr/www/cgi-bin/ss/bindata
Absolute path to the location that holds binary database content.
"templates" directory
Example: /usr/www/cgi-bin/ss/template.en
Absolute path to the location of web and mail templates.
"auth" directory
Example: /usr/www/cgi-bin/ss/auth
Absolute path to the location of session info files (e.g. passwords).

* Technical note: The software tries to create this directory at a web-accessible place (certain cgi-bin locations doesn't allow to deliver multimedia content). If you experience problems in content delivery, please move it manually to a suited location.

Platform specific settings:
 
Name of parameter to set...
Description...
Mailing program (for Unix only)
Example: /usr/bin/sendmail
Absolute path to Sendmail (or compatible) application on your server.
SMTP server
Example: smtp.sunnyscript.com
SMTP server for handling mails; when left blank, default mail application is used. This setting is required for non-Unix systems, otherwise optional.
Don't use flock
Example: Unchecked
"flock" is normally supported directly by the operating system; should it be unavailable for any reason (e.g. on Win9x, WinMe), mark this checkbox.
Admin e-mail address
Example: admin@sunnycript.com
E-mail address of the system administrator (e.g. webmaster).

URLs:
 
Name of parameter to set...
Description...
Binary directory URL
Example: http://www.sunnyscript.com/cgi-bin/ss/bindata
URL to the location that holds binary database content.
URL of CGI files directory
Example: http://www.sunnyscript.com/cgi-bin/ss
URL to the location of SunnyShop on your server.
URL of checkout script (should be secure)
Ex.: https://www.sunnyscript.com/cgi-bin/ss/checkout.cgi
URL pointing to the checkout part of SunnyShop. In order to enable SSL encryption, change the transfer protocol to HTTPS.
URL of user's help document (optional)
Example: http://www.sunnyscript.com/myhelp.htm
URL to an optional help document (not included); may also consist of an e-mail link (e.g. "mailto:support@sunnyscript.com").

Usage note: Should contain a link to your company's terms of business, customer service details or any other related document.

Various parameters:
 
Name of parameter to set...
Description...
Authentication time (in seconds)
Example: 10800
Time frame keeping user authentications active (after expiration, people must log in again); recommended range: 1 to 12 hours.
Default records per page
Example: 25
Maximum number of records (unless specified exactly) appearing on one page; recommended range: 5 to 30 records.
Max. number of links
Example: 10
Max. number of selectable links on a page flicker when displaying search results; recommended range: 5 to 30 links.
Default table (optional)
Example: firsttable
Standard table used when no specific table is called.

After you have verified all settings carefully, click on the button "Save parameters" to take over modifications to the system. It is also possible to bring back previous values with the "Let the script restore defaults" button.
 

Congratulations - you have successfully installed the software :-)

 
General information about shops

Conventions for this document:

The expression "shop" refers to the entire shopping mall and the terms "store" or "table" means a shop's department (e.g. group of similar items or a line of products; explained more detailed below).

SunnyShop is compatible with all types of currencies and all types of mass units (any specific shown is just an example).
 

Successful shop planning...

1. Multiple stores and/or product categories:

SunnyShop is able to host multiple stores under one roof as well as different product categories within each store.

So if you sell very similar goods or a small amount of different products, you just may create one store and divide your products into categories (e.g. a carpet store separated into "wool carpets", "polyester carpets", ...).

However when distributing a wide range of products, it is recommended to create multiple stores (departments) and then divide each one into categories (e.g. stores for carpets, wallpapers, paints, ..., each having its own detailed sections).

There is no general rule to say when it's time to create multiple stores instead of just having one store with different categories. But you should prefer creating multiple stores instead of a wide-spread category system for increased performance.

2.1. Determine required product database fields:

All stores have its own product databases able to manage a theoretically unlimited number of fields; each field holds product related data, like its name, description, pictures, price and other information you want to show to the customer.

Although it is possible to add, modify and delete fields later at any time, it is recommended to create a list of all required fields beforehand. In this way, you can ensure having a consistent and logical data structure.

2.2. Assign field types and edit controls:

Field types describes the content of the concerned fields closer. By default, SunnyShop uses the type "text" which accepts any input - but it can be wiser to be a bit more specific (e.g. a field like "Product picture" should be set to the type "image").

Edit controls determines how particular fields are displayed internally. By default, SunnyShop uses a single input line. But it is possible to use any edit control supported by HTML (like text boxes, radiobuttons, drop-down lists, checkboxes, ...).

Please take some time to work out suited field types and edit controls. Especially when having different people working on one database, meaningful settings will increase data consistency dramatically - and so, this makes it also easier finding a product.

Helpful hint: Confused about all this stuff ? Don't worry, the correct usage will be explained later. At this stage, you should just have a basic understanding of the shop structure.

3. Shipping, taxes, invoices & more - behind the scenes:

SunnyShop provides versatile settings for shipping and payment methods, tax handling and invoice management. The basis is a system of different consumers groups, each allowed to have its own preferences.

Each consumers group may reflect a list of specific countries and continents or a specific type of customers (e.g. retail and wholesale ones); depending upon your requirements, also other classifications are possible.

4. Check all of your planning steps:

Last but not least you should go carefully through your planning again and again. It's a matter of course that you can modify all settings later when your shop is finished, but some planning may save valuable time and efforts.

Helpful hint: We recommend to test your new shop carefully before celebrating the grand opening, e.g. by inviting selected people to evaluate it or by running internal beta-tests by yourself.
 

Shop size vs. system resources...

SunnyShop is highly optimized and supports shops with an unlimited number of different products, so the performance mainly depends upon the used server type and available system resources.

In a common system environment, you don't have to take care about this issue. However if you have more specific questions regarding this topic, please contact SunnyScript's customer service department for personal assistance.
 


 
Administration panel

The administration panel is a convenient way to work interactively with SunnyShop. You can start the admin panel by calling admin.cgi with your favorite web browsing software:
 
Action to perform...
URL to call (location varies on your system, of course)...
Open admin panel http://www.sunnyscript.com/cgi-bin/ss/admin.cgi

How to access your shop:
 

Action to perform...
URL to call (location varies on your system, of course)...
Access main entrance http://www.sunnyscript.com/cgi-bin/ss/sshop.cgi

Helpful hint: Instead of the main entrance, it's also possible to show a specific store, product category or even product first. Please refer to the chapter "Shop-frontend and template management" for more information.
 

Admin menu...

This screen allows the following actions:
 
Main menu options...
Description...
Manage product tables ("stores") Select the desired action and click on the submit button.
Order information Quick overview about incoming orders as well as links to some tools.
Manage system tables
 
Table...
Description...
... of registered users Database containing customer profiles.
... of orders Database containing processed orders.
... of invoices Database containing invoices.
 
Edit shop parameters Modify general shop parameters and create / maintain consumers groups.
Create new products table This form is intended to create a new store (department within your shop).
Change password Change admin password.
Other administrative features
 
Section...
Description...
Edit system parameters Modify system related parameters.
Edit templates Edit the layout templates.
Import / export data Import and export databases.
 

The top menu line provides additional selections (depending on the current system status):
 

Top menu options...
Description...
Admin Go to the main admin menu.
Home Browse the currently active store.
Search Search the currently active store (advanced search).
Search stats Show usage statistics of the currently active store.
View stock Browse the virtual warehouse of the currently active table.
Login / Logout Login or logout as administrator.
Restructure Modify structures and parameters of the currently active table.
Mailings Send out mailings to registered customers or table members.
Categories Manage categories for currently active table.
Add / Clone / Update / Delete Add, clone, update or delete records / products.
 

 
Shop settings adjustment
Edit shop parameters...

First of all you must configure basic system settings which take effect to the behavior of the software. Click on the button "Edit shop parameters" when you're in the admin menu.

General settings:
 

SunnyShop asks...
Description...
Shop name Name of your shop (e.g. "My sample company").
URL of site URL of your website (e.g. "http://www.sunnyscript.com"), as it will be displayed at the shop-frontend and within mailings.
Footer to be added to each e-mail Default footer being added to all outgoing e-mails; suited especially for showing your business card or advertisements.

Security settings:
 

SunnyShop asks...
Description...
Time to keep cart on server (hours) Specify the time period, shopping carts of your customers will be held in the system. Recommended range: 1 to 5 hours.

Technical note: As longer you keep the carts alive, as more diskspace is temporarily required (about 1 KB per cart).

Max. time to await payment
confirmation from card processor
It defines the time period the system waits for order confirmations from the credit card processor. Recommended value: 12 hours.

Usage note: Applicable for the payment method "Credit card real-time processing" only (described closer below).

Primary currency settings:
 

SunnyShop asks...
Description...
Primary currency prefix Type in the prefix of the standard currency (e.g. "$" for usage in "$12.34 USD").
Primary currency suffix Type in the suffix of the standard currency (e.g. " USD" for usage in "$12.34 USD").
Primary currency decimals Specify the number of decimal places in standard currency (commonly two).
Primary currency 3-digits separator Decide for a character you want to use in order to separate amounts every three digits (e.g. $1'499.80 USD or 2.700.40 EUR).
Primary currency name Type in the name of the standard currency here (e.g. "European Currency Unit").

Multi-currency settings:
 

SunnyShop asks...
Description...
Display price also in these
secondary currencies *
Type in comma separated currency codes (as set below) to display product prices also in different currencies than your standard one, e.g. "EUR,CAN,GBP".
Display totals also in these
secondary currencies *
Same as above, but this setting refers to the sub-total and total amounts shown at the shopping cart and during the checkout process.
Rates of secondary currencies Specify the secondary currencies used beside of the standard one; all currencies used in the parameters above must be set here. Use one line per definition.

Format: <Currency code>:<Currency name>:<Exchange rate>

For example:

CAN:Canadian Dollars:0.897
EUR:European Currency:1.23
GBP:British Pound:1.234

Technical note: The exchange rate uses your standard currency as basis.

* Requires a JavaScript capable web browsing software to enable this feature on the shop-frontend.

Measuring units:
 

SunnyShop asks...
Description...
Weight unit Type in the label of the standard weight unit (e.g. "kg" or "pound").
Volume unit Type in the label of the standard volume unit (e.g. "cm³" or "dm³").

Order logging settings:
 

SunnyShop asks...
Description...
Orders log file
Required by YourAffiliates
Absolute path of the log file location used by YourAffiliates (or other compatible affiliate managers) to track sale based commissions. Leave it empty to disable tracking.

Sample setting: /usr/www/cgi-bin/ya/data/sales.db

Orders log file format Select either "New release format" or "New release format, moderated" when using YourAffiliates ("Old release compatibility" is intended for elder releases of this product).
How long keep "affiliate cookie"
on user's computer (in hours)
If you use SunnyShop to place affiliate cookies (see "Helpful hints and technical reference"), then you can set the time period to hold cookies on visitor's computer.

Recommended value: 48 hours. Parameter is optional.

Popular products:

SunnyShop is able to rate products by popularity (based upon the number of shopping cart additions). In this way, you can let advertise bestsellers automatically. Popular products are generated for each unique store category.
 

SunnyShop asks...
Description...
Track products' popularity Check this button to enable tracking of popular products.
Calculate products' popularity for
this number of days
Type in the number of days used to compare products. The popularity is calculated based upon the number of cart additions made for a particular product within this period.
Show this number of pop. products
in root category
Maximum number of products shown for root categories (left column on shop-frontend). Recommended range: 2 to 10 items.
Show this number of pop. products
in sub-categories
Maximum number of products shown for sub-categories (left column on shop-frontend). Recommended range: 2 to 10 items.
Show this number of pop. products
on "popular products" page
Maximum number of products shown at the store-wide "popular products" page. Recommended range: 10 to 50 items.
Show this number of pop. products
on front page near each table
Maximum number of products shown at the initial shop-frontend screen (store listings). Recommended range: 2 to 5 products.

Technical note: This feature requires at least two product tables available.

Shopping cart layout:
 

SunnyShop asks...
Description...
Menu layout
Menu items separator Characters that will appear between the top menu items (standard value: " | ").
Main menu entries Right box (available selections): Choose entry and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove an entry or use "Up" and "Down" buttons to change entry order.

Alternatively you can type in a comma delimited list of entries manually.

"Home", "Search", "Cart",
"Checkout" and "Help" entry text *
Labels (linking text) used for top menu entries.

You can also insert image tags according valid HTML standard. "Help" allows also an e-mail address, like "mailto:support@sunnyscript.com".

Cart mode
Default cart display mode Display mode of the summarized shopping cart (left column on shop-frontend):
 
Available options...
Description...
Totals Number of items currently in cart and total amount.
Brief Brief product listings and total amount.
Full Same as "Brief", but shows all product fields.
Edit cart form Completely editable shopping cart.
 
Cart mode after adding a product Display mode of the summarized shopping cart (left column on shop-frontend), after a new product was added to the cart. Same options as before are available.
Display this page after adding a
product to cart
Display mode of the shop-frontend, after a new product was added to the cart:
 
Available options...
Description...
Products in category of
added product
Category, the added product belongs to.
Products in top category Root category of the concerned store.
Edit cart form Completely editable shopping cart form.
 
Show links to other product tables Enable this feature when having multiple product tables; links to each table will be provided at the left column on the shop-frontend.
Order of product tables Specify the order of product tables as they will appear on the shop-frontend. Choose a product table and click on "Up" or "Down" to move the table in hierarchy.

Alternatively you can type in a comma delimited list of table names manually.

Hide "out of stock" goods Enable this feature to prevent sold out products being shown at the shop-frontend (refer to the following chapter for details).
"Add one item to cart" link
Display this text or HTML code
instead of "Add one item to cart"
Type in text or HTML code that will appear instead of the default "Add one item to cart" text. In this way, also an image may be used instead of a text string.

For example: <IMG SRC="http://www.sunnyscript.com/additem.gif">

Ordering options:
 

SunnyShop asks...
Description...
Checkout settings
Allow placing order without
registering an account
Marked to allow people placing orders without the need to register before. Registered customers are stored in the table of registered users.
Store user's first name / last name
in cookies after checkout
Use this for personal greetings to returning customers. Read chapter "Helpful hints and technical reference", part "Collected technical notes and tips" for more details.
Admin's notification
Send receipt to admin Marked to send a notification to admin for each new incoming order.

"Recommend this product" feature:
 

SunnyShop asks...
Description...
Mode of "recommend this product
to a friend" feature
Allow users of the shop-frontend to recommend products to other people by sending an e-mail message together with some personal greetings.
 
Available options...
Description...
Don't show anything Disable the recommendation feature.
Show popup when link clicked Form is shown at request (popup window).
Show form when link clicked Form is shown at request (on the product page).
Always show form Form is shown on each product page.
 

"Bookmarked" products:

SunnyShop can remember products previously ordered by a particular customer and show them at a later time again for direct placement into the shopping basket.

This feature is excellent for selling goods and services which are often re-ordered, because it saves time and prevents people to always search for the same articles in the stores.
 

SunnyShop asks...
Description...
Enable bookmarked prod. tracking Mark the button to enable product bookmarking.

Technical note: Bookmarking works also without prior customer registrations, because it uses cookies to store all information remotely.

Show this number of products
on "bookmarked products" page
Maximum number of products shown on the "bookmarked products" page. Recommended range: 10 to 100 items.
Show this number of products
in "bookmarked products" column
Maximum number of products shown in the "bookmarked products" column (left colum on shop-frontend). Recommended range: 1 to 10 items.
Days to keep bookmarks on prod. Specify the number of days to keep the products bookmarked for each customer. Recommended value: 90 days.

After you have verified all settings carefully, click on the button "Save parameters" to take over modifications to the system. It is also possible to bring back previous values with the "Let the script restore defaults" button.

"Out-of-stock product" notification:

More information is available at the chapter "Store management", part "Warehouse management and quantity handling".

"New products / updated products" notification:

More information is available at the chapter "Store management", part "Warehouse management and quantity handling".

Order status change notifications:

SunnyShop is able to notify the customer when the status of an open order changes (at table of orders).
 

SunnyShop asks...
Description...
Send "Payment confirmed" notice Mark the button to send a notification when payment was received.

Technical note: Message is sent only when you change the order status manually to prevent notifying a customer mistakenly twice for online credit card payments.

Send "Shipping started" notice Mark the button to send a notification that the order is on the way.
Send "Cancellation conf." notice Mark the button to send a notification that confirms the order was cancelled.
 
Consumers groups - overview...

Consumers groups are used by SunnyShop to allow individual tax, shipping, payment and discount preferences for a particular group of customers (e.g. wholesale/retail), locations (e.g. countries/continents) or any other desired unity.

During the checkout procedure, customer selects the matching consumers group. Should you just have one consumers group active, it is automatically taken without the need to select it; however at least one group is mandatory.

Click on "Edit shop parameters" (see main admin menu) and go to "Edit consumers group settings" in order to access the consumers groups parameters.

How to create a new consumers group:

Type in the name of the new group (e.g. "European customers") and click on the button "Create new consumers group".

How to edit / remove a consumers group:

Select the consumers group from the list, click on "Delete" or "Edit" and follow the provided instructions.

How to change the sorting of consumers groups:

Select the group you wish to move around and click on either "Move up" or "Move down" button to change its position (this affects the group's order within the list appearing during the checkout process).
 

Consumers groups - available consumers group settings (part 1)...

Consumers group name:
 
SunnyShop asks...
Description...
Consumers group name Name of the current group, as it will be displayed during the checkout process.

Order restrictions:
 

SunnyShop asks...
Description...
Order sub-total
Minimum order value Type in the minimum amount of an order, before granting checkout.
Format: 12.34 (without any currency prefix or suffix)
Maximum order value Type in the maximum total amount allowed per single order.
Format: 12.34 (without any currency prefix or suffix)
Delivery location restrictions
These parameters are recommended to be set for location based consumers groups (like country, state or city divided).
Show standard country list Select this option and a pre-defined list of countries will be shown.
Deliver to these locations only Type in a list of locations to which you will deliver. Use a two-char location code and full name separated by pipe, one pair per line.

Format: <Two-char abbreviation>|<Full location name>

For example:

UK|United Kingdom
FR|France
DE|Germany

Usage note: There is no need to keep attention to specific conventions, you can invent your own list of locations depending upon your requirements.

Payment location restrictions
These parameters are recommended to be set for location based consumers groups (like country, state or city divided).
Show standard country list Enable this option and a pre-defined list of countries will be shown.
Accept payments from following
locations only
Type in a list of locations from which you will accept payments. Use a two-char location code and full name separated by pipe, one pair per line.

Format: <Two-char abbreviation>|<Full location name>

For example:

UK|United Kingdom
FR|France
DE|Germany

Usage note: There is no need to keep attention to specific conventions, you can invent your own list of locations depending upon your requirements.

Important note: Under normal conditions, all locations as defined at "Deliver to these locations only" should be also placed here.

Order form template:
 

SunnyShop asks...
Description...
"Order form" template file Choose the template file used for the order form.

Shipment (single shipping method):

Pre-requisite for weight / volume based shipping:

For weight-based shipping, system field _weight is required; for volume-based shipping, system field _volume is required. Both must contain the weight or volume intended to calculate shipping charges. Format: 12.34 (without any prefix or suffix).
 

SunnyShop asks...
Description...
Don't charge shipping Shipping charges are not calculated (e.g. already included in the product price, handled by the customer or just free of charge).
Single shipping method,
fixed amount per order
Charge a fixed amount per order.
Format: 12.34 (without any currency prefix or suffix)
Single shipping method,
use weight as base
Use a variable charge based upon the total weight of all products.

Format: Absolute amounts (positive and negative ones), percentage values.

Sample 1: 110%
Total weight = 15 kg, shipping charge = 16.50 EUR (110 % of 15 kg).
Sample 2: 110%+4.90
Total weight = 15 kg, shipping charge = 21.40 EUR (110 % of 15 kg + 4.90 EUR).
Sample 3: 90%-2
Total weight = 15 kg, shipping charge = 11.50 EUR (90 % of 15 kg - 2 EUR).

Single shipping method,
use cost as base
Use a variable charge based upon the order's sub-total (before discounts and taxes).

Format: Absolute amounts (positive and negative ones), percentage values.

Sample 1: 10%
Sub-total = 150 EUR, shipping charge = 15 EUR (10 % of 150 EUR).
Sample 2: 10%+5
Sub-total = 150 EUR, shipping charge = 20 EUR (10 % of 150 EUR + 5 EUR).
Sample 3: 20%-7.50
Sub-total = 150 EUR, shipping charge = 22.50 EUR (20 % of 150 EUR - 7.50 EUR).

Single shipping method,
use volume as base
Use a variable charge based upon the total volume of all products.

Format: Absolute amounts (positive and negative ones), percentage values.

Sample 1: 12%
Total volume = 150 cm³, shipping charge = 18 EUR (12 % of 150 cm³).
Sample 2: 12%+4.90
Total volume = 150 cm³, shipping charge = 22.90 EUR (12 % of 150 cm³ + 4.90 EUR).
Sample 3: 30%-25
Total volume = 150 cm³, shipping charge = 20 EUR (30 % of 150 cm³ - 25 EUR).

Multiple shipping methods Provide multiple shipping methods per consumers group (like overnight delivery).

Shipment (multiple shipping methods):

When selecting multiple shipping methods, set your own range of shipping methods here. Please refer to the end of the screen "Editing consumers groups". There you'll find "Edit shipment methods":
 

Possible action...
Description...
Create a shipment method Type in the desired name (e.g. "International express") and click on the button "Create new shipment method" in order to proceed.
Edit / remove a shipment method Select the shipment method from the list, click on "Delete" or "Edit" and follow the provided instructions.
Change sorting of shipment methods Select the method you wish to move around and click on either "Move up" or "Move down" button to change its position (as it will appear on the checkout screen).

Edit shipment method:

After you've selected to create or edit a shipment method, the following screen appears.
 

SunnyShop asks...
Description...
Shipment method name
Shipment method name Name of the shipment method, as it will be displayed at the shop-frontend.
Calculation
Don't charge shipping Shipping charges are not calculated (e.g. already included in the product price, handled by the customer or just free of charge).
Amount per order Charge a fixed amount per order.
Format: 12.34 (without any currency prefix or suffix)
Use weight as base Use a variable charge based upon the total weight of all products.

Format: Absolute amounts (positive and negative ones), percentage values.

Sample 1: 110%
Total weight = 15 kg, shipping charge = 16.50 EUR (110 % of 15 kg).
Sample 2: 110%+4.90
Total weight = 15 kg, shipping charge = 21.40 EUR (110 % of 15 kg + 4.90 EUR).
Sample 3: 90%-2
Total weight = 15 kg, shipping charge = 11.50 EUR (90 % of 15 kg - 2 EUR).

Use cost as base Use a variable charge based upon the order's sub-total (before discounts and taxes).

Format: Absolute amounts (positive and negative ones), percentage values.

Sample 1: 10%
Sub-total = 150 EUR, shipping charge = 15 EUR (10 % of 150 EUR).
Sample 2: 10%+5
Sub-total = 150 EUR, shipping charge = 20 EUR (10 % of 150 EUR + 5 EUR).
Sample 3: 20%-7.50
Sub-total = 150 EUR, shipping charge = 22.50 EUR (20 % of 150 EUR - 7.50 EUR).

Use volume as base Use a variable charge based upon the total volume of all products.

Format: Absolute amounts (positive and negative ones), percentage values.

Sample 1: 12%
Total volume = 150 cm³, shipping charge = 18 EUR (12 % of 150 cm³).
Sample 2: 12%+4.90
Total weight = 150 cm³, shipping charge = 22.90 EUR (12 % of 150 cm³ + 4.90 EUR).
Sample 3: 30%-25
Total weight = 150 cm³, shipping charge = 20 EUR (30 % of 150 cm³ - 25 EUR).

Weight-based shipment cost
calculation table
Similar to "Use weight as base", however you can charge lower / higher fees for different weight levels, different countries and postal codes.

Format: <Minimum weight>:<Shipping cost>:<Country code>:<PCode>

<Minimum weight>: Minimum weight level.
<Shipping cost>: Absolute amounts or percentage value (with weight as basis).
<Country code>: Limit combination to a specific 2-char location code. Optional field.
<PCode>: Limit combination to a specific postal code. Optional field.
 

Sample input...
Description...
10:5.80:DE
50:2%+3:DE
100:25:DE
10 kg to 49.99 kg -> 5.80 EUR shipping charge.
50 kg to 99.99 kg -> 2 % of weight plus 3 EUR.
Above 100 kg -> 25 EUR.

Usage notes: An unlimited number of combinations is possible. Unspecified ranges will lead into not charging shipping for them...

In above sample, delivery is free of charge for weight less than 10 kg as well as for all countries except "DE" (Germany). Double-check any made calculation table carefully !

Cost-based shipment cost
calculation table
Similar to "Use cost as base", however you can charge lower / higher fees for different sub-total amount levels, different countries and postal codes.

Format: <Minimum total>:<Shipping cost>:<Country code>:<PCode>

<Minimum total>: Minimum sub-total level.
<Shipping cost>: Absolute amounts or percentage value (with sub-total as basis).
<Country code>: Limit combination to a specific 2-char location code. Optional field.
<PCode>: Limit combination to a specific postal code. Optional field.

Please refer to weight-based table for a sample and usage notes.

Volume-based shipment cost
calculation table
Similar to "Use volume as base", however you can charge lower / higher fees for different volume levels, different countries and postal codes.

Format: <Minimum volume>:<Shipping cost>:<Country code>:<PCode>

<Minimum volume>: Minimum volume level.
<Shipping cost>: Absolute amounts or percentage value (with volume as basis).
<Country code>: Limit combination to a specific 2-char location code. Optional field.
<PCode>: Limit combination to a specific postal code. Optional field.

Please refer to weight-based table for a sample and usage notes.

Cost-weight-volume based shipment
cost calculation script
Most versatile shipping charge calculation accepting even Perl expressions (samples are included within the software).

The following variable names are reserved and hold system data (their values can be used within the calculation script):
 

Variable name...
Description...
$total Sub-total of the actual order.
$weight, $volume Total weight and total volume of the order (contains numerical value only, format: 12.34).
$country, $zip 2-char location and postal codes.

Important note: Due to their complexity, calculation scripts are recommended for experienced users only.

Value added taxes:
 

SunnyShop asks...
Description...
Tax rate
Don't charge tax No taxes are added to the order.
Flat tax rate (percentage) Charge a fix percentage of VAT; format: 12.34.
Tax rates table,
based upon sub-total
Calculate a variable VAT based upon the order's sub-total.

Format: <Minimum amount>:<Tax formula>

<Minimum amount>: Minimum sub-total level.
<Tax formula>: Absolute amounts (positive and negative ones), percentage values.
 

Sample input...
Description...
3:5.80
20:3+10%
100:13%
3.00 EUR to 19.99 EUR -> 5.80 EUR.
20.00 EUR to 99.99 EUR -> 3 EUR + 10 % of amount.
100.00 EUR and more -> 13 % of amount.

Usage note 1: You can have an unlimited number of combinations.

Usage note 2: Ranges kept unspecified will lead into not charging sales tax for them (e.g. in above sample, for less than 3.00 EUR, no tax applies).

Tax base
Determine whether or not to include shipping costs or coupons and gift certificates in the taxing base (by default, this formula is used: VAT basis = Sub-total - volume discount).
Include shipping cost in taxing base If enabled: VAT basis = ... + shipping costs
Include coupons / gift certificates
discount amount in taxing base
If enabled: VAT basis = ... - coupons and gift certificates

Discounts:
 

SunnyShop asks...
Description...
Volume discounts
Minimum order values and
corresponding discounts
Grant volume discounts based upon the sub-total.

Format: <Minimum amount>:<Discount formula>

<Discount formula>: Abs. amounts (positive, negative ones), percentage values.
 

Sample input...
Description...
100:8.60
500:3%
1000:5%+10
100 EUR to 499.99 EUR -> 8.60 EUR.
500.00 EUR to 999.99 EUR -> 3 % of amount.
1000.00 EUR and more -> 5 % of amount + 10 EUR.

Usage note 1: You can have an unlimited number of combinations.

Usage note 2: Ranges kept unspecified will lead into not granting discounts for them (e.g. in above sample, for less than 100 EUR, no discount applies).

Coupon / Gift certificate discounts
By providing a correct discount code, the concerned discount is deducted from the order's sub-total amount.
Ask user to enter coupon / gift
certificate to get discount
Mark this button in order to enable the coupon / gift certificate feature.
Enter valid coupon numbers and
corresponding discounts
Type in the coupon / gift certificate codes and corresponding discounts here.

Format: <Discount code>:<Discount formula>:<Hold flag>

<Discount code>: A-Z, a-z, 0-9 and "-" (case-sensitive).
<Discount formula>: Abs. amounts (positive, negative ones), percentage values.
<Hold flag>: Set to "1" to keep this coupon forever ("0" or empty does ignore flag).
 

Sample input...
Description...
123-aBc:3%
0987654321:9.80:0
0987654321:9.80:0
A1B2c:5%+15:1
A1B2c:5%+15:1
3 % rebate; delete coupon after used one time. *
9.80 EUR rebate; delete coupon after used one time. *
9.80 EUR rebate; keep coupon at the system. **
5 % and 15 EUR rebate; keep coupon at the system. *
5 % and 15 EUR rebate; keep coupon at the system. **
* "Remove coupon code after used one time" feature is enabled.
** "Remove coupon code after used one time" feature is disabled.

Usage notes: You can have an unlimited number of combinations. The "hold flag" is optional (if kept unspecified, it is considered as not being set).

Remove coupon code after used
one time
Mark this button in order to allow using each coupon / gift certificate code only once; after usage, the code is automatically removed by the system.

Technical note: If you wish to remove all coupon codes, but keep certain ones, enable this feature and use the "hold flag" (which has a higher priority than this option).

 
Consumers groups - available consumers group settings (part 2, payment methods)...

Free of charge:

This payment method is suited when handling "free" goods, like ad brochures & catalogues or free product samples.
 

SunnyShop asks...
Description...
Allow buyer choose "Free of charge" Mark this checkbox to enable the "Free of charge" payment method.
Deduct ordered quantity from
products with limited quantity
When having products with a limited quantity (system field _quantity set in product records), mark this button to deduct the ordered quantity from the remaining total.

Please refer to the next chapter for details regarding this feature.

Allow buyer cancel an order Check it to allow the customer to cancel an order until order processing has started. Customers will see a "Cancel order" link on their order receipts.

If an order was cancelled through the customer, you get notified by e-mail and the field "Order cancelled" (table of orders) is set to "Yes" for the concerned order.

Usage note: Disable "User can cancel order" in the table of orders as soon as you started order processing and don't wish the customer to cancel its order anymore.

Important note: Please be careful using this option.

Receipt message template Choose the template file used for the "Free of charge" receipts.

Offline payment:

This payment option applies, when you handle payment processing outside (orders are only taken, no invoices generated).
 

SunnyShop asks...
Description...
Allow buyer choose "Offline
checkout"
Mark this checkbox to enable the "Offline checkout" payment method.
Deduct ordered quantity from
products with limited quantity
When having products with a limited quantity (system field _quantity set in product records), mark this button to deduct the ordered quantity from the remaining total.

Please refer to the next chapter for details regarding this feature.

Allow buyer cancel an order Check it to allow the customer to cancel an order until order processing has started. Customers will see a "Cancel order" link on their order receipts.

If an order was cancelled through the customer, you get notified by e-mail and the field "Order cancelled" (table of orders) is set to "Yes" for the concerned order.

Usage note: Disable "User can cancel order" in the table of orders as soon as you started order processing and don't wish the customer to cancel its order anymore.

Important note: Please be careful using this option.

Receipt message template Choose the template file used for the "Offline payment" receipts.

Send invoice:

This payment option will create a customizable invoice for each order.
 

SunnyShop asks...
Description...
Allow buyer choose "Send invoice" Mark this checkbox to enable the "Send invoice" payment method.
Deduct ordered quantity from
products with limited quantity
When having products with a limited quantity (system field _quantity set in product records), mark this button to deduct the ordered quantity from the remaining total.

Please refer to the next chapter for details regarding this feature.

Allow buyer cancel an order Check it to allow the customer to cancel an order until order processing has started. Customers will see a "Cancel order" link on their order receipts.

If an order was cancelled through the customer, you get notified by e-mail and the field "Order cancelled" (table of orders) is set to "Yes" for the concerned order.

Usage note: Disable "User can cancel order" in the table of orders as soon as you started order processing and don't wish the customer to cancel its order anymore.

Important note: Please be careful using this option.

Receipt message template Choose the template file used for the "Send invoice" receipts.

Credit card real-time processing:

This payment option requires a "merchant account" registered at a payment processor. In this way, you can handle credit card payments electronically through an online payment system.

Usage note: If you process credit cards by yourself (e.g. via terminal or an electronic cash register), please refer to the payment option "Credit card manual processing" as described later.

Passing back order details from the credit card processor to SunnyShop:

After a payment has been processed (no matter, if accepted or declined), the payment processor must hand over the results back to SunnyShop. For this application, the program passback.cgi is intended.

Instruct your credit card processor to transfer all data to passback.cgi of your SunnyShop installation:
 

Action to perform...
URL to provide to payment processor (location varies on your system, of course)...
Hand over payment processing results to SunnyShop http://www.sunnyscript.com/cgi-bin/ss/passback.cgi

And here you can see how to configure SunnyShop to work together with a payment processor...
 

SunnyShop asks...
Description...
Allow buyer choose "Credit card
realtime processing"
Mark this checkbox to enable the "Credit card realtime processing" payment method.
Deduct ordered quantity from
products with limited quantity
When having products with a limited quantity (system field _quantity set in product records), mark this button to deduct the ordered quantity from the remaining total.

The following behavior options are available:
 

Possible settings...
Description...
Do not deduct Disable this feature.
Deduct after order confirmation Remaining total quantity is reduced after placing the order (before processing payment).
Deduct after pay. confirmation Remaining total quantity is reduced after payment was successfully processed.

Please refer to the next chapter for details regarding this feature.

Allow buyer cancel an order Check it to allow the customer to cancel an order until order processing has started. Customers will see a "Cancel order" link on their order receipts.

If an order was cancelled through the customer, you get notified by e-mail and the field "Order cancelled" (table of orders) is set to "Yes" for the concerned order.

Usage note: Disable "User can cancel order" in the table of orders as soon as you started order processing and don't wish the customer to cancel its order anymore.

Important note: Please be careful using this option. Providing payment refunds must be handled manually by yourself.

Generate invoice for each
transaction
SunnyShop can add an invoice to the table of invoices for each single transaction.
 
Possible settings...
Description...
Do not generate Disable this feature.
Generate, but internal use only Invoice is generated, but invisible to the customer.
Generate and show to buyers Invoice is generated and link to a printable version is shown to the customer.
 
Order confirmation message
This message confirms the order arrival ("queued for processing").
Send confirmation message to user Select at which stage in order processing an order confirmation is sent to the customer.
 
Possible settings...
Description...
Send receipt in payment
confirmation message
Don't send a confirmation before payment was surely handled by the payment processor.
Send separate receipt Send an order confirmation as soon as the order arrived (payment may be not done so far).
 
Message template Choose the template file used for the order confirmations.
Payment confirmation message
This message confirms successful payment through the credit card processor.
Pay. confirm. message template Choose the template file used for the payment confirmations.
Payment gateway configuration
Important note: All parameter settings described here must be provided by the payment processor; set them very carefully.
Name of credit card processor Type in the name of the payment processor.
Payment gateway URL SunnyShop sends all order details to this URL for payment processing.
Payment URL request method Select the submission method (GET or POST).
Form variables SunnyShop will send these variable/value pairs to the payment gateway URL.

Format: <Name of variable>=<Submitted value>
(put only one pair into a single line)

Sample 1: $cart_id=$cart_id
Submit the variable $cart_id and its assigned value.
Sample 2: account=abc123
Submit a variable called account and its fix value abc123.
Sample 3: ordertotal=$total
Take over the value from $total to a new variable.
Sample 4: name=$first_name $last_name
Put two system variables into a new one.

Different payment processors have different requirements in variable names and values being passed through to them.

The following variable names are reserved and holding system data (their values can be taken over according the samples above):
 

Variable name...
Description...
$total * Total sale amount to charge from the credit card (contains numerical value only, format: 12.34).
$cart_id * Cart ID as assigned by SunnyShop.
$first_name, $last_name,
$company, $country,
$state, $zip, $city,
$address1, $address2,
$phone, $_email, ...
Various customer details, as taken from the table of registered users.

Usage note: Also custom fields you invented can be taken over by specifying their names here.

* Important note: These fields are required being submitted to the payment processor.

Payment confirmation "pass back" configuration
After the transaction has been handled (successfully or not) by the payment processor, they need to call passback.cgi in order to inform SunnyShop about the payment status.
Important note: All parameter settings described here must be provided by the payment processor; set them very carefully.
Form field, which holds
shopping cart ID (mandatory)
Provide the name of the variable containing the shopping cart ID of the order (as it was originally delivered by SunnyShop).

Important note: It is required to find the order belonging to the concerned transaction.

Form field, which holds
total amount paid (optional)
Provide the name of the variable containing the total amount as it was charged from the customer's credit card for the concerned order. Accepted format: 12.34.

Technical note: Leave the field empty, if this information is not available.

Form field, which holds
transaction ref. number (optional)
Provide the name of the variable containing the transaction reference number.

Technical note: Leave the field empty, if this information is not available.

Form field, which holds
transaction status (recommended)
Provide the name of the variable containing the transaction status (whether the payment was done successfully or failed).

Important note: It is recommended to let SunnyShop know the payment status.

Value of successful transaction
status
Specify the value, the "transaction status" field must contain, to consider a payment transaction as being done successfully (value must match the submitted one).
Log values of passed back fields Specify a comma-delimited list of all variables passed back to SunnyShop which will be logged in a special file for later reference:

Successful transactions are stored in...
data/transactions.db (suited for database or spreadsheet import)
data/transactions_readable.txt (suited for humans; convenient to read)

Declined transactions are stored in...
data/transactions_err.db (suited for database or spreadsheet import)
data/transactions_err_readable.txt (suited for humans; convenient to read)

Technical note: Leave it empty to disable this feature.

Payment confirmation security
Important note: All parameter settings described here must be provided by the payment processor; set them very carefully.
Allowed request method Select the allowed submission methods of the payment details (GET, POST or both).
Allowed referring URL (optional) If this parameter is set, passback.cgi is allowed to be called from a specific origin only (the URL you name here). Intended to limit access and avoid security injuries.
Action on violation of referring
URL rule (optional)
When passback.cgi is called from an other than the above specified referring URL, one of these actions will be performed:
 
Possible settings...
Description...
Accept payment, but notify admin Payment will be accepted, but a warning message is sent to the administrator.
Decline payment and notify admin * Payment will be declined and a warning message is sent to the administrator.
Decline payment * Payment will be declined without notice.

* Important note: Although the payment is not accepted by SunnyShop, it may be already processed - so it is recommended to use these options with care only.

If order sum and passed back paid
total sum doesn't match, then...
If the calculated order total ($total) differs from the charged amount, one of these actions will be performed:
 
Possible settings...
Description...
Accept payment, but notify admin Payment will be accepted, but a warning message is sent to the administrator.
Decline payment and notify admin * Payment will be declined and a warning message is sent to the administrator.
Decline payment * Payment will be declined without notice.

* Important note: Although the calculated amount differs from the paid one, it may be already processed - so it is recommended to use these options with care only.

Script for additional verification
of passed back values
Advanced users only: A verification script (written in Perl) can be placed in here to carry out additional checks before accepting a particular payment.

You can access variables with via $in{VARNAME} hash and access order fields (as in the table of orders) via $order{FIELDNAME} hash.

Technical note: If you push errors to @errors array, payment is declined. If you push warnings to @warnings array, payment is accepted, but a warning message is sent to the admin to notify about a possible security hazard or processing error.

Credit card manual processing:

This payment option is suited to accept credit cards for manual processing (e.g. via terminal or an electronic cash register).
 

SunnyShop asks...
Description...
Allow buyer choose "Credit card" Mark this checkbox to enable the "Credit card" payment method.
Accept these pre-defined
card types
Decide for the credit cards you wish to accept; choose multiple entries by holding the CTRL key (or appropriate) when selecting.
Accept also these card types Add further credit cards for being accepted (e.g. direct debit cards or customer cards).

Format: <Card name>|<Digit length>|<MOD10 test>|<Valid prefix>

<Card name>*: Label of the credit card as it should appear during checkout.
<Digit length>*: Length of the card numbers.
<MOD10 test>: "1" to allow MOD10 check or "0" to disable it (default).
<Valid prefix>: Fix prefix of the card numbers to accept.

Examples:

My Personal Card|16|1|812
Your Card|15

* Important note: Card name and digit length are mandatory, other fields are optional.

How to store credit card numbers Submitted credit card numbers can be stored in these different ways:
 
Possible settings...
Description...
Split (Increased security) Stores one part of number in the table of orders and submits the other part with admin's order notification.
Database (Convenient way) Shows the entire number in the table of orders.
E-mail (Convenient way) Shows the entire number in admin's order notification.
 
Ask "CVV2/CVC2/CID code" Enable this option in order to request the card verification code provided by some credit card suppliers. This may decrease the risk of fraudulent orders.
Generate invoice for each
transaction
SunnyShop can add an invoice to the table of invoices for each single transaction.
 
Possible settings...
Description...
Do not generate Disable this feature.
Generate, but internal use only Invoice is generated, but invisible to the customer.
Generate and show to buyers Invoice is generated and link to a printable version is shown to the customer.
 
Deduct ordered quantity from
products with limited quantity
When having products with a limited quantity (system field _quantity set in product records), mark this button to deduct the ordered quantity from the remaining total.

Please refer to the next chapter for details regarding this feature.

Allow buyer cancel an order Check it to allow the customer to cancel an order until order processing has started. Customers will see a "Cancel order" link on their order receipts.

If an order was cancelled through the customer, you get notified by e-mail and the field "Order cancelled" (table of orders) is set to "Yes" for the concerned order.

Usage note: Disable "User can cancel order" in the table of orders as soon as you started order processing and don't wish the customer to cancel its order anymore.

Important note: Please be careful using this option.

Validate credit card number
with MOD10 algorithm
This verifies the syntax of provided credit card numbers according a pre-set algorithm.

Checking includes these steps:

1. Syntax verification with MOD10 algorithm.
2. Verification of the card type (each card type has special characteristics).
3. Verification of the expiration date (expired cards are not accepted).

Important note: This validation cannot give you any guarantee that the credit card is a valid one. You should not provide goods or services until the payment was processed.

Receipt message template Choose the template file used for the "Credit card manual processing" receipts.

Payment details by phone or fax:

This payment option is suited when using a 3rd-party payment system working with reference IDs or when you desire to get credit card details sent by fax. Following applications may be handled with this payment method:

* 3rd-party payment systems where customer receives (after successful payment) a confirmation ID that needs to be submitted by the customer to you (either by phone or fax). For example, paying by phone bill or credit card acceptance via call center.

* 3rd-party payment systems where customer pays cash and receives a confirmation ID that needs to be submitted by the customer to you for collecting payment. For example, money transfer companies or special banking transfer services.

* High-risk environments (e.g. blacklisted countries with high rates of credit card abuse) requiring you to take credit cards only by fax, perhaps together with a photocopy of the original credit card for verification purposes.
 

SunnyShop asks...
Description...
Allow buyer choose "Payment
details by phone or fax"
Mark this checkbox to enable the "Payment details by phone or fax" payment method.
Generate invoice for each
transaction
SunnyShop can add an invoice to the table of invoices for each single transaction.
 
Possible settings...
Description...
Do not generate Disable this feature.
Generate, but internal use only Invoice is generated, but invisible to the customer.
Generate and show to buyers Invoice is generated and link to a printable version is shown to the customer.
 
Deduct ordered quantity from
products with limited quantity
When having products with a limited quantity (system field _quantity set in product records), mark this button to deduct the ordered quantity from the remaining total.

Please refer to the next chapter for details regarding this feature.

Allow buyer cancel an order Check it to allow the customer to cancel an order until order processing has started. Customers will see a "Cancel order" link on their order receipts.

If an order was cancelled through the customer, you get notified by e-mail and the field "Order cancelled" (table of orders) is set to "Yes" for the concerned order.

Usage note: Disable "User can cancel order" in the table of orders as soon as you started order processing and don't wish the customer to cancel its order anymore.

Important note: Please be careful using this option.

Receipt message template Choose the template file used for the "Payment details by phone or fax" receipts.
 

 
Store management
Manage your own stores...

SunnyShop is able to manage as many different stores or departments as you like within your shop. Each store (respectively a shop's department) is called "product table" in the admin panel.

Because each product table has its own preference settings, completely different lines of products can be handled under one roof. This chapter explains the store management and all product table features.

Usage note: Some of the features described here apply also to system tables (please refer to the next chapter for details). Where applicable, we have this pointed out with a note in the headline.
 

Create and edit stores (product tables)...

First of all, call the admin panel and go to the part "Create new products table". Now just follow these steps:
 
SunnyShop asks...
Description...
Enter new products table name Short internal name of the new product table (alphanumerical chars, except spaces).
Set optional system fields
 
Available option...
Description...
Include category field Use categories inside the product table.
Include product name field Name of the products (mandatory).
Include product price field Price of the products (mandatory).
Include product weight field Weight of products.
Include product options field Product options (e.g. size, color).
Include field for available quantity Max. available product quantities.
Include field for quantity limit per order Max. quantity of a product per order.
Include record addition date/time field Time stamp of record creation.
Include record last update date/time field Time stamp of last record update.
Include user feedback fields Voting and comments for products.
Include expiration field Expiration of product records.
Include record blocking field Temporarily blocking of records.
Include "Add to cart" column * "Add to cart" link (recommended).
 

After this is done, just click on the "Create new table" button in order to create the new product database.

By the way: You can add and remove system fields manually later at any time; so if you are unsure about an optional setting described above, just leave it empty and read more about it below in this manual.

* Applications of the "Add to cart" column:

The "Add to cart" link is used to put items into the shopping basket; therefore it is absolutely necessary when you want to allow customers to order products (common application). However there are some cases not to use it:

Announcements: Introduce new products, before starting the official sale.

Seasonally sold products: Create the product table beforehand and add the "Add to cart" link when starting the sale; after the sale season is over, simply remove the link again.

Product catalogue: Provide a product catalogue without the ability to place orders online.

Why is there an ID field in each product table ?

This field is required for some internal functions of SunnyShop (mainly used to distinguish records). Normally, you don't need to take care about this field, so just ignore it.

Some other applications of the ID field are described in the next chapter "Shop-frontend and template management". If desired, rename the ID field or make it editable to hold specific data (content must be unique for each record in table).

Technical note: Since each record must have a unique ID field value, this field is of autoincrement type by default.
 

Create product table fields...

What is a field ?

Fields are used to hold any product information as well as binary content (like images or downloadable documents).

How to create fields ?

Choose the desired product table and select "Restructure table". Alternatively click on "Restructure" in the upper right corner of the screen. If you just created a table, this page appears automatically.

Go to "New field name", type in the desired name and select the data type. In order to finish action, click on "Create new field".

There are also various system fields available, required for advanced features. Type in the field names exactly as they appear in the following list to enable the concerned feature (refer to following chapters for details):
 

Fieldname...
Description...
_name, _price Name and price of the products (both fields are mandatory).
Price field format: 12.34 (without any currency prefix or suffix).
_category Category field; required to handle product categories (auto-filled by SunnyShop).
_weight Weight field; used to calculate weight-based shipping charges; format: 12.34
_volume Volume field; used to calculate volume-based shipping charges; format: 12.34
_options (Non-)price-affecting product options.
_related_products Related products; shows products related to each other.
_quantity Total available product quantity.
_quantity_per_order Maximum available quantity of a product per order.
_quantity_low_limit Number of items to reach before low stock warnings are sent.
_onstock_maillist "Back again" notification feature; contains list of e-mail addresses.
_add_datetime Date/time stamp containing the date of record creation (auto-filled by SunnyShop).
_update_datetime Date/time stamp containing the date of last record update (auto-filled by SunnyShop).
_manually_updated Date/time stamp of last manual record update (auto-filled by SunnyShop).
_rating, _votes Rating fields; required to allow user ratings of products.
_comments, _comments_data Comment fields; required to allow user comments for records.
_effective_since Individual appearance date for each product record.
_expires Individual expiration date for each product record.
_blocked Flag to allow blocking products for being shown on the shop-frontend.
_views_number Auto-increasing field; shows number of total detailed record views.
_addtocart "Add to cart" link; should be available on each table (see note above).

After a field was created successfully, the screen "Field properties" appears (see next part of this chapter for details).
 

Edit or remove existing fields...

Select the desired table and choose "Restructure table" from admin panel. Alternatively you can click on "Restructure" in the upper right corner of the screen.

How to delete a field:

Look for the field you wish to remove from the table and click on "Delete". However, please note that once a field is removed, all related content will get lost and cannot be recovered.

By the way: Table parameters are automatically updated and concerned field becomes removed from these settings.

How to change sorting of fields:

Look for the field you wish to move around and click on either "move up" or "move down" to change the field's position.

How to edit a field:

Look for the field you wish to modify and click either on "Edit" or the field name. Now the screen "Field properties" appears. Depending of the selected field, you can modify these options:
 

SunnyShop asks...
Description...
Field name Contains the name of the table field; you can change it at any time (table parameters are automatically updated with new field name).
Data type Select the type of content being stored in this field:
 
Type...
Description...
text Any content with unlimited size (default).
int Positive and negative integers.
float Real numbers.
date Date in format YYYY-MM-DD.
time Time in format HH:MM:SS.
datetime Date and time in format YYYY-MM-DD HH:MM:SS.
boolean Empty value = false; any other value = true.
image GIF, JPG, PNG & BMP pictures (stored in "binary" directory).
binary Binary content (stored in "binary" directory).
memo Textual content (stored in "binary" directory).
htmlmemo HTML-formatted content (stored in "binary" directory).
uploadmemo See "memo", but use with "upload (other files)" edit control only.
autoinc Autoincrement integer field.
URL Same as text, but URL validation and embedded HTML.
email Same as text, but e-mail validation and embedded HTML.

Usage note: "Memo" fields are suited for large text parts (e.g. long descriptions), not required to be searched. "Binary" fields should hold files provided for download only.

Display label Field label appearing instead of field name set above.
Display comment Comments which appear when adding or updating records, just giving some hints.
Display mask Advanced users only: Active template for Perl scripts used to format concerned field value in HTML code or to make manipulations with value before output.

Available system variables are $id (contains record ID), $fields{FIELDNAME} and $value (contains current field's value).

Sample application for display mask:
 

Description...
How to realize...
Field value in bold characters Type in: &"<b>$value</b>"
 
Default value Type in a default value you wish to use for this field, if it is kept unfilled by the user; can be also a Perl script.

Sample applications for default value:
 

Description...
How to realize...
Text based (no Perl scripting) Just type in the desired default value.
Current date & time Type in: &datetime2str(time)
 
Required Click here to mark this field as required.
Unique Click here to mark that this field's content has to be unique in the entire table.
Verification rules Type in rules to verify field's content (multiple rules separated by semicolon); if this is left empty, verification is done based upon used field type.
 
Rule...
Description...
int Positive and negative integers.
float All numbers ("+", "-", "." and digits).
alpha Characters only (A-Z, a-z).
alphanum Characters and digits only (A-Z, a-z, 0-9).
positive Positive numbers only.
negative Negative numbers only.
range:x,y All numbers from x to y.
values:val1,val2, ... Only given values are allowed.
min_size:x Minimum length of required input.
max_size:x Maximum length of allowed input.
valid_email E-mail address checking for correct format.
valid_URL URL checking for correct format.
accepted Required field (same as "required" in field types); e.g. used for checkboxes.
format:<x>::<error> <x> must match a Perl regular expression.
<error> may contain a customized error message, shown instead of the default one when verification failed.

Samples for field verification:
 

Rule...
Allowed content...
range:1,10 All positive numbers from 1 to 10 (e.g. 2, 9.35, ...).
values:yes,no Allowed input "yes" or "no" only.
min_size:5 At least 5 chars required, e.g. postal code check.
format:^\d+\.\d\d$ One or more digits followed by point and two digits, for example: 123.78 (Perl expressions).
 
Edit control Choose the intended edit control type:
 
Edit control type...
Description...
Automatic selection Let SunnyShop automatically select the matching edit control type based upon the field type.
Text input control Standard text input field.
Text input with dropdown list * Combined text input and dropdown list control (requires JavaScript enabled).
Password input control Password text input field.
Checkbox Checkbox (value = 1 when enabled).
Checkbox list * List of multiple checkboxes.
Upload (image) "Upload file" field for images (uploaded content will be stored in "binary" directory).
Upload (other files) "Upload file" field for binaries and memos (uploaded content will be stored in "binary" directory).
Text area Multi-line textbox (applicable for data types "text", "memo" and "htmlmemo").
Radio buttons * Radio buttons.
Combobox (Dropd. list) * Dropdown list.
List * Same as combobox, but items appears as listing.
Multiselectable list * Same as list, but allows to choose multiple items.
Hidden Hidden in shop-frontend, but may have a value (as it is specified in "Default value").
* Values must be specified in field "Edit control data" below.
 
Edit control data Applicable for radio buttons, comboboxes, lists and multiselectable lists to determine the field content. Format: <Internal used value>|<Displayed value>

For example:
 
  01|Get YourAffiliates now
02|Get EasyData now
03|Get AccessGuardian now
...
 

Edit control width Applicable for text and password input fields as well as text areas. Type in the width of concerned field in characters (this does not set maximum length of field input).
Edit control height Applicable for text areas, lists and multiselectable lists. Type in the height of concerned field in lines (field content can contain more or fewer lines than set here).
Edit control template Advanced users only: Active template for executing Perl scripts.
Column width Type in the width of the table column concerned field appears in. Use either percentage value or pixels; leave empty for standard setting.
Column alignment Select alignment of the table column concerned field appears in.
Cell vertical alignment Select alignment of the table cell concerned field appears in.
Max. size Type in max. number of characters allowed for input.
Images, binary & memo fields: Type in max. file size (bytes) allowed being uploaded.

Important notes: If you edit a system field, some of the settings above may be not available for selection. Don't touch pre-filled settings for system fields, you may negatively affect their behavior. 
 

Category handling...

Categories are used to classify products hosted at a particular product table. In order to enable them, please add the system field _category to the concerned table (it is handled by SunnyShop to store category related data).

From admin panel, select the desired table and choose "Edit table categories". Alternatively you can click on "Categories" in the upper right corner of the screen.

How to create a new category:

Type in a category name and short description (optional; can be displayed when browsing by categories).

Now click either on the button "Add new top-level category" to create a new main category or "Add new category inside current category" to add a sub-category within the currently selected category.

How to edit a category:

Click on the ID of the category you wish to modify:
 

SunnyShop asks...
Description...
ID (category code) Category codes are assigned automatically; but if desired, you can customize them (use alphanumerical characters only).
Name Type in a new category name or correct the old one.
Description Type in a new category description or correct the old one.

In order to take over the changes to the system, click on the button "Save".

How to delete a category:

Select the ID of the category you wish to remove and then click on the appropriate deletion button to remove the concerned category from the table (please be careful when doing so; once deleted, categories cannot be recovered).

Important note: Product records related to removed categories are re-assigned to the table's root category.

Category trees - overview:

SunnyShop comes with a feature allowing website developers to implement an interactive JavaScript-powered category tree to websites in just a few minutes. Ideally suited for easy store navigation on category-based product tables.

Each tree is built with graphical elements and can be individualized to allow highest flexibility. It is also based upon an own template (sstree.htm), so even surrounding HTML elements are possible.

Category trees - website implementation:

Call sstree.cgi to display a table's tree:
 

Action to perform...
URL to call (location varies on your system, of course)...
Display a category tree http://.../cgi-bin/ss/sstree.cgi?tbl=<name>&cart_id=<cartID>
<name>: Desired table to display tree for (required parameter).
<cartID>: Handed over cart ID (optional parameter; e.g. by using <!--$CARTID--> tag at shop-frontend).

Implementation by using SSI-tags:

Example: <!--#include virtual="/cgi-bin/ss/sstree.cgi?tbl=TABLE"-->
Description: Replace "TABLE" with the concerned table's name.

Technical note: Remove all HTML initializing tags from template sstree.htm (mainly <HTML> and <HEAD>) to avoid display errors caused when inserting the category tree codes into an existing webpage via SSI.

Important note: In order to use category trees, at least the permission "Search" is required for anonymous users.

Category trees - available settings:

Choose the desired product table and select "Restructure table". Alternatively click on "Restructure" in the upper right corner of the screen. If you just created a table, this screen appears automatically. Now click on the button "Edit treeview parameters".

Layout options:
 

SunnyShop asks...
Description...
Show number of records Mark this button to show the number of records available per category.
Show category description Mark this button to include available category descriptions.
Show "Expand all" link Mark this button to display a link at the end of the tree allowing to expand it entirely.
Show "Collapse all" link Mark this button to display a link at the end of the tree allowing to collapse it entirely.
Initial tree state Select the status of the tree when called (all expanded, all collapsed)
Target frame If the category tree is used in a frame-based environment, specify the target frame to display the table content (when tree element is clicked).

Keep this empty to open the content in the same window where the category tree is located in (this removes the category tree).

Usage note: Use "_blank" to open a new browser window for displaying table content.

Template of tree node Specify or edit a template file applicable to the web-frontend.

Drawing icons:
 

SunnyShop asks...
Description...
... URL Alternatively to the hardcoded icons, you can specify own images being displayed. Keep the concerned setting empty to use the default elements.

Technical note: Even images are located at the same server, please use full URLs only (starting with "http://...").

Use background vertical line Mark this button to display a filling element used for large categories (taking more than one line in space, e.g. when displaying category descriptions).

Folder/leaf icons:
 

SunnyShop asks...
Description...
Show folder/leaf icons Mark this button to show icons for folders and leafs.
... URL Alternatively to the hardcoded icons, you can specify own images being displayed. Keep the concerned setting empty to use the default elements.

Technical note: Even images are located at the same server, please use full URLs only (starting with "http://...").

Root category:
 

SunnyShop asks...
Description...
Root category label Type in the label used for the root category (at top of tree).
Root category icon URL Specify an image being shown as icon near the root category. Keep the setting empty to not show an icon for root.

Technical note: Even the image is located at the same server, please use full a URL only (starting with "http://...").

 
Table maintenance...

Select the desired table and choose "Restructure table" from admin panel. Alternatively you can click on "Restructure" in the upper right corner of the screen.

How to remove a table (be very careful):

Go to "Delete table" and then click on "Delete files". You can either remove parts of this table or the entire database structure.

How to clear selected table files (be very careful):

Go to "Empty table", select the appropriate files you wish to clear and then click on "Clear data" to carry out this action.

How to rename a table:

Go to "Rename table" and specify the new name. Click on "Rename" to take over the changes to the system.
 

Product options (also price-/weight-/volume-affecting)...

Possible applications:

Options in general are used to allow the selection of product attributes, like different colors, sizes or accessories. Furthermore, SunnyShop also handles custom text input, that may be used for greeting cards or individualized goods.

SunnyShop supports standard options as well as price-/weight-/volume-affecting options, which can either increase or decrease the product's price, weight, volume or any combination of them.

How to enable options for a product table:

Add the system field _options to your product table or mark "Include product options field" when creating a new one.

How to add options data for a particular product:

Go to the admin panel, click on "View/Add/Update/Delete records" and add a new product or update an existing one. You've two choices of adding options: Manually or with some help by the software. Both methods are described now:

Create / edit option strings manually:
 

Type of option...
Description...
SELECT

Shows a selectbox to let the
customer choose an attribute.

General format (standard):
  SELECT "<Attribute>" {<One>;<Two>;...}

General format (price-/weight-/volume-affecting):
  SELECT "<Attribute>" {<One>:<Price>,<Weight>,<Volume>;
<Two>:<Price>,<Weight>,<Volume>;...}

Some examples of option usage:
1
2
3
SELECT "Select your size" {S;M;L;XL;XXL;XXXL}
SELECT "Surface" {Polished:20.00;Mat:-5;White:0}
SELECT "Material" {Gold:50,10,4.80;Silver:0,,-3.50}

Sample 1: Creates a selectbox with six selectable values.

Sample 2: Option "polished" increases the product price (+20 EUR), while option "Mat" reduces it (-5 EUR) and "White" does not influence the price.

Sample 3: The material "Gold" increases price at 50 EUR, weight at 10 kg and volume at 4.80 cm³. "Silver" doesn't affect price and weight, but decreases volume at 3.50 cm³.

TEXT

Shows a text input field to let
the customer type in something.

General format (without limitation):
  TEXT "<Text>" {size=<Number>}
"size" sets the length of displayed field (equal to HTML attribute "size" in tags).

General format (with limitation):
  TEXT "<Text>" {size=<Number>;maxlength=<Number>}
"maxlength" sets the max. length of input (equal to HTML attribute "maxlength" in tags).

General format (force special field name for multiple fields):
  TEXT "<Text> \"<Name>\"" {size=<#>;maxlength=<#>}

Some examples of option usage:
  TEXT "Text of your greeting" {size=20;maxlength=100}
TEXT "Text to print on \"front\"" {size=15}
TEXT "Text to print on \"back\"" {size=25}

Usage notes: The combination of multiple options (also options of different types) for the same product is possible. Products with/without options can co-exist together in one table, since options are specific to each record.

Technical note: When detecting a syntax error in the option string, SunnyShop stops further parsing and displays only correct options parsed earlier than erroneous one. So error tracing can be done easily and data stays always consistent.

Create / edit option strings automatically:

Select the desired type of option field you wish to create ("New option" or "New text input"):
 

Selected type...
Description...
New option Decide for an option label and type in all applicable options delimited by semicolons, see samples above (the values in curly braces must be entered here).
New text input Decide for an option label and type in the size and maxlength attributes delimited by semicolons, see samples above (the values in curly braces must be entered here).

Special applications of price-/weight-/volume-affecting options:

Price-affecting options are also ideally suited for granting volume discounts. Just let the customer select the package size (e.g. 100 screws, 1000 screws, etc.) and calculate the amount influencing the normal price.

Weight-/volume-affecting options could be used when combining heavy or large products with options together and wanting to charge shipment based upon weight and volume (e.g. a personal computer with optionally offered CRT-display and printer).
 

Product time management...

General information:

SunnyShop provides the ability to schedule the appearance and disappearance of product records.

There are several ways to set appearance dates, expiration dates and periods (e.g. based upon record creation date or last record update, for the entire table or unique for each record).

Pre-requisites for automatic record expiration:

Maintenance interval: Ensure that a maintenance interval is specified. Please see screen "Table parameters", "Table automatic maintenance". Recommended range: 3600 to 43200 seconds (1 to 12 hours).

Technical note: Record appearance tasks are automatically handled when accessing the concerned table.

Appearance... table-wide appearance date (valid for all new records):

Add system field _effective_since and type in the following string as "Default value" setting at "Field properties" screen:
  Appears in <x> days

<x>: Number of days counted from record creation till appearance.

Usage note: This string is a special command, only valid for the above particular application.

Appearance... individual appearance date for each unique record - absolute date:

Add the system field _effective_since which contains the date of first desired appearance (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS). It must be filled during record addition; leave field empty to make the record available immediately.

Appearance... individual appearance date for each unique record - relative date:

Same procedure as done for a table-wide appearance date, but don't set a default value for _effective_since, just use "Appears in <x> days" individually for each created record as field value.

Expiration... table-wide expiration date (valid for all records):

Ensure that either the system field _add_datetime or _update_datetime is present for the concerned table - based upon these date/time stamps, the expiration dates are calculated:
 
  _add_datetime contains the date/time stamp of record creation.
_update_datetime contains the date/time stamp of last record update.

At "Table automatic maintenance" (see "Table parameters" screen), you'll find the record expiration settings:
 

SunnyShop asks...
Description...
Expiration time (days) * Type in the number of days records are kept in table before they expire.
* Leave this field empty to disable record expiration for this table.

Expiration... individual expiration of each unique record - absolute date:

Add the system field _expires which contains the date of expiration (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS). This field must be filled during record addition; leave it empty to disable expiration for a particular record.

Important note: Setting an expiration time (see above) is required also here to determine a maximum applicable time frame; you may wish to set the expiration time parameter to a high value, like 3650 days (about ten years).

Expiration... individual expiration of each unique record - relative date:

Alternatively to the date input described before, simply type in this as "Default value" setting for the field _expires:
  Expires in <x> days

<x>: Number of days counted from record creation till expiration.

Usage note: This string is a special command, only valid for the above particular application.

Expiration... combination of table wide and individual expiration dates:

If _expires and one date/time stamp as well as an expiration time exists, then the expiration date in _expires applies.
If both date/time stamps and an expiration time exists, then _update_datetime is used for calculating the expiration time.

General priority of date/time stamps and expiration field: _expires, _update_datetime, _add_datetime.
 

Product associations...

Product associations - overview and applications:

Product associations are used to show related products when viewing a particular record in detail. So they are ideally suited to focus customer attention to accompanying products.

Sample associated products: DVD recorder -> DVD media and connection cables; mobile phones -> batteries and bags. So let's say, anything customer needs additionally when buying a particular good.

How to enable product associations feature:

Add the system field _related_products to all desired product tables or mark "Include field for related products" when creating a new one.

How to add or delete product associations:

Go to the admin panel, click on "View/Add/Update/Delete records" and add a new product or update an existing one. At the field "Related products" you find a list of all products currently available on the entire system:

Target box (current selections): Contains all associated products. You may delete entries again by removing the matching lines.

Source box (available selections): Choose an associated product and click on "Add" to select it.

The button "Search and mark" allows you to search the source box content by typing in a phrase or string. All matching product records are selected and can be taken over with a single click on the "Add" button.

Technical note: The edit control requires JavaScript being enabled; however JavaScript is not required at the shop-frontend.

Usage note: When deleting a product, SunnyShop automatically removes all product association references pointing to this record avoiding dead related links being shown in other product records.

How to customize a selected associated product:

All entries at the target box are editable allowing you to modify the displayed product name (<Product name>) and also to add a separate description (<Product description>).

Format: <Table>:<ID>:<Product name>:<Product description>

<Table>, <ID>: Fields to identify an associated product; change them with care only.
<Product name>: Default product name as displayed at the source product table. Used as linking text at shop-frontend.
<Product description>: An optional description of the associated product.
 

Warehouse management and quantity handling...

Warehouse management - limited product quantities:

If only a given amount of items is available for some products, SunnyShop can deduct all ordered items from the total quantity. Add the system field _quantity to your product table or mark "Include field for available quantity" when creating a new one.

As value for this field, simply type in the amount of pieces you have in stock for each product or leave its value empty in order to disable quantity limitations for a particular product.

When the quantity reaches "0", the concerned product is no longer allowed for being placed into the shopping basket. In order to let disappear products with zero quantity at the shop-frontend, enable "Hide 'out of stock' goods" parameter.

Mark "Deduct ordered quantity from products with limited quantity" for all accepted payment methods to let SunnyShop deduct ordered goods automatically or edit each incoming order and mark the "Deduct now" checkbox there.

If you wish to bring back items for a particular order (e.g. order cancelled), then mark the "Return to store now" checkbox within the concerned order's record (also see the chapter "Office tools management" for details).

In order to bring back a sold out product or just to increase the available stock, modify the _quantity field value in the product record reflecting the newly existing quantity.

Warehouse management - limited product quantities per order:

You can limit the quantity of a specific product available for each customer per order (this is especially helpful when offering freebies or specials you don't want to make available in large quantities).

Add the system field _quantity_per_order to your product table or mark "Include field for quantity limit per order" when creating a new one.

As value for this field, simply type in the max. number of items, one particular customer can put into the shopping basket at a time. Leave its value empty in order to disable quantity limitations for a given product.

Warehouse management - stocktaking:

In order to get an overview about all products currently on-stock, click at "View stock" available at the top menu line. Provided results are shown in ascending order (so out-of-stock products appearing at first position).

Pre-requisite for this feature: The system field _quantity is required at desired product tables.

"Back again" customer notifications:

When a product sold out (as tracked by _quantity), it is possible to keep the product staying visible at the shop-frontend allowing interested customers to subscribe to a special mailing list that informs them as soon as the product returns.

In order to enable this feature, please add the system field _onstock_maillist to the desired product tables (it is required that these tables are also using the _quantity system field).

Notifications are sent as soon as _quantity value of the product in question is increased (from zero to a higher number). The matching mail template can be modified at the "Templates editor" screen.

Important note: There will be no notifications for products returned on stock when cancelling orders (to avoid a cancelled order making one single item available again (that may be already shipped or even broken) causes to inform dozens of people).

"Out-of-stock" and "low stock" admin notifications:

When using the stock management feature of SunnyShop, it can notify you via e-mail in the case a particular product is at low stock or has been completely sold out (at screen "Edit shop parameters", "'Out-of-stock product' notification").

Pre-requisite for low stock warnings:

The system field _quantity_low_limit is required in product tables. For each product record, this system field's value must contain the number of items reached before a low-stock warning is sent to the administrator.

There is no general rule for determining the best-suited low quantity limit - it should be high enough allowing you to re-add items before the product is sold out and it should be low enough to avoid having too many items on stock which may be never sold.
 

SunnyShop asks...
Description...
Send "out-of-stock" notification
to admin
Mark the button to enable "out-of-stock" notifications.
Send "low stock" notification
to admin
Mark the button to enable "low stock" notifications.

"New products / updated products" notification:

It is possible to inform customers about new or updated products automatically. This is a useful feature to cause attention for the latest additions or changes (like in pricing or available options).

Pre-requisite for this feature: User must have agreed to receive mailings (system field _subscribed checked).

In order to enable this feature, please add the system field _manually_updated to the desired product tables (it will contain the last date of manually done record modifications; independent from _update_datetime tracking all record alterations).
 

SunnyShop asks...
Description...
Notify subscribed users...
 
Selection...
Description...
No Disable sending of notifications.
About new products Send notifications for newly added products.
About updated products Send notifications for updated products.
About new and updated products Send notification for new and updated products.
 
Activated tables for this feature Select the product tables enabled for notifications. Choose multiple entries by holding the CTRL key (or appropriate) when selecting.
Notification mailing period Decide about the time frame of sending such notifications.

Pending mailings are collected and then sent all at once by the mailing utility (either initiated manually or by the server's scheduling tool).

Sending "new products / updated products" notifications:

It is required to initiate sending these notifications either manually (use link below headline) or by scheduling nph-cron.cgi being executed daily by Cron (this works also with other scheduling tools).

By the way: If you are new at scheduling server actions, please contact your webhoster for details or refer to available literature. Alternatively you may use the Cron editor we provide (call cron_edt.pl from the command line, e.g. "perl5 cron_edt.pl").
 

Sale analysis...

SunnyShop offers a large scale of statistical information suited to track the success of your store. In order to access these statistics, click on "Sale analysis" located at the main admin menu (see "Order information").

Here you can select the desired time period (date range, month or year) as well as the following report types:
 

Report types...
Description...
Returning customers Shows all customers ordered more than once.
Breakdown... Shows the total number of orders splitted into each consumer group, payment method or shipping method.

Statistics for consumer groups and payment methods also contain links to view all customers belonging to a particular group or having used a specific payment method.

Products popularity... Shows the most popular products for each table.

... by number of orders: Counts only really sold products (considering cancelled orders).

... by number of cart additions: This may also include unfulfilled orders (no checkout) and products removed from cart before checking out.

 
Images / Binaries / Memos...

You can have multiple image fields as well as binary fields and memos in each product table. Just create a table field and set its data type to "image", "binary" or a memo one. Depending on your selection, the concerned field has a specific behavior:
 
Selected data type...
Description...
image Image fields (GIF, JPG, PNG & BMP formats); will show an image as field value.

Sample applications: Product pictures, screenshots.

binary Binary fields; will show a link to allow file downloads.

Sample applications: Download of user manuals, binary files in general.

memo / htmlmemo Memo fields (for textual or HTML content); will show its content as field value.

Sample applications: Extensive product descriptions, internal notes for admin and sale operators only (in this case, don't forget to make field invisible on shop-frontend).

uploadmemo Same as memo fields, but used together only with edit control "upload (other files)".

Sample applications: See "memo / htmlmemo".

By using the parameter "Max. size" at "Field properties", you can specify the maximum file size in bytes allowed for uploads. 

Important note: It is not possible to perform search operations upon these fields' content.
 

Temporarily blocking of product records...

An existing product record can be blocked, so it is not available at the shop-frontend, but still in its product table. In order to enable this feature, you must have the system field _blocked in your product table.

Usage note: Blocking records is useful for temporarily sold out or just seasonally available products.

How to block a record:

Search for the concerned record to block, click on "Update" (can be found in the upper right corner of the screen) and then just check the appropriate button (edit control of the field _blocked).

How to unblock a record:

Search for the concerned record to unblock, click on "Update" (can be found in the upper right corner of the screen) and then just uncheck the appropriate button (edit control of the field _blocked).
 

User voting and comments of products...

This allows your customers to rate products and leave comments for them.

How to enable voting and/or comments for a product table:

Add system field _rating to the table to allow user ratings. Optionally add system field _votes to count number of ratings.
Add system field _comments_data to the table to allow comments. Optionally add system field _comments to count them.
 

SunnyShop asks...
Description...
View comments per page Type in the number of comments displayed per page when showing comments.
Rate choices Specify the choices a user can choose from to rate a record. You must use pairs of "Rating number | Rating display text" (higher number means better rating), for example:
 
  |Rate this resource
0|So-so
2|Okay
4|Good
6|Excellent
...

By the way: You can also use negative numbers (for very bad rating).

Default votes number SunnyShop uses the value of _votes field to calculate an average rating value. If this system field is not present, the number specified here will be used instead of.
Use fraud blocking (IP saving) Enable this option to save all IP addresses. One IP address is allowed to leave one rating per product only; so it prevents this feature from being abused.
Clear IP lock file when
doing maintenance
Enable this option to let SunnyShop automatically clear the IP lock file when doing maintenance. If disabled, you should clear this file from time to time by yourself.

Technical note:  Admin can remove unwanted comments by editing the field _comments_data of the concerned record.
 

Automatic backup generation (applicable to product and system tables)...

What exactly is backup generation ?

EasyData is able to generate backups of its data files automatically to allow restoring them later. Generated backup files (extension .db.bak) are located within the "data" directory.

Pre-requisites for generating backups:

Maintenance interval: Ensure that a maintenance interval is specified. Please see screen "Table parameters", "Table automatic maintenance". Recommended range: 3600 to 43200 seconds (1 to 12 hours).

Important note: The backup update period must be longer than the specified maintenance interval.

Enable / disable backup generation:

Select the desired table and choose "Restructure table" from admin panel (either within "Manage product tables" or "Manage system tables"). Alternatively click on "Restructure" in the upper right corner of the screen and click on "Edit table parameters".

Go to the part "Table automatic maintenance" to find the appropriate settings:
 

SunnyShop asks...
Description...
Number of backup files Type in the number of different backup file levels generated (max. 5). Increasing this value gives you a better chance to restore elder data, but also requires more diskspace.
Backup file #1 update period (hours) Specify the time frame between backups are generated.
Rename backup file #x to #x
after this number of updates...
Type in the number of updates processed for the concerned backup file before it will be replaced by the next generation of backups.

Technical notes: In order to disable the backup feature, set "Number of backup files" to 0 or leave it empty. New backups are not generated for unchanged files (since backup already exists).

Recommended backup settings:

Maintenance interval = 3600; number of backup files = 4; backup file #1 update period = 6
Rename backup file #1 to #2 after this number of updates of backup file #1: 4
Rename backup file #2 to #3 after this number of updates of backup file #2: 5
Rename backup file #3 to #4 after this number of updates of backup file #3: 6

TABLENAME.db.bak1 holds 0 to 6 hours old database content.
TABLENAME.db.bak2 holds 6 to 24 hours old database content.
TABLENAME.db.bak3 holds 1 to 5 days old database content.
TABLENAME.db.bak4 holds 5 to 30 days old database content.

<TABLENAME>: Name of the table, concerned backup file belongs to.

Retrieve data from backup:

If you wish to roll-back a corrupted data file, just replace the original file with the latest error-free backup copy.

Before doing so, please ensure that the table definition did not change recently (e.g. by adding new fields). In this case, the table definition needs to be set to the configuration of the data file to restore.

Important note: Restoring data files should be managed by an experienced system administrator only. In case of emergency, SunnyScript can provide you with special assistance to professionally handle this task (optional fee-based service).

Helpful hint: In order to create a backup of an entire database, you may use the "Download/upload table package" feature.
 

Re-randomization (applicable to product tables)...

What exactly is re-randomization ?

When browsing categories or viewing search results, all shown product records are presented in a given order. However in some cases, you may wish to achieve a random order (e.g. to provide a fair rotation of products).

The re-randomization feature allows to fill one or more table fields with random numerical values; these fields can be used for sorting records by chance. Each table maintenance, the field values are refreshed and so also records are sorted differently.

Pre-requisites for re-randomization feature:

Maintenance interval: Ensure that a maintenance interval is specified. Please see screen "Table parameters", "Table automatic maintenance". Recommended range: 3600 to 43200 seconds (1 to 12 hours).

Create a "randomizable" field:
 

Action to perform...
Description...
Create a table field Click on "Restructure table" and create a new table field (used name doesn't matter).
Hide field * Go to the screen  "Table layout parameters" and remove its name from all "Visible fields" parameters (table browsing mode and detailed entry view mode).
Mark field for sorting * On the same screen, add the random field to "Sort records" parameters. Random fields can be used together with other fields for flexible sorting.
Set re-randomization settings On the same screen, go to the "Field re-randomization" part:
 
SunnyShop asks...
Description...
Re-randomization interval (sec.) Time frame before refreshing random fields (same or higher value as maintenance interval).
Re-randomization fields Choose field(s) being intended as random ones.
 
* More details can be found at the chapter "Shop-frontend and template management".
 
Search requests statistics...

The search requests statistics shows how people are using your product tables regarding search queries. All search queries are logged and then presented in a comprehensive graphical report searchable by date/time and sorted by usage frequency.

You can use these statistics for various marketing and performance analysis (e.g. most popular search queries, behavior of the users when doing search operations) or just for your personal interest.

How to enable search requests logging ?

Pre-requisite for this feature: Ensure that a maintenance interval is specified. See screen "Table parameters", "Table automatic maintenance". Recommended range: 3600 to 43200 seconds (1 to 12 hours).

Go to the screen "Table layout parameters", "Search requests logging":
 

SunnyShop asks...
Description...
Log all modifications to file... Mark "Don't log" to disable logging or any other entry to enable it.

Sending of statistics via e-mail: See also "Table layout parameters" screen, but now part "Table automatic maintenance":
 

SunnyShop asks...
Description...
Search requests statistics mailing SunnyShop is able to send a summary of all statistics to the admin's e-mail address.

If you wish to receive mailed statistics, just decide for the mailing time period. If no option is checked, the mailing feature is disabled.

How to access the statistics ?

Click on "Search stats" available in the upper left corner of the screen to access the statistics of the currently active table.

Search requests statistics form:
 

SunnyShop asks...
Description...
Select time period The following selections are available:
 
Selection...
Description...
All available dates Display data for the entire time period parsed.
Date range Type in a start and end date of the time period you wish to receive reports from.
Month Select a particular month to display data (available selections bases upon the parsed logs).
Year Select a particular year to display data (available selections bases upon the parsed logs).
 
Limit number of top requests Keep the default "Unlimited number" entry to show all search queries or limit it to a more reasonable range of top requested search queries.

Smart tip 1: The generated reports can be printed easily: Depending upon the used paper size, you may need to set the printer's page orientation to landscape format. In this case, there is also space for placing hand-written notes at the margins.

Smart tip 2: Since SunnyShop doesn't use image files to create bar graphs, you can simply copy the report to a disk and carry it to other computers, still keeping the layout (reports are generated in HTML language).
 

View, add, clone, update and delete product records...

Go to the admin panel, select the desired product table and choose "View/Add/Update/Delete records".

On the following screen, you may browse through all categories, search for products, add new ones, remove, update or clone existing products and do all other database administration tasks (see menu on the upper right corner of the screen).

Technical note 1: When updating records, all fields are shown regardless of the "Visible fields" settings at "Table parameters" screen for convenience reasons (however other screens in admin panel considers these preferences).

Technical note 2: Cloning a product means to take over all field values from an existing record to a new one showing the "Update record" screen. It is not possible to clone fields of type "image", "binary" and "uploadmemo".
 

Database import and export tools...

In order to import or export data, click on the button "Import / export data" available on the main admin menu.

Import data into database:

Click at the button "Start data import..." to begin reading in an existing 3rd-party database.
 

SunnyShop asks...
Description...
Determine data file being uploaded Choose the file holding the data intended for being imported to SunnyShop or select an already uploaded one * for processing.

* It is also possible to upload files directly to the server (e.g. via ftp) and then use the admin panel for importing them - please refer below for more information.

Specify data format Select the type of the importable file; alternatively to the pre-defined types, you can also set up a custom format in case of reading special database structures.

Please consult the manual of the 3rd-party database product you wish to import data. If it directly supports SunnyShop, mark "EasyData exchange format".

Important note: Please ensure to decide for the correct data format, otherwise the imported data may appear being destroyed.

Determine the target table New table:

Select this radiobutton to create a new table for the importable data.

Important note: Ensure to mark "Add autoincrement key field" to automatically add a key field (if not existing) - the first table field must be unique to allow identifying records.

Existing table:

Select this radiobutton and choose the desired table (must have the same structure as the one to import); decide either to replace or update already existing data.

Fields selection and post-processing Determine whether you want to import all fields or just selected ones.

If "Let me select fields after uploading" was chosen, a screen appears after the file was read in that shows a list with fields for being importable.

Mark "Delete uploaded file after processing" to remove the source file from the system as soon as the data import has been finished (recommended).

Click on the button "Import data" to start the importing process. After it is finished successfully, please check the read in data for consistency first. It is also recommended to keep a backup copy of all original database files for later references.

Technical note: Data formats "... with field names" requires that the first line of the importable file holds the names of the fields. Alternatively, default names are chosen you can rename later at any time.

Importing already uploaded source files:

This feature is useful especially when trying to import huge databases, because the file size allowed to read in through the admin panel may be limited by your server or webbrowsing software...

Just place the source file into the directory data/import.tmp. Now go to the admin panel, click on "Import / export data" and select the concerned file from the list (see parameter "Determine data file being uploaded").

Export data from database:

Select the appropriate source table and click on "Continue..." to go to the next screen.
 

SunnyShop asks...
Description...
Specify data format Select the type of file you wish to build: You can either decide for a pre-defined format or a custom one suited for special applications.

Usage note: If supported by the target database software, choose "EasyData exchange format" to achieve best results.

Select fields to export By default, all fields and their contents will be exported; however you can uncheck fields not required in your target application (e.g. the ID field may be of no usage there).
Set optional data filter Depending upon the available system fields, you are able to set additional filters.

Only records matching the filter criteria (multiple filters can be connected with AND / OR operators) will be exported. This may save additional diskspace.

For example, you can specify a range of records by using the key field filter (ID field) or enter a search query to export only a determined group of records.

Now click on "Export data" to start the exporting process. A "save file" dialog is shown by your web browsing software to store the exported data file on your computer.

Advantages of the "EasyData exchange format":

The "EasyData exchange format" is a tab-delimited text-based format also storing binary field content, like images or software files together with the textual data (URL-encoded).

Where possible, this format should be used for data import and export tasks to ensure best results when handling non-textual contents (all other supported formats cannot handle binary fields).

Technical note: If you are a programmer interested in implementing our exchange format into your own applications, please let us know. We are able to provide you with additional information upon request.

Helpful hint: Should you wish to manually back up an entire database or to carry an existing one over to an other SunnyShop installation, you may decide to create a "table package" as described more closer in the following.

Table packages - overview:

A table package contains an entire database (the table and all related elements) in one single file (TABLENAME.ede). So table packages are ideally suited for carrying an entire database to an other server or for generating manual backups.

Download table package:
 

SunnyShop asks...
Description...
Specify source table Select the table being intended for package downloading.
Include log files Mark this button to add all log files to the package (may become very large).
No compression Click here to not compress the table package.
Use internal gzip compression Use the internal compression utility (to pack the table package) or unmark this checkbox and specify external utility as followed.
Use external compression program Click here to compress the table package by using a server-sided tool.

"Compression command template": Contains the command used for compression. By default, SunnyShop tries to use the gzip compression utility of the server.

The compression command usually has two variables: $file_to reflects the compressed file, $file_from reflects the original source.

"Compressed file extension": Extension appended at file marking it as compressed.

Now click on "Download table" to save the table package. A "save file" dialog is shown by your web browsing software.

Upload table package:
 

SunnyShop asks...
Description...
Specify ".ede" file Select a local ".ede" file being intended for package uploading.
Decompression method
Compressed table packages needs to be decompressed first.
No decompression Click here to not decompress the uploaded package.

Important note: In the case a compressed package is uploaded but not decompressed correctly, an error message will be displayed and installation aborts.

Use internal gzip compression Use the internal decompression utility (to unpack the table package) or unmark this checkbox and specify external utility as followed.
Use external compression program Click here to decompress the table package by using a server-sided tool.

"Decomp. command template": Contains the command used for decompression. By default, SunnyShop tries to use the gzip compression utility of the server.

The decompression command usually has two variables: $file_to reflects the target ".ede" file, $file_from reflects the original source.

"Expected filename after decompression is complete": Select either to autodetect the package filename or specify one (has to end with .ede).

Now click on "Upload table" to copy the table package to the server.

Technical note 1: Should there already exist a table with equal name, SunnyShop chooses a new name for the uploaded table (may be changed later at "Restructure table" screen).

Technical note 2: The choices "Use internal GZIP compression" respectively "Use internal GZIP decompression" for table package down- and uploads are only available, if there is the Perl module "Compress::Zlib" installed.
 


 
Office tools management
Manage the office behind your shop...

Overview:

SunnyShop is much more than just a shopping cart. It also provides various office management tools, like a customer address database, order and invoice handling as well as electronic newsletters.

In the following we explain how to use these features. Before you proceed, you should have been read the previous chapters (some matters are described there we have considered as being known).
 

Registered users database...

Overview and typical applications:

The "table of registered users" (customers) available on the main admin menu holds all information about customers that have created an own user profile on the system previously.

Registered customers profit from a faster checkout process (address details are pre-defined). In addition, you are able to send out mailings as well as get some statistical information from the stored data.

Some usage examples:

You can use "View records" in order to search for specific parameters, like age or origin of your customers and so find out what kind of people your shop attracts - the ideal basis for creating sales statistics and do targeted marketing.

Add new fields to request further details during registrations to get a clear picture about your customers or ask for information which are required to have for your business.

Inform registered customers about upcoming new products, special events and company news by sending mailings and regular newsletters. And with personalized mails, you may achieve much more attention.

"Table of registered users" settings (accessible from the main admin menu):
 

SunnyShop asks...
Description...
View / Add / Update / Delete users Search the customer database; add, update or remove profiles.
Send out mailings Send mailings to registered customers (see last part of this chapter).
Restructure
Change table parameters and layout
Manage the database structure (e.g. additions or modifications of fields) and other table-related preferences (e.g. sorting of records).

Important note: Don't touch any parameters you are not sure about.

Change table parameters and layout of registered users table:

Important note: Since these are very similar to the ones of the product tables, please refer to the previous chapter for details. We have explained only additional or modified parameters here.

Behavior (experienced users only):
 

SunnyShop asks...
Description...
"Add record" mode Available parameters:

"Data verification script": Perl script being executed after pressing the "Submit" button (before data is added); suited for input validation.

"Run this code before applying actual changes": Perl script being executed after the data verification script. It is not executed when data verification script returns an error.

Possible applications:

Modify some field values before posting, validate input or update data in other tables or perform other actions (e.g. calling 3rd-party software).

Notes for using Perl codes:

Field values are read- and writable via hash $fields{<fieldname>}. Just replace <fieldname> with a field of the concerned table.

Cancel posting to the table by making Perl code return number below zero. Return -2 in order to don't display "add form" again. Add error messages to global @errors array.

Usage example ("Data verification script"):

At least one of both fields, option1 or option2, must be chosen...

if ($fields{option1} eq "" && $fields{option2} eq "") {push (@errors, "One of these options must be selected.");-1;} else {0;}

"Record update" mode Available parameters:

"Data verification script": Perl script being executed after pressing the "Submit" button (before data is updated); suited for input validation.

"Run this code before applying actual changes": Perl script being executed after the data verification script. It is not executed when data verification script returns an error.

Possible applications:

Modify some field values before posting, validate input or update data in other tables or perform other actions (e.g. calling 3rd-party software).

Notes for using Perl codes:

Cancel posting to the table by making Perl code return number below zero. Return -2 in order to don't display "update form" again. Add error messages to @errors array.

Usage example: See above for "Add record" mode.

"Record delete" mode Available parameters:

"Data verification script": Perl script being executed after sending a deletion request (before data is removed); suited for input validation.

"Run this code before applying actual changes": Perl script being executed after the data verification script. It is not executed when data verification script returns an error.

Possible applications:

Validate input or remove data from child table(s) or perform other actions (e.g. calling 3rd-party software).

Notes for using Perl codes:

Cancel deletion from the table by making Perl code return -1 and adding error messages to global @errors array.

Usage example ("Data verification script"):

If field can_delete is empty, concerned record cannot be deleted...

if ($fields{"can_delete"} eq "") {push (@errors, "Record is marked as locked and can't be removed.");-1;} else {0;}

Permissions:
 

SunnyShop asks...
Description...
Record owner permissions
Update own Allows registered users to update their own profiles by using the shop-frontend.
Delete own Allows registered users to delete their own profiles by using the shop-frontend.

"Password reminder" utility:
 

SunnyShop asks...
Description...
Reminding message "from" address Type in the e-mail address used in the header of reminder e-mails.
Reminding message subject Type in the subject used in the header of these messages.

Templates substitution:

If you wish to use your own templates instead of the pre-defined ones, please select your desired templates here (more details about templates can be found below). "--use default--" will activate the standard template for concerned output.

Helpful hint: If you're unable to find your recently created templates within the lists, hold CTRL or SHIFT key and click on the "Reload" button of your browser software to reload the browser window (to replace an old copy in cache).
 

Order and payment tracking...

Overview and typical applications:

This powerful back-end feature allows you to watch about incoming orders, track payments and more.

Watch incoming orders & track payments:

Use "View orders" to see a list of all orders currently active on the system. You may also search for specific ones, e.g. by using the automatically assigned order number (request this number from customers in case of inquiries).

Orders which have been fulfilled, can be removed or just marked as being paid (field "Payment confirmed").

Print address labels:

You can generate address labels for packaging as well as other purposes (e.g. mailings, reminders). Please refer to the part "Print address labels" within this chapter for more details.

How to cancel or modify a particular order:

Simply remove the matching order and invoice records from the system and ask the customer to place a new order by using the shop-frontend or modify the order and invoice records accordingly (take care to keep system data consistent).

Alternatively to removing an order from its system table, you can simply mark the "Order cancelled" checkbox and so keep the order record alive (e.g. for later reference).

If you use the _quantity system field to manage product quantities, please update the concerned order before removing it to re-add deducted products back to stock (mark "Return to store now" checkbox within the order).

Usage note: Where applicable, please ensure to provide a chargeback for made payments; this task is not done automatically.

"Table of orders" settings (accessible from the main admin menu):

Important note: Since these are very similar to the ones of the registered user tables, please refer to this part for all details.
 

SunnyShop asks...
Description...
View / Update / Delete orders Search the orders table for open payments, pending orders and more.
Send out mailings Send mailings to people listed on this system table (see last part of this chapter).
Restructure
Change table parameters and layout
Manage the database structure (e.g. additions or modifications of fields) and other table-related preferences (e.g. sorting of records).

Important note: Don't touch any parameters you are not sure about.

Auto removement of orders:

See screen "Table parameters", part "Table automatic maintenance" / "Records expiration". Specify the number of days after order creation, before an order is removed automatically from the system.

Mark "Auto. remove only if payment confirmed" to ensure that only orders are deleted, for which payment has been received.

Pre-requisite for this feature:

The maintenance interval must be set for this table; recommended range: 3600 to 43200 seconds (1 to 12 hours).
 

Invoice management...

Overview and typical applications:

The table of invoices is mainly used for internal purposes to create printed invoices for each order processed by SunnyShop. So you are able to take over invoices from SunnyShop directly to your bookkeeping.

Search for invoices and print them:

Use "View invoices" to see a list of all invoices currently available on the system or search for a specific one. Click on the link "printable" (invoice number) to see the appropriate invoice ready-to-print or click on the order ID for a web-like formatting.

"Table of invoices" settings (accessible from the main admin menu):

Important note: Since these are very similar to the ones of the registered user tables, please refer to this part for all details.
 

SunnyShop asks...
Description...
View / Update / Delete invoices Search the invoices table, correct or remove them.
Send out mailings Send mailings to people listed on this system table (see last part of this chapter).
Restructure
Change table parameters and layout
Manage the database structure (e.g. additions or modifications of fields) and other table-related preferences (e.g. sorting of records).

Important note: Don't touch any parameters you are not sure about.

Auto removement of invoices:

See screen "Table parameters", part "Table automatic maintenance" / "Records expiration". Specify the number of days after invoice creation, before an invoice is removed automatically from the system.

Pre-requisite for this feature:

The maintenance interval must be set for this table; recommended range: 3600 to 43200 seconds (1 to 12 hours).

Technical note: As soon as an invoice becomes removed from this table, customer is unable to create a printed invoice by using the link within order confirmation mails. So set expiration period on a large scale.
 

Print address labels...

For order processing or additional correspondence (like mailing campaigns), you can print customers' postal addresses as available at the table of orders (this requires that an order you want to print labels for is still existing at this system table).

Address labels are provided for being downloaded as text file to your local computer. The layout can be fully customized to match any paper dimension and other requirements by editing the template.

Go to the main admin menu and click at "Shipment address label printing" available within "Order information".
 

SunnyShop asks...
Description...
Orders filter
The following filters are applying to records available at the table of orders.
Date range Type in a start and end date of the time period you wish to receive reports from.
"Cancelled" status Filter to consider the "cancelled" status of orders.
 
Possible settings...
Description...
All orders (disregard status) Disable this filter.
Yes (cancelled orders) Select orders that have been cancelled.
No (not cancelled orders) Select orders that are not cancelled.
 
"Payment confirmed" status Filter to consider the "payment confirmed" status of orders.
 
Possible settings...
Description...
All orders (disregard status) Disable this filter.
Only orders with conf. payment Select orders that have been paid.
Only orders with open payment Select orders with outstanding payment.
 
"Order shipped status" SunnyShop can add an invoice to the table of invoices for each single transaction.
 
Possible settings...
Description...
All orders (disregard status) Disable this filter.
Only shipped orders Select orders that were already shipped.
Only unshipped orders Select orders that have been not shipped.
 
Custom filter By specifying a search query, you can determine orders matching particular criteria. It is possible to use any field available in the table of orders.

Click on "view filter results" to get a listing of all selected records (this filter only).

Technical note: In order to ignore other filters, set them to "All orders...".

Now click on "Download address labels" to start the download process. A "save file" dialog is shown by your web browsing software to store the label file on your computer.

After downloading finished, you may open the file in a word processor or spreadsheet for further processing and printing.
 

Send out mailings...

In order to create a mailing, select the desired table and choose "Send out mailings" from admin panel. Alternatively you can click on "Mailings" in the upper right corner of the screen.

You can send out mailings either to all record owners of a selected table (recipients filter set to "Send to all") or just mail such people who have allowed you to do so (recipients filter set to "Send to subscribed users only").

Mark "Do not send duplicate e-mails" in order to send only one single mail, even a particular address is found multiple times.

Reach the correct recipients:

Table of registered users: General mailings to all registered customers (e.g. new product announcements, company news).
Tables of orders and invoices: Mailings regarding payment or service issues.

Custom recipients filter:

You can specify a search query that filters only recipients matching particular criteria. It is possible to use any field available in the table this mailing is intended for. Click on "view filter results" to get a listing of all selected records.

For example: income>=3000 AND education="high"
Only recipients will receive this mailing which have an income of more than 3000 currency units and a "high" education level.

Usage note: For more details about how to perform search operations, please refer to "Searching of databases (tables)" below.

Personalized mailings:

Personalized mailings contain an individual "To:" field for each recipient. In addition, you can include fields from the concerned table  (format: <!--$FIELDNAME-->) which are replaced by appropriate content.
 

SunnyShop asks...
Description...
Sender's name and e-mail Type in the name and e-mail address used in the header of outgoing mails.
Message subject Type in the subject line used in the header of outgoing mails.
Message format Select message format, "Plain text" or "HTML" (applicable to recipients' mail clients).
Message body Type in the content of your mailing here.

Sample personalized mailing:
 
  Dear <!--$first_name--> <!--$last_name-->,

you recently added your website <!--$URL--> to our database.

If you would like to increase the popularity of your <!--$BUSINESSTYPE--> company, you should take a closer look at our valuable offers !

With kind regards,
John Smith (my sample company).

Technical note: If "Do not send duplicate e-mails" is marked, a recipient with multiple records receives mail for the first found record only (and so will just see content of table fields for this specific record).

Quick mailings:

Quick mailings are used to send identical messages to all recipients (faster processing). However the usage of personalized elements is not possible (included table tags are removed automatically).
 

SunnyShop asks...
Description...
Mailing method Mark "Quick" to send out messages by using blind carbon copies.
 
SunnyShop asks...
Description...
"To:" field Specify one visible "To:" address for the mailing (user addresses are hidden).
Max. number of BCC recipients
per message
Max. number of recipients allowed per message; recommended value: 99.
 

Intelligent mail content delivery:

The most powerful feature is the delivery of intelligent message parts based on a record's content and "if/then/else" conditions. So a mailing can be written absolutely targeted, which leads to higher response rates and increased user convenience.

Important note: This works only with "Personalized" mailing method. "Quick" mailings will ignore intelligent message parts.

Each "intelligent message part" has the following structure:
 
  <!--if <expression>-->
Message delivered when <expression> is true.
<!--else-->
Message delivered when <expression> is false.
<!--endif-->

Usage notes: "if" and "endif" tags are required, while the "else" part is optional. Recurrent tags may also be used.

<expression> can contain these operators:
 

Type...
Allowed operator...
Possible applications...
Mathematical operators +, -, /, *, == Any kind of calculations with numerical field content, e.g. indices, formulae.
String comparison operators eq (equal)
le (less than or equal)
ge (greater than or equal)
lt (less than)
gt (greater than)
ne (not equal)
Comparison of string based field content, e.g. names and selected options.
Numerical comparison operators =, <=, =>, >, <, <> Comparison of numerical values, e.g. age, size.
Logical operators AND, OR, NOT Relationships between fields, calculation and comparison results.

Format of field values: $fieldname (field names are handled case-sensitive).

Sample applications (non-recurrent tags):
 
  <!--if $gender eq "m"-->
Ties for 5 Euro only.
Just a limited time, buy now !
<!--else-->
Parfums starting at 10 Euro.
<!--endif-->

<!--if $income < 20000 AND $intelligence_quotient <= 30-->
Hi <$name>,
participate in our "get rich fast" special offers !
This is your chance to live like the <rich & beautiful>.
<b><i>So start acting now - start today.</b></i>
<!--endif-->

<!--if $index * 10 / $basetax + 0.03 == 2 AND $taxstatus eq "high"-->
Save taxes by ordering our book "1001 (il)legal tax tricks".
<!--else-->
Increase your income by ordering our book "1001 ways to get wealthy".
<!--endif-->

Usage notes: Second sample does not have an "else" tag, which means that a false result will lead into not displaying anything. Should a field value be unavailable (spelling error, non-existing field), then the argument is considered as being empty.

Technical note: It is also possible to use HTML and client-sided scripts (like JavaScript) within intelligent message parts.

Sample application (recurrent tags):
 
  <!--if $gender eq "m"-->
Special offer for <b>men</b> from our drug store:
<!--if $age > 50-->
Gray hair remover for just 9,99 Euro.
<!--else-->
Shaving foam - just 3,99 Euro.
<!--endif-->
<!--else-->
Special offer for <b>women</b> from our drug store:
<!--if $age > 50-->
Wrinkle remover for just 9,99 Euro.
<!--else-->
Lavender bath salt - just 3,99 Euro.
<!--endif-->
<!--endif-->

Usage notes: Parts in green text belonging together. Do not forget to close all "if" tags avoiding malfunctions.

How to perform a test of personalized and intelligent mailings:

In order to let the system process a sample message, click on the button "Send test message to admin". The system then generates a mailing, which is sent to the administrator under real life conditions.

And these default values are used: Numerical = 0; date/time related fields = actual date/time; URLs = http://test.<fieldname>/; e-mail addresses = test@<fieldname>.test; fields in general = test-<fieldname>.

Smart tip: Have a look at MailingStar (plus) - professional mailing list management and e-mail marketing software.
 


 
Shop-frontend and template management
Access the shop-frontend...

The shop-frontend of SunnyShop is very powerful, but convenient to use and clearly structured. All parts are fully self-explaining and even first time Internet users may be able to work with this attractive interface.

How to access your shop:
 

Action to perform...
URL to call (location varies on your system, of course)...
Access main entrance http://www.sunnyscript.com/cgi-bin/ss/sshop.cgi

However you may also use the following ways to access your shop, for example to forward people directly to a specific store, category or even a particular product (e.g. ideal for advertisements).

Access a specific store (product table):
 

URL to call (location varies on your system, of course)...
http://www.sunnyscript.com/cgi-bin/ss/sshop.cgi?tbl=<table>&action=view

<table>: The name of the store or department.

Access a specific category of a store:
 

URL to call (location varies on your system, of course)...
http://www.sunnyscript.com/cgi-bin/ss/sshop.cgi?tbl=<table>&category=<category>&action=view

<table>: The name of the store or department.
<category>: The category code created by SunnyShop (see screen "Edit table categories").

Access a product directly:
 

URL to call (location varies on your system, of course)...
http://www.sunnyscript.com/cgi-bin/ss/sshop.cgi?action=view_entry&tbl=<table>&ID=<product>

<table>: The name of the store or department.
<product>: The product ID created by SunnyShop (see field "ID" of the product's record).

Usage note: These URLs are perfectly suited for any kind of advertisement as well as to be implemented in your website to point directly to a given store, category or product within your shop.

Helpful hint: If you are unsure about the correct URLs on your system, please use the shop-frontend and go to the screen you intend. Then simply copy&paste the URL from your web browser (you may remove assigned shopping cart IDs before).

Smart tip: When using SunnyScript's YourAffiliates affiliate management software, you may provide URLs to access a specific store, category or even product to your affiliates for being promoted instead of the entire website or shop.
 

Adjust product table parameters...

Each product table (also known as store or department) has its own set of table parameters used to determine its behavior (e.g. sorting of products, visible fields, search preferences, ...).

Choose the desired product table and select "Change table parameters and layout" from main admin menu.

Table layout parameters:
 

SunnyShop asks...
Description...
Table display label Name of your table, as it will be shown at the shop-frontend.
Table description Short description of the table (appears next to the store name at the shop-frontend).
Table browsing mode
Show subcategory entries List also products in sub-categories when viewing a higher level category.
Records belonging to multiple
categories
Records, which are members of multiple categories, are normally shown in their respective primary categories only.

If you wish to show records in all categories they belong to, select "Display in all categories" instead of.

Category entry template Select a specific layout template for this table's categories or keep the default one.
Sort records by (when browsing) Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or "Up" and "Down" to change field order. You may also decide for descending or ascending sorting (standard).

Alternatively you can type in a comma delimited list of fields manually. Add "-" before a fieldname to sort in descending order (ascending sorting done by standard).

View records per page Number of products displayed per page.
Visible fields * Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

Linked columns Field content is linked and if clicked on, concerned record will be displayed in detailed entry view mode.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

Table entry template Select a specific layout template for table entries or keep the default one.
Detailed entry view mode
Visible fields * Fieldnames shown when viewing a product detailed.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

"Add record" mode
Visible fields * Fieldnames shown to you when adding a new product.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

"Record update" mode
Visible fields * Fieldnames shown when modifying an existing product.

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

* These are required (and important) fields; double-check them for containing correct values.

Search layout parameters:

When searching for a particular product or using "Advanced search", search results delivered are formatted as stated here.
 

SunnyShop asks...
Description...
Sort records by default Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or "Up" and "Down" to change field order. You may also decide for descending or ascending sorting (standard).

Alternatively you can type in a comma delimited list of fields manually. Add "-" before a fieldname to sort in descending order (ascending sorting done by standard).

View records per page Number of products displayed per page.
Search fields * Fieldnames available for searching (no binary, memo & image fields).

Right box (available selections): Choose field and click on "Add" to select it.

Left box (current selections): Click on "Delete" to remove a field or use "Up" and "Down" buttons to change field order.

Alternatively you can type in a comma delimited list of fields manually.

Found entry template Select a specific layout template when searching a table or keep the default one.

* These are required (and important) fields; double-check them for correct values.

Categories list layout:
 

SunnyShop asks...
Description...
Show number of records Check to let SunnyShop count the number of products and display it beside the category name. For example: "Color TV sets (25)".
Number of columns Number of columns to display categories in.
Root category display label Label for root (main) category (e.g. "All products").

Menu layout:
 

SunnyShop asks...
Description...
Sub-menu entries Allow or block sub-menu entries; possible values: "add,clone,update,delete".

Voting and comment parameters:

This feature is explained more detailed in the chapter "Store management".

Table modifications logging:

Check this button in order to log all table modifications (add, update and delete records) to TABLENAME.modif.log located in the "data" directory (TABLENAME is replaced with the name of the concerned table).

In this way, you are able to manually recover lost data or track IP addresses of users trying to cheat your system.

Technical notes: Content of memo / image / binary field types is not logged.

Search requests logging:

This feature is explained more detailed in the chapter "Store management".

Table automatic maintenance:
 

SunnyShop asks...
Description...
Maintenance interval (in seconds) Time frame between running automatic maintenance (e.g. system jobs, data backups). Recommended range: 3600 to 43200 seconds (1 to 12 hours).
Data file backing up
This feature is explained more detailed in the chapter "Store management".
Records expiration
This feature is explained more detailed in the chapter "Store management".
Fields re-randomization
This feature is explained more detailed in the chapter "Store management".
Search requests statistics mailing
This feature is explained more detailed in the chapter "Store management".
Log files cleanup
Specify the maximum size of system-generated log files (it is recommended to fill these parameters, otherwise the logs are growing indefinitely). Recommended range: 2048 to 5120 KB.

Templates substitution:

If you wish to use your own templates instead of the pre-defined ones, please select your desired templates here (more details about templates can be found below). "--use default--" will activate the standard template for concerned output.

Helpful hint: If you're unable to find your recently created templates within the lists, hold CTRL or SHIFT key and click on the "Reload" button of your browser software to reload the browser window (to replace an old copy in cache).
 

Shop-frontend customization with templates...

Templates are used by SunnyShop to build the shop-frontend. Each screen shown on the frontend is generated from one or more template files (mail messages are also handled in this way).

By default, a standard template scheme is used. It's the ideal basis to create your own templates or modify the existing ones. More detailed information will follow later in this chapter. You have two choices of modifying the shop's templates:

1. Modify color and font schemes only:

You may adjust the color and font schemes to achieve a similar layout as the one of your business website...

Go to the admin menu, click on the button "Edit templates" and search for "main template" labelled entries. These contains various layout settings taking effect to all sub-templates connected with the concerned main template.

2. Full set of freely configurable templates:

Beside of just customizing color and font schemes with style sheet commands, you can create your own set of templates or re-write the standard ones (they are a good basis for your own templates).

Each template is written in HTML and contains special tags which will be replaced by appropriate content. There's nothing you cannot customize, however you should have a familiar understanding of SunnyShop and HTML programming.
 

Available templates...

Available templates:

There are three kinds of templates: Main templates contain the master layout; sub-templates hold the layout of output blocks appearing in these main templates; independent templates stand alone.

A detailed list with comprehensive descriptions of all template files is available from the admin panel (see "Templates editor" screen). Please contact our customer service for pre-sale inquiries asking for this list.

Helpful hints: If you create your own template sets, start creating the main templates first to have a better overview. After each single template is ready, run a test-drive to check correct functionality.

Important note: We strongly recommend to keep backup copies of the original template files for later referencing purposes.

Location of templates:

All template files are physically located in the templates directory you specified during installation of SunnyShop.

As long as you create or modify templates using the admin panel, you don't have to care about. However if you create templates manually, you must copy them to this location, because SunnyShop only recognizes files in this directory as templates.

Create templates for your product tables:

Each product table can have its own set of templates - so you are able to manage completely different lines of products. In order to modify templates or create new ones, go to the admin menu and click on the button "Edit templates".

Activate your own templates for a product table:

Please take a look at the part "Adjust product table parameters" above to see how to select specific templates for a table.
 

Customization of templates...

As you may have seen above, each template contains special tags in the format <!--$TAGNAME--> which will be replaced by SunnyShop with appropriate content (like shopping cart content or system messages).

For some advanced functions, Perl code is used on the templates together with internal script variables. You may just surround these codes with additional HTML tags or modify them as desired (suggested only if you are familiar with Perl).

Important notes: Some tags are specific for selected templates. If you add a tag to a template which cannot use it, concerned tag will be simply ignored. However a missing tag can cause that users are not able to get access to selected features.

If you wish to customize templates, go to the admin menu and click on the button "Edit templates".

List of tags and Perl script variables you can use on templates:

A detailed list with comprehensive descriptions of all valid variables and tags is available from the admin panel (see "Templates editor" screen). Please contact our customer service for pre-sale inquiries asking for this list.

Expert note: Common script variables available in all templates are $in{<form_var>}, which gives access to form variables submitted by the user (<form_var>) and $namespace->{'TAG'}, which offers access to special tag variables.

Custom software solutions:

Contact our sales department to request a free quote for our individual programming and customization services. Our team of experienced programmers and website designers looks forward to take over this task for you at affordable rates.
 


 
Helpful hints and technical reference
Affiliate management with YourAffiliates...

Smart tip: Have a look at SunnyScript's YourAffiliates - advanced affiliate management to empower full business' potential.

Beside of correct configuration of order logging settings within "Shop parameters", you don't have to take care about anything else, as long as YourAffiliates uses the same domain name as your shop-frontend.

The reason for this pre-requisite is a security limitation in the cookie technology, that allows only domains reading a cookie, which have originally set it - that's why the domain names of YourAffiliates and SunnyShop must match each other.

Use a different domain name:

For this application, SunnyShop must set the affiliate ID instead of YourAffiliates on customer's computer. So you are able to use different domain names for both software packages.
 

Action to perform...
URL to call (location varies on your system, of course)...
Aff. URLs by SunnyShop http://maxjump.com/cgi-bin/ss/sshop.cgi?<arg>&prg=<prg>&affil=<id>

<id>: Affiliate identification; <prg>: Affiliate program code.
<arg>: Arguments to display a certain store, category or product (optional).

According the above URL scheme you have to modify the advertising HTML codes used by YourAffiliates (please refer to the electronic manual of this product regarding details).

Auto-processing of order cancellations:

If you (or your customer) cancel an order at SunnyShop, any paid sale commission is automatically deducted from the concerned affiliate's account.

Technical note: Since the table of orders does not store affiliate IDs, it is impossible for the software to recall commissions when setting a cancelled order back alive - this task has to be added manually via YourAffiliates' admin panel.
 

Special order of product listings...

Sorting by "indicator" fields:

In some cases, you may want to achieve a specific product listing on the shop-frontend (e.g. when introducing new products or to focus the customer's first attention to).

You can do so by adding an additional field to the concerned product table holding content of your choice and then sort records by this indicator field (see "Product table parameters").

Sorting by date and time stamps:

Alternatively it is also possible to include the date/time stamps _add_datetime and _update_datetime to sort products by the date of record additions or last updates.

Sorting by product views:

You may also sort records by the number of times they got viewed by customers: Add the system field _views_number to the concerned product tables and use its value for sorting.

The field's numerical content is automatically handled by SunnyShop and becomes increased by 1 each time a record is shown detailed (as higher the value, as more popular the product).

Usage note: You can also show the field's content on the shop-frontend (e.g. color it with "Display mask" parameter when it exceeds a given number to attract people much more) - so you can point out most interesting products.
 

Advanced search features...

Searching for information:

SunnyShop provides a wide range of powerful search features to retrieve information from your stored data fast and accurate. In the following, we want to show how to built search operations in an effective way.

Let's first have a look at these two records used to explain the sample operations below:
 
id: 1
firstname: John
lastname: Smith
age: 27
postcode: 12345
city: Samplecity
country: Somewhere
id: 2
firstname: Max
lastname: Smith
age: 12
postcode: 02345
city: Samplecity
country: Somewhere

Usage note: All samples don't consider special features like searchable fields, whole word or case-sensitive search operations. They just refer exclusively to their concerned explained features.

Interpreting keyword searches:

In most cases, you can use any text string for query fields in order to start searching a table.

Sample query: smith
Delivered records: 1, 2

Multiple keywords should be separated by spaces. SunnyShop automatically adds the logical operator AND unless an other one is specified (read below for details and additional explanations).

Sample query: john blanche
Delivered records: none ("john" is found in record 1, but "blanche" is not existing)

If you are not sure about the spelling of a word (e.g. singular/plural or different spelling alternatives), then just type in a partial word.  SunnyShop will perform a sub-string search for the provided string.

Sample query: some
Delivered records: 1, 2 (finds string "some" in values of field "country")

Boolean operators: AND (&) OR (|) NOT (!)

The logical operators AND, OR, NOT are supported. Instead of the words AND, OR and NOT you can also use the operator characters ampersand (&), pipe (|) and exclamation mark (!).

Sample query: john AND smith
Delivered records: 1

Sample query: john OR max
Delivered records: 1, 2

Sample query: john ! max
Delivered records: 1 ("!" stands for "NOT")

Technical note: At advanced searches you can specify a default operator.

Parentheses: ( )

Operations put within parentheses are processed first; the result is then used for further operations within the search string.

Sample query: (john NOT max) AND samplecity
Delivered records: 1 ("john NOT max" delivers record 1; then looks there for "samplecity"; both statements are true (AND))

Phrases: " "

Strings put within phrases are searched exactly as they are (not case-sensitive).

Sample query: "sample"
Delivered records: 1, 2 (finds "samplecity")

Sample query: "JOHN"
Delivered records: 1

Wildcards: * ? \

Beside of the standard sub-string search, it is possible to use more specific wildcards for automatically expanding a search operation. Wildcards marking variable parts of a string; they are helpful when looking for word variations and different spellings.

The asterisk (*) is considered as placeholder for none, one or more characters; the question mark (?) is considered as placeholder for exactly one character.

Place an escape character (\) before any symbol to disable its special meaning (e.g. a search for the string "book\*" will look for "book*" as it is written and does not consider the special meaning of the asterisk character).

Sample query: sample*
Delivered records: 1, 2 (would also find "sampletown", "samplevillage" or just "sample")

Sample query: ?2345
Delivered records: 1, 2 (but would not find "012345", since only one character is allowed being there).

Comparison operators: = == < > <= >= <> ~ !~ ~~

Within a search query you may address a specific record field being searched for a given string or numerical value.

Available operators:
 
= wildcard match (wildcard symbols allowed) == exact match (disabled wildcard search, "as is")
< less than > greater than
<= less or equal than >= greater or equal than
<> or != not equal ~ contains text (default operator)
!~ does not contain text ~~ whole word match

Sample query: age <= 12
Delivered records: 2 (looks exactly at the field "age" and disregards other fields)

Technical note: When just entering a string, SunnyShop converts it into <searchable field> ~ <search string>. In case of using "whole word" match, the search string is converted into <searchable field> ~~ <search string>.

Priority of used operators:

When processing a search request, SunnyShop first handles all parentheses, then comparisons and finally any boolean operator found (in this priority: NOT, AND, OR).

Search options at "Advanced search" screen:

By clicking at the "Search" link in the upper left corner of the screen you will come to the advanced search area for the concerned active table. Beside of a standard search mask, also the following options are available:

Case-sensitive: Mark this button to handle search operations case-sensitive (CAPITAL and lowercase chars are differed).

Whole words: Mark this button to search for entire words only (recognizes space characters).

Match method: Select whether all arguments must be found (AND) or just one is sufficient to list a record (OR).

Sort by / then sort by: Define sorting of search results over two levels.
 

Collected technical notes and tips...

Stores and product tables:

SunnyShop is also the ideal solution to sell services and (magazine) subscriptions easily. If you intend to distribute software (online delivery) or website memberships, please have a look at SunnyScript's AccessGuardian.

It's a matter of course that SunnyShop uses business rounding rules for all amounts.

Each unique product record can belong to multiple categories. If a record belongs to more than one category, it will be counted to the primary category (the first in range selected for the concerned record).

When displaying search results or while browsing a category, also records from sub-categories are displayed (if search criteria applies to them). Uncheck the option "Show subcategory entries" to disable this feature.

Why not creating an own store for clearance sales (e.g. last season's clothing) ? You'll notice that this increases your income and attracts customer attention also to other stores.

Use thumbnail product images (about 10 KB in size) for the table browsing mode and full-size ones for the detailed entry view mode - just create different fields for the concerned product table and let show them only in certain modes.

If you intend to provide links to other Internet resources (like manufacturers' websites or downloadable documents), then create fields of URL type (SunnyShop will automatically embedd the necessary HTML tags to make the URLs clickable).

Sell gift certificates by adding them as products; it's also possible to provide individualized ones by requesting additional info using options (e.g. text input fields). Don't forget to add the provided certificate numbers to the shop's certificate management.

If you wish to offer gift wrappings or a "delivery product to different address" feature, also use options to realize these apps.

For granting volume discounts (like 2-for-1), either use price-affecting options or add different product variations (e.g. packages with 100 or 1000 screws). Alternatively having special "family-size" categories or wholesale product tables can make it, too.

SunnyShop is able to handle fractional pricing, e.g. charge 0.001 or 0.00089 currency units. In order to get correctly rounded amounts, please set the parameter "Primary currency decimals" (at screen "Edit shop parameters") to the desired level. However note that for the payment method "Credit card real-time processing", the full amount is sent to the payment processor, regardless of the set currency decimals (may be required for some currencies to prevent conversion errors).

In order to pre-add a specific product to the shopping basket, instruct customers not to call sshop.cgi, but provide an URL of a "Add to cart" action (copy the link shown at the webbrowser after adding a product, but remove the used cart ID).

Usage of SSL certificates:

SunnyShop allows you to protect the checkout procedure with SSL encryption (all transferred data is encrypted depending upon the encryption level of the installed certificate).

In order to enable encryption, you need to modify the "URL of checkout script" (screen "Edit system parameters") according the following specifications (depending upon your server's security implementation).

Own SSL certificate: Just replace "http://" with "https://" in the URL.

Shared SSL certificate: Use the URL assigned to the SSL certificate (see instructions provided by the system administrator).

Greet returning customers:

You may wish to welcome repeating customers (anybody who has placed at least one order) on the shop-frontend or directly on your website by greeting them with their names.

SunnyShop provides the ability to store the first and last name of all customers as cookies on their computers. These cookies are named first_name and last_name; their lifetime is indefinite.

In order to enable this feature, go to the screen "Edit shop parameters" and mark the button "Store user's first name / last name in cookies after checkout".

A sample JavaScript application that displays a greeting on webpages is included at the software package (see file js.txt).

Software related issues:

SunnyShop uses server-sided shopping carts, so disabled cookie acceptance as well as dynamically assigned IPs doesn't affect the system. However JavaScript is necessary for some features (e.g. handling of multiple currencies), but not required.

If coupons or gift certificates have a greater value than the ordered total amount, the remaining credits are skipped; e.g. products in cart are worth 50 EUR, but the gift certificate is of 60 EUR value, the remaining 10 EUR are not considered.
 

Forgot your admin password ?
 
If you forgot your admin password, you must remove the admin password file named admin.pass located in "auth" directory (see software directory of SunnyShop). Then you can set a new password next time you access the admin panel.
 
Shop-frontend and template translations...

The shop-frontend of SunnyShop is fully customizable and translatable by modifying the existing templates accordingly. In addition, also system messages may be translated:

In order to translate system messages into your desired language, download the files *.en (located in the software directory), which holds all pre-defined text parts and load them into a text editor.

Each language file uses the same structure:
  <Meaning or default text> => <Translation>

Please change only the part <Translation> while keeping the left-sided ones. After you finished translation, please upload the files to your server and give them a try.

Important note: You should create a backup copy of all original *.en for later reference.

Custom payment method labels:

If you wish to use different labels for payment methods than the default ones (for example "Banking transfer or cheque" instead of "Send invoice"), you need to modify the entries at file order.en , section "List of all implemented payment methods".

Important note: Alterations done to order.en can negatively affect the software's behavior, so please be careful.
 


 
Customer services

Depending upon your license type, this software package includes various support services. Please refer to the license document or visit our website for more information about available services.

Before you contact our customer service department, please read this manual first. In most cases you find the answer here. However if you still experience problems, we will be more than happy to help you...

For all support inquiries, please contact support@sunnyscript.com and provide the following information:

* The license number of the concerned product.
* A close description of the problem or question you have (no file attachments, please).
* For technical inquiries: Used server environment, URL of admin panel & admin password.
 

Now we wish you a great time with our software products :-)

 
© SunnyScript - A subsidiary of Star Enterprise. Visit the SunnyScript website.
Please read our terms of business located at... http://www.sunnyscript.com/terms.htm