Module: Opensteam::ShipmentBase::ShippingCalculation
- Defined in:
- lib/opensteam/shipment_base.rb
Instance Method Summary collapse
- #calculate_shipping_rate(attr = {}) ⇒ Object
- #set_shipping_rate! ⇒ Object
- #shipping_rate_per_item(attr) ⇒ Object
- #shipping_rate_per_order(attr) ⇒ Object
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 |