Revision history for Business::Shipping
=======================================
1.55 Nov 22 2004
General
* Rewrite the 'service' parameter/function
- User can specify full names such as 'Ground Residential' instead of
GNDRES or 03.
- Backwards-compatible
- Allows easy retrieval of service names, codes, nicknames, etc.
- Prepares the way for new UPS_Online 'Shop' service.
* Rewrite the 'results' feature
- Remove old 'packages' idea.
- Make room for new UPS_Online 'Shop' service.
- Not backwards-compatible, but results() was not intended to be public
before.
* Misc code cleanups
* Remove some old utility functions.
* [Fixed] Tests tried to load Cache::FileCache, even when the module was not
installed. Now it tries to detect the module first.
* [Fixed] Business::Shipping::RateRequest loaded Cache::FileCache even though
it is not needed at that level anymore.
* [Enh] Tests: check for username/password more consistently.
* [Enh] Remove dependancy on updated version of Scalar::Util (now older
versions will work).
UPS_Online
* [Enh] New 'Shop' service. Retrieve all the rates in one request. Original
implementation by Selena Brewington <computers@chrisking.com>, later
updated and modified.
- New tests added to cover the shop feature.
- Example Usage:
my $rr_shop = Business::Shipping->rate_request(
service => 'shop',
shipper => 'UPS_Online',
from_zip => '98682',
to_zip => '98270',
weight => 5.00,
user_id => $ENV{ UPS_USER_ID },
password => $ENV{ UPS_PASSWORD },
access_key => $ENV{ UPS_ACCESS_KEY }
);
$rr_shop->go() or die $rr_shop->user_error();
foreach my $shipper ( @$results ) {
print "Shipper: $shipper->{name}\n\n";
foreach my $rate ( @{ $shipper->{ rates } } ) {
print " Service: $rate->{name}\n";
print " Charges: $rate->{charges_formatted}\n";
print " Delivery: $rate->{deliv_date_formatted}\n"
if $rate->{ deliv_date_formatted };
print "\n";
}
}
* [Enh] C.O.D. (Cash On Delivery) contributed by Selena Brewington
<computers@chrisking.com>, with minor modifications.
- To use, add these parameters to your rate request:
cod => 1, # Enable C.O.D.
cod_value => 400.00, # C.O.D. value in USA dollars.
cod_funds_code => 0, # 0 = All funds allowed,
# 8 = money order only.
UPS_Offline
* [Enh] New program to update fuel surcharge automatically.
- Run every first Monday of the month to get the new fuel surcharge
from the UPS website.
- See bin/Business-Shipping-UPS_Offline-update-fuel-surcharge.pl for
more information.
1.54 Sep 21 2004
General
* [Enh] Major documentation updates and fixes
- Added Test::Pod tests as well as Test::Pod::Coverage
- Added POD for functions that lacked any.
* [Enh] Major test updates
* [Enh] Automatically detect which shippers can be supported based on the
installed required modules.
* [Enh] Skip tests that are for shippers that do not have their required
modules installed.
* [Enh] Add "use_defaults=1" option to "perl Makefile.PL"
- New options: -u=1 or --use_defaults=1: Use default values, do not ask
for values.
* [Fixed] Business::Shipping requiring too many modules. Switched to Basic.
* [Fixed] Business::Shipping tests will fail if someone only installed
Bundle::Business::Shipping::UPS_Offline, because the testing scripts
will not notice.
- New system checks to see if prerequisite modules were installed before
testing functionality that depends on them.
1.53 Sep 17 2004
General
* [Fixed] [Doc] Reference to logdie in Shipping.pm.
* [Done] [Enh] Allow preloading of modules
- New optional syntax:
use Business::Shipping { preload => 'All' };
use Business::Shipping { preload => 'USPS_Online' };
- Without preloading, some modules will be loaded at runtime. Normally,
runtime loading is the best mode of operation. However, there are some
circumstances when preloading is advantagous (see docs).
* [Enh] Split the data into its own distribution, and add it to the bundle.
- Business::Shipping::DataFiles - Offline cost estimation tables
- Benefits:
+ Allows data to be updated separately from the code.
+ It changes less often
+ Update scripts can just do a CPAN install of the latest data module.
- Issues:
+ Chicken and Egg problem. Can't install data first, because it needs
Business::Shipping to know where to install. Can't install Shipping
first because it needs data in order to test. Solution: Check for
pre-installed Business::Shipping and use that as the default, but ask
anyway (for both).
* [Enh] Add Business::Shipping::DataTools
- Converts shipper files into a format usable by Business::Shipping.
- Most methods were removed from UPS_Offline::RateRequest where they were
languishing.
* [Enh] [Aesthetic] Prefix some private methods with "_".
* [Enh] [Aesthetic] Code cleanups.
* [Done] [Enh] Allow usage of LWP through a proxy
- Suggested by Mark <MpoloN7@netscape.net>.
- Uses environment variables to set the proxy settings. E.g.:
http_proxy=http://proxy.my.place/
no_proxy="localhost,my.domain"
export http_proxy no_proxy
* [Done] [Enh] Provide multiple bundles (in the same distribution)
- Bundle::Business::Shipping
- Bundle::Business::Shipping::UPS_Offline
- Bundle::Business::Shipping::etc.
All Online Modules
* [Done] [Enh] Migrate the "retry on failure" code from the interchange
usertag [business-shipping] to Business::Shipping proper. Default to
tries = 2.
Tracking
* [Enh] More progress on upgrade of tracking modules to C:MM 2.0.
1.52 Sep 14 2004
General
* [Enh] Allow users to change the runtime logging level.
New Business::Shipping->log_level() method can override the log4perl.conf
logging level.
* [Done] [Enh] Resurrect the event_handlers() method for backwards
compatibility. Mapped to Business::Shipping->log_level().
* [Done] [Enh] [Log4perl] replace die and warn with logdie and logwarn.
* [Fixed] ClassInfo/ClassAttribs does not trap all exceptions.
USPS_Online
* [Fixed] Missing module bugs
- List of errors:
"Can't locate Business/Shipping/Package/USPS.pm in @INC"
"Can't locate Business/Shipping/Shipment/USPS.pm in @INC"
- Caused by module name restructure in 1.51.
- Reported by Micah Gersten <micah@davka.com>.
1.51 Sep 10 2004
Compatibility
* Module names have been restructured. When using
Business::Shipping->rate_request(), use the new values for 'shipper':
shipper => 'UPS_Online',
shipper => 'USPS_Online',
shipper => 'UPS_Offline',
General
* [Enh] Die if path to support files is missing files.
* [Enh] Restructure all of the modules
- Keep everything the same, except the "lowest level":
"RateRequest::Online::UPS" => "UPS_Online::RateRequest"
"RateRequest::Offline::UPS" => "UPS_Offline::RateRequest"
"RateRequest::Online::USPS" => "USPS_Online::RateRequest"
"Tracking::UPS" => "UPS_Online::Tracking"
- Benefits:
All of the related code is in one directory.
All of the abstract code is in neutral directories.
- Note: This will totally break the ClassInfo/ClassAttribs system, because
that system just uses the names, instead of actually checking the
inheritance trees.
* [Enh] Update the ClassInfo/ClassAttribs system to handle the restructured
module system. Should use ISA instead of breaking down the name
components.
* [Fixed] [Bug] For Micah Gersten <micah@davka.com>, Business.pm was
'require'd.
1.50 Available in Software Change Management (SCM) only
Compatibility
- Clone module now required (for Tracking).
- Test::More module required.
- Class::MethodMaker 2.02 now required. CPAN installation instructions:
perl -MCPAN -e 'install Class::MethodMaker::Engine'
Updated because the new version has sugary syntax.
- Log::Log4perl now required (for debug/error handling).
- event_handlers() depreciated (use config/log4perl.conf instead).
- $self->error() changed to $self->user_error()
- Multi-package API un-supported.
Tracking
- Rusty Conover <rconover@infogears.com> contributed the following:
Tracking
Tracking::USPS
Tracking::UPS
General
- Changed to dual GPL/Artistic License.
- Changed hosting from kavod.com to sf.net.
- Code cleanup all over the place.
- Logging system added, wrapper for Log4perl.
- Major documentation updates.
- Change tabs to four spaces
- Developed ClassAttribs and ClassInfo packages for extracting meta-data
from the classes themselves (uses static class methods). Used here to
implement "Required Options", "Optional Options", and "Unique Options".
- Upgrade to Class::MethodMaker 2.0 syntax.
Business::Shipping::CustomMethodMaker removed.
- Added minimal documentation to most of the modules.
- Shipment: default_package function now a little smarter with regard to
the auto-creation of a default package if one does not exist.
- LWP::UserAgent and HTTP::Response objects now created on-the-fly.
- Many other misc. changes.
- New tests.
- Remove documentation for multi-package API. Unsupported.
- Fixed: Error on missing arguments isn't working very well (user_id,
password)
- [Done] [Enh] Use podchecker during build process
- [Fixed] Many POD nits fixed.
- [Done] [Enh] Auto-translate variables during installation
At the time of Makefile.PL, automatically transform some variables, such
as installation paths. Currently setup for config/log4perl.conf and
lib/Business/Shipping/Config.pm.
- Support arrays in Has_a fields.
Offline::UPS
- Bug fixed: Zip+4 not handled correctly (should drop the four).
- Update fuel surcharge to 6.0%.
- Minor validity changes:
- Warning about UPS Standard being available to Canada only.
- These do not have XPD: Cyprus, United Arab Emirates, Saudi Arabia, St.
Lucia, Israel
- Restrictions for Canada added.
- Rewrite of surcharge/adder system for consistency.
- Make pricing components available to the user. Allows the user to see
how much of the total charges were for various surcharges.
- Fuel surcharge only applies to the correct services.
- [Fixed] [BUG] UPS Ground: Was 7.02; should have been 8.64.
- See t/manual/offline_ups_bug2_al.pl
- Was using gndcomm instead of gndres
- Surcharges weren't setup correctly
- [Fixed] [BUG] Gaps in data are not accounted for.
- Some UPS files (ww_xpr) do not have a record for every weight (Exceed = 55)
To solve the problem, add 1 to the weight, and try again.
- [Fixed] [BUG] United Kingdom Express Plus
- Caused by the "Gaps in data are not accounted for" bug.
Error: Zero cost returned for mode ExpressPlusSM, geo code (key) United
Kingdom.
- [Fixed] [Bug] France XPR
- [Fixed] [bug] 'make test' generates warnings
- t/45_Offline-UPS..........Argument "Letter" isn't numeric in numeric eq
(==) at [...]/SQL/Statement.pm line 1120, <GEN3> chunk 2. Argument
"Multiplier" isn't numeric in numeric eq (==) at [...]/SQL/Statement.pm
line 1120, <GEN3> chunk 153.
- 'use diagnostics;' was removed to solve the problem.
Online::USPS
- Pounds, ounces, and weight handling refactored.
Interchange UserTag
- Sort hashes before reporting them in incidents.
- [Fixed] The "don't send if required field is missing" doesn't work in
the "send incident report code" feature -- it sends it even if to_zip is
missing.
- Fixed with "Required Options" changes.
- City added
- Incident report enhancements.
- Variable formatting fixes
1.06 Feb 11 2004
General
- Remove Bundle::Business::Shipping (now in its own distro, where it should
be).
1.05 Feb 10 2004
General
- Attempted fix for Bundle::Business::Shipping
- Remove unneeded .zip files from data/
- Minor documentation updates
1.04 Feb 07 2004
- Compatibility
+ Scalar::Util 1.10 is now required (to pretty up the code a little).
+ Getopt::Mixed now required for some scripts.
- General
+ Created a Bundle::Business::Shipping module, uploaded to CPAN, and add
to CVS (removed in 1.06).
+ New configuration parameter for this style:
service=XDM to_country=Brazil
service=XDM to_country=Canada reason=Not available.
+ Scripts moved from doc/ to bin/
+ Some scripts re-named.
+ Rename some of the tests.
+ Devel::Required patch no longer necessary. Recent version implement
the desired functionality.
+ Class::MethodMaker patch no longer necessary. Subclassing is
sufficient.
+ Remove zip files from distribution, they take up too much space.
+ Move some configuration methods from Shipping to Shipping::Config.
- Offline::UPS
+ Major fix to the low/high number/name scheme. For international, it
is now handled via split/rejoin, because the regex was choking on some
of the country names. This was causing many zip code combinations
(that had lost their "high" in the last update), as well as some
countries, to fail.
+ Another fix for number range scheme.
+ Sense validity for several combinations of service and country/zip.
(Ground Residential to Hawaii is now "invalid").
+ New test for the Netherlands.
+ Update to February fuel surcharge (5%)
+ New invalid request: Anything but express to israel.
+ New tests for Israel.
- UserTag
+ Add feature for not reporting "invalid" requests to the incident
generator.
+ Pretty up the incident e-mail a little.
1.03 Jan 30 2004
- Compatibility:
- Math::BaseCnv now required (for Offline::UPS to Canada, to convert
their witty base-36 zip codes to the lowly decimal number system).
- from_state required for Offline::UPS.
- General updates:
- Move many datasets from the code into the configuration (USPS to_country,
and others).
- Auto-update function added.
- Copyright update.
- Aesthetic updates to most modules.
- Documentation updates for several modules.
- Example script added for updating the Business::Shipping module.
- Offline::UPS updates:
- Bug fixes for International Shipping
- Add automatic translations for several values (state to abbreviation,
abbreviated country to the full name of the country, etc.) -- uses
config.
- France, Russia, and other countries fixed for Offline::UPS.
- Fix "Multiple shipments to Canada return 0 except the first" bug, caused
by poorly implemented Zones class attribute: now correctly implement as a
static hash, accessed by function.
- Minor fixes: Express Plus.
- Offline::UPS now supports all services to Canada, which completes all of
the Offline::UPS countries.
- New error message for XDM to Canada.
- Removed regexp that was causing an extra field to be put in the data.
(This fixed a lot of XDM shipments that weren't working before.)
- Fixed: Some country/service type records were not returning errors
(e.g. Malaysia+XDM).
- Fixed: CA (Canada) was matching AfriCA.
- Tests:
- Additional UPS Online/Offline tests: Canada, Mexico.
- More tests for Offline::UPS.
- Updated the Interchange UserTag simulator, and make it a part of the
standard testing scheme (instead of a manual test).
- UserTag Updates:
- Major enhancements.
- Defaults now readable.
- Bug fixes.
- Reporting updates.
- Add the [incident] usertag for reporting errors.
- Minor UserTag compatibility updates (from_state)
- Add a mechanism for ignoring simple errors.
1.02 Jan 06 2004
- Update all data tables from UPS (Jan 05 2004)
- Update fuel surcharge
- Installation documentation updates.
- Rename the update functions.
- Sample "auto update" script that will update the data files.
1.01 Jan 02 2004
- Offline UPS support for International Express, ExpressPlus, and Expedited.
- Offline UPS support for Hawaii and Alaska.
- Tests for International and Hawaii/Alaska.
- Utilize Devel::Required to automatically generate required modules list.
- Patch Devel::Required so it can be customized.
- Documentation Updates.
- Some data format changes (east coast/west coast data update, add 'letter'
to 1da chart, rename several of the files).
1.00 Dec 21 2003
- Major updates: many new features prompt the jump into 1.0 land.
- New Offline::UPS module: provides table-based rate requests, which are
fast, local lookups that do not rely on the Internet.
- Config module added: provides ini-style configuration options for easy
customizability.
- Data module added: provides database access and related functions.
- Util module added: provides simple file and misc. utililties.
- New "support files" directories (configuration, data, etc.).
- New MakeMaker magic handles installation of the support file directories.
- Documentation updates (new INSTALL file, updated API usage info, etc.)
- Update some syntax to 5.6 style.
- Fix bugs that used to require the user to import many unnecessary modules.
Reported by Richard Hornsby <rhornsby@io.osuedc.org>.
- Mark Stosberg <mark@stosberg.com> contributed documentation patches:
- rate_request()
- Corrected Registration URL
- [business-shipping] Interchange Usertag enhancements:
- Gracefully handles more 500 errors from the servers.
- Performs Business-Shipping tasks within an eval.
0.78 Nov 12 2003
- Cleanup old CustomMethodMaker tests
- Cleanup POD
- Major cleanup to MANIFEST
- Moved credits to its own file.
- Text and HTML versions of documentation now in doc/
0.77 Nov 11 2003
- Add UPS one-day air saver.
- Cleanup TODO list.
- Add COPYING file.
0.76 Oct 13 2003
- Fixed bug report:
calling Business::Shipping::USPS->submit(
{
'from_zip' => "98682",'cache' => "1",
'to_country' => "Canada",'service' => "Airmail Letter Post",
'to_zip' => "N2H6S9",'from_country' => "US",
'weight' => "0.25",
'shipper' => "USPS",
}
)
Vend::Interpolate:debug: [business-shipping] returning "15.25"
- Cause: USPS changed "Airmail Letter Post" to "Airmail Letter-post".
- Usertag cleanup.
- More documentation.
- Business::Shipping thinned.
- Online::UPS thinned.
- Additional test for UPS Letter post to Canda.
0.75 Aug 25 2003
- Additional USPS tests (Letter service, Canada service)
- Additional UPS tests (Canada)
- Fix ounce calculator.
- Misc minor and aesthetic updates.
0.74 Aug 19 2003
- Clean up the business-shipping usertag a little bit.
- Other misc. cleanups.
- Re-write the pounds/ounces calculator.
- Remove lots of cruft.
0.73 Aug 15 2003
- More tests
- Fix USPS International shipping: new "service matching" method.
- Documentation Updates
0.72 Aug 09 2003
- Many more tests.
- USPS Updates:
+ Added a great many new translations to the country translator
- UPS Updates:
+ Added to_city
- ~10 additional tests.
0.71 Aug 06 2003
- International USPS bug fixes.
+ Instead of guessing the service by name, we use service type, then
mail type. This may result in getting the wrong service, however.
Needs more analyzation.
- Many, many additional tests.
- Very much improved debug/error handling.
0.70 Jul 07 2003
- Complete rewrite of the entire system
- Now more modular, object oriented, smaller, and simpler.
- License changed from Perl to GPL
- New cache system (faster, more reliable)
- Enhancements to Class::Methodmaker
- Fixed: When Cache is enabled, and you run [xps-query] consecutively,
UPS doesn't seem to notice the different service types (i.e. 'service'
isn't on the 'unique' list)
- Re-did the self meta-data
0.04 Jun 24 2003
- Interchange usertag bugfixes
- Some USPS bugfixes.
- Additional debugging information.
- Reducing indirect notation.
- Experiencing some problems with xps-query.
- Gracefully handle ZIP+4 (by ignoring the +4)
- Lots of test updates
- Handle a few more countries correctly ("France,Metropolitan")
- Add some 'retry' support to the xps-query usertag
0.03 Jun 04 2003
- Changed name to Business::Shipping.
- Fixed POD for the Ship.pm file.
- Add dependency requirements
- Misc updates.
0.02 Sat May 31 18:04:00 2003
- Testing overhaul
- Lots of bug fixes (uncovered by testing, mostly for USPS)
- Added "make readme"
- Moving stuff around again.
- Launched http://www.kavod.com/Business-Shipping
- API Changes:
+ None.
0.01 Fri May 30 22:45:11 2003
- Moved everything around a lot
- Packaged everything like standard Perl modules
- Documentation now up to date with code.
- Updates to [xps-query]
- More refactoring all over the place
- Bug fixes
- UPS:
+ Added validation
+ Corrected caching
+ Accepts english pickup types ("daily pickup" vs. 01)
- API Changes:
+ Tons. Starting to settle down, though...
0.00 Sun May 25
- UPS fully ported to Business::Ship architecture
- Lots of other refactoring.
- Considering a Business::Ship::*::Internal for internal lookups.
+ If done, it would be based off of Mikes recent commits.
0.00 Fri May 9
- Lots of clean up
- Re-organizing order of methods for easier browsing.
- Documentation
- Updates for USPS and Business::Ship API
- Code and docs now in sync, except for UPS.
- Sample shipping.asc entry for [xps-query]
- Mapped all "package-level" methods/data accessors to
Business::Ship::default_package().
- USPS:
- The beginnings of self-validation.
- submit() and _handle_response() now separate
- submit() moved to Business::Ship for UPS to share (later)
- UPS:
- Getting ready for re-design to take advantage of new API.
- [xps-query]:
- Fix bug wrt weights less than 0.5
- Lots of misc.