class ReactiveShipping::CLNI

Constants

REACTIVE_FREIGHT_CARRIER

Public Instance Methods

build_calculated_accessorials(packages, origin, destination) click to toggle source

Rates

# File lib/reactive_freight/carriers/clni.rb, line 14
def build_calculated_accessorials(packages, origin, destination)
  accessorials = []

  longest_dimension = packages.inject([]) { |_arr, p| [p.length(:in), p.width(:in)] }.max.ceil
  if longest_dimension > 48
    if longest_dimension < 240
      accessorials << '&HHG=yes' # standard overlength fee
    elsif longest_dimension >= 240
      accessorials << '&OVER20=yes'
    elsif longest_dimension >= 192 && longest_dimension < 240
      accessorials << '&OVER16=yes'
    elsif longest_dimension >= 132 && longest_dimension < 192
      accessorials << '&OVER11=yes'
    elsif longest_dimension >= 96 && longest_dimension < 132
      accessorials << '&OVER11=yes'
    end
  end

  accessorials << '&BOSP=yes' if destination.city == 'Boston' && destination.state == 'MA'
  accessorials << '&BOSD=yes' if origin.city == 'Boston' && origin.state == 'MA'

  accessorials << '&SDDLY=yes' if destination.state == 'SD'
  accessorials << '&SDPU=yes' if origin.state == 'SD'

  # TODO: Add support for:
  # NYBDY, NYC BUROUGH DELY
  # NYBPU, NYC BUROUGH PU
  # NYLID, NYC LONG ISLAND DELY
  # NYLIP, NYC LONG ISLAND PU
  # NYMDY, NYC MANHATTAN DELY
  # NYMPU, NYC MANHATTAN PU
  # TXWDY, TXWST DELY
  # TXWPU, TXWST PU SURCHARGE

  accessorials
end