//https://ebaydts.com/eBayKBDetails?KBid=1679 public IEnumerable <MarketplaceOrder> GetMarketplaceOrders(DateTime createdAfter) { var orderResults = new List <MarketplaceOrder>(); try { // create the API call for get orders, then execute var apiCall = createGetOrdersCall(createdAfter); apiCall.Execute(); // check if the call is not success if (apiCall.ApiResponse.Ack != AckCodeType.Success) { Console.WriteLine("Error in getting orders for {0}! Error message: {1}", ChannelName, apiCall.ApiResponse.Errors[0].LongMessage); _logger.LogError(LogEntryType.eBayOrders, string.Format("Error in retrieving orders for eBay. Error message: {0}", apiCall.ApiResponse.Errors[0].LongMessage), apiCall.ApiResponse.Errors.ToString()); return(null); } // check if there are order items var orders = apiCall.ApiResponse.OrderArray; Console.WriteLine("{0} retrieved {1} orders.", ChannelName, orders.Count); if (orders.Count == 0) { return(null); } // iterate and parse the order results foreach (OrderType item in orders) { orderResults.Add(parsedMarketplaceOrder(item)); } Console.WriteLine("{0} done fetching orders: {1} items", ChannelName, orders.Count); } catch (Exception ex) { Console.WriteLine("Error in getting orders for {0}! Error message: {1}", ChannelName, ex.Message); _logger.LogError(LogEntryType.eBayOrders, string.Format("Error in retrieving orders for eBay. Error message: {0}", ex.Message), ex.StackTrace); _emailService.SendEmailAdminException(subject: "eBay - Get Marketplace Orders Error", exParam: ex, useDefaultTemplate: true, url: "GetMarketplaceOrders Method", userName: "******"); } return(orderResults); }
public IEnumerable <MarketplaceOrder> GetMarketplaceOrders(DateTime createdAfter) { try { return(_ordersService.GetMarketplaceOrders(createdAfter)); } catch (Exception ex) { Console.Error.WriteLine("Error Message: " + EisHelper.GetExceptionMessage(ex) + "\n" + ex.StackTrace); _logger.LogError(LogEntryType.OrderService, string.Format("Error occured in fetching order for {0} <br/>Error message: {1}", _ordersService.ChannelName, EisHelper.GetExceptionMessage(ex)), ex.StackTrace); return(null); } }
public void UpdateOrderVendorProductInventory(List <MarketplaceOrder> orders) { try { var results = new List <OrderProductResult>(); // iterate to each order and also to its order item foreach (var order in orders) { // then, to its order items foreach (var orderItem in order.OrderItems) { // let's determine if this item has already record in order upate history var hasHistory = _repository.HasOrderItemUpdateHistory(orderItem.OrderItemId, order.OrderStatus, order.PurchaseDate); if (hasHistory) { continue; } // otherwise let's create order item update history _repository.CreateOrderItemUpdateHistory(orderItem, order.OrderStatus, order.PurchaseDate); // manage the vendor product inventory if (order.OrderStatus != OrderStatus.Canceled) { var result = _service.ManageOrderVendorProduct(orderItem); results.Add(result); } else { _repository.ReturnVendorProductInventory(orderItem); } } } // notify Admin if there are insufficient products for the orders _service.EvaluateForInsufficientVendorProducts(results); } catch (Exception ex) { Console.Error.WriteLine("Error Message: " + EisHelper.GetExceptionMessage(ex) + "\n" + ex.StackTrace); _logger.LogError(LogEntryType.OrderService, string.Format("Error in updating vendor product inventory <br/>Error message: {0}", EisHelper.GetExceptionMessage(ex)), ex.StackTrace); } }
public eBayCategoryResult GeteBaySuggestedCategories(string eisSku, string keyword) { try { // create the API call object and pass the keyword var apiCall = new GetSuggestedCategoriesCall(_context); var categories = apiCall.GetSuggestedCategories(keyword); if (categories == null) { Console.WriteLine("NO EBAY SUGGESSTED CATEGORIES FOUND FOR {0} - {1}", eisSku, keyword); _logger.LogWarning(LogEntryType.eBaySuggestedCategoriesWorker, string.Format("No eBay categories found for EIS SKU: {0} - Keyword: {1}", eisSku, keyword)); return(null); } var results = new List <eBayCategory>(); foreach (SuggestedCategoryType item in categories) { results.Add(new eBayCategory { Id = Convert.ToInt32(item.Category.CategoryID), Name = string.Format("{0} > {1}", string.Join(" > ", item.Category.CategoryParentName.ToArray()), item.Category.CategoryName) }); } return(new eBayCategoryResult { EisSKU = eisSku, Categories = results }); } catch (Exception ex) { _logger.LogError(LogEntryType.eBaySuggestedCategoriesWorker, string.Format("Unexpected error in getting suggested categories for \"{0}\". Err Message: {1}", keyword, EisHelper.GetExceptionMessage(ex)), ex.StackTrace); return(null); } }
public IEnumerable <MarketplaceOrder> GetMarketplaceOrders(DateTime createdAfter) { var marketplaceOrders = new List <MarketplaceOrder>(); try { // init the Amazon web service var config = new MarketplaceWebServiceOrdersConfig { ServiceURL = "https://mws.amazonservices.com" }; config.SetUserAgent(_ApplicationName, _Version); _ordersClient = new MarketplaceWebServiceOrdersClient(_credential.AccessKeyId, _credential.SecretKey, config); Console.WriteLine("{0} fetching orders for {1}...", ChannelName, createdAfter); // create ListOrdersRequest object var listOrdersRequest = new ListOrdersRequest { SellerId = _credential.MerchantId, MarketplaceId = new List <string> { { _credential.MarketplaceId } }, LastUpdatedAfter = createdAfter.Date }; var listOrdersResponse = _ordersClient.ListOrders(listOrdersRequest); var ordersResult = listOrdersResponse.ListOrdersResult.Orders; var nextToken = listOrdersResponse.ListOrdersResult.NextToken; ListOrdersByNextTokenResponse nextOrderResponse = null; Console.WriteLine("{0} retrieved {1} orders and {2} next results page.", ChannelName, listOrdersResponse.ListOrdersResult.Orders.Count, !string.IsNullOrWhiteSpace(nextToken) ? "HAS" : "NO"); do { if (nextOrderResponse != null) { ordersResult = nextOrderResponse.ListOrdersByNextTokenResult.Orders; nextToken = nextOrderResponse.ListOrdersByNextTokenResult.NextToken; Console.WriteLine("{0} retrieved {1} next orders and {2} next results page.", ChannelName, ordersResult.Count, !string.IsNullOrWhiteSpace(nextToken) ? "HAS" : "NO"); } // Convert the orders to the marketplace contracts and get the items. for (int i = 0; i < ordersResult.Count; ++i) { // The maximum request quota for ListOrderItems is 30 after that it restores at 2 per second. // So if the order's that are being pulled exceed 30, then sleep for 2 seconds each one. if (i > 30) { Thread.Sleep(2000); } marketplaceOrders.Add(convertOrderResponseToMarketplaceOrder(ordersResult[i])); } // do a rquest for the next page result of orders if next token is not null if (!string.IsNullOrWhiteSpace(nextToken)) { // pause at least 1 minute, this is the restore rate for ListOrdersByNextToken for every 6 quota Thread.Sleep(61000); var nextTokenRequest = new ListOrdersByNextTokenRequest { SellerId = _credential.MerchantId, NextToken = nextToken }; nextOrderResponse = _ordersClient.ListOrdersByNextToken(nextTokenRequest); } } while (!string.IsNullOrWhiteSpace(nextToken)); Console.WriteLine("{0} done fetching orders: {1} items", ChannelName, marketplaceOrders.Count); } catch (Exception ex) { Console.WriteLine("Error in getting orders for {0}! Error message: {1}", ChannelName, ex.Message); _logger.LogError(LogEntryType.AmazonOrdersProvider, string.Format("Error in retrieving orders for Amazon. Error message: {0}", ex.Message), ex.StackTrace); _emailService.SendEmailAdminException(subject: "Amazon - Get Marketplace Orders Error", exParam: ex, useDefaultTemplate: true, url: "GetMarketplaceOrders Method", userName: "******"); } return(marketplaceOrders); }
public bool ConfirmOrdersShipment() { // get the unshipped orders with tracking number for confirming its shipment var unshippedOrderFeeds = _orderRepository.GetUnshippedOrdersForShipment(ChannelName); var bigCommerceOrdersList = new List <BigCommerce4Net.Domain.Order>(); var successConfirms = 0; if (!unshippedOrderFeeds.Any()) { Console.WriteLine("No unshipped orders found from {0} for shipment confirmation.", ChannelName); return(true); } try { Console.WriteLine("Sending {0} orders for shipment confirmation...", unshippedOrderFeeds.Count); foreach (var marketplaceOrder in unshippedOrderFeeds) { if (!marketplaceOrder.OrderItems.Any()) { return(false); } var orderid = Convert.ToInt32(marketplaceOrder.OrderId); var bcOrderResponse = _client.Orders.Get(orderid); var bcOrder = bcOrderResponse.Data; var updatedata = new { status_id = OrderStatusEnum.Shipped }; // Create BC Order Shipment var shipmentItems = new List <OrdersShipmentItem>(); foreach (var orderitems in marketplaceOrder.OrderItems) { var orderItemId = Convert.ToInt32(orderitems.OrderItemId); shipmentItems.Add(new OrdersShipmentItem { OrderProductId = orderItemId, Quantity = orderitems.Quantity }); } var orderAddressID = 0; var shippingAddresses = GetShippingAddresses(bcOrder.Id); if (shippingAddresses.Count > 0) { orderAddressID = shippingAddresses.First().Id; } var shipmentdata = new { order_address_id = orderAddressID, items = shipmentItems, tracking_number = marketplaceOrder.ShipperTrackingNumber, shipping_method = marketplaceOrder.ShippingMethod, shipping_provider = marketplaceOrder.CarrierCode != null ? marketplaceOrder.CarrierCode : "", }; // API Create Shipment based on Order var responseShipment = _client.OrdersShipments.Create(orderid, shipmentdata); if (responseShipment.RestResponse.StatusCode == System.Net.HttpStatusCode.Created) { // API Update on the Order var responseOrder = _client.Orders.Update(orderid, updatedata); if (responseOrder.RestResponse.StatusCode == System.Net.HttpStatusCode.OK) { successConfirms++; var tempList = new List <MarketplaceOrderFulfillment>(); tempList.Add(marketplaceOrder); // let's add these orders to the shipment history addOrderShipmentHistoryAsync(tempList); } } } _logger.LogInfo(LogEntryType.BigCommerceOrders, string.Format("Successfully sent confirming order shipment for {0} order items: <br/>Shipment confirmation was done by {1}", successConfirms, Constants.APP_NAME)); Console.WriteLine("Successfully sent confirming order shipment for {0} order items: ", successConfirms); return(true); } catch (Exception ex) { _logger.LogError(LogEntryType.BigCommerceOrders, string.Format("{4} Error in confirming order shipment for {0} - Number of Orders: {3}. <br/>Error Message: {1} <br/> Access Key: {2}", ChannelName, (ex.InnerException != null ? string.Format("{0} <br/>Inner Message: {1}", ex.Message, ex.InnerException.Message) : ex.Message), _credential.Username, bigCommerceOrdersList.Count, _ApplicationName), ex.StackTrace); Console.WriteLine("Error in sending shipment confirmation! Error Message: {0} \nStackTrace: {1} ", ex.Message, ex.StackTrace); // let's delete the order confirmation deleteOrderShipmentHistoryAsync(unshippedOrderFeeds); return(false); } }