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; }
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); }