public void SubmitSingleProductInventoryFeed(MarketplaceInventoryFeed inventoryFeed, string submittedBy) { try { // parse the EIS product and create Amazon envelope var envelope = RequestHelper.CreateInventoryFeedEnvelope(new List <AmazonInventoryFeed> { inventoryFeed.AmazonInventoryFeed }); // parse the envelope into file var xmlFullName = XmlParser.WriteXmlToFile(envelope, "AmazonSingleInventoryFeed"); var submitFeedController = new SubmitFeedController(_amazonClient, _logger, _credential.MarketplaceId, _credential.MerchantId, submittedBy); var streamResponse = submitFeedController.SubmitFeedAndGetResponse(xmlFullName, AmazonFeedType._POST_INVENTORY_AVAILABILITY_DATA_); parsedResultStreamAndLogReport(streamResponse, AmazonEnvelopeMessageType.Inventory, submittedBy); _logger.LogInfo(LogEntryType.AmazonInventoryUpdate, string.Format("{0} - Successfully posted single inventory feed for EisSKU \'{1}\'.\nRequested by: {2}", ChannelName, inventoryFeed.EisSKU, submittedBy)); } catch (Exception ex) { var description = string.Format("{0} - Error in submitting single product inventory feed for EisSKU \'{3}\'. \nError Message: {1} \nRequested by: {2}", ChannelName, EisHelper.GetExceptionMessage(ex), submittedBy, inventoryFeed.EisSKU); _logger.Add(LogEntrySeverity.Error, LogEntryType.AmazonInventoryUpdate, description, ex.StackTrace); } }
private BigCommerce4Net.Domain.Product mapEISInventoryToBCProduct(MarketplaceInventoryFeed productFeed, BigCommerce4Net.Domain.Product bcProduct) { bcProduct.Sku = productFeed.EisSKU; bcProduct.InventoryLevel = productFeed.BigCommerceInventoryFeed.ProductQuantity; if (productFeed.BigCommerceInventoryFeed.InventoryWarningLevel.HasValue) { bcProduct.InventoryWarningLevel = productFeed.BigCommerceInventoryFeed.InventoryWarningLevel.Value; } if (productFeed.BigCommerceInventoryFeed.InventoryTracking.HasValue) { bcProduct.InventoryTracking = (ProductsInventoryTracking)productFeed.BigCommerceInventoryFeed.InventoryTracking.Value; } if (productFeed.BigCommerceInventoryFeed.OrderQuantityMinimum.HasValue) { bcProduct.OrderQuantityMinimum = productFeed.BigCommerceInventoryFeed.OrderQuantityMinimum.Value; } if (productFeed.BigCommerceInventoryFeed.OrderQuantityMaximum.HasValue) { bcProduct.OrderQuantityMaximum = productFeed.BigCommerceInventoryFeed.OrderQuantityMaximum.Value; } return(bcProduct); }
public void SubmitSingleProductInventoryFeed(MarketplaceInventoryFeed inventoryFeed, string submittedBy) { try { if (string.IsNullOrEmpty(inventoryFeed.eBayInventoryFeed.ItemId)) { _logger.LogInfo(LogEntryType.eBayInventoryUpdate, string.Format("Unable to send inventory update feed for \'{0}\' since it doesn't have ItemId. \nRequested by: {1}", inventoryFeed.EisSKU, submittedBy)); return; } // create inventory item feed var inventoryStatus = new InventoryStatusType { ItemID = inventoryFeed.eBayInventoryFeed.ItemId, Quantity = inventoryFeed.eBayInventoryFeed.InventoryQuantity }; var inventoryStatusCollection = new InventoryStatusTypeCollection(); inventoryStatusCollection.Add(inventoryStatus); // set the log file name _context.ApiLogManager.ApiLoggerList.Add(new FileLogger(string.Format(_logDirectory, MethodBase.GetCurrentMethod().Name), false, true, true)); // send the inventory collection request var apiCall = new ReviseInventoryStatusCall(_context); var inventoryStatusResult = apiCall.ReviseInventoryStatus(inventoryStatusCollection); _logger.LogInfo(LogEntryType.eBayInventoryUpdate, string.Format("Successfully posted single inventory feed for {0} - {1} item. \nRequested by: {2}", ChannelName, inventoryFeed.EisSKU, submittedBy)); } catch (Exception ex) { var description = string.Format("Error in submitting single inventory price feed for \'{0}\'. \nError Message: {1} \nRequested by: {2}", inventoryFeed.EisSKU, EisHelper.GetExceptionMessage(ex), submittedBy); _logger.Add(LogEntrySeverity.Error, LogEntryType.eBayInventoryUpdate, description, ex.StackTrace); } }
public void Should_Send_InventoryListing() { // Arrange EisInventoryContext _context = new EisInventoryContext(); var bcOrderInventoryProvider = new BigCommerceMarketplaceInventoryProvider(); bcOrderInventoryProvider.Credential = _credential; var eisSKU = ""; var productListFeed = new List <MarketplaceInventoryFeed>(); var product = _context.products.FirstOrDefault(o => o.EisSKU == eisSKU); var productBC = _context.productbigcommerces.FirstOrDefault(o => o.EisSKU == eisSKU); var productFeed = new MarketplaceInventoryFeed() { EisSKU = product.EisSKU }; productFeed.BigCommerceInventoryFeed = new BigCommerceInventoryFeed() { SKU = productBC.EisSKU, InventoryLevel = productBC.InventoryLevel, InventoryWarningLevel = productBC.InventoryWarningLevel, InventoryTracking = productBC.InventoryTracking, OrderQuantityMaximum = productBC.OrderQuantityMaximum, OrderQuantityMinimum = productBC.OrderQuantityMinimum, ProductId = productBC.ProductId }; productListFeed.Add(productFeed); // Act bcOrderInventoryProvider.SubmitProductInventoryFeeds(productListFeed, "Test"); // Assert }