public static void GetEmailByAPI(AccountType account, DateTime beginDate, DateTime endDate, ISession NSession) { ApiContext context = AppSettingHelper.GetGenericApiContext("US"); context.ApiCredential.eBayToken = account.ApiToken; GetMemberMessagesCall apicall = new GetMemberMessagesCall(context); apicall.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); TimeFilter fltr = new TimeFilter(); fltr.TimeFrom = beginDate; fltr.TimeTo = endDate; MemberMessageExchangeTypeCollection messages; int i = 1; do { apicall.Pagination = new eBay.Service.Core.Soap.PaginationType(); apicall.Pagination.PageNumber = i; apicall.Pagination.EntriesPerPage = 100; messages = apicall.GetMemberMessages(fltr, MessageTypeCodeType.All, MessageStatusTypeCodeType.Unanswered); for (int k = 0; k < messages.Count; k++) { MemberMessageExchangeType mmet = messages[k]; EbayMessageType email = new EbayMessageType(); email.Body = mmet.Question.Body; email.CreationDate = mmet.CreationDate; email.MessageId = mmet.Question.MessageID; email.MessageStatus = "未回复"; email.MessageType = MessageType(mmet.Question.MessageType.ToString()); email.SenderEmail = mmet.Question.SenderEmail; email.SenderID = mmet.Question.SenderID; email.Subject = mmet.Question.Subject; if (mmet.Item != null) { email.ItemId = mmet.Item.ItemID; email.Title = mmet.Item.Title; } email.Shop = mmet.Question.RecipientID[0]; email.CreateOn = DateTime.Now; email.ReplayOn = Convert.ToDateTime("2000-01-01"); if (HasExist(email.MessageId, NSession)) { } else { NSession.Save(email); NSession.Flush(); } } i++; } while (messages != null && messages.Count == 100); }
public static List<EbayTransactionType> GetAllOrders(AccountType account, TimeFilter timeFilter, StringCollection orderIds) { List<EbayTransactionType> transList = new List<EbayTransactionType>(); GetOrdersCall getOrdersApiCall = new GetOrdersCall(account.SellerApiContext); getOrdersApiCall.IncludeFinalValueFee = true; DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[] { DetailLevelCodeType.ReturnAll }; getOrdersApiCall.DetailLevelList = new DetailLevelCodeTypeCollection(detailLevels); if (orderIds != null) getOrdersApiCall.OrderIDList = orderIds; try { OrderTypeCollection orders = getOrdersApiCall.GetOrders(timeFilter, TradingRoleCodeType.Seller, OrderStatusCodeType.All); foreach (OrderType order in orders) { AddressType addressType = order.ShippingAddress; String shippingAddress = GetShippingAddressString(addressType); String shippingAddressCompact = GetShippingAddressCompactString(addressType); bool completed = order.OrderStatus == OrderStatusCodeType.Completed; foreach (TransactionType trans in order.TransactionArray) { #region Process each ebay transaction // Check if this transaction has already be recorded in system. String transId = trans.TransactionID; if (transId == null || transId == "") { Logger.WriteSystemLog("GetAllOrders: Invalid transaction id, skip and continue."); continue; } EbayTransactionType ebayTrans = new EbayTransactionType(); ebayTrans.SellerName = account.ebayAccount; ebayTrans.OrderId = order.OrderID; ebayTrans.OrderLineItemId = trans.OrderLineItemID; ebayTrans.EbayTransactionId = trans.TransactionID; ebayTrans.EbayRecordId = order.ShippingDetails.SellingManagerSalesRecordNumberSpecified ? order.ShippingDetails.SellingManagerSalesRecordNumber : -1; ebayTrans.BuyerId = order.BuyerUserID; GetUserCall getUserApiCall = new GetUserCall(account.SellerApiContext); getUserApiCall.UserID = order.BuyerUserID; UserType user = getUserApiCall.GetUser(); // BuyerRating if (user.FeedbackScoreSpecified) ebayTrans.BuyerRating = user.FeedbackScore; else ebayTrans.BuyerRating = -1; // BuyerCountryEbayCode ebayTrans.BuyerCountryEbayCode = addressType.Country.ToString(); // BuyerCountry4PXCode ebayTrans.BuyerCountry4PXCode = ""; // BuyerCountry ebayTrans.BuyerCountry = addressType.CountryName; // BuyerCompanyName ebayTrans.BuyerCompanyName = StringUtil.GetSafeString(addressType.CompanyName); // BuyerName ebayTrans.BuyerName = addressType.Name; // BuyerStateOrProvince ebayTrans.BuyerStateOrProvince = addressType.StateOrProvince; // BuyerCity ebayTrans.BuyerCity = addressType.CityName; // BuyerTel ebayTrans.BuyerTel = addressType.Phone; // BuyerMail ebayTrans.BuyerMail = trans.Buyer.Email; // BuyerPostalCode ebayTrans.BuyerPostalCode = addressType.PostalCode; // BuyerAddress ebayTrans.BuyerAddress = shippingAddress; // BuyerAddressCompact ebayTrans.BuyerAddressCompact = shippingAddressCompact; // BuyerAddressLine1 ebayTrans.BuyerAddressLine1 = addressType.Street1; // BuyerAddressLine2 ebayTrans.BuyerAddressLine2 = addressType.Street2; // BuyerPayPal ebayTrans.BuyerPayPal = trans.Buyer.Email; // ItemId ebayTrans.ItemId = trans.Item.ItemID; // What is the valid way to determine if there is a variation. if (trans.Variation != null && trans.Variation.VariationTitle != null && trans.Variation.VariationTitle.Trim() != "") { // ItemTitle ebayTrans.ItemTitle = trans.Variation.VariationTitle; // ItemSKU ebayTrans.ItemSKU = trans.Variation.SKU; } else { // ItemTitle ebayTrans.ItemTitle = trans.Item.Title; // ItemSKU ebayTrans.ItemSKU = trans.Item.SKU; } // ItemPrice if (trans.TransactionPrice != null) ebayTrans.ItemPrice = trans.TransactionPrice.Value; // SaleQuantity ebayTrans.SaleQuantity = trans.QuantityPurchased; if (trans.TransactionPrice != null) { // SalePrice ebayTrans.SalePrice = trans.TransactionPrice.Value * trans.QuantityPurchased; // TotalPrice ebayTrans.TotalPrice = trans.TransactionPrice.Value * trans.QuantityPurchased; } // TODO: there may be multiple transactions in one order. if (order.Total != null) { ebayTrans.TotalPrice = order.Total.Value; ebayTrans.CurrencyId = order.Total.currencyID.ToString(); } else { // Set a default value. ebayTrans.TotalPrice = 0.0; ebayTrans.CurrencyId = ""; } // SaleDate ebayTrans.SaleDate = order.CreatedTime; // SaleDateCN ebayTrans.SaleDateCN = order.CreatedTime.ToLocalTime(); // IsPaid ebayTrans.IsPaid = order.PaidTimeSpecified; // order.AmountPaid // order.CheckoutStatus // ebayPaymentStatus // Status // orderStatus if (ebayTrans.IsPaid == false) { // Some payment is paid using credit card, and while PayPal is processing the payment, // the transaction is marked as unpaid. we should view it as paid. if (order.OrderStatusSpecified && order.OrderStatus == OrderStatusCodeType.Completed) ebayTrans.IsPaid = true; } if (ebayTrans.IsPaid == false) { if (order.CheckoutStatus.StatusSpecified && order.CheckoutStatus.Status == CompleteStatusCodeType.Complete) ebayTrans.IsPaid = true; } // PaidDate ebayTrans.PaidDate = StringUtil.GetSafeDateTime(order.PaidTime); // IsShipped ebayTrans.IsShipped = order.ShippedTimeSpecified; if (order.ShippedTimeSpecified) ebayTrans.ShippedDate = StringUtil.GetSafeDateTime(order.ShippedTime); else ebayTrans.ShippedDate = DateTime.Now.AddYears(-10); // Store the shippedDate as the local date time. ebayTrans.ShippedDate = ebayTrans.ShippedDate.ToLocalTime(); // ShippingServiceCode ebayTrans.ShippingServiceCode = ""; // ShippingService ebayTrans.ShippingService = ""; // ShippingTrackingNo ebayTrans.ShippingTrackingNo = ""; // ShippingCost ebayTrans.ShippingCost = 0.0; // FinalValueFee if (trans.FinalValueFee != null) ebayTrans.FinalValueFee = trans.FinalValueFee.Value; else ebayTrans.FinalValueFee = 0.0; // PayPalFee ebayTrans.PayPalFee = 0.034 * ebayTrans.TotalPrice + 0.3; // IsReceived ebayTrans.IsReceived = false; ebayTrans.IsBuyerLeftFeedback = false; ebayTrans.IsSellerLeftFeedback = false; ebayTrans.IsNeedAttention = false; ebayTrans.MessageStatus = TransactionMessageStatus.NoMessage; ebayTrans.IsContactedBuyer = false; ebayTrans.LastContactedBuyerDate = DateTime.Now.AddYears(-10); ebayTrans.IsResendReplacement = false; ebayTrans.UserComment = ""; GetFeedbackCall getFeedbackApiCall = new GetFeedbackCall(account.SellerApiContext); //DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[] { DetailLevelCodeType.ReturnAll }; getFeedbackApiCall.DetailLevelList = new DetailLevelCodeTypeCollection(detailLevels); getFeedbackApiCall.OrderLineItemID = trans.OrderLineItemID; FeedbackDetailTypeCollection feedbacks = getFeedbackApiCall.GetFeedback(); foreach (FeedbackDetailType feedback in feedbacks) { if (feedback.CommentingUser == account.ebayAccount) ebayTrans.IsSellerLeftFeedback = true; if (feedback.CommentingUser == ebayTrans.BuyerId) ebayTrans.IsBuyerLeftFeedback = true; } if (trans.ShippingDetails != null) { if (trans.ShippingDetails.ShipmentTrackingDetails.Count == 1) { ShipmentTrackingDetailsType shipmentDetails = trans.ShippingDetails.ShipmentTrackingDetails[0]; ebayTrans.ShippingTrackingNo = shipmentDetails.ShipmentTrackingNumber; } } transList.Add(ebayTrans); #endregion } } } catch (Exception ex) { Logger.WriteSystemLog(string.Format("Unexpected expection : {0}", ex.Message)); } return transList; }
public void GetSellerList() { Assert.IsNotNull(TestData.NewItem, "Failed because no item available -- requires successful AddItem test"); // GetSellerListCall gsl = new GetSellerListCall(this.apiContext); DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[] { DetailLevelCodeType.ReturnAll }; gsl.DetailLevelList = new DetailLevelCodeTypeCollection(detailLevels); // Time filter System.DateTime calTo = System.DateTime.Now.AddHours(1); System.DateTime calFrom = System.DateTime.Now.AddHours(-2); TimeFilter tf = new TimeFilter(calFrom, calTo); gsl.EndTimeFilter = tf; // Pagination PaginationType pt = new PaginationType(); pt.EntriesPerPage = 100; pt.EntriesPerPageSpecified = true; pt.PageNumber = 1; pt.PageNumberSpecified = true; gsl.Pagination = pt; // gsl.Execute(); ItemTypeCollection items = gsl.ApiResponse.ItemArray; Assert.IsNotNull(items); Assert.IsTrue(items.Count > 0); ItemType foundItem = findItem(items, TestData.NewItem.ItemID); Assert.IsNotNull(foundItem, "item not found"); }
public void GetSellerEvents() { Assert.IsNotNull(TestData.NewItem, "Failed because no item available -- requires successful AddItem test"); GetSellerEventsCall api = new GetSellerEventsCall(this.apiContext); // Time filter System.DateTime calFrom = System.DateTime.Now.AddHours(-1); System.DateTime calTo = System.DateTime.Now.AddHours(1); TimeFilter tf = new TimeFilter(calFrom, calTo); api.EndTimeFilter = tf; // Make API call. api.Execute(); }
public void GetSellerTransactions() { GetSellerTransactionsCall gst = new GetSellerTransactionsCall(this.apiContext); // Time filter System.DateTime calTo = System.DateTime.Now; System.DateTime calFrom = calTo.AddHours(-1); TimeFilter tf = new TimeFilter(calFrom, calTo); gst.ModTimeFilter = tf; // Pagination PaginationType pt = new PaginationType(); pt.EntriesPerPage = 100; pt.EntriesPerPageSpecified = true; pt.PageNumber = 1; pt.PageNumberSpecified = true; gst.Pagination = pt; gst.Execute(); TestData.SellerTransactions = gst.ApiResponse.TransactionArray; }
private void BtnGetOrders_Click(object sender, EventArgs e) { try { LstOrders.Items.Clear(); GetOrdersCall apicall = new GetOrdersCall(apiContext); TimeFilter fltr = new TimeFilter(); if (ChkStartFrom.Checked) { fltr.TimeFrom = DatePickStartFrom.Value; } if (ChkStartTo.Checked) { fltr.TimeTo = DatePickStartTo.Value; } OrderTypeCollection orders = apicall.GetOrders(fltr, (TradingRoleCodeType)Enum.Parse(typeof(TradingRoleCodeType), CboRole.SelectedItem.ToString()), (OrderStatusCodeType)Enum.Parse(typeof(OrderStatusCodeType), CboStatus.SelectedItem.ToString())); foreach (OrderType order in orders) { string[] listparams = new string[5]; listparams[0] = order.OrderID; listparams[1] = order.OrderStatus.ToString(); listparams[2] = order.CreatingUserRole.ToString(); listparams[3] = order.AmountSaved.Value.ToString(); string[] itemids = new string[order.TransactionArray.Count]; int index = 0; foreach (TransactionType trans in order.TransactionArray) { itemids[index] = trans.Item.ItemID; index++; } listparams[4] = string.Join(", ", itemids); ListViewItem vi = new ListViewItem(listparams); LstOrders.Items.Add(vi); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void GetItemTransactions() { Assert.IsNotNull(TestData.NewItem, "Failed because no item available -- requires successful AddItem test"); GetItemTransactionsCall api = new GetItemTransactionsCall(this.apiContext); api.ItemID = TestData.NewItem.ItemID; // Time filter System.DateTime calTo = DateTime.Now; System.DateTime calFrom = calTo.AddHours(-1); TimeFilter tf = new TimeFilter(calFrom, calTo); api.ModTimeFrom = calFrom; api.ModTimeTo = calTo; // Pagination PaginationType pt = new PaginationType(); pt.EntriesPerPage = 100; pt.EntriesPerPageSpecified = true; pt.PageNumber = 1; pt.PageNumberSpecified = true; api.Pagination = pt; TransactionTypeCollection trans = api.GetItemTransactions(api.ItemID, api.ModTimeFrom, api.ModTimeTo); // NO transaction should be returned. Assert.IsTrue(trans == null || trans.Count == 0); }
// Get the orders asynchronously. // Returns number of orders updated. private int GetOrdersAsync(DateTime startDate, DateTime endDate, out bool canceled) { canceled = false; int ordersFetched = 0; List<AccountType> allAccounts = AccountUtil.GetAllAccounts(); foreach (AccountType account in allAccounts) { StringCollection orderIds = EbayTransactionBiz.GetAllOrderIds(account, startDate, endDate); StringCollection newOrderIds = new StringCollection(); foreach (String orderId in orderIds) { newOrderIds.Add(orderId); } int orderNumRetrievePerTime = 1; int apiCallTimes = newOrderIds.Count / orderNumRetrievePerTime; bool needExtraCall = (newOrderIds.Count % orderNumRetrievePerTime) != 0; if (needExtraCall) apiCallTimes += 1; List<EbayTransactionType> allTrans = new List<EbayTransactionType>(); for (int ii = 0; ii < apiCallTimes; ++ii) { StringCollection orderIdsLoc = new StringCollection(); for (int jj = ii * orderNumRetrievePerTime; jj < ii * orderNumRetrievePerTime + orderNumRetrievePerTime; ++jj) { if (jj > newOrderIds.Count - 1) break; orderIdsLoc.Add(newOrderIds[jj]); } TimeFilter timeFilter = new TimeFilter(); timeFilter.TimeFrom = startDate; timeFilter.TimeTo = endDate; List<EbayTransactionType> transList = EbayTransactionBiz.GetAllOrders(account, timeFilter, orderIdsLoc); foreach (EbayTransactionType trans in transList) { allTrans.Add(trans); } // Update the description and progress on the modal form // using Control.Invoke. Invoke will run the anonymous // function to set the label's text on the UI thread. // Since it's illegal to touch the UI control on the worker // thread that we're on right now. int retrievedCount = (ii + 1) * orderNumRetrievePerTime; if (retrievedCount > newOrderIds.Count) retrievedCount = newOrderIds.Count; String labelHintStr = string.Format("正在从Ebay获取交易信息, 账号 {0}, 共{1}个订单, 已获得{2}个订单信息", account.ebayAccount, newOrderIds.Count, retrievedCount); int progressBarValue = (int)((double)(ii + 1) / apiCallTimes * 100); frmProgress.SetLabelHintAndProgressBarValue(labelHintStr, progressBarValue); foreach (EbayTransactionType trans in allTrans) { bool result = EbayTransactionDAL.InsertOrUpdateOneTransaction(trans); if (result == false) { canceled = true; return ordersFetched; } } // Periodically check for a Cancellation // If the user clicks the cancel button, or tries to close // the progress form the m_fmProgress.Cancel flag will be set to true. if (frmProgress.Cancel) { canceled = true; return ordersFetched; } } // for (int ii = 0; ii < apiCallTimes; ++ii) ordersFetched += newOrderIds.Count; } // foreach (AccountType account in AllAccounts) canceled = false; return ordersFetched; }
public void GetEmailByAPI(SaleAccountType account, DateTime beginDate, DateTime endDate) { ApiContext context = AppSettingHelper.GetGenericApiContext("US"); context.ApiCredential.eBayToken = account.ApiToken; GetMemberMessagesCall apicall = new GetMemberMessagesCall(context); apicall.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); TimeFilter fltr = new TimeFilter(); fltr.TimeFrom = beginDate; fltr.TimeTo = endDate; MemberMessageExchangeTypeCollection messages; int i = 1; do { apicall.Pagination = new eBay.Service.Core.Soap.PaginationType(); apicall.Pagination.PageNumber = i; apicall.Pagination.EntriesPerPage = 100; messages = apicall.GetMemberMessages(fltr, MessageTypeCodeType.All, MessageStatusTypeCodeType.Unanswered); for (int k = 0; k < messages.Count; k++) { MemberMessageExchangeType mmet = messages[k]; EmailType email = OMS.Core.DoMain.EmailType.find("MessageID=:t1").set("t1", mmet.Question.MessageID).first(); if (email == null) { email = new Core.DoMain.EmailType(); } else { continue; } email.Body = mmet.Question.Body; email.CreateOn = mmet.CreationDate; email.MessageID = mmet.Question.MessageID; email.MessageStatus = mmet.MessageStatus.ToString(); email.MessageType = mmet.Question.MessageType.ToString(); email.SaleAccount = mmet.Question.RecipientID[0]; email.BuyerEmail = mmet.Question.SenderEmail; email.BuyerAccount = mmet.Question.SenderID; email.Subject = mmet.Question.Subject; if (mmet.Item != null) { email.ItemPriceCurrency = mmet.Item.SellingStatus.CurrentPrice.currencyID.ToString(); email.ItemPrice = mmet.Item.SellingStatus.CurrentPrice.Value; email.ItemID = mmet.Item.ItemID; email.ItemTitle = mmet.Item.Title; email.ItemURL = mmet.Item.ListingDetails.ViewItemURL; } else { email.ItemTitle = ""; email.ItemID = ""; } int sortNumber = 0; if (HasOrderByTime(email.SaleAccount, email.BuyerAccount, 24))//判断24小时前后是否有订单 { sortNumber = 50; } else if (OrderGoodsHasColor(email.ItemTitle))//判断涉及产品是否有颜色 { sortNumber = 40; } else { } email.LastReplier = GetLastReplier(email.SaleAccount, email.BuyerAccount);//获取上次回复人 email.SortNumber = sortNumber; email.insert(); } i++; } while (messages != null && messages.Count == 100); }
/// <summary> /// For backward compatibility with old wrappers. /// </summary> public MemberMessageExchangeTypeCollection GetMemberMessages(TimeFilter CreateTimeFilter, MessageTypeCodeType MailMessageType, MessageStatusTypeCodeType MessageStatus) { this.CreateTimeFilter = CreateTimeFilter; this.MailMessageType = MailMessageType; this.MessageStatus = MessageStatus; Execute(); return MemberMessageList; }
/// <summary> /// For backward compatibility with old wrappers. /// </summary> public ItemTypeCollection GetSellerEvents(TimeFilter ModTimeFilter) { this.ModTimeFilter = ModTimeFilter; Execute(); return ItemEventList; }
private void BtnGetMemberMessages_Click(object sender, System.EventArgs e) { try { LstMessages.Items.Clear(); GetMemberMessagesCall apicall = new GetMemberMessagesCall(Context); apicall.DisplayToPublic = ChkPublic.Checked; MemberMessageExchangeTypeCollection messages; if (TxtItemId.Text != String.Empty) { messages = apicall.GetMemberMessages(TxtItemId.Text, (MessageTypeCodeType) Enum.Parse(typeof(MessageTypeCodeType), CboType.SelectedItem.ToString()), (MessageStatusTypeCodeType) Enum.Parse(typeof(MessageStatusTypeCodeType), CboStatus.SelectedItem.ToString())); } else { TimeFilter fltr = new TimeFilter(); if (ChkStartFrom.Checked) { fltr.TimeFrom = DatePickStartFrom.Value; } if (ChkStartTo.Checked) { fltr.TimeTo = DatePickStartTo.Value; } messages = apicall.GetMemberMessages(fltr, (MessageTypeCodeType) Enum.Parse(typeof(MessageTypeCodeType), CboType.SelectedItem.ToString()), (MessageStatusTypeCodeType) Enum.Parse(typeof(MessageStatusTypeCodeType), CboStatus.SelectedItem.ToString())); } foreach (MemberMessageExchangeType msg in messages) { string[] listparams = new string[6]; if (msg.Item != null) listparams[0] = msg.Item.ItemID; else listparams[0] = ""; listparams[1] = msg.Question.MessageID; listparams[2] = msg.MessageStatus.ToString(); listparams[3] = msg.Question.QuestionType.ToString(); listparams[4] = msg.Question.SenderID; listparams[5] = msg.Question.Body; ListViewItem vi = new ListViewItem(listparams); LstMessages.Items.Add(vi); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// For backward compatibility with old wrappers. /// </summary> public TransactionTypeCollection GetSellerTransactions(TimeFilter ModTimeFilter) { this.ModTimeFilter = ModTimeFilter; Execute(); return TransactionList; }
private void BtnGetSellerTransactions_Click(object sender, System.EventArgs e) { try { LstTransactions.Items.Clear(); GetSellerTransactionsCall apicall = new GetSellerTransactionsCall(Context); TimeFilter timefilter = new TimeFilter(); if (GMT.Checked.Equals(true)) { timefilter.TimeFromUTC = DatePickModFrom.Value; timefilter.TimeToUTC = DatePickModTo.Value; } else { timefilter.TimeFrom = DatePickModFrom.Value; timefilter.TimeTo = DatePickModTo.Value; } TransactionTypeCollection transactions = apicall.GetSellerTransactions(timefilter); // TransactionTypeCollection transactions = apicall.GetSellerTransactions(DatePickModFrom.Value, DatePickModTo.Value); foreach (TransactionType trans in transactions) { string[] listparams = new string[6]; listparams[0] = trans.Item.ItemID; listparams[1] = trans.TransactionID; listparams[2] = trans.TransactionPrice.Value.ToString(); listparams[3] = trans.AmountPaid.Value.ToString(); listparams[4] = trans.QuantityPurchased.ToString(); listparams[5] = trans.Buyer.UserID; ListViewItem vi = new ListViewItem(listparams); LstTransactions.Items.Add(vi); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// For backward compatibility with old wrappers. /// </summary> public OrderTypeCollection GetOrders(TimeFilter CreateTimeFilter, TradingRoleCodeType OrderRole, OrderStatusCodeType OrderStatus) { this.OrderRole = OrderRole; this.OrderStatus = OrderStatus; this.CreateTimeFilter = CreateTimeFilter; this.OrderIDList = OrderIDList; Execute(); return OrderList; }
// Get messages from ebay async. // Returns number of new messages retrieved. private int GetMessagesAsync(DateTime startDate, DateTime endDate, out bool canceled) { canceled = false; int messagesFetched = 0; List<AccountType> allAccounts = AccountUtil.GetAllAccounts(); foreach (AccountType account in allAccounts) { StringCollection messageIds = EbayMessageBiz.GetAllMessageIds(account, startDate, endDate); StringCollection newMessageIds = new StringCollection(); foreach (String messageId in messageIds) { EbayMessageType messageType = EbayMessageDAL.GetOneMessage(messageId); if (messageType == null) newMessageIds.Add(messageId); } int messageNumRetrievePerTime = 1; int apiCallTimes = newMessageIds.Count / messageNumRetrievePerTime; bool needExtraCall = (newMessageIds.Count % messageNumRetrievePerTime) != 0; if (needExtraCall) apiCallTimes += 1; List<EbayMessageType> allTrans = new List<EbayMessageType>(); for (int ii = 0; ii < apiCallTimes; ++ii) { StringCollection messageIdsLoc = new StringCollection(); for (int jj = ii * messageNumRetrievePerTime; jj < ii * messageNumRetrievePerTime + messageNumRetrievePerTime; ++jj) { if (jj > newMessageIds.Count - 1) break; messageIdsLoc.Add(newMessageIds[jj]); } TimeFilter timeFilter = new TimeFilter(); timeFilter.TimeFrom = startDate; timeFilter.TimeTo = endDate; // Update the description and progress on the modal form // using Control.Invoke. Invoke will run the anonymous // function to set the label's text on the UI thread. // Since it's illegal to touch the UI control on the worker // thread that we're on right now. int retrievedCount = (ii + 1) * messageNumRetrievePerTime; if (retrievedCount > newMessageIds.Count) retrievedCount = newMessageIds.Count; List<EbayMessageType> messageList = EbayMessageBiz.GetAllMessageByIds(account, messageIdsLoc); foreach (EbayMessageType messageType in messageList) { // We are pretty sure the message didn't exist. EbayMessageDAL.InsertOneMessage(messageType); // Update the transaction message status. String recipientUserId = messageType.RecipientUserId; String sender = messageType.Sender; String sellerName = messageType.SellerName; String buyerId = sellerName == sender ? recipientUserId : sender; TransactionMessageStatus messageStatus = EbayMessageDAL.GetTransactionMessageStatus(buyerId, sellerName, messageType.ItemID); List<EbayTransactionType> transList = EbayTransactionDAL.GetTransactionsBySellerBuyerItem(sellerName, buyerId, messageType.ItemID); foreach (EbayTransactionType trans in transList) { EbayTransactionDAL.UpdateTransactionMessageStatus(trans.TransactionId, messageStatus); } } String labelHintStr = string.Format("正在从Ebay获取消息信息, 账号 {0}, 共{1}个新消息, 已获得{2}个消息", account.ebayAccount, newMessageIds.Count, retrievedCount); int progressBarValue = (int)((double)(ii + 1) / apiCallTimes * 100); frmProgress.SetLabelHintAndProgressBarValue(labelHintStr, progressBarValue); // Periodically check for a Cancellation // If the user clicks the cancel button, or tries to close // the progress form the m_fmProgress.Cancel flag will be set to true. if (frmProgress.Cancel) { canceled = true; return messagesFetched; } } // for (int ii = 0; ii < apiCallTimes; ++ii) messagesFetched += newMessageIds.Count; } // foreach (AccountType account in AllAccounts) canceled = false; return messagesFetched; }
// GetAllOrders: Get all orders for a seller in the time period user specified. // Future enhancement: add multiple users support. // API call ref: http://developer.ebay.com/DevZone/xml/docs/Reference/ebay/GetOrders.html public static List<EbayTransactionType> GetAllOrders(AccountType account, DateTime startDate, DateTime endDate) { TimeFilter timeFilter = new TimeFilter(); timeFilter.TimeFrom = startDate; timeFilter.TimeTo = endDate; return GetAllOrders(account, timeFilter, null); }
/// <summary> /// For backward compatibility with old wrappers. /// </summary> public TransactionTypeCollection GetItemTransactions(string ItemID, TimeFilter ModTimeFilter) { this.ItemID = ItemID; this.ModTimeFilter = ModTimeFilter; Execute(); return TransactionList; }
// Given a time period specified by startDate and endDate, returns all the order ids created in that period. public static StringCollection GetAllOrderIds(AccountType account, DateTime startDate, DateTime endDate) { if (account.SellerApiContext == null) return null; TimeFilter timeFilter = new TimeFilter(); timeFilter.TimeFrom = startDate; timeFilter.TimeTo = endDate; GetOrdersCall getOrdersApiCall = new GetOrdersCall(account.SellerApiContext); DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[] { DetailLevelCodeType.ReturnSummary }; getOrdersApiCall.DetailLevelList = new DetailLevelCodeTypeCollection(detailLevels); getOrdersApiCall.GetOrders(timeFilter, TradingRoleCodeType.Seller, OrderStatusCodeType.All); StringCollection orderIds = new StringCollection(); foreach (OrderType order in getOrdersApiCall.OrderList) { orderIds.Add(order.OrderID); } return orderIds; }
// // User selected transactions and clicked "mark as shipped". // private void ToolStripMenuItemMarkAsShipped_Click(object sender, EventArgs e) { if (MessageBox.Show("你确认发货么?\r\n发货后,ebay会标记成已发货状态。", "确认发货?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { DataGridViewSelectedRowCollection selectedRows = this.dataGridViewAllOrders.SelectedRows; // First check if every transaction item has a related sku. foreach (DataGridViewRow row in selectedRows) { String orderLineItemId = row.Cells[OrderDgv_OrderLineItemIndex].Value.ToString(); EbayTransactionType trans = EbayTransactionDAL.GetOneTransaction(orderLineItemId); if (trans == null) return; if (trans.IsPaid == false) { MessageBox.Show("有些商品没有付款,不能发货!", "失败", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (trans.IsShipped == true) { MessageBox.Show("有些商品已经发货,不能重新发货!", "失败", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (trans.ItemSKU == null || trans.ItemSKU.Trim() == "") { MessageBox.Show("有些商品没有指定SKU!", "失败", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } List<String> handledOrderIds = new List<String>(); foreach (DataGridViewRow row in selectedRows) { String orderLineItemId = row.Cells[OrderDgv_OrderLineItemIndex].Value.ToString(); EbayTransactionType trans = EbayTransactionDAL.GetOneTransaction(orderLineItemId); if (trans == null) return; if (trans.IsPaid == false || trans.IsShipped == true) { MessageBox.Show("商品未付款或者已经发货!", "失败", MessageBoxButtons.OK, MessageBoxIcon.Error); continue; } String orderId = trans.OrderId; if (handledOrderIds.Contains(orderId)) { continue; } AccountType account = null; List<AccountType> allAccounts = AccountUtil.GetAllAccounts(); foreach (AccountType accountType in allAccounts) { if (accountType.ebayAccount == trans.SellerName) { account = accountType; break; } } if (account == null || account.SellerApiContext == null) { MessageBox.Show("账号没有初始化!", "失败", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } EbayTransactionBiz.CompleteSale(account, trans.OrderId, trans.BuyerId, trans.ItemId, trans.EbayTransactionId, false, true, true, true/*isShipped*/); handledOrderIds.Add(orderId); StringCollection orderIds = new StringCollection(); orderIds.Add(trans.OrderId); TimeFilter timeFilter = new TimeFilter(); timeFilter.TimeFrom = this.dateTimePickerStartTime.Value; timeFilter.TimeTo = this.dateTimePickerEndTime.Value; List<EbayTransactionType> transList = EbayTransactionBiz.GetAllOrders(account, timeFilter, orderIds); if (transList.Count != 1) { MessageBox.Show("交易在ebay系统中不存在!", "失败", MessageBoxButtons.OK, MessageBoxIcon.Error); continue; } if (transList[0].IsShipped == false) { MessageBox.Show(string.Format("该交易没有在ebay系统中标记成功! 用户id={0}", trans.BuyerId), "失败", MessageBoxButtons.OK, MessageBoxIcon.Error); continue; } // ZHI_TODO //ItemDAL.ShipItem(trans.ItemSKU, trans.SaleQuantity); // Update transaction shipped date. EbayTransactionDAL.UpdateTransactionShippedStatus(trans.TransactionId, true/*shipped*/, transList[0].ShippedDate); Logger.WriteSystemUserLog(string.Format("标记交易已发货成功: userId={0}, 商品名={1}", trans.BuyerId, trans.ItemTitle)); row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#90EE90"); } MessageBox.Show("标记成发货成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information); } }