Class: CatalogItem::LegacyPullAmazonCatalogItemListingsData
- Inherits:
-
BaseService
- Object
- BaseService
- CatalogItem::LegacyPullAmazonCatalogItemListingsData
- Defined in:
- app/services/catalog_item/legacy_pull_amazon_catalog_item_listings_data.rb
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
-
#process(catalog_item_id_or_catalog_item:, force_pricing_sync: false, options: {}) ⇒ Object
Processes Amazon VC catalog item, attempting to pull its listing item data.
Methods inherited from BaseService
#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #options, #tagged_logger
Constructor Details
This class inherits a constructor from BaseService
Instance Method Details
#process(catalog_item_id_or_catalog_item:, force_pricing_sync: false, options: {}) ⇒ Object
Processes Amazon VC catalog item, attempting to pull its listing item data. Mark the catalog item as pending_onboarding if no corresponding listing item data found, also accept force_pricing_sync to:
use Catalog::UpdateCatalogItem
- Store the procurement cost price to catalog item's amount
- Store the list price to catalog item's retailer advertised price
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/services/catalog_item/legacy_pull_amazon_catalog_item_listings_data.rb', line 14 def process(catalog_item_id_or_catalog_item:, force_pricing_sync: false, options: {}) raise ArgumentError, 'Deprecated class do not use, instead leaverage Catalog::PullAmazonCatalogsListingsData' catalog_item = catalog_item_id_or_catalog_item if catalog_item_id_or_catalog_item.is_a? CatalogItem catalog_item ||= CatalogItem.find(catalog_item_id_or_catalog_item) skip = !catalog_item.active? || catalog_item.amazon_asin.blank? || ( [:refresh_if_older_than].present? && catalog_item.amazon_info_datetime.present? && catalog_item.amazon_info_datetime > [:refresh_if_older_than] ) = [] catalog_items_updated = [] catalog_items_failed = [] if skip return Result.new(catalog_item_listings_data_pulled: false, messages:, catalog_items_updated:, catalog_items_failed:) end orch = catalog_item&.catalog&.load_orchestrator begin logger.info '==========================================================================' logger.info "Processing Catalog Item SKU: #{catalog_item.sku}, ID: #{catalog_item.id}:" res = orch.pull_catalog_information(catalog_item) logger.info "#{res}" logger.info '==========================================================================' if res.any? { |h| h.values.any? { |v| v == false } } catalog_items_failed << catalog_item msg = "Error pulling listings data for catalog Item #{catalog_item.id}, error: #{res}" logger.info '==========================================================================' logger.info "#{msg}" logger.info 'Marking catalog item as pending_onboarding' logger.info '==========================================================================' << msg catalog_item.amazon_catalog_item_needs_onboarding! else catalog_items_updated << catalog_item logger.info '==========================================================================' logger.info 'Successfully pulled Amazon listings data' logger.info '==========================================================================' if force_pricing_sync price_sync_res = CatalogItem::LegacySetAmazonCatalogItemPricesFromListingsData.new.process(catalog_item_id_or_catalog_item: catalog_item, force_pull_of_listing_data: false) unless price_sync_res.catalog_item_price_set? catalog_items_failed << catalog_item msg = "Error setting prices for catalog Item #{catalog_item.id}, error: #{.join(', ')}" logger.info '==========================================================================' logger.info "#{msg}" logger.info '==========================================================================' << msg end end end rescue StandardError => e catalog_items_failed << catalog_item msg = "Error pulling listings data for catalog Item #{catalog_item.id}, error: #{e}" logger.info '==========================================================================' logger.info "#{msg}" logger.info '==========================================================================' << msg end Result.new(catalog_item_listings_data_pulled: catalog_items_failed.empty?, messages:, catalog_items_updated:, catalog_items_failed:) end |