---
name: "Vend::Ship::QueryUPS"
section: "3pm"
platform: "linux"
package: "interchange"
version: "5.7.7-2"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Vend::Ship::QueryUPS"
---

# Vend::Ship::QueryUPS(3pm)

## NAME

Vend::Ship::QueryUPS -- calculate UPS costs via www

## SYNOPSIS

```
  (catalog.cfg)
  Shipping  QueryUPS  default_geo  45056
  (shipping.asc)
  ground: UPS Ground Commercial
     origin  45056
     service GNDCOM
         min    0
         max    0
         cost   e Nothing to ship!
         min    0
         max    150
         cost   s QueryUPS
         min    150
         max    99999999
         cost   e Too heavy for UPS.
```

## DESCRIPTION

Calculates UPS costs via the WWW using Business::UPS.

To activate, configure any parameter in catalog.cfg. A good choice is the default origin zip.

Options:

- weight

  Weight in pounds. Required -- normally passed via CRIT parameter.

- service

  Any valid Business::UPS mode (required). Example: 1DA,2DA,GNDCOM. Defaults to the mode name.

- geo

  Location of field containing zip code. Default is 'zip'.

- country\_field

  Location of field containing country code. Default is 'country'.

- default\_geo

  The ZIP code to use if none supplied -- for defaulting shipping to some value in absence of ZIP. No default -- will return 0 and error if no zip.

- default\_country

  The country code to use if none supplied -- for defaulting shipping to some value in absence of country. Default US.

- aggregate

  If 1, aggregates by a call to weight=150 (or `$Variable`-\>{UPS\_QUERY\_MODULO}). Multiplies that times number necessary, then runs a call for the remainder. In other words:

  ```
          [ups-query weight=400 mode=GNDCOM aggregate=1]
  ```

  is equivalent to:

  ```
          [calc]
                  [ups-query weight=150 mode=GNDCOM] +
                  [ups-query weight=150 mode=GNDCOM] +
                  [ups-query weight=100 mode=GNDCOM];
          [/calc]
  ```

  If set to a number above 1, will be the modulo to do repeated calls by. So:

  ```
          [ups-query weight=400 mode=GNDCOM aggregate=100]
  ```

  is equivalent to:

  ```
          [calc]
                  [ups-query weight=100 mode=GNDCOM] +
                  [ups-query weight=100 mode=GNDCOM] +
                  [ups-query weight=100 mode=GNDCOM] +
                  [ups-query weight=100 mode=GNDCOM];
          [/calc]
  ```

  To aggregate by 1, use .999999.

- cache\_table

  Set to the name of a table (default ups\_cache) which can cache the calls so repeated calls for the same values will not require repeated calls to UPS.

  Table needs to be set up with:

  ```
          Database   ups_cache        ship/ups_cache.txt         __SQLDSN__
          Database   ups_cache        AUTO_SEQUENCE  ups_cache_seq
          Database   ups_cache        DEFAULT_TYPE varchar(12)
          Database   ups_cache        INDEX  weight origin zip shipmode country
  ```

  And have the fields:

  ```
           code weight origin zip country shipmode cost updated
  ```

  Typical cached data will be like:

  ```
          code    weight  origin  zip     country shipmode        cost    updated
          14      11      45056   99501   US      2DA     35.14   1052704130
          15      11      45056   99501   US      1DA     57.78   1052704130
          16      11      45056   99501   US      2DA     35.14   1052704132
          17      11      45056   99501   US      1DA     57.78   1052704133
  ```

  Cache expires in one day.
