Class: Spree::StockTransfer
- Inherits:
-
Base
- Object
- ActiveRecord::Base
- Base
- Spree::StockTransfer
show all
- Defined in:
- app/models/spree/stock_transfer.rb
Defined Under Namespace
Classes: InvalidTransferMovement
Instance Method Summary
collapse
Methods inherited from Base
page
#default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference
Instance Method Details
#close(closed_by) ⇒ Object
90
91
92
93
94
95
96
97
|
# File 'app/models/spree/stock_transfer.rb', line 90
def close(closed_by)
if receivable?
self.update_attributes({ closed_at: Time.now, closed_by: closed_by })
else
errors.add(:base, Spree.t(:stock_transfer_must_be_receivable))
false
end
end
|
#closed? ⇒ Boolean
31
32
33
|
# File 'app/models/spree/stock_transfer.rb', line 31
def closed?
closed_at.present?
end
|
#destination_movements ⇒ Object
64
65
66
67
|
# File 'app/models/spree/stock_transfer.rb', line 64
def destination_movements
stock_movements.joins(:stock_item)
.where('spree_stock_items.stock_location_id' => destination_location_id)
end
|
#expected_item_count ⇒ Object
55
56
57
|
# File 'app/models/spree/stock_transfer.rb', line 55
def expected_item_count
transfer_items.sum(:expected_quantity)
end
|
#finalizable? ⇒ Boolean
39
40
41
|
# File 'app/models/spree/stock_transfer.rb', line 39
def finalizable?
!finalized? && !shipped? && !closed?
end
|
#finalize(finalized_by) ⇒ Object
69
70
71
72
73
74
75
76
|
# File 'app/models/spree/stock_transfer.rb', line 69
def finalize(finalized_by)
if finalizable?
self.update_attributes({ finalized_at: Time.now, finalized_by: finalized_by })
else
errors.add(:base, Spree.t(:stock_transfer_cannot_be_finalized))
false
end
end
|
#finalized? ⇒ Boolean
27
28
29
|
# File 'app/models/spree/stock_transfer.rb', line 27
def finalized?
finalized_at.present?
end
|
#receivable? ⇒ Boolean
43
44
45
|
# File 'app/models/spree/stock_transfer.rb', line 43
def receivable?
finalized? && shipped? && !closed?
end
|
#received_item_count ⇒ Object
51
52
53
|
# File 'app/models/spree/stock_transfer.rb', line 51
def received_item_count
transfer_items.sum(:received_quantity)
end
|
#ship(tracking_number: nil, shipped_at: nil) ⇒ Object
47
48
49
|
# File 'app/models/spree/stock_transfer.rb', line 47
def ship(tracking_number: nil, shipped_at: nil)
update_attributes!(tracking_number: tracking_number, shipped_at: shipped_at)
end
|
#shipped? ⇒ Boolean
35
36
37
|
# File 'app/models/spree/stock_transfer.rb', line 35
def shipped?
shipped_at.present?
end
|
#source_movements ⇒ Object
59
60
61
62
|
# File 'app/models/spree/stock_transfer.rb', line 59
def source_movements
stock_movements.joins(:stock_item)
.where('spree_stock_items.stock_location_id' => source_location_id)
end
|
#to_param ⇒ Object
23
24
25
|
# File 'app/models/spree/stock_transfer.rb', line 23
def to_param
number
end
|
#transfer ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
|
# File 'app/models/spree/stock_transfer.rb', line 78
def transfer
transaction do
transfer_items.each do |item|
raise InvalidTransferMovement unless item.valid?
source_location.unstock(item.variant, item.expected_quantity, self)
end
end
rescue InvalidTransferMovement
errors.add(:base, Spree.t(:not_enough_stock))
false
end
|