@title;noquote@ @signatory;noquote@
@context_bar;noquote@[ Administer ]
@context_bar;noquote@

Why

@package_name@ provides a simple yet flexible way to maintain a set of custom shipping rates based on the total value of the shipment.

Background

Berklee College Of Music needed a value based shipping rates for use with the ecommerce package. While the ecommerce package can base shipping rates on the number of items in the shipment or the total weight it is does not offer value based shipping rates. Thus the need arose for either a modification of the ecommerce code or an ACS Service Contract API based solution. Opting for flexibility and re-usability Bart Teeuwisse developed the Shipping Service Contract.

Usage

Note: This release has been developed on PostgreSQL only. Please report any problems you might find in the OpenACS SDM. The SDM can also be used to contribute patches to the @package_name@ package (for example to add Oracle support).

@package_name@ is based on 2 principles: Service Levels and Shipping Rates.

Service Levels

Value-based shipping rates are specific to service levels. E.g. the shipping rate for 'Ground Service' differs from the '2nd Day Air' or 'Next Day Air' rates. Hence, service levels need to be defined before shipping rates can be entered. Maintenance of the service levels is through the Service Levels Administration pages.

As said, services levels need to be defined before shipping rates can be defined. Conversely service levels can not be deleted as long as there are shipping rates for the service level. However, service levels can be renamed at any time. All changes have an immediate effect on life systems.

Shipping Rates

Shipping rates can be defined after the service levels have been entered. Maintenance of the shipping rates is through the Shipping Rates Administration pages.

Shipping rates a specific to a service level, the location of the destination and the value of the shipment. Rather than listing each possible location in the shipping rates table, @package_name@ uses the concept of regions.A region is defined by a combination of Country, From zip code and To zip code.

When selecting services and rates, the RatesAndServicesSelection operation compares the value of the shipment against the values of the From value and To value fields.

The RatesAndServicesSelection operation selects shipping rates from the bottom up. More specific shipping rate definitions are selected before global shipping rates.

Geographical exclusions are possible too. Create a shipping rate with an empty rate (=charge amount) and the location of the shipping rate will be excluded from more global shipping rates for the same service.

E.g. To define a shipping rate of $30.50 for all 'International Air' shipments out side the US one would create shipping rate of $30.50 for the world for orders over $0 with a second shipping rate for the US for orders over $0 with a rate of no value.

Please be aware that the query executed by RatesAndServicesSelection is an expensive query to perform and most likey doesn't scale well to thousands of shipping rate entries.

API Reference

The Shipping Service Contract explains the API in detail.

Credits

@package_name@ was designed and written by Bart Teeuwisse for Berklee College Of Music while working as a subcontractor for furfly.net.

@package_name@ is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

@package_name@ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

A copy of the GNU General Public License is included. If not write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA