Class: Spree::Shipment
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Spree::Shipment
- Defined in:
- app/models/spree/shipment.rb
Instance Attribute Summary collapse
-
#special_instructions ⇒ Object
Returns the value of attribute special_instructions.
Instance Method Summary collapse
-
#cost ⇒ Object
(also: #amount)
The adjustment amount associated with this shipment (if any.) Returns only the first adjustment to match the shipment but there should never really be more than one.
- #editable_by?(user) ⇒ Boolean
- #line_items ⇒ Object
- #manifest ⇒ Object
- #shipped=(value) ⇒ Object
- #to_param ⇒ Object
-
#update!(order) ⇒ Object
Updates various aspects of the Shipment while bypassing any callbacks.
Instance Attribute Details
#special_instructions ⇒ Object
Returns the value of attribute special_instructions.
15 16 17 |
# File 'app/models/spree/shipment.rb', line 15 def special_instructions @special_instructions end |
Instance Method Details
#cost ⇒ Object Also known as: amount
The adjustment amount associated with this shipment (if any.) Returns only the first adjustment to match the shipment but there should never really be more than one.
45 46 47 |
# File 'app/models/spree/shipment.rb', line 45 def cost adjustment ? adjustment.amount : 0 end |
#editable_by?(user) ⇒ Boolean
65 66 67 |
# File 'app/models/spree/shipment.rb', line 65 def editable_by?(user) !shipped? end |
#line_items ⇒ Object
75 76 77 78 79 80 81 |
# File 'app/models/spree/shipment.rb', line 75 def line_items if order.complete? and Spree::Config[:track_inventory_levels] order.line_items.select { |li| inventory_units.map(&:variant_id).include?(li.variant_id) } else order.line_items end end |
#manifest ⇒ Object
69 70 71 72 73 |
# File 'app/models/spree/shipment.rb', line 69 def manifest inventory_units.group_by(&:variant).map do |i| OpenStruct.new(:variant => i.first, :quantity => i.last.length) end end |
#shipped=(value) ⇒ Object
38 39 40 41 |
# File 'app/models/spree/shipment.rb', line 38 def shipped=(value) return unless value == '1' && shipped_at.nil? self.shipped_at = Time.now end |
#to_param ⇒ Object
32 33 34 35 36 |
# File 'app/models/spree/shipment.rb', line 32 def to_param number if number generate_shipment_number unless number number.to_s.to_url.upcase end |
#update!(order) ⇒ Object
Updates various aspects of the Shipment while bypassing any callbacks. Note that this method takes an explicit reference to the Order object. This is necessary because the association actually has a stale (and unsaved) copy of the Order and so it will not yield the correct results.
86 87 88 89 90 91 |
# File 'app/models/spree/shipment.rb', line 86 def update!(order) old_state = state new_state = determine_state(order) update_attribute_without_callbacks 'state', determine_state(order) after_ship if new_state == 'shipped' and old_state != 'shipped' end |