Class: UPS::Builders::PackageBuilder

Inherits:
BuilderBase show all
Includes:
Ox
Defined in:
lib/ups/builders/package_builder.rb

Instance Attribute Summary collapse

Attributes inherited from BuilderBase

#access_request, #document, #license_number, #password, #root, #shipment_root, #user_id

Instance Method Summary collapse

Methods inherited from BuilderBase

#add_access_request, #add_insurance_charge, #add_itemized_payment_information, #add_master_carton_id, #add_master_carton_indicator, #add_package, #add_payment_information, #add_rate_information, #add_request, #add_ship_from, #add_ship_to, #add_shipment_delivery_confirmation, #add_shipment_direct_delivery_only, #add_shipper, #add_sold_to

Constructor Details

#initialize(name, opts = {}) ⇒ PackageBuilder

Returns a new instance of PackageBuilder.



10
11
12
13
# File 'lib/ups/builders/package_builder.rb', line 10

def initialize(name, opts = {})
  self.name = name
  self.opts = opts
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



8
9
10
# File 'lib/ups/builders/package_builder.rb', line 8

def name
  @name
end

#optsObject

Returns the value of attribute opts.



8
9
10
# File 'lib/ups/builders/package_builder.rb', line 8

def opts
  @opts
end

Instance Method Details

#customer_supplied_packagingObject



44
45
46
# File 'lib/ups/builders/package_builder.rb', line 44

def customer_supplied_packaging
  { code: '02', description: 'Customer Supplied Package' }
end

#descriptionObject



33
34
35
# File 'lib/ups/builders/package_builder.rb', line 33

def description
  element_with_value('Description', 'Rate')
end

#package_dimensions(dimensions) ⇒ Object



48
49
50
51
52
53
54
55
# File 'lib/ups/builders/package_builder.rb', line 48

def package_dimensions(dimensions)
  Element.new('Dimensions').tap do |org|
    org << unit_of_measurement(dimensions[:unit])
    org << element_with_value('Length', dimensions[:length].to_s[0..8])
    org << element_with_value('Width', dimensions[:width].to_s[0..8])
    org << element_with_value('Height', dimensions[:height].to_s[0..8])
  end
end

#package_weight(weight, unit) ⇒ Object



37
38
39
40
41
42
# File 'lib/ups/builders/package_builder.rb', line 37

def package_weight(weight, unit)
  Element.new('PackageWeight').tap do |org|
    org << unit_of_measurement(unit)
    org << element_with_value('Weight', weight)
  end
end

#packaging_type(packaging_options_hash) ⇒ Object



15
16
17
# File 'lib/ups/builders/package_builder.rb', line 15

def packaging_type(packaging_options_hash)
  code_description 'PackagingType', packaging_options_hash[:code], packaging_options_hash[:description]
end

#reference_numberObject



19
20
21
22
23
24
# File 'lib/ups/builders/package_builder.rb', line 19

def reference_number
  Element.new('ReferenceNumber').tap do |org|
    org << element_with_value('Code', opts[:reference_number][:type]) if opts[:reference_number][:type]
    org << element_with_value('Value', opts[:reference_number][:value])
  end
end

#reference_number_2Object



26
27
28
29
30
31
# File 'lib/ups/builders/package_builder.rb', line 26

def reference_number_2
  Element.new('ReferenceNumber').tap do |org|
    org << element_with_value('Code', opts[:reference_number_2][:type]) if opts[:reference_number_2][:type]
    org << element_with_value('Value', opts[:reference_number_2][:value])
  end
end

#to_xmlObject



57
58
59
60
61
62
63
64
65
66
# File 'lib/ups/builders/package_builder.rb', line 57

def to_xml
  Element.new(name).tap do |product|
    product << reference_number if opts[:reference_number]
    product << reference_number_2 if opts[:reference_number_2]
    product << packaging_type(opts[:packaging_type] || customer_supplied_packaging)
    product << description
    product << package_weight(opts[:weight], opts[:unit])
    product << package_dimensions(opts[:dimensions]) if opts[:dimensions]
  end
end