Business::Shipping - Interface for shippers

- NAME
- SYNOPSIS

- Rate request example
- Shipping tasks implemented at this time
- Shipping tasks planned for future addition

- REQUIRED MODULES
- INSTALLATION

- $self->init( %args )
- $self->user_error( ``Error message'' )
- $self->`validate()`
- `rate_request()`
- Business::Shipping->new_subclass( ``Subclass::Name'', %opt )

- AUTHOR
- COPYRIGHT AND LICENCE

# NAME

Business::Shipping - Interface for shippers (UPS, USPS)

# SYNOPSIS

## Rate request example

        use Business::Shipping;

        my $rate_request = Business::Shipping->rate_request(
            shipper   => 'Offline::UPS',
            service   => 'GNDRES',
            from_zip  => '98682',
            to_zip    => '98270',
            weight    =>  5.00,
        );

        $rate_request->submit() or die $rate_request->user_error();

        print $rate_request->total_charges();

## Shipping tasks implemented at this time

- UPS shipment cost calculation using UPS Online WebTools.
- UPS shipment cost calculation using offline tables.
- USPS shipment cost calculation using USPS Online WebTools.
- UPS shipment tracking.
- USPS shipment tracking.

## Shipping tasks planned for future addition

- USPS zip code lookup
- USPS address verification
- USPS shipment cost estimation via offline tables
- FedEX shipment cost estimation

# REQUIRED MODULES

Bundle::DBD::CSV (any) Cache::FileCache (any) Class::MethodMaker::Engine (any) Clone (any) Config::IniFiles (any) Crypt::SSLeay (any) Getopt::Mixed (any) Log::Log4perl (any) LWP::UserAgent (any) Math::BaseCnv (any) Scalar::Util (1.10) XML::DOM (any) XML::Simple (2.05)

# INSTALLATION

`perl -MCPAN -e 'install Bundle::Business::Shipping'`

See the INSTALL file for more information.

    =head1 ERROR/DEBUG HANDLING

Log4perl is used for logging error, debug, etc. messages. See config/log4perl.conf.

    =head1 METHODS

## $self->init( %args )

Generic attribute setter.

## $self->user_error( ``Error message'' )

Log and store errors that should be visibile to the user.

## $self->`validate()`

Confirms that the object is valid. Checks that required attributes are set.

## `rate_request()`

This method is used to request shipping rate information from online providers or offline tables. A hash is accepted as input with the following key values:

- shipper
The name of the shipper to use. Must correspond to a module by the name of: `Business::Shipping::SHIPPER`. For example, `UPS_Online`.

- user_id
A user_id, if required by the provider. Online::USPS and Online::UPS require this, while Offline::UPS does not.

- password
A password, if required by the provider. Online::USPS and Online::UPS require this, while Offline::UPS does not.

- service
A valid service name for the provider. See the corresponding module documentation for a list of services compatible with the shipper.

- from_zip
The origin zipcode.

- from_state
The origin state in two-letter code format or full-name format. Required for Offline::UPS.

- to_zip
The destination zipcode.

- to_country
The destination country. Required for international shipments only.

- weight
Weight of the shipment, in pounds, as a decimal number.

## Business::Shipping->new_subclass( ``Subclass::Name'', %opt )

Generates a subclass, such as a Shipment object.

# AUTHOR

Dan Browning <db@kavod.com>, Kavod Technologies, http://www.kavod.com.

# COPYRIGHT AND LICENCE

Copyright (c) 2003-2004 Kavod Technologies, Dan Browning. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See LICENSE for more info.