Exemplo n.º 1
0
        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());

            }
        }
Exemplo n.º 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);
        }