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: [ :stock_number, :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, verbose: true }
Class Method Summary collapse
Instance Method Summary collapse
- #all(chunk_size, &block) ⇒ Object
-
#initialize(options = {}) ⇒ Inventory
constructor
A new instance of Inventory.
Methods inherited from Base
Constructor Details
#initialize(options = {}) ⇒ Inventory
Returns a new instance of Inventory.
27 28 29 30 31 |
# File 'lib/rsr_group/inventory.rb', line 27 def initialize( = {}) requires!(, :username, :password) @options = end |
Class Method Details
.all(chunk_size, options = {}, &block) ⇒ Object
33 34 35 36 |
# File 'lib/rsr_group/inventory.rb', line 33 def self.all(chunk_size, = {}, &block) requires!(, :username, :password) new().all(chunk_size, &block) end |
Instance Method Details
#all(chunk_size, &block) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/rsr_group/inventory.rb', line 38 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 |