Class: Maintenance::Item::DiscontinueUnusedItems
- Inherits:
-
BaseService
- Object
- BaseService
- Maintenance::Item::DiscontinueUnusedItems
- Defined in:
- app/services/maintenance/item/discontinue_unused_items.rb
Instance Method Summary collapse
- #load_items_to_discontinue(created_before: 6.months.ago) ⇒ Object
- #process(item_scope = nil, report_only: false) ⇒ Object
Instance Method Details
#load_items_to_discontinue(created_before: 6.months.ago) ⇒ Object
25 26 27 28 29 30 |
# File 'app/services/maintenance/item/discontinue_unused_items.rb', line 25 def load_items_to_discontinue(created_before: 6.months.ago) # Find items which have all their catalog_items discontinued. # Only item without stock are considered # Only item created and older than 6 months are considered Item.non_publications.with_all_catalog_items_discontinued.where(is_discontinued: false).where(created_at: ..created_before).order('items.is_kit = false'.sql_safe) # Kits will be first end |
#process(item_scope = nil, report_only: false) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'app/services/maintenance/item/discontinue_unused_items.rb', line 2 def process(item_scope = nil, report_only: false) item_scope ||= load_items_to_discontinue logger.info "Discontinuing #{item_scope.count} unused items" successes = [] failures = [] item_scope.find_each do |item| logger.info "Discontinuing unused item #{item.id}" begin # To be discontinued an item must have no stock if item.store_items.where.not(location: %(SCRAP)).sum(:qty_on_hand).zero? item.discontinue_self_and_dependents unless report_only successes << { id: item.id, sku: item.sku, name: item.name } else failures << { id: item.id, sku: item.sku, name: item.name, errors: 'Stock present' } end rescue StandardError => e logger.error "Cannot discontinue item #{item.id}, error: #{e}" failures << { id: item.id, sku: item.sku, name: item.name, errors: e.to_s } end end { successes:, failures: } end |