Class: StockArticle
Instance Attribute Summary
Attributes inherited from Article
#article_category, #article_versions, #availability, #deposit, #manufacturer, #name, #note, #order, #order_number, #origin, #price, #supplier, #tax, #unit, #unit_quantity
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Article
#check_article_in_use, #convert_units, #current_article_units, #deleted?, #duplicate_including_latest_version_and_ratios, #in_open_order, #ordered_in_order?, #recently_updated, #reload_article_on_version_change, #shared_article, #unequal_attributes, #update_or_create_article_version, #version_dup_required?
#convert_quantity, #fc_group_order_price, #fc_price, #get_unit_ratio_quantity, #gross_group_order_price, #gross_price, #group_order_price, #price_unit_price, #unit_quantity
parse
Class Method Details
.ransackable_associations(auth_object = nil) ⇒ Object
16
17
18
|
# File 'app/models/stock_article.rb', line 16
def self.ransackable_associations(auth_object = nil)
super - %w[supplier]
end
|
.ransackable_attributes(auth_object = nil) ⇒ Object
12
13
14
|
# File 'app/models/stock_article.rb', line 12
def self.ransackable_attributes(auth_object = nil)
super - %w[supplier_id] + %w[quantity]
end
|
.stock_value ⇒ Object
39
40
41
|
# File 'app/models/stock_article.rb', line 39
def self.stock_value
available.collect { |a| a.quantity * a.gross_price }.sum
end
|
Instance Method Details
#check_quantity ⇒ Object
50
51
52
|
# File 'app/models/stock_article.rb', line 50
def check_quantity
raise I18n.t('stockit.check.not_empty', name: name) unless quantity == 0
end
|
#mark_as_deleted ⇒ Object
43
44
45
46
|
# File 'app/models/stock_article.rb', line 43
def mark_as_deleted
check_quantity
super
end
|
#quantity_available ⇒ Object
Check for unclosed orders and substract its ordered quantity
26
27
28
|
# File 'app/models/stock_article.rb', line 26
def quantity_available
quantity - quantity_ordered
end
|
#quantity_history ⇒ Object
35
36
37
|
# File 'app/models/stock_article.rb', line 35
def quantity_history
stock_changes.reorder('stock_changes.created_at ASC').map { |s| s.quantity }.cumulative_sum
end
|
#quantity_ordered ⇒ Object
30
31
32
33
|
# File 'app/models/stock_article.rb', line 30
def quantity_ordered
OrderArticle.joins(:order, :article_version).where(article_versions: { article_id: id })
.where(orders: { state: %w[open finished received] }).sum(:units_to_order)
end
|
#update_price_history ⇒ Object
Overwrite Price history of Article. For StockArticles isn’t it necessary.
55
56
57
|
# File 'app/models/stock_article.rb', line 55
def update_price_history
true
end
|
#update_quantity! ⇒ Object
Update the quantity of items in stock
21
22
23
|
# File 'app/models/stock_article.rb', line 21
def update_quantity!
update_attribute :quantity, stock_changes.collect(&:quantity).sum
end
|