Class: RsrGroup::Inventory
Constant Summary collapse
- KEYDEALER_DIR =
'keydealer'.freeze
- INVENTORY_DIR =
'ftpdownloads'.freeze
- QTY_FILENAME =
'IM-QTY-CSV.csv'.freeze
- MAP_FILENAME =
'retail-map.csv'.freeze
- INVENTORY_FILENAME =
'rsrinventory-new.txt'.freeze
- KEYDEALER_FILENAME =
'rsrinventory-keydlr-new.txt'.freeze
- DEFAULT_SMART_OPTS =
{ chunk_size: 100, convert_values_to_numeric: false, col_sep: ";", quote_char: "|", headers_in_file: false, user_provided_headers: [ :item_identifier, :upc, :short_description, :department_number, :manufacturer_id, :retail_price, :price, :weight, :quantity, :model, :manufacturer, :mfg_number, :allocated_closeout_deleted, :long_description, :image_name, 51.times.map { |i| "state_#{i}".to_sym }, :ships_ground_only, :signature_required, :blocked_from_drop_ship, :date_entered, :map_price, :image_disclaimer, :length, :width, :height, :null ].flatten, remove_unmapped_keys: true, }
Class Method Summary collapse
- .all(chunk_size, options = {}, &block) ⇒ Object
- .quantity(chunk_size, options = {}, &block) ⇒ Object
Instance Method Summary collapse
- #all(chunk_size, &block) ⇒ Object
-
#initialize(options = {}) ⇒ Inventory
constructor
A new instance of Inventory.
- #quantity(chunk_size, &block) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(options = {}) ⇒ Inventory
Returns a new instance of Inventory.
26 27 28 29 30 |
# File 'lib/rsr_group/inventory.rb', line 26 def initialize( = {}) requires!(, :username, :password) @options = end |
Class Method Details
.all(chunk_size, options = {}, &block) ⇒ Object
32 33 34 35 |
# File 'lib/rsr_group/inventory.rb', line 32 def self.all(chunk_size, = {}, &block) requires!(, :username, :password) new().all(chunk_size, &block) end |
.quantity(chunk_size, options = {}, &block) ⇒ Object
61 62 63 64 |
# File 'lib/rsr_group/inventory.rb', line 61 def self.quantity(chunk_size, = {}, &block) requires!(, :username, :password) new().quantity(chunk_size, &block) end |
Instance Method Details
#all(chunk_size, &block) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/rsr_group/inventory.rb', line 37 def all(chunk_size, &block) connect(@options) do |ftp| tempfile = Tempfile.new # Is this a key dealer? if ftp.nlst.include?(KEYDEALER_DIR) ftp.chdir(KEYDEALER_DIR) # Pull from the FTP and save as a temp file ftp.getbinaryfile(KEYDEALER_FILENAME, tempfile.path) else ftp.chdir(INVENTORY_DIR) # Pull from the FTP and save as a temp file ftp.getbinaryfile(INVENTORY_FILENAME, tempfile.path) end SmarterCSV.process(tempfile, DEFAULT_SMART_OPTS.merge(chunk_size: chunk_size)) do |chunk| yield(chunk) end tempfile.unlink ftp.close end end |
#quantity(chunk_size, &block) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/rsr_group/inventory.rb', line 66 def quantity(chunk_size, &block) connect(@options) do |ftp| tempfile = Tempfile.new # Is this a key dealer? if ftp.nlst.include?(KEYDEALER_DIR) ftp.chdir(KEYDEALER_DIR) # Pull from the FTP and save as a temp file ftp.getbinaryfile(KEYDEALER_FILENAME, tempfile.path) else ftp.chdir(INVENTORY_DIR) # Pull from the FTP and save as a temp file ftp.getbinaryfile(INVENTORY_FILENAME, tempfile.path) end SmarterCSV.process(tempfile, DEFAULT_SMART_OPTS.merge(chunk_size: chunk_size)) do |chunk| chunk.each do |item| item = Hash[*item.select {|k,v| [:item_identifier, :quantity].include?(k)}.flatten] end yield(chunk) end tempfile.unlink ftp.close end end |