Class: FreightKit::Shipment

Inherits:
Model
  • Object
show all
Defined in:
lib/freight_kit/models/shipment.rb

Overview

Shipment is the abstract base class for all rate requests.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Model

#attributes, #initialize

Constructor Details

This class inherits a constructor from FreightKit::Model

Instance Attribute Details

#accessorialsObject

Returns the value of attribute accessorials.



16
17
18
# File 'lib/freight_kit/models/shipment.rb', line 16

def accessorials
  @accessorials
end

#declared_value_centsObject

Declared value in cents.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/freight_kit/models/shipment.rb', line 15

class Shipment < Model
  attr_accessor :accessorials,
                :declared_value_cents,
                :destination,
                :origin,
                :order_number,
                :packages,
                :po_number,
                :pro
  attr_reader :pickup_at

  def loose?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(true)
  end

  def hazmat?
    packages.map(&:hazmat?).any?(true)
  end

  def loose_and_palletized?
    !loose? && !palletized?
  end

  def palletized?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(false)
  end

  def pickup_at=(date_time)
    if date_time.is_a?(ActiveSupport::TimeWithZone)
      @pickup_at = FreightKit::DateTime.new(date_time_with_zone: date_time)
      return
    end

    raise ArgumentError, 'date_time must be an FreightKit::DateTime' unless date_time.is_a?(DateTime)

    @pickup_at = date_time
  end

  def valid?
    return false if @accessorials.nil?
    return false unless @destination.is_a?(Location)
    return false unless @packages.is_a?(Array)
    return false if @packages.any? { |p| p.class != Package }

    true
  end
end

#destinationObject

Where the package will go.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/freight_kit/models/shipment.rb', line 15

class Shipment < Model
  attr_accessor :accessorials,
                :declared_value_cents,
                :destination,
                :origin,
                :order_number,
                :packages,
                :po_number,
                :pro
  attr_reader :pickup_at

  def loose?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(true)
  end

  def hazmat?
    packages.map(&:hazmat?).any?(true)
  end

  def loose_and_palletized?
    !loose? && !palletized?
  end

  def palletized?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(false)
  end

  def pickup_at=(date_time)
    if date_time.is_a?(ActiveSupport::TimeWithZone)
      @pickup_at = FreightKit::DateTime.new(date_time_with_zone: date_time)
      return
    end

    raise ArgumentError, 'date_time must be an FreightKit::DateTime' unless date_time.is_a?(DateTime)

    @pickup_at = date_time
  end

  def valid?
    return false if @accessorials.nil?
    return false unless @destination.is_a?(Location)
    return false unless @packages.is_a?(Array)
    return false if @packages.any? { |p| p.class != Package }

    true
  end
end

#order_numberObject

Order number (also known as shipper number, SO #).



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/freight_kit/models/shipment.rb', line 15

class Shipment < Model
  attr_accessor :accessorials,
                :declared_value_cents,
                :destination,
                :origin,
                :order_number,
                :packages,
                :po_number,
                :pro
  attr_reader :pickup_at

  def loose?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(true)
  end

  def hazmat?
    packages.map(&:hazmat?).any?(true)
  end

  def loose_and_palletized?
    !loose? && !palletized?
  end

  def palletized?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(false)
  end

  def pickup_at=(date_time)
    if date_time.is_a?(ActiveSupport::TimeWithZone)
      @pickup_at = FreightKit::DateTime.new(date_time_with_zone: date_time)
      return
    end

    raise ArgumentError, 'date_time must be an FreightKit::DateTime' unless date_time.is_a?(DateTime)

    @pickup_at = date_time
  end

  def valid?
    return false if @accessorials.nil?
    return false unless @destination.is_a?(Location)
    return false unless @packages.is_a?(Array)
    return false if @packages.any? { |p| p.class != Package }

    true
  end
end

#originObject

Where the shipment will originate from.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/freight_kit/models/shipment.rb', line 15

class Shipment < Model
  attr_accessor :accessorials,
                :declared_value_cents,
                :destination,
                :origin,
                :order_number,
                :packages,
                :po_number,
                :pro
  attr_reader :pickup_at

  def loose?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(true)
  end

  def hazmat?
    packages.map(&:hazmat?).any?(true)
  end

  def loose_and_palletized?
    !loose? && !palletized?
  end

  def palletized?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(false)
  end

  def pickup_at=(date_time)
    if date_time.is_a?(ActiveSupport::TimeWithZone)
      @pickup_at = FreightKit::DateTime.new(date_time_with_zone: date_time)
      return
    end

    raise ArgumentError, 'date_time must be an FreightKit::DateTime' unless date_time.is_a?(DateTime)

    @pickup_at = date_time
  end

  def valid?
    return false if @accessorials.nil?
    return false unless @destination.is_a?(Location)
    return false unless @packages.is_a?(Array)
    return false if @packages.any? { |p| p.class != Package }

    true
  end
end

#packagesObject

The list of packages that will be in the shipment.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/freight_kit/models/shipment.rb', line 15

class Shipment < Model
  attr_accessor :accessorials,
                :declared_value_cents,
                :destination,
                :origin,
                :order_number,
                :packages,
                :po_number,
                :pro
  attr_reader :pickup_at

  def loose?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(true)
  end

  def hazmat?
    packages.map(&:hazmat?).any?(true)
  end

  def loose_and_palletized?
    !loose? && !palletized?
  end

  def palletized?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(false)
  end

  def pickup_at=(date_time)
    if date_time.is_a?(ActiveSupport::TimeWithZone)
      @pickup_at = FreightKit::DateTime.new(date_time_with_zone: date_time)
      return
    end

    raise ArgumentError, 'date_time must be an FreightKit::DateTime' unless date_time.is_a?(DateTime)

    @pickup_at = date_time
  end

  def valid?
    return false if @accessorials.nil?
    return false unless @destination.is_a?(Location)
    return false unless @packages.is_a?(Array)
    return false if @packages.any? { |p| p.class != Package }

    true
  end
end

#pickup_atObject

Pickup date/time.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/freight_kit/models/shipment.rb', line 15

class Shipment < Model
  attr_accessor :accessorials,
                :declared_value_cents,
                :destination,
                :origin,
                :order_number,
                :packages,
                :po_number,
                :pro
  attr_reader :pickup_at

  def loose?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(true)
  end

  def hazmat?
    packages.map(&:hazmat?).any?(true)
  end

  def loose_and_palletized?
    !loose? && !palletized?
  end

  def palletized?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(false)
  end

  def pickup_at=(date_time)
    if date_time.is_a?(ActiveSupport::TimeWithZone)
      @pickup_at = FreightKit::DateTime.new(date_time_with_zone: date_time)
      return
    end

    raise ArgumentError, 'date_time must be an FreightKit::DateTime' unless date_time.is_a?(DateTime)

    @pickup_at = date_time
  end

  def valid?
    return false if @accessorials.nil?
    return false unless @destination.is_a?(Location)
    return false unless @packages.is_a?(Array)
    return false if @packages.any? { |p| p.class != Package }

    true
  end
end

#po_numberObject

Purchase order number (also known as PO #).



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/freight_kit/models/shipment.rb', line 15

class Shipment < Model
  attr_accessor :accessorials,
                :declared_value_cents,
                :destination,
                :origin,
                :order_number,
                :packages,
                :po_number,
                :pro
  attr_reader :pickup_at

  def loose?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(true)
  end

  def hazmat?
    packages.map(&:hazmat?).any?(true)
  end

  def loose_and_palletized?
    !loose? && !palletized?
  end

  def palletized?
    return false if @packages.blank?

    packages.map(&:packaging).map(&:pallet?).none?(false)
  end

  def pickup_at=(date_time)
    if date_time.is_a?(ActiveSupport::TimeWithZone)
      @pickup_at = FreightKit::DateTime.new(date_time_with_zone: date_time)
      return
    end

    raise ArgumentError, 'date_time must be an FreightKit::DateTime' unless date_time.is_a?(DateTime)

    @pickup_at = date_time
  end

  def valid?
    return false if @accessorials.nil?
    return false unless @destination.is_a?(Location)
    return false unless @packages.is_a?(Array)
    return false if @packages.any? { |p| p.class != Package }

    true
  end
end

#proObject

Returns the value of attribute pro.



16
17
18
# File 'lib/freight_kit/models/shipment.rb', line 16

def pro
  @pro
end

Instance Method Details

#hazmat?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/freight_kit/models/shipment.rb', line 32

def hazmat?
  packages.map(&:hazmat?).any?(true)
end

#loose?Boolean

Returns:

  • (Boolean)


26
27
28
29
30
# File 'lib/freight_kit/models/shipment.rb', line 26

def loose?
  return false if @packages.blank?

  packages.map(&:packaging).map(&:pallet?).none?(true)
end

#loose_and_palletized?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/freight_kit/models/shipment.rb', line 36

def loose_and_palletized?
  !loose? && !palletized?
end

#palletized?Boolean

Returns:

  • (Boolean)


40
41
42
43
44
# File 'lib/freight_kit/models/shipment.rb', line 40

def palletized?
  return false if @packages.blank?

  packages.map(&:packaging).map(&:pallet?).none?(false)
end

#valid?Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
63
64
# File 'lib/freight_kit/models/shipment.rb', line 57

def valid?
  return false if @accessorials.nil?
  return false unless @destination.is_a?(Location)
  return false unless @packages.is_a?(Array)
  return false if @packages.any? { |p| p.class != Package }

  true
end