Class: Feed::ItemInventoryGenerator

Inherits:
ItemBaseGenerator
  • Object
show all
Defined in:
app/services/feed/item_inventory_generator.rb

Instance Method Summary collapse

Instance Method Details

#build_csv(output_file_path, catalog_items) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/services/feed/item_inventory_generator.rb', line 19

def build_csv(output_file_path, catalog_items)
  CSV.open(output_file_path, "wb") do |csv|
    csv << %w(catalog_item_id sku gtin catalog_id catalog_name price price_currency retailer_part_number_label retailer_part_number quantity_available)
    catalog_items.find_each do |ci|
      csv << [
        ci.id,
        ci.store_item.item.sku,
        ci.store_item.item.upc,
        ci.catalog_id,
        ci.catalog.name,
        ci.amount,
        ci.catalog.currency,
        ci.catalog.retailer_part_number_label,
        ci.third_party_part_number,
        ci.store_item.qty_available
      ]
    end
  end
end

#load_catalog_items(filters: nil) ⇒ Object



10
11
12
13
14
15
16
# File 'app/services/feed/item_inventory_generator.rb', line 10

def load_catalog_items(filters: nil)
  catalog_items = CatalogItem.joins({:store_item => [:store, :item]}, :catalog).includes({:store_item => [:store, :item]}, :catalog).
                  merge(Item.non_publications.packageable).
                  order(Item[:sku],CatalogItem[:catalog_id])
  catalog_items = catalog_items.where(filters) if filters.present?
  catalog_items
end

#process(filters: nil, limits: nil, output_file_path: nil) ⇒ Object



3
4
5
6
7
8
# File 'app/services/feed/item_inventory_generator.rb', line 3

def process(filters: nil, limits: nil, output_file_path: nil)
  catalog_items = load_catalog_items(filters: filters)
  output_file_path ||= Rails.root.join(Rails.application.config.x.temp_storage_path.to_s, 'product_inventory_warmlyyours.csv')
  build_csv(output_file_path, catalog_items)
  Result.new(output_file_path: output_file_path, count: catalog_items.size)
end