# Overview

Create new shipping methods for your customers based on size, date, time, ordered products, etc.

## Description

The Table Rate Shipping plugin for nopCommerce allows creating new shipping methods based on predefined conditions. This plugin enables users to create an unlimited amount of shipping methods for any occasion.

{% hint style="warning" %}
Plugin creates new shipping methods. If you would like to modify price or hide existing shipping methods, you need another our plugin [Shipping Restrictions](https://www.foxnetsoft.com/shippingrestrictions).
{% endhint %}

## Features

* Create new shipping methods based on address, size, weight, etc.
* Customize price, or prohibit usage of a shipping methods for any order based on predefined conditions
* Create unlimited amount of shipping methods
* Constant or variable shipping fees
* Optimized for performance
* Create cumulative shipping methods with the same name (i.e., create multiple shipping rates with different rules but under the same name)

### Supported conditions

* Store, the order was placed in
* Customer role
* Date and time, when the order was placed
* Customer address
* Checkout attributes
* Products in the cart, product attributes, product specification
* Categories, manufacturers, vendors
* Order total amount
* Size of the shipment
* Whether a coupon code was used in the order
* Whether a discount has been applied to an order
* And many more with advanced requirements builder

{% hint style="info" %}
In case you encounter an issue, you can contact us via <support@foxnetsoft.com>
{% endhint %}


# Installation process

## Supported versions

Currently Table Rate Shipping supports following versions of nopCommerce: 4.80, 4.70, 4.60, 4.50, 4.40, 4.30, 4.20, 4.10. With new releases of nopCommerce we will try to update our plugin as soon as possible.

## Installation

After downloading plugin, head to **Configuration** section of your nopCommerce **Admin Pannel**. Select **Local Plugins** page and click on **Upload plugin on theme**. Locate Table Rate Shipping ZIP file and upload it to your website. Reload your nopCommerce website and go to the same **Local Plugins** page. Scroll to locate **Table Rate Shipping** and click **Install** next to it.

After successful installation a **FoxNetSoft** section would appear in your **Admin Panel**. Click on it to reveal **Table Rate Shipping** and its settings.

{% hint style="danger" %}
Unregistered version would work only for 30 days.
{% endhint %}

{% hint style="info" %}
In case you encounter an issue, you can contact us via <support@foxnetsoft.com>
{% endhint %}


# Updating plugin

## Why updating?

Although any version of the plugin that was released on our website is fully operational, we constantly add new features and fix existing issues.&#x20;

It is worth to update your plugin in the following scenarios:

1. When you update nopCommerce
2. When you encounter any issues with the plugin
3. A month after a new release of a nopCommerce, even if you are not updating nopCommerce

This would ensure that you are using the best version of the plugin.&#x20;

{% hint style="info" %}
Updating will not erase any data that you created for your imports
{% endhint %}

## Where to download the latest version?

You can find the latest version on our plugin page, by clicking Download Trial. Note, If you have bough the plugin, a full version will be downloaded.

## How to update the plugin

Process of updating the plugin is exactly the same as the first plugin installation. You can navigate to [this section of documentation](/installation-process#installation).


# Table Rates

General logic of the table rates. More detailed explanation of each section can be found in next pages

## General information

Each rule creates exactly one shipping method.&#x20;

## Order of creation

Each table rate has admin-defined parameter **Priority**. This parameter determines the order, in which table rates are created, starting with **lowest Priority**.

{% hint style="warning" %}
Table rate has an option to stop next table rates being applied. See [Main section](/table-rates/main-section) for more information.
{% endhint %}


# Main section

## Overview

The main section consists of 3 subsections, it defines the general behavior of the table rate, shipping methods it's creating, and action of the table rate.

## Section 1 - General information

<table><thead><tr><th width="151">Parameter</th><th>Explanation</th></tr></thead><tbody><tr><td>Name</td><td>Shipping method name (displayed at checkout)</td></tr><tr><td>Description</td><td>Shipping method description (displayet at checkout)</td></tr><tr><td>Priority</td><td>Order, in which rules will be applied. Rules are applied starting with <strong>lower priority</strong>.<br><br>If two rules have same priority, they will be applied in order of creation time.</td></tr><tr><td>Transit days</td><td>Number of days it takes to get goods delivered</td></tr><tr><td>Is active</td><td>Wheather the rule is active</td></tr></tbody></table>

## Section 2 - Action

This section has only one field - Action.

It defines the behavior of the rule, if it is valid/invalid for this shipping method.

<table><thead><tr><th width="181">Action</th><th>Explanation</th></tr></thead><tbody><tr><td>Next Step</td><td>If the table rate is valid, shipping methods will be added. Following table rates will be checked, and shipping methods will be created. <br><a href="/pages/mDm9EI7ImPgMon5R5MCe#order-of-creation">Order of table rates</a></td></tr><tr><td>Stop If Valid</td><td>If the table rate is valid, the shipping method will be added, and all following table rates <strong>will not</strong> be validated.<br><a href="/pages/mDm9EI7ImPgMon5R5MCe#order-of-creation">Order of table rates</a></td></tr><tr><td>Goto Id</td><td>You can select the table rate that will be applied next, i.e. skip some table rates.<br><br>Logic is the same as Next Step.<br><br>You <em>must</em> select a table rate with higher Priority.<br><a href="/pages/mDm9EI7ImPgMon5R5MCe#order-of-creation">Order of table rates</a></td></tr><tr><td>Stop If Not Valid</td><td>If the table rate is <strong>not</strong> valid, shipping method <strong>will not</strong> be added, and all following table rates <strong>will not</strong> be validated.<br><a href="/pages/mDm9EI7ImPgMon5R5MCe#order-of-creation">Order of table rates</a></td></tr></tbody></table>

## Section 3 - Admin comment

This section is for admins only. You can briefly describe the logic of this rule for future reference.


# Conditions section

Address, Size, Weight, Subtotal, Customer roles, Stores, Discounts conditions

{% hint style="warning" %}
If any of the conditions will fail, the table rate will be invalid, and shipping method will not be added. In order to make "OR" comparisons, go to [Requirements section](/table-rates/requirements-section) (more advanced conditions).&#x20;
{% endhint %}

{% hint style="info" %}
If a condition is left empty, it will not be applied.
{% endhint %}

<table><thead><tr><th width="188">Parameter</th><th>Explanation</th></tr></thead><tbody><tr><td>Country and State</td><td>If selected, shipping method will be added only for customers from this country and state<br><br>You can select only country, and leave state empty</td></tr><tr><td>ZIP (Postal code)</td><td>Provide a <strong>range</strong> of postal codes that will have this shipping method.<br>Note, this works only with numerical postal codes. If you need to use postal codes with letters, or verify by patterns, see <a href="/pages/ATuJ6BUkMbOMp1GyqfkB">Requirements section</a>.</td></tr><tr><td>Weight and Size</td><td>Input the minimum and/or maximum weight or size in fields</td></tr><tr><td>Apply checking dimensions for each product in the cart</td><td>If enabled, dimensions and weight mentioned before will be applied to all products individually, otherwise checks will be applied to summarized dimensions.</td></tr><tr><td>Order Subtotal</td><td>Input the minimum and/or maximum subtotal in fields</td></tr><tr><td>Customer role</td><td>Table rate will be valid only if customer has one of the roles selected in this field. </td></tr><tr><td>Limited to stores</td><td>Table rate will be valid only if customer is in one of stores selected in this field.</td></tr><tr><td>Limited to warehouse</td><td>Table rate will be valid only if product exists in the warehouses listed.</td></tr><tr><td>Apply rule for discounts</td><td>Table rate will be valid only if <strong>any</strong> of the discounts selected here is applied to the cart.</td></tr><tr><td>Skip rule for discounts</td><td>If <strong>any</strong> of the discounts selected here is applied to the cart, the table rate will be <strong>invalid</strong>.</td></tr></tbody></table>


# Date and Time section

You can select the **weekdays** this table rate will be valid.

You can select the **time of the day** this table rate will be valid.

You can select a certain **range of dates** this table rate will be valid.

{% hint style="info" %}
Time, that is set in this section should be in the timezone of a customer.
{% endhint %}


# Coupon codes section

If customer does not apply **at least one** coupon from the **Apply** section, the table rate will be invalid.

If customer uses **any** of the coupons from the **Skip** section, the table rate will be invalid.


# Rates section

This section defines shipping fees

## Type of calculation

<table><thead><tr><th width="193">Type of calculation</th><th></th></tr></thead><tbody><tr><td>Fixed</td><td>A fixed shipping fee will be applied to all orders</td></tr><tr><td>Percent</td><td>A percentage of order total shipping fee will be applied to all orders</td></tr></tbody></table>

## Maximum/Minimum rate

If a rate drops below, or rises above specified amount, it will be set to maximum/minimum rate.

## Charge maximum rate

If you have several table rate shippings, and multiple are valid, only the one with highest shipping fee will be shown, others will be hidden.

This will apply, if **any** of the valid table rates has this parameter enabled.

### Show multiple options

This parameter **overrides** **Charge maximum rate** setting. So, even if another table rate has checked Charge maximum rate, and it has higher rate, table rate with Show multiple options parameter checked will be shown.

i.e. table rates with Show multiple options checked can not be hidden, if charge maximum rate is enabled elsewhere.


# Products section

You can require certain products to be purchased

The table rate will be valid only if **at least one** of the products in this section is in customer's cart.

If left empty, this check will not be performed.


# Requirements section

Advanced requirements

## Overview

This section allows to build advanced logical expressions based on values of the order.

A requirement can evaluate to either True or False value.

A group is a requirement that is evaluated based on the requirements that are contained in this group. AND/OR operator can be used to evaluate the group.

All requirements are placed in the root group called *DefaultRequirementGroup*.&#x20;

## Entities

Requirements can be placed on following entities:

* Billing address
* Shipping address
* Checkout attributes
* Order totals
* Specification attributes
* Shipping methods *(not aplacible)*
* Product Category, Manufacturer, Vendor

## Operators

| Operator            | Meaning                                                                                        |
| ------------------- | ---------------------------------------------------------------------------------------------- |
| ==                  | equals to                                                                                      |
| !=                  | not equals to                                                                                  |
| >                   | greater than                                                                                   |
| >=                  | greater than or equal to                                                                       |
| <                   | less than                                                                                      |
| <=                  | less than or equal to                                                                          |
| in                  | <p>the value is contained in the list<br><br>use a list of values separated with comma</p>     |
| not in              | <p>the value is not contained in the list<br><br>use a list of values separated with comma</p> |
| contain             | the value contains                                                                             |
| starts with         | the value starts with                                                                          |
| does not start with | the value does not start with                                                                  |

{% hint style="warning" %}
If you are using in/not in parameter, input a list of values separated with comma.
{% endhint %}

## Creating a requirement (not group)

1. Select requirement type
2. Select a group, to which a requirement will be added *(hidden if only root group is present)*
3. Select the property, value of this property will be compared
4. Select operator for comparison
5. Input a value for comparison. If you are using in/not in parameter, input a list of values separated with comma.
6. Click save.

## Creating a requirement (group)

1. Select Add requirement group in requirement type field.
2. Select a group, to which a requirement will be added *(hidden if only root group is present)*
3. Input a group name. It's recommended to have group names unique for your clarity.
4. Click save.
5. Select whether elements in this group will be compared by AND or OR operator.


