Have the USPS shipping driver accept ZIP+4, even if USPS doesn't.
This commit is contained in:
parent
ddf3fa108f
commit
cc0cc0ba64
3 changed files with 58 additions and 4 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
7.8.7
|
7.8.7
|
||||||
- fixed #11278: Wrong test for Template::Toolkit in testEnvironment.pl
|
- fixed #11278: Wrong test for Template::Toolkit in testEnvironment.pl
|
||||||
|
- fixed #11282: USPS Shipping Driver does not accept ZIP+4
|
||||||
|
|
||||||
7.8.6
|
7.8.6
|
||||||
- fixed #11250: i18n Asset_EMSSubmissionForm::delete created items label help
|
- fixed #11250: i18n Asset_EMSSubmissionForm::delete created items label help
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,12 @@ sub buildXML {
|
||||||
$xmlTop->{Package} = [];
|
$xmlTop->{Package} = [];
|
||||||
##Do a request for each package.
|
##Do a request for each package.
|
||||||
my $packageIndex;
|
my $packageIndex;
|
||||||
my $shipType = $self->get('shipType');
|
my $shipType = $self->get('shipType');
|
||||||
my $service = $shipType eq 'PRIORITY VARIABLE' ? 'PRIORITY'
|
my $service = $shipType eq 'PRIORITY VARIABLE'
|
||||||
: $shipType;
|
? 'PRIORITY'
|
||||||
|
: $shipType;
|
||||||
|
my $sourceZip = $self->get('sourceZip');
|
||||||
|
$sourceZip =~ s/^(\d{5}).*$/$1/;
|
||||||
PACKAGE: for(my $packageIndex = 0; $packageIndex < scalar @packages; $packageIndex++) {
|
PACKAGE: for(my $packageIndex = 0; $packageIndex < scalar @packages; $packageIndex++) {
|
||||||
my $package = $packages[$packageIndex];
|
my $package = $packages[$packageIndex];
|
||||||
next PACKAGE unless scalar @{ $package };
|
next PACKAGE unless scalar @{ $package };
|
||||||
|
|
@ -79,6 +82,7 @@ sub buildXML {
|
||||||
}
|
}
|
||||||
my $destination = $package->[0]->getShippingAddress;
|
my $destination = $package->[0]->getShippingAddress;
|
||||||
my $destZipCode = $destination->get('code');
|
my $destZipCode = $destination->get('code');
|
||||||
|
$destZipCode =~ s/^(\d{5}).*$/$1/;
|
||||||
$packageData{ID} = $packageIndex;
|
$packageData{ID} = $packageIndex;
|
||||||
$packageData{Service} = [ $service ];
|
$packageData{Service} = [ $service ];
|
||||||
$packageData{ZipOrigination} = [ $self->get('sourceZip') ];
|
$packageData{ZipOrigination} = [ $self->get('sourceZip') ];
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ use WebGUI::Test; # Must use this before any other WebGUI modules
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::Shop::ShipDriver::USPS;
|
use WebGUI::Shop::ShipDriver::USPS;
|
||||||
|
|
||||||
plan tests => 66;
|
plan tests => 69;
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Init
|
# Init
|
||||||
|
|
@ -232,6 +232,13 @@ my $wucAddress = $addressBook->addAddress({
|
||||||
city => 'Madison', state => 'WI', code => '53703',
|
city => 'Madison', state => 'WI', code => '53703',
|
||||||
country => 'United States',
|
country => 'United States',
|
||||||
});
|
});
|
||||||
|
my $zip4Address = $addressBook->addAddress({
|
||||||
|
label => 'work-zip4',
|
||||||
|
organization => 'Plain Black Corporation',
|
||||||
|
address1 => '1360 Regent St. #145',
|
||||||
|
city => 'Madison', state => 'WI', code => '53715-1255',
|
||||||
|
country => 'United States',
|
||||||
|
});
|
||||||
$cart->update({shippingAddressId => $workAddress->getId});
|
$cart->update({shippingAddressId => $workAddress->getId});
|
||||||
|
|
||||||
cmp_deeply(
|
cmp_deeply(
|
||||||
|
|
@ -826,6 +833,48 @@ SKIP: {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# Test ZIP+4 format domestic code
|
||||||
|
#
|
||||||
|
#######################################################################
|
||||||
|
$cart->update({shippingAddressId => $zip4Address->getId});
|
||||||
|
|
||||||
|
my $xmlData = XMLin($driver->buildXML($cart, @shippableUnits),
|
||||||
|
KeepRoot => 1,
|
||||||
|
ForceArray => ['Package'],
|
||||||
|
);
|
||||||
|
cmp_deeply(
|
||||||
|
$xmlData,
|
||||||
|
{
|
||||||
|
RateV3Request => {
|
||||||
|
USERID => $userId,
|
||||||
|
Package => [
|
||||||
|
{
|
||||||
|
ID => 0,
|
||||||
|
ZipDestination => '53715', ZipOrigination => '97123',
|
||||||
|
Pounds => '1', Ounces => '8.0',
|
||||||
|
Size => 'REGULAR', Service => 'PRIORITY',
|
||||||
|
Machinable => 'true',# Container => 'VARIABLE',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'buildXML: removed plus4 part of zipcode'
|
||||||
|
);
|
||||||
|
|
||||||
|
SKIP: {
|
||||||
|
|
||||||
|
skip 'No userId for testing', 2 unless $hasRealUserId;
|
||||||
|
|
||||||
|
my $cost = eval { $driver->calculate($cart); };
|
||||||
|
my $e = Exception::Class->caught();
|
||||||
|
ok( ! ref $e, 'no exception thrown for zip+4 address');
|
||||||
|
cmp_deeply($cost, num(10,9.99), 'zip+4 address returns a valid cost');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$cart->update({shippingAddressId => $workAddress->getId});
|
||||||
#######################################################################
|
#######################################################################
|
||||||
#
|
#
|
||||||
# Check for throwing an exception
|
# Check for throwing an exception
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue