Module: Opensteam::ShipmentBase::ShippingCalculation

Defined in:
lib/opensteam/shipment_base.rb

Instance Method Summary collapse

Instance Method Details

#calculate_shipping_rate(attr = {}) ⇒ Object



31
32
33
# File 'lib/opensteam/shipment_base.rb', line 31

def calculate_shipping_rate attr = {} 
  send( "shipping_rate_#{Opensteam::Config[:shipping_strategy]}", attr )
end

#set_shipping_rate!Object



36
37
38
39
40
41
42
# File 'lib/opensteam/shipment_base.rb', line 36

def set_shipping_rate!
  returning( self ) do |s|
    s.shipping_rate = ( r = calculate_shipping_rate ).is_a?( Array ) ? r.sum : r
    s.total_price += s.shipping_rate
  end
  #        self.update_attribute( :shipping_rate, ( r = calculate_shipping_rate ).is_a?( Array ) ? r.sum : r )
end

#shipping_rate_per_item(attr) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/opensteam/shipment_base.rb', line 54

def shipping_rate_per_item attr
  set_shipping_attributes( attr )
  
  self.items.collect { |i|
    ShippingRateGroup.find_by_name( i.shipping_rate_group ).rate_for( attr ) rescue 0.0
  }
end

#shipping_rate_per_order(attr) ⇒ Object



46
47
48
49
50
# File 'lib/opensteam/shipment_base.rb', line 46

def shipping_rate_per_order attr
  set_shipping_attributes( attr )

  ShippingRateGroup.find_by_name( attr[:group_name] ).rate_for( attr )
end