I don't blame you. The interface is terrible and has gone away in MiniVend 4.
The best way to do this is to define a UserTag and use it as the subroutine
method. For example, in the flycat
demo (or in the MiniVend 4 usertag/
directory) you will see a UserTag:
UserTag ups-query Order mode origin zip weight country UserTag ups-query Routine <<EOR sub { my( $mode, $origin, $zip, $weight, $country) = @_; BEGIN { eval { require Business::UPS; import Business::UPS; }; }; $country = uc $country; $country = undef if $country eq 'US'; my ($shipping, $zone, $error) = getUPS( $mode, $origin, $zip, $weight, $country); if($error) { $Vend::Session->{ship_message} .= " $mode: $error"; return 0; } return $shipping; } EOR
This is called via entries in shipping.asc:
GNDRES Ground Residential weight 0 150 f [ups-query origin="[dv origin_zip]" zip="[default zip 98366]" country="[default country US]" mode="GNDRES" weight="@@TOTAL@" ] [dv ups_adder]
NOTE: The above should be all on one line, or you need to escape the newline with a \.
This is very flexible, but you can make the call much less complex if you do the parameter checks and substitutions in your own routine (i.e. read the value of $::Values->{country} or $Values->{country} instead of passing a parameter).