public static List<ResultInfo> APIByEbay(AccountType account, DateTime st, DateTime et, ISession NSession)
        {

            List<ResultInfo> results = new List<ResultInfo>();
            ApiContext context = AppSettingHelper.GetGenericApiContext("US");
            context.ApiCredential.eBayToken = account.ApiToken;
            eBay.Service.Call.GetOrdersCall apicall = new eBay.Service.Call.GetOrdersCall(context);
            apicall.IncludeFinalValueFee = true;
            apicall.DetailLevelList.Add(eBay.Service.Core.Soap.DetailLevelCodeType.ReturnAll);
            eBay.Service.Core.Soap.OrderTypeCollection m = null;
            int i = 1;
            do
            {
                apicall.Pagination = new eBay.Service.Core.Soap.PaginationType();
                apicall.Pagination.PageNumber = i;
                apicall.Pagination.EntriesPerPage = 50;
                apicall.OrderRole = eBay.Service.Core.Soap.TradingRoleCodeType.Seller;
                apicall.OrderStatus = eBay.Service.Core.Soap.OrderStatusCodeType.Completed;
                apicall.ModTimeFrom = st;
                apicall.ModTimeTo = et;
                apicall.Execute();

                m = apicall.OrderList;
                for (int k = 0; k < m.Count; k++)
                {
                    eBay.Service.Core.Soap.OrderType ot = m[k];
                    if (ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.Authenticated ||
                        ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.CustomCode ||
                        ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.Default ||
                        ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.Inactive ||
                        ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.InProcess)
                    {
                        //去除别的订单状态
                        continue;
                    }
                    if (ot.PaidTime == DateTime.MinValue || ot.ShippedTime != DateTime.MinValue)
                    {
                        continue;
                    }
                    //查看是不是在订单系统里面存在
                    bool isExist = IsExist(ot.OrderID, NSession);
                    if (!isExist)
                    {
                        OrderType order = new OrderType
                                              {
                                                  IsMerger = 0,
                                                  Enabled = 1,
                                                  IsOutOfStock = 0,
                                                  IsRepeat = 0,
                                                  IsSplit = 0,
                                                  Status = OrderStatusEnum.待处理.ToString(),
                                                  IsPrint = 0,
                                                  CreateOn = DateTime.Now,
                                                  ScanningOn = DateTime.Now
                                              };
                        order.OrderNo = Utilities.GetOrderNo(NSession);
                        order.CurrencyCode = ot.AmountPaid.currencyID.ToString();
                        order.OrderExNo = ot.OrderID;
                        order.Amount = ot.AmountPaid.Value;

                        order.Country = ot.ShippingAddress.CountryName;
                        order.BuyerName = ot.BuyerUserID;
                        order.BuyerEmail = ot.TransactionArray[0].Buyer.Email;
                        order.BuyerMemo = ot.BuyerCheckoutMessage;

                        order.TId = ot.ExternalTransaction[0].ExternalTransactionID;
                        order.OrderFees = ot.ExternalTransaction[0].FeeOrCreditAmount.Value;
                        order.OrderCurrencyCode = ot.ExternalTransaction[0].FeeOrCreditAmount.currencyID.ToString();
                        order.Account = account.AccountName;
                        order.GenerateOn = ot.PaidTime;
                        order.Platform = PlatformEnum.Ebay.ToString();

                        order.AddressId = CreateAddress(ot.ShippingAddress.Name,
                                                        (string.IsNullOrEmpty(ot.ShippingAddress.Street)
                                                             ? ""
                                                             : ot.ShippingAddress.Street) +
                                                        (string.IsNullOrEmpty(ot.ShippingAddress.Street1)
                                                             ? ""
                                                             : ot.ShippingAddress.Street1) +
                                                        (string.IsNullOrEmpty(ot.ShippingAddress.Street2)
                                                             ? ""
                                                             : ot.ShippingAddress.Street2),
                                                        ot.ShippingAddress.CityName, ot.ShippingAddress.StateOrProvince,
                                                        ot.ShippingAddress.CountryName,
                                                        ot.ShippingAddress.Country.ToString(), ot.ShippingAddress.Phone,
                                                        ot.ShippingAddress.Phone, ot.TransactionArray[0].Buyer.Email,
                                                        ot.ShippingAddress.PostalCode, 0, NSession);
                        NSession.Save(order);
                        NSession.Flush();
                        foreach (TransactionType item in ot.TransactionArray)
                        {
                            string sku = "";
                            if (item.Variation != null)
                            {
                                sku = item.Variation.SKU;
                            }
                            else
                            {
                                sku = item.Item.SKU;
                            }
                            order.OrderCurrencyCode2 = item.FinalValueFee.currencyID.ToString();
                            order.OrderFees2 += item.FinalValueFee.Value;

                            CreateOrderPruduct(item.Item.ItemID, sku, item.QuantityPurchased, item.Item.Title,
                                               "", 0,
                                               "http://thumbs.ebaystatic.com/pict/" + item.Item.ItemID + "6464_1.jpg",
                                               order.Id,
                                               order.OrderNo, NSession);
                        }
                        NSession.Clear();
                        NSession.Update(order);
                        NSession.Flush();
                        results.Add(GetResult(order.OrderExNo, "", "导入成功"));
                    }
                    else
                    {
                        results.Add(GetResult(ot.OrderID, "该订单已存在", "导入失败"));
                    }
                }
                i++;
            } while (apicall.HasMoreOrders);

            return results;
        }
Exemple #2
0
        public void GetOrderByAPI(Core.DoMain.SaleAccountType account, DateTime beginDate, DateTime endDate)
        {
            ApiContext context = AppSettingHelper.GetGenericApiContext("US");
            context.ApiCredential.eBayToken = account.ApiToken;
            eBay.Service.Call.GetOrdersCall apicall = new eBay.Service.Call.GetOrdersCall(context);
            apicall.IncludeFinalValueFee = true;
            apicall.DetailLevelList.Add(eBay.Service.Core.Soap.DetailLevelCodeType.ReturnAll);
            apicall.ModTimeFrom = beginDate;
            apicall.ModTimeTo = endDate;
            eBay.Service.Core.Soap.OrderTypeCollection m = null;
            int i = 1;
            do
            {
                apicall.Pagination = new eBay.Service.Core.Soap.PaginationType();
                apicall.Pagination.PageNumber = i;
                apicall.Pagination.EntriesPerPage = 100;
                apicall.OrderRole = eBay.Service.Core.Soap.TradingRoleCodeType.Seller;
                apicall.OrderStatus = eBay.Service.Core.Soap.OrderStatusCodeType.All;
                apicall.Execute();
                m = apicall.OrderList;
                for (int k = 0; k < m.Count; k++)
                {

                    OrderType ot = m[k];

                    if (ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.Authenticated || ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.CustomCode || ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.Default || ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.Inactive || ot.OrderStatus == eBay.Service.Core.Soap.OrderStatusCodeType.InProcess)
                    {
                        //去除别的订单状态
                        continue;
                    }
                    //查看是不是在订单系统里面存在
                    OMS.Core.DoMain.OrderType order = OMS.Core.DoMain.OrderType.find("OrderExNo=:t1").set("t1", ot.OrderID).first();

                    if (order == null)
                        order = new Core.DoMain.OrderType(); //初始化订单
                    else
                    {
                        if (order.ModifiedOn == ot.CheckoutStatus.LastModifiedTime)
                            continue;//修改时间是否一致
                    }
                    GetOrderBasic(account, ot, order);
                    //order.SendState = "未发货";
                    ////ebay发货地址设置
                    //order.SendAddress = ot.ShippingAddress.Street + " " + ot.ShippingAddress.Street1 + ot.ShippingAddress.Street2;
                    //order.SendCity = ot.ShippingAddress.CityName;
                    //order.SendCounty = ot.ShippingAddress.StateOrProvince;
                    //order.SendCountryCode = ot.ShippingAddress.Country.ToString();
                    //order.SendCountry = ot.ShippingAddress.CountryName;
                    //order.SendPhone = ot.ShippingAddress.Phone;
                    //order.SendPostCode = ot.ShippingAddress.PostalCode;
                    //order.ContactMan = ot.ShippingAddress.Name;
                    //if (!string.IsNullOrEmpty(ot.ShippingAddress.FirstName) || !string.IsNullOrEmpty(ot.ShippingAddress.LastName))
                    //{
                    //    order.ContactMan += "(" + ot.ShippingAddress.FirstName + ot.ShippingAddress.LastName + ")";
                    //}
                    //判断买家是不是存在
                    GetBuyer(order);

                    //订单中的产品
                    GetPaypals();

                    GetPaypalAddress(order);

                    foreach (TransactionType tran in ot.TransactionArray)
                    {
                        order.OrderSaleTax += tran.FinalValueFee.Value;
                    }
                    if (ot.TransactionArray.Count > 1)
                    {
                        order.NowOrderType = NowOrderType.多物品.ToString();
                    }

                    order.OrderNo = GetSequence();
                    order.insert();

                    GetItems(ot, order);
                    if (order.PayStatus == "未付款")
                    {
                        //获得未打印,为发货,可以合并的订单
                        List<OMS.Core.DoMain.OrderType> list = OMS.Core.DoMain.OrderType.find("AddressId=:p1 and IsPrint=0 and ShippedStatus='未发货' and Enabled=0").set("p1", order.AddressId).list();
                        if (list.Count <= 1)
                        {
                            //当只有一条时,无法合并

                            OMS.Core.DoMain.PackageType pt1 = new Core.DoMain.PackageType();
                            pt1.OrderID = order.Id;
                            pt1.OrderNo = order.OrderNo;
                            pt1.PackageNo = GetPackageSequence();
                            pt1.PackageStatus = "未发货";
                            pt1.CreateOn = DateTime.Now;
                            pt1.insert();

                            foreach (OMS.Core.DoMain.OrderGoodsType foo in order.OrderGoods)
                            {
                                OMS.Core.DoMain.PackageGoodsType pgt = new Core.DoMain.PackageGoodsType();
                                pgt.PackageNo = pt1.PackageNo;
                                pgt.Sku = foo.ItemNo;
                                pgt.Qty = foo.ItemNum;
                                pgt.insert();
                            }
                            continue;
                        }

                        OMS.Core.DoMain.OrderType orderType = list.Find(p => p.NowOrderType == NowOrderType.合并.ToString());//获取里面的合并订单

                        if (orderType == null)
                        {//没有合并订单时,数据初始化
                            orderType = order;
                            orderType.NowOrderType = NowOrderType.合并.ToString();
                            orderType.Id = 0;
                            orderType.TxnId = "";
                            orderType.OrderExNo = "";
                            orderType.OrderPayTax = 0;
                            orderType.OrderAmount = 0;
                            orderType.OrderSaleTax = 0;
                            orderType.OrderNote = "";

                        }
                        else
                        {
                            //有订单时,删除
                            wojilu.db.RunSql<OMS.Core.DoMain.PackageType>("delete from PackageGoods where PackageNo In(select PackageNo from Package where  OrderID=" + orderType.Id + ")");
                            wojilu.db.RunSql<OMS.Core.DoMain.PackageType>("delete from Package where OrderID=" + orderType.Id + "");
                            orderType.delete();

                        }
                        List<OMS.Core.DoMain.OrderGoodsType> OrderGoods = new List<Core.DoMain.OrderGoodsType>();

                        foreach (OMS.Core.DoMain.OrderType item in list)
                        {
                            //合并订单要合并的数据
                            orderType.OrderPayTax += item.OrderPayTax;
                            orderType.OrderAmount += item.OrderAmount;
                            orderType.OrderSaleTax += item.OrderSaleTax;
                            orderType.OrderNote += item.OrderNote;
                            orderType.Mergerorders += "," + item.Id;//订单指向

                            OrderGoods.AddRange(item.OrderGoods);
                        }
                        orderType.Mergerorders = orderType.Mergerorders.Trim(',');
                        orderType.OrderNo = GetSequence();//获取新的订单号
                        orderType.insert();
                        wojilu.db.RunSql<OMS.Core.DoMain.OrderType>("update Orders set Enabled =1 , Mergerorders='" + orderType.Id + "' where Id in(" + orderType.Mergerorders + ")");

                        wojilu.db.RunSql<OMS.Core.DoMain.PackageGoodsType>("delete from PackageGoods where PackageNo In(select PackageNo from Package where  OrderID in (" + orderType.Mergerorders
             + "))");
                        wojilu.db.RunSql<OMS.Core.DoMain.PackageType>("delete from Package where OrderID in(" + orderType.Mergerorders + ")");
                        foreach (OMS.Core.DoMain.OrderGoodsType foo in OrderGoods)
                        {
                            //产品转移
                            foo.OrderNo = orderType.Id.ToString();
                            foo.insert();
                        }

                        //生成包裹
                        OMS.Core.DoMain.PackageType pt = new Core.DoMain.PackageType();
                        pt.OrderID = orderType.Id;
                        pt.OrderNo = order.OrderNo;
                        pt.PackageNo = GetPackageSequence();
                        pt.PackageStatus = "未发货";
                        pt.CreateOn = DateTime.Now;
                        pt.insert();

                        foreach (OMS.Core.DoMain.OrderGoodsType foo in OrderGoods)
                        {
                            OMS.Core.DoMain.PackageGoodsType pgt = new Core.DoMain.PackageGoodsType();
                            pgt.PackageNo = pt.PackageNo;
                            pgt.Sku = foo.ItemNo;
                        pgt.Qty = foo.ItemNum;
                            pgt.insert();
                        }
                    }
                    i++;
                }
            } while (m != null && m.Count == 100);
        }
        public static void APIByEbayFee(AccountType account, DateTime st, DateTime et, ISession NSession)
        {

            List<ResultInfo> results = new List<ResultInfo>();
            ApiContext context = AppSettingHelper.GetGenericApiContext("US");
            context.ApiCredential.eBayToken = account.ApiToken;
            eBay.Service.Call.GetOrdersCall apicall = new eBay.Service.Call.GetOrdersCall(context);
            apicall.IncludeFinalValueFee = true;
            apicall.DetailLevelList.Add(eBay.Service.Core.Soap.DetailLevelCodeType.ReturnAll);
            eBay.Service.Core.Soap.OrderTypeCollection m = null;

            int i = 1;
            do
            {
                apicall.Pagination = new eBay.Service.Core.Soap.PaginationType();
                apicall.Pagination.PageNumber = i;
                apicall.Pagination.EntriesPerPage = 50;
                apicall.OrderRole = eBay.Service.Core.Soap.TradingRoleCodeType.Seller;
                apicall.OrderStatus = eBay.Service.Core.Soap.OrderStatusCodeType.Completed;
                apicall.CreateTimeFrom = st;
                apicall.CreateTimeTo = et;
                apicall.Execute();
                m = apicall.OrderList;
                for (int k = 0; k < m.Count; k++)
                {
                    eBay.Service.Core.Soap.OrderType ot = m[k];

                    IList<OrderType> orders = NSession.CreateQuery("from OrderType where OrderExNo='" + m[k].OrderID + "'").List<OrderType>();
                    if (orders.Count > 0)
                    {
                        OrderType order = orders[0];
                        order.OrderFees = ot.ExternalTransaction[0].FeeOrCreditAmount.Value;
                        order.OrderCurrencyCode = ot.ExternalTransaction[0].FeeOrCreditAmount.currencyID.ToString();
                        foreach (TransactionType item in ot.TransactionArray)
                        {
                            order.OrderCurrencyCode2 = item.FinalValueFee.currencyID.ToString();
                            order.OrderFees2 += item.FinalValueFee.Value;
                        }
                        NSession.Update(order);
                        NSession.Flush();
                    }
                }

                i++;
            } while (apicall.HasMoreOrders);

        }