Cleanup previous attempt at insurance. Begin new attempt.
Add a field to the driver where the user can enter in insurance data with i18n. Add a method to calculate the cost of insurance for all packages.
This commit is contained in:
parent
2b4bfb8eec
commit
e81ec9718c
3 changed files with 50 additions and 59 deletions
|
|
@ -93,9 +93,6 @@ sub buildXML {
|
|||
}
|
||||
$packageData{Size} = [ 'REGULAR' ];
|
||||
$packageData{Machinable} = [ 'true' ];
|
||||
if ($self->get('addInsurance')) {
|
||||
$packageData{ValueOfContents} = $cost;
|
||||
}
|
||||
push @{ $xmlTop->{Package} }, \%packageData;
|
||||
}
|
||||
my $xml = XMLout(\%xmlHash,
|
||||
|
|
@ -158,6 +155,7 @@ sub calculate {
|
|||
}
|
||||
##Summarize costs from returned data
|
||||
$cost = $self->_calculateFromXML($xmlData, @shippableUnits);
|
||||
$cost += $self->_calculateInsurance(@shippableUnits);
|
||||
return $cost;
|
||||
}
|
||||
|
||||
|
|
@ -215,6 +213,29 @@ sub _calculateFromXML {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 _calculateInsurance ( @shippableUnits )
|
||||
|
||||
Takes data from the USPS and returns the calculated shipping price.
|
||||
|
||||
=head3 @shippableUnits
|
||||
|
||||
The set of shippable units, which are required to do quantity and cost lookups.
|
||||
|
||||
=cut
|
||||
|
||||
sub _calculateInsurance {
|
||||
my ($self, @shippableUnits) = @_;
|
||||
my $cost = 0;
|
||||
return $cost unless $self-get('addInsurance') && $self->get('insuranceRates');
|
||||
my @insuranceTable = map { my ($cost,$value) = split /:/, $_; [$cost, $value]; }
|
||||
split /\r?\n/, $self->get('insuranceRates');
|
||||
##Sort by increasing value for easy post processing
|
||||
my @insuranceTable = map { $_->[1] } sort { $a <=> $b } map { [ $_->[0], $_ ] } @insuranceTable;
|
||||
return $cost;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 definition ( $session )
|
||||
|
||||
This subroutine returns an arrayref of hashrefs, used to validate data put into
|
||||
|
|
@ -275,6 +296,12 @@ sub definition {
|
|||
hoverHelp => $i18n->get('add insurance help'),
|
||||
defaultValue => 0,
|
||||
},
|
||||
insuranceRates => {
|
||||
fieldType => 'textarea',
|
||||
label => $i18n->get('insurance rates'),
|
||||
hoverHelp => $i18n->get('insurance rates help'),
|
||||
defaultValue => "50:1.75\n100:2.25",
|
||||
},
|
||||
##Note, if a flat fee is added to this driver, then according to the license
|
||||
##terms the website must display a note to the user (shop customer) that additional
|
||||
##fees have been added.
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ our $I18N = {
|
|||
'add insurance' => {
|
||||
message => q|Ship with insurance?|,
|
||||
lastUpdated => 1253988886,
|
||||
context => q|Label for a type of shipping from the USPS.|,
|
||||
context => q|Label for the edit screen.|,
|
||||
},
|
||||
|
||||
'add insurance help' => {
|
||||
|
|
@ -106,6 +106,18 @@ our $I18N = {
|
|||
context => q|Label for a type of shipping from the USPS.|,
|
||||
},
|
||||
|
||||
'insurance rates' => {
|
||||
message => q|Insurance Rate Table|,
|
||||
lastUpdated => 1253988886,
|
||||
context => q|Label for the edit screen.|,
|
||||
},
|
||||
|
||||
'insurance rates help' => {
|
||||
message => q|Enter in one field per line with the format, value:cost.<br />value is the value of the contents.<br />cost is the cost of insurance at that value.|,
|
||||
lastUpdated => 1253988884,
|
||||
context => q|Help for the insurance rate field.|,
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue