public void GetOrderByFile(string fileName, Core.DoMain.SaleAccountType account) { CsvReader csv = new CsvReader(fileName, Encoding.Default); foreach (Dictionary<string, string> item in csv.ReadAllData()) { OMS.Core.DoMain.OrderType order = Core.DoMain.OrderType.find("OrderExNo='" + item["order-id"] + "' and OrderForm='" + PlatformType.亚马逊.ToString() + "'").first(); if (order != null) { GetItem(item, order.Id.ToString()); continue; } order = new Core.DoMain.OrderType(); order.OrderNo = OrderHelper.GetSequence(); order.OrderExNo = item["order-id"]; order.OrderForm = PlatformType.亚马逊.ToString(); order.UserNameForm = account.UserName; order.ShippedStatus = "未发货"; order.PayStatus = PayStatusType.已付款.ToString(); order.OrderAmount = 0; order.OrderCurrencyCode = "USD"; order.PayTime = wojilu.cvt.ToTime(item["purchase-date"]); order.AddTime = wojilu.cvt.ToTime(item["purchase-date"]); order.PayTime = wojilu.cvt.ToTime(item["purchase-date"]); order.PayTime = wojilu.cvt.ToTime(item["purchase-date"]); order.PayEmail = item["buyer-email"]; order.PrintNum = 0; order.IsPrint = 0; order.BuyerCode = item["buyer-name"]; order.BuyerId = OrderHelper.GetBuyer(order.BuyerCode, PlatformType.亚马逊).ToString(); OMS.Core.DoMain.BuyerAddressType bat = new Core.DoMain.BuyerAddressType(); bat.Street = item["ship-address-1"] + item["ship-address-2"] + item["ship-address-3"]; bat.City = item["ship-city"]; bat.StateOrProvince = item["ship-state"]; bat.PostCode = item["ship-postal-code"]; bat.Country = item["ship-country"]; bat.CountryCode = item["ship-country"]; bat.Email = item["buyer-email"]; bat.Phone = item["buyer-phone-number"]; bat.ContactMan = item["recipient-name"]; bat.BuyerCode = order.BuyerCode; bat.BuyerId = order.BuyerId; OMS.Core.DoMain.BuyerAddressType bat2 = OMS.Core.DoMain.BuyerAddressType.find("ContactMan=:p1 and Street=:p2").set("p1", bat.ContactMan).set("p2", bat.Street).first(); if (bat2 != null) { order.AddressId = bat2.Id.ToString(); } else { bat.insert(); order.AddressId = bat.Id.ToString(); } GetItem(item, order.Id.ToString()); } }
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); }