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.
16 17 18 |
# File 'app/models/spree/shipment.rb', line 16 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.
46 47 48 |
# File 'app/models/spree/shipment.rb', line 46 def cost adjustment ? adjustment.amount : 0 end |
#editable_by?(user) ⇒ Boolean
66 67 68 |
# File 'app/models/spree/shipment.rb', line 66 def editable_by?(user) !shipped? end |
#line_items ⇒ Object
76 77 78 79 80 81 82 |
# File 'app/models/spree/shipment.rb', line 76 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
70 71 72 73 74 |
# File 'app/models/spree/shipment.rb', line 70 def manifest inventory_units.group_by(&:variant).map do |i| OpenStruct.new(:variant => i.first, :quantity => i.last.length) end end |
#shipped=(value) ⇒ Object
39 40 41 42 |
# File 'app/models/spree/shipment.rb', line 39 def shipped=(value) return unless value == '1' && shipped_at.nil? self.shipped_at = Time.now end |
#to_param ⇒ Object
33 34 35 36 37 |
# File 'app/models/spree/shipment.rb', line 33 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.
87 88 89 90 91 92 |
# File 'app/models/spree/shipment.rb', line 87 def update!(order) old_state = state new_state = determine_state(order) update_column 'state', new_state after_ship if new_state == 'shipped' and old_state != 'shipped' end |