Stock Package Shipping Module
#############################

This module is the base module required to interact with shipping service
providers.

Carrier
*******

The Carrier model adds the following field:

- *Shipping Service*: The shipping service of the carrier.

This field is programmatically filled by the modules providing support for
shipping companies.

Package Type
************

The Package Type model has been added the following fields:

- *Length*: The length of the packages of this type
- *Length Unit*: The unit of measure of this length
- *Length Digits*: The precision of length
- *Height*: The height of the packages of this type
- *Height Unit*: The unit of measure of this height
- *Height Digits*: The precision of height
- *Width*: The width of the packages of this type
- *Width Unit*: The unit of measure of this width
- *Width Digits*: The precision of width

Package
*******

The Package model has been added the following fields:

- *Shipping Reference*: The shipping reference provided by the shipping service
- *Shipping Label*: The shipping label provided by the shipping service
- *Weight*: A function field computing the weight of the package with its
  content

Shipment Out
************

The Shipment Out model will check once in the Packed state if the shipment is a
valid shipment for the shipping service. He does that by calling a method that
is by convention named ``validate_packing_<shipping service>``.

Once a shipment is packed, the user can create the shipping for each packages
with the shipping service by clicking on the *Create Shipping* button. This
button triggers a wizard that is overridden in shipping service specific
modules. The starting state of the wizard is a ``StateTransition``. Its linked
method is overridden in shipping service modules in order to communicate with
the service.

.. toctree::
   :maxdepth: 2

   configuration
   releases