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);
 }
Exemple #8
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;
        }
Exemple #9
0
        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;
		}
Exemple #12
0
        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);
            }
        }
Exemple #15
0
 /// <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;
 }
Exemple #16
0
        // 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);
            }
        }