The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

        Business::UPS - A UPS Shipping Cost Module

SYNOPSIS

    use Business::UPS;

    my ($shipping,$ups_zone,$error) = getUPS(qw/GNDCOM 23606 23607 50/);
    $error and die "ERROR: $error\n";
    print "Shipping is \$$shipping\n";
    print "UPS Zone is $ups_zone\n";

DESCRIPTION

        A way of sending four arguments to a module to get 
        shipping charges that can be used in, say, a CGI.

REQUIREMENTS

        I've tried to keep this package to a minimum, so you'll need:
  • Perl 5.003 or higher

  • LWP Module

ARGUMENTS

        Call the subroutine with the following values:
                1. Product code
                2. Origin Zip Code
                3. Destination Zip Code
                4. Weight of Package

        and optionally:

                5.  Country Code,
                6.  Length,
                7.  Width,
                8.  Height,
                9.  Oversized (defined if oversized), and
                10. COD (defined if C.O.D.)
  1.         Product Codes:
    
                      1DM           Next Day Air Early AM
                      1DML          Next Day Air Early AM Letter
                      1DA           Next Day Air
                      1DAL          Next Day Air Letter
                      1DP           Next Day Air Saver
                      1DPL          Next Day Air Saver Letter
                      2DM           2nd Day Air A.M.
                      2DA           2nd Day Air
                      2DML          2nd Day Air A.M. Letter
                      2DAL          2nd Day Air Letter
                      3DS           3 Day Select
                      GNDCOM        Ground Commercial
                      GNDRES        Ground Residential
    
            In an HTML "option" input it might look like this:
    
                      <OPTION VALUE="1DM">Next Day Air Early AM
                      <OPTION VALUE="1DML">Next Day Air Early AM Letter
                      <OPTION SELECTED VALUE="1DA">Next Day Air
                      <OPTION VALUE="1DAL">Next Day Air Letter
                      <OPTION VALUE="1DP">Next Day Air Saver
                      <OPTION VALUE="1DPL">Next Day Air Saver Letter
                      <OPTION VALUE="2DM">2nd Day Air A.M.
                      <OPTION VALUE="2DA">2nd Day Air
                      <OPTION VALUE="2DML">2nd Day Air A.M. Letter
                      <OPTION VALUE="2DAL">2nd Day Air Letter
                      <OPTION VALUE="3DS">3 Day Select
                      <OPTION VALUE="GNDCOM">Ground Commercial
                      <OPTION VALUE="GNDRES">Ground Residential
  2. 2. Origin Zip(tm) Code

                    Origin Zip Code as a number or string (NOT +4 Format)
  3. 3. Destination Zip(tm) Code

                    Destination Zip Code as a number or string (NOT +4 Format)
  4. 4. Weight

                    Weight of the package in pounds

RETURN VALUES

        The raw http get() returns a list with the following values:

          ##  Desc              Typical Value
          --  ---------------   -------------
          0.  Name of server:   UPSOnLine3
          1.  Product code:     GNDCOM
          2.  Orig Postal:      23606
          3.  Country:          US
          4.  Dest Postal:      23607
          5.  Country:          US
          6.  Shipping Zone:    002
          7.  Weight (lbs):     50
          8.  Sub-total Cost:   7.75
          9.  Addt'l Chrgs:     0.00
          10. Total Cost:       7.75
          11. ???:              -1

        If anyone wants these available for some reason, let me know.

EXAMPLE

        To retreive the shipping of a 'Ground Commercial' Package 
        weighing 25lbs. sent from 23001 to 24002 this package would 
        be called like this:

          #!/usr/local/bin/perl

          use Business::UPS;

          my ($shipping,$ups_zone,$error) = getUPS(qw/GNDCOM 23001 23002 25/);
          $error and die "ERROR: $error\n";
          print "Shipping is \$$shipping\n";
          print "UPS Zone is $ups_zone\n";

AUTHOR

        Mark Solomon <msolomon@seva.net>
        mailto:msolomon@seva.net
        http://www.seva.net/~msolomon/

        NOTE: UPS is a registered trademark of United Parcel Service.

6 POD Errors

The following errors were encountered while parsing the POD:

Around line 90:

=back doesn't take any parameters, but you said =back 4

Around line 109:

'=item' outside of any '=over'

Around line 143:

Expected '=item 2'

Around line 148:

Expected '=item 3'

Around line 153:

Expected '=item 4'

Around line 158:

You forgot a '=back' before '=head1'