Exemple #1
0
        private void GetProductType()
        {
            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            foreach (var type in SCWS.Get_ProductType(163))
            {
                var productType = db.ProductType.Find(type.ID);
                if (productType != null)
                {
                    productType.CompanyID = 163;
                }
                else
                {
                    db.ProductType.Add(new Models.ProductType()
                    {
                        IsEnable        = true,
                        ID              = type.ID,
                        CompanyID       = 163,
                        ProductTypeName = type.ProductTypeName
                    });
                }
            }

            db.SaveChanges();
        }
Exemple #2
0
        private void Update_Carrier()
        {
            int[] OrderIDs = new int[] { 5453707, 5453746, 5453757, 5453766, 5453775, 5453802, 5453835, 5453902, 5453909, 5453928, 5453929, 5453950, 5453955, 5453958, 5453962, 5454001, 5454002, 5454022, 5454029, 5454030, 5454046, 5454047, 5454089, 5453707, 5454090, 5454091, 5454098, 5454099, 5454167, 5454171, 5454173, 5454175, 5454180, 5454181, 5454182, 5454183, 5454184, 5454186, 5454189, 5454190, 5454191, 5454192, 5454193, 5454195, 5454196, 5454197, 5454200, 5454219 };

            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            using (IRepository <Packages> Packages = new GenericRepository <Packages>(db))
            {
                foreach (int orderID in OrderIDs)
                {
                    OrderService.OrderData orderData = SCWS.Get_OrderData(orderID);
                    OrderService.Order     SC_order  = orderData.Order;
                    string shippingCarrier           = SC_order.ShippingCarrier;

                    Packages package            = Packages.GetAll().First(p => p.OrderID.Value.Equals(orderID));
                    string   newShippingCarrier = package.Method.Carriers.Name;

                    if (!shippingCarrier.Equals(newShippingCarrier))
                    {
                        SCWS.Update_OrderShippingStatus(SC_order, newShippingCarrier);
                        Response.Write(string.Format("Order【{0}】Carrier - {1} change to Carrier - {2}", orderID, shippingCarrier, newShippingCarrier));
                    }

                    package.Orders.ShippingCarrier = newShippingCarrier;
                    Packages.Update(package);
                }
                Packages.SaveChanges();
            }
        }
Exemple #3
0
        public void Index()
        {
            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            Orders order = db.Orders.Find(5622262);

            OrderService.OrderData orderData = SCWS.Get_OrderData(order.OrderID);
            Order SC_order = orderData.Order;
        }
Exemple #4
0
        private void StarTrack_Test(int OrderID)
        {
            Packages package = db.Packages.First(p => p.IsEnable.Value && p.OrderID.Value.Equals(OrderID));

            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());
            ShipProcess   ship = new ShipProcess(SCWS);

            ship.Init(package);
            var result = ship.Dispatch();
        }
Exemple #5
0
        private void Vendor_Test()
        {
            SC_WebService SCWS      = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());
            int           CompanyID = SCWS.Get_CurrentCompanyID();

            foreach (var vendor in SCWS.Get_Vendor_All(CompanyID))
            {
                Response.Write(string.Format("{0} - {1}<br />", vendor.ID, vendor.DisplayName));
            }
        }
Exemple #6
0
        public void CheckSku()
        {
            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            int index = 0;

            string[] productIDs = Skus.GetAll(true).Select(s => s.Sku).ToArray();
            do
            {
                var productList = SCWS.Get_ProductFullInfos(productIDs.Skip(index += 100).Take(100).ToArray());
            } while (index < 1000);
        }
Exemple #7
0
        public void PO_Test()
        {
            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            var order     = db.Orders.Find(5617844);
            var package   = order.Packages.First(p => p.IsEnable.Value && p.OrderID.Value.Equals(order.OrderID));
            var warehouse = package.Items.First(i => i.IsEnable.Value && i.OrderID.Value.Equals(order.OrderID)).ShipWarehouses;

            POVendor[] VendorList = SCWS.Get_Vendor_All(163);
            var        VendorData = VendorList.FirstOrDefault(v => v.DisplayName.ToLower().Equals(warehouse.Name.ToLower()));

            using (StockKeepingUnit stock = new StockKeepingUnit())
            {
                package.POId = stock.CreatePO(package.ID, VendorData?.ID ?? 0);
            }
        }
Exemple #8
0
        private void RMA_Test(int OrderID)
        {
            Packages package = db.Packages.AsNoTracking().First(p => p.IsEnable.Value && p.OrderID.Value.Equals(OrderID));

            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            PurchaseOrderService.RMAData order_RMA = SCWS.Get_RMA_Data(package.RMAId.Value);
            foreach (var SC_Item in order_RMA.Items)
            {
                Items item = db.Items.AsNoTracking().First(i => i.ID.Equals(SC_Item.OriginalOrderItemID));
                //string serialsList = string.Join(", ", item.SerialNumbers.Where(s => !string.IsNullOrEmpty(s.SerialNumber)).Select(s => s.SerialNumber).ToArray());
                //bool result = SCWS.Delete_ItemSerials(item.OrderID.Value, item.ID);
                //bool result = SCWS.Receive_RMA_Item(SC_Item.RMAID, SC_Item.ID, item.ProductID, item.Qty.Value, item.ReturnedToWarehouseID.Value, serialsList);
                //bool result = SCWS.Update_RAM_Item(SC_Item);
            }
        }
Exemple #9
0
        private void DHL_Test(int OrderID)
        {
            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            IRepository <Orders> Orders = new GenericRepository <Orders>(db);
            Orders   order   = Orders.Get(OrderID);
            Packages package = order.Packages.First(p => p.IsEnable.Value);

            try
            {
                DHL_API          DHL    = new DHL_API(package.Method.Carriers.CarrierAPI);
                ShipmentResponse result = DHL.Create(package);
                //String OutputImage = "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lSCkwXUE0oJA9h2hdBnTdtu629NsKdtiXSJ9gFWFnEHWjcD2HcH3Pkixy5VVC4Lf9wHWJRKQex+wFoC05wOsSuRazrarWqpuALbvCK6rWizWFHItsxYEt1e14PfXLlPmgpddgkBaEOJ+poSqJEgC1hTSkawbge0F4f149N+/JTT45pTqFTxeRsR6+3bx4vsvXr1+rQDkSkjKxWIfcb2FH/NpxZndt0CnnbG7W+TFenvwTuvvQPgVefy+BtucO/fN5pflaqFmN5v14uNrLINrWVxjVf0P11h8x2ei232WguheP0u9Xl4u1vfwshXeo+NtyAe6DVHLtbqvNzaPvkbEA9L4wSqnwvc+X081HP80/PElRp1yseExN4lQSsDRHVKAGy/acwp8IXWkPsyvF2AE3TXqSNL+Az//A3gHqF4KZW5kc3RyZWFtCmVuZG9iago3IDAgb2JqCjw8L1BhcmVudCA2IDAgUi9Db250ZW50cyA4IDAgUi9UeXBlL1BhZ2UvUmVzb3VyY2VzPDwvWE9iamVjdDw8L1hmMSA5IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXT4+L01lZGlhQm94WzAgMCA4NDEuODkgNTk1LjI4XT4+CmVuZG9iago2IDAgb2JqCjw8L0lUWFQoMi4xLjcpL1R5cGUvUGFnZXMvQ291bnQgMi9LaWRzWzEgMCBSIDcgMCBSXT4+CmVuZG9iagoxMiAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNiAwIFI+PgplbmRvYmoKMTMgMCBvYmoKPDwvUHJvZHVjZXIoaVRleHQgMi4xLjcgYnkgMVQzWFQpL01vZERhdGUoRDoyMDE3MTExNjAzNDQwMVopL0NyZWF0aW9uRGF0ZShEOjIwMTcxMTE2MDM0NDAxWik+PgplbmRvYmoKeHJlZgowIDE0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwNDg0NSAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAzMTMgMDAwMDAgbiAKMDAwMDAwMDEzMiAwMDAwMCBuIAowMDAwMDAwMjI1IDAwMDAwIG4gCjAwMDAwMDg1OTcgMDAwMDAgbiAKMDAwMDAwODQzNSAwMDAwMCBuIAowMDAwMDA1MDA3IDAwMDAwIG4gCjAwMDAwMDUzMDcgMDAwMDAgbiAKMDAwMDAwNTEyNCAwMDAwMCBuIAowMDAwMDA1MjE4IDAwMDAwIG4gCjAwMDAwMDg2NjYgMDAwMDAgbiAKMDAwMDAwODcxMiAwMDAwMCBuIAp0cmFpbGVyCjw8L1Jvb3QgMTIgMCBSL0lEIFs8MWU2NWUwZThhZTE1MTNiYzMxODdmZmQ4ZGE0YTQ5Mjk+PDY3ZjIzMGRlM2I1YzIwNWE4ZGU2YzNkMDE1ODk3NDY2Pl0vSW5mbyAxMyAwIFIvU2l6ZSAxND4+CnN0YXJ0eHJlZgo4ODIzCiUlRU9GCg==";
                //System.IO.File.WriteAllBytes(@"C:\Downloads\DHL_test.pdf", Crop(Convert.FromBase64String(OutputImage), 97f, 30f, 356f, 553f));
                //System.IO.File.WriteAllBytes(@"C:\Users\qdtuk\Downloads\DHL_test.pdf", Crop(result.LabelImage.First().OutputImage, 97f, 30f, 356f, 553f));
                //System.IO.File.WriteAllBytes(@"C:\Users\qdtuk\Downloads\DHL_Invoice_test.pdf", result.LabelImage.First().MultiLabels.First().DocImageVal);
            }
            catch (Exception e)
            {
            }
        }
Exemple #10
0
        public SyncProcess(HttpSessionStateBase Session)
        {
            db            = new QDLogisticsEntities();
            Orders        = new GenericRepository <Orders>(db);
            Addresses     = new GenericRepository <Addresses>(db);
            Payments      = new GenericRepository <Payments>(db);
            Packages      = new GenericRepository <Packages>(db);
            Items         = new GenericRepository <Items>(db);
            BundleItems   = new GenericRepository <BundleItems>(db);
            SerialNumbers = new GenericRepository <SerialNumbers>(db);
            PurchaseItems = new GenericRepository <PurchaseItemReceive>(db);

            SyncOn = DateTime.UtcNow;
            Today  = new TimeZoneConvert().ConvertDateTime(EnumData.TimeZone.EST);

            this.Session = Session;
            string UserName = MyHelp.get_session("ApiUserName", Session, "*****@*****.**").ToString();
            string Password = MyHelp.get_session("ApiPassword", Session, "timfromweypro").ToString();

            SCWS = new SC_WebService(UserName, Password);
        }
Exemple #11
0
        private void Update_Warehouse()
        {
            int[] OrderIDs = new int[] { 5455086, 5455090, 5455158, 5455216 };

            SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

            using (IRepository <Items> Items = new GenericRepository <Items>(db))
            {
                foreach (int orderID in OrderIDs)
                {
                    OrderService.OrderData orderData = SCWS.Get_OrderData(orderID);
                    OrderService.Order     SC_order  = orderData.Order;

                    var SC_items = SC_order.Items.ToArray();
                    foreach (var item in SC_items)
                    {
                        item.ShipFromWareHouseID = 111;
                    }
                    SCWS.Update_OrderItem(SC_items);
                }
            }
        }
Exemple #12
0
        private void BingMap_Test()
        {
            using (SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString()))
            {
                var SC_order = SCWS.Get_OrderData(5481021);
                var address  = DataProcess.SetAddressData(new Addresses()
                {
                }, SC_order.Order.ShippingAddressOriginal, SC_order.Order.BillingAddress);

                BingMapsRESTToolkit.GeocodeRequest request = new BingMapsRESTToolkit.GeocodeRequest();
                request.BingMapsKey = "AlN5NYeihAOh4srrmzv0D3NI8uPonD4yOw-_5ssdHnaxuCE11asVp6M2o4j5PtuI";
                request.Address     = new BingMapsRESTToolkit.SimpleAddress()
                {
                    CountryRegion = address.CountryCode,
                    PostalCode    = address.PostalCode,
                    AdminDistrict = !string.IsNullOrEmpty(address.City) ? address.City : address.StateName,
                    Locality      = address.StreetLine1,
                    AddressLine   = address.StreetLine2
                };

                BingMapsRESTToolkit.Response response = request.Execute().Result;
            }
        }
Exemple #13
0
        public void ResendShippedOrder(int day)
        {
            string UserName = MyHelp.get_session("ApiUserName", Session, "*****@*****.**").ToString();
            string Password = MyHelp.get_session("ApiPassword", Session, "timfromweypro").ToString();

            var dateAgo = DateTime.Now.AddDays((0 - day));

            dateAgo = MyHelp.DateTimeWithZone(dateAgo, false);

            var SCWS              = new SC_WebService(UserName, Password);
            var stock             = new StockKeepingUnit();
            var winit             = new Winit_API();
            var winitWarehouseIDs = db.Warehouses.AsNoTracking().Where(w => w.IsEnable.Value & w.IsSellable.Value && !w.WinitWarehouseID.Equals("0")).ToDictionary(w => w.ID, w => w.WinitWarehouseID);

            var WinitShippingMethod = db.CarrierAPI.AsNoTracking().Where(api => api.IsEnable && api.Type.Value.Equals((byte)EnumData.CarrierType.Winit))
                                      .SelectMany(api => api.Carriers.Where(c => c.IsEnable)).SelectMany(c => c.ShippingMethod.Where(s => s.IsEnable)).Select(s => s.ID).Distinct().ToArray();
            var OrderFilter   = db.Orders.Where(o => o.TimeOfOrder.Value >= dateAgo);
            var PackageFilter = db.Packages.Where(p => p.ID.Equals(828842) && p.IsEnable.Value && !p.ProcessStatus.Equals((byte)EnumData.ProcessStatus.訂單管理) && !string.IsNullOrEmpty(p.WinitNo) && WinitShippingMethod.Contains(p.ShippingMethod.Value));
            var dataList      = OrderFilter.Join(PackageFilter, o => o.OrderID, p => p.OrderID.Value, (order, package) => new { order, package }).ToList();

            foreach (var data in dataList)
            {
                if (!data.package.Items.Where(i => i.IsEnable.Value).Any(i => i.SerialNumbers.Any()))
                {
                    var winitData       = winit.GetOutboundOrderData(data.package.WinitNo);
                    var merchandiseList = winitData.packageList.SelectMany(p => p.merchandiseList).ToList();
                    if (merchandiseList != null && merchandiseList.All(m => m.itemList != null))
                    {
                        try
                        {
                            var recordResult = stock.WinitRecordShippedOrder(data.package.ID, merchandiseList);
                            if (recordResult.Any())
                            {
                                foreach (var item in data.package.Items.Where(i => i.IsEnable.Value))
                                {
                                    var sku = item.ProductID.Split(new char[] { '-' })[0];
                                    if (recordResult.ContainsKey(sku))
                                    {
                                        foreach (var serial in recordResult[sku])
                                        {
                                            item.SerialNumbers.Add(new SerialNumbers()
                                            {
                                                OrderID      = item.OrderID,
                                                OrderItemID  = item.ID,
                                                ProductID    = item.ProductID,
                                                SerialNumber = serial
                                            });
                                        }

                                        Response.Write(string.Format("訂單【{0}】記錄成功:{1}<br />", data.order.OrderID, string.Join("、", recordResult[sku].ToArray())));
                                    }
                                }

                                db.SaveChanges();
                            }
                        }
                        catch (Exception ex)
                        {
                            Response.Write(string.Format("訂單【{0}】記錄失敗:{1}<br />", data.order.OrderID, ex.InnerException?.Message ?? ex.Message));
                        }
                    }
                }
            }
        }
Exemple #14
0
        private void Dispatch(Packages package)
        {
            if (Order.StatusCode.Value.Equals((int)OrderStatusCode.InProcess) && Order.PaymentStatus.Equals((int)OrderPaymentStatus.Charged))
            {
                ThreadTask threadTask = new ThreadTask(string.Format("訂單下載 - 自動提交訂單【{0}】至待出貨區", Order.OrderID), Session);
                MyHelp.Log("Orders", Order.OrderID, string.Format("訂單下載 - 自動提交訂單【{0}】至待出貨區", Order.OrderID), Session);

                package.ProcessStatus = (int)EnumData.ProcessStatus.鎖定中;
                Packages.Update(package, package.ID);

                lock (Factory)
                {
                    threadTask.AddWork(Factory.StartNew(Session =>
                    {
                        threadTask.Start();

                        string message = "";
                        using (QDLogisticsEntities db = new QDLogisticsEntities())
                        {
                            IRepository <Packages> Packages       = new GenericRepository <Packages>(db);
                            IRepository <PickProduct> PickProduct = new GenericRepository <PickProduct>(db);

                            Packages packageData = Packages.Get(package.ID);

                            try
                            {
                                HttpSessionStateBase session = (HttpSessionStateBase)Session;
                                SC_WebService SCWS           = new SC_WebService("*****@*****.**", "timfromweypro");

                                if (!SCWS.Is_login)
                                {
                                    throw new Exception("SC is not login");
                                }

                                OrderStateInfo order = SCWS.Get_OrderStatus(packageData.OrderID.Value);

                                if ((int)order.PaymentStatus == package.Orders.PaymentStatus)
                                {
                                    ShipProcess shipProcess = new ShipProcess(SCWS);

                                    MyHelp.Log("Orders", packageData.OrderID, "提交至待出貨區", session);

                                    /***** 上傳Item出貨倉 *****/
                                    var SC_order = SCWS.Get_OrderData(packageData.OrderID.Value).Order;
                                    var SC_items = SC_order.Items.Where(i => i.PackageID.Equals(packageData.ID)).ToArray();
                                    foreach (var item in SC_items)
                                    {
                                        if (!db.Skus.AsNoTracking().Any(s => s.Sku.Equals(item.ProductID)))
                                        {
                                            throw new Exception(string.Format("系統尚未有品號 {0} 資料!", item.ProductID));
                                        }

                                        item.ShipFromWareHouseID = packageData.Items.First(i => i.IsEnable == true && i.ID == item.ID).ShipFromWarehouseID.Value;
                                        SCWS.Update_OrderItem(SC_items.First(i => i.ID.Equals(item.ID)));
                                    }
                                    MyHelp.Log("Orders", packageData.OrderID, "更新訂單包裹的出貨倉", session);

                                    /***** 更新客戶地址 *****/
                                    var address = SC_order.ShippingAddress;
                                    DataProcess.SetAddressData(packageData.Orders.Addresses, address, SC_order.BillingAddress);

                                    /***** 檢查運送國家 *****/
                                    if (!string.IsNullOrEmpty(packageData.Method.CountryData))
                                    {
                                        var countryData = JsonConvert.DeserializeObject <Dictionary <string, bool> >(packageData.Method.CountryData);
                                        if (!countryData.ContainsKey(packageData.Orders.Addresses.CountryCode.ToUpper()))
                                        {
                                            throw new Exception(string.Format("訂單【{0}】國家名稱不合,請重新確認", packageData.OrderID));
                                        }

                                        if (!countryData[packageData.Orders.Addresses.CountryCode.ToUpper()])
                                        {
                                            throw new Exception(string.Format("訂單【{0}】不可寄送至國家{1}", packageData.OrderID, packageData.Orders.Addresses.CountryName));
                                        }
                                    }

                                    shipProcess.Init(packageData);
                                    var result = shipProcess.Dispatch();

                                    if (result.Status)
                                    {
                                        MyHelp.Log("Orders", packageData.OrderID, "訂單提交完成", session);

                                        if (packageData.Items.First(i => i.IsEnable.Value).ShipWarehouses.Name.Equals("TWN"))
                                        {
                                            int[] itemIDs = packageData.Items.Where(i => i.IsEnable.Value).Select(i => i.ID).ToArray();
                                            List <PickProduct> pickList = PickProduct.GetAll(true).Where(p => itemIDs.Contains(p.ItemID.Value)).ToList();
                                            foreach (Items item in packageData.Items.Where(i => i.IsEnable == true))
                                            {
                                                PickProduct pick = pickList.FirstOrDefault(pk => pk.ItemID == item.ID);

                                                if (pick != null)
                                                {
                                                    pick.IsEnable  = true;
                                                    pick.IsPicked  = false;
                                                    pick.IsMail    = false;
                                                    pick.QtyPicked = 0;
                                                    DataProcess.setPickProductData(pick, item);
                                                    PickProduct.Update(pick, pick.ID);
                                                }
                                                else
                                                {
                                                    pick = new PickProduct()
                                                    {
                                                        IsEnable = true
                                                    };
                                                    DataProcess.setPickProductData(pick, item);
                                                    PickProduct.Create(pick);
                                                }
                                            }
                                            PickProduct.SaveChanges();
                                        }

                                        packageData.ProcessStatus = (int)EnumData.ProcessStatus.待出貨;
                                    }
                                    else
                                    {
                                        message = result.Message;
                                        packageData.ProcessStatus = (int)EnumData.ProcessStatus.訂單管理;
                                    }
                                }
                                else
                                {
                                    message = "Payment status is different";
                                    packageData.Orders.StatusCode = (int)OrderStatusCode.OnHold;
                                    packageData.ProcessStatus     = (int)EnumData.ProcessStatus.訂單管理;
                                }

                                Packages.Update(packageData, packageData.ID);
                                Packages.SaveChanges();
                            }
                            catch (Exception e)
                            {
                                message = e.InnerException != null && !string.IsNullOrEmpty(e.InnerException.Message) ? e.InnerException.Message : e.Message;
                                packageData.ProcessStatus = (int)EnumData.ProcessStatus.訂單管理;

                                if (!string.IsNullOrEmpty(package.WinitNo))
                                {
                                    Winit_API winit = new Winit_API();
                                    winit.CancelOutboundOrder(package.WinitNo);
                                    package.WinitNo = null;
                                }

                                Packages.Update(packageData, packageData.ID);
                                Packages.SaveChanges();
                            }
                        }

                        return(message);
                    }, Session));
                }
            }
        }
Exemple #15
0
        public ActionResult Dispatch(int[] packageIDs, int?method, string tracking)
        {
            AjaxResult result = new AjaxResult();

            try
            {
                if (!packageIDs.Any())
                {
                    throw new Exception("沒有給訂單!");
                }

                int warehouseID = 0;
                if (!int.TryParse(Session["warehouseId"].ToString(), out warehouseID))
                {
                    throw new Exception("找不到出貨倉!");
                }

                SC_WebService SCWS = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());

                if (!SCWS.Is_login)
                {
                    throw new Exception("SC is not login");
                }

                Packages = new GenericRepository <Packages>(db);
                IRepository <Box>             Box   = new GenericRepository <Box>(db);
                IRepository <DirectLineLabel> Label = new GenericRepository <DirectLineLabel>(db);

                TaskFactory factory    = System.Web.HttpContext.Current.Application.Get("TaskFactory") as TaskFactory;
                ThreadTask  threadTask = new ThreadTask("Dropship DL 訂單 Dispatch");

                lock (factory)
                {
                    threadTask.AddWork(factory.StartNew(Session =>
                    {
                        threadTask.Start();

                        string message = "";

                        HttpSessionStateBase session = (HttpSessionStateBase)Session;

                        try
                        {
                            TimeZoneConvert timeZoneConvert = new TimeZoneConvert();

                            List <Packages> dispatchList = new List <Packages>();
                            List <string> errorList      = new List <string>();

                            List <Packages> packageList = db.Packages.AsNoTracking().Where(p => p.IsEnable.Value && packageIDs.Contains(p.ID)).ToList();
                            DirectLine directLine       = db.DirectLine.Find(packageList[0].Method.DirectLine);
                            string boxID = string.Format("{0}-{1}", directLine.Abbreviation, timeZoneConvert.Utc.ToString("yyyyMMdd"));
                            int count    = db.Box.Where(b => b.IsEnable && b.DirectLine.Equals(directLine.ID) && b.BoxID.Contains(boxID)).Select(b => b.MainBox).Distinct().Count() + 1;
                            byte[] Byte  = BitConverter.GetBytes(count);
                            Byte[0]     += 64;
                            boxID        = string.Format("{0}-{1}", boxID, System.Text.Encoding.ASCII.GetString(Byte.Take(1).ToArray()));

                            foreach (Packages package in packageList)
                            {
                                DirectLineLabel label = package.Label;
                                OrderData order       = SCWS.Get_OrderData(package.OrderID.Value);
                                if (CheckOrderStatus(package, order.Order))
                                {
                                    ThreadTask uploadPOTask = new ThreadTask(string.Format("直發商待出貨區 - 更新訂單【{0}】以及PO【{1}】資料至SC", package.OrderID, package.POId), session);

                                    lock (factory)
                                    {
                                        uploadPOTask.AddWork(factory.StartNew(() =>
                                        {
                                            uploadPOTask.Start();

                                            string error = "";

                                            try
                                            {
                                                SyncProcess Sync = new SyncProcess(session, factory);
                                                error            = Sync.Update_PurchaseOrder(package.ID, false);

                                                if (string.IsNullOrEmpty(error))
                                                {
                                                    //if (directLine.Abbreviation.Equals("ECOF"))
                                                    //{
                                                    //    ThreadTask SyncTask = new ThreadTask(string.Format("Direct Line 訂單【{0}】SC更新", package.OrderID));
                                                    //    SyncTask.AddWork(factory.StartNew(() =>
                                                    //    {
                                                    //        SyncTask.Start();
                                                    //        SyncProcess sync = new SyncProcess(session);
                                                    //        return sync.Update_Tracking(package);
                                                    //    }));
                                                    //}
                                                    //else
                                                    //{
                                                    //    foreach (Items item in package.Items.Where(i => i.IsEnable.Value).ToList())
                                                    //    {
                                                    //        if (item.SerialNumbers.Any()) SCWS.Update_ItemSerialNumber(item.ID, item.SerialNumbers.Select(s => s.SerialNumber).ToArray());
                                                    //    }
                                                    //}

                                                    foreach (Items item in package.Items.Where(i => i.IsEnable.Value).ToList())
                                                    {
                                                        if (item.SerialNumbers.Any())
                                                        {
                                                            SCWS.Update_ItemSerialNumber(item.ID, item.SerialNumbers.Select(s => s.SerialNumber).ToArray());
                                                        }
                                                    }
                                                }
                                            }
                                            catch (Exception e)
                                            {
                                                error = e.InnerException != null && !string.IsNullOrEmpty(e.InnerException.Message) ? e.InnerException.Message : e.Message;
                                            }

                                            return(error);
                                        }));
                                    }

                                    package.ProcessStatus = (int)EnumData.ProcessStatus.已出貨;
                                    package.BoxID         = label.BoxID = boxID;
                                    label.Status          = (byte)EnumData.LabelStatus.正常;
                                    dispatchList.Add(package);
                                }
                                else
                                {
                                    MyHelp.Log("DirectLineLabel", label.LabelID, string.Format("標籤【{0}】狀態異常", label.LabelID), session);

                                    package.Orders.StatusCode    = (int)order.Order.StatusCode;
                                    package.Orders.PaymentStatus = (int)order.Order.PaymentStatus;
                                    label.Status = (byte)EnumData.LabelStatus.鎖定中;

                                    if (order.Order.StatusCode.Equals((int)OrderStatusCode.Canceled))
                                    {
                                        label.Status = (byte)EnumData.LabelStatus.作廢;

                                        SerialNumbers = new GenericRepository <SerialNumbers>(db);
                                        foreach (var ss in SerialNumbers.GetAll().Where(s => s.OrderID.Equals(package.OrderID)))
                                        {
                                            SerialNumbers.Delete(ss);
                                        }
                                        ;
                                    }

                                    errorList.Add(string.Format("標籤【{0}】狀態異常,請重新取出!", package.OrderID.Value));
                                }
                                Packages.Update(package, package.ID);
                                Label.Update(label, label.LabelID);
                            }

                            if (dispatchList.Any())
                            {
                                Box box = new Box()
                                {
                                    IsEnable        = true,
                                    BoxID           = boxID,
                                    MainBox         = boxID,
                                    DirectLine      = directLine.ID,
                                    FirstMileMethod = method ?? 0,
                                    WarehouseFrom   = warehouseID,
                                    ShippingStatus  = method.HasValue ? (byte)EnumData.DirectLineStatus.運輸中 : (byte)EnumData.DirectLineStatus.已到貨,
                                    BoxType         = (byte)EnumData.DirectLineBoxType.DirectLine,
                                    TrackingNumber  = tracking,
                                    Create_at       = timeZoneConvert.Utc
                                };
                                db.Entry(box).State = System.Data.Entity.EntityState.Added;

                                db.SaveChanges();
                                MyHelp.Log("Box", boxID, string.Format("Box【{0}】建立成功", boxID), session);

                                MyHelp.Log("Box", box.BoxID, string.Format("寄送 Box【{0}】DL資料", box.BoxID), session);
                                SendMailToCarrier(box, db.DirectLine.AsNoTracking().First(d => d.ID.Equals(box.DirectLine)));

                                MyHelp.Log("Box", box.BoxID, string.Format("Box【{0}】完成出貨", box.BoxID), session);
                            }

                            Packages.SaveChanges();

                            if (errorList.Any())
                            {
                                message = string.Join("\n", errorList.ToArray());
                            }
                        }
                        catch (Exception e)
                        {
                            message = e.InnerException != null && !string.IsNullOrEmpty(e.InnerException.Message) ? e.InnerException.Message : e.Message;
                        }

                        return(message);
                    }, HttpContext.Session));
                }
            }
            catch (Exception e)
            {
                result.status  = false;
                result.message = e.InnerException != null && !string.IsNullOrEmpty(e.InnerException.Message) ? e.InnerException.Message : e.Message;
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemple #16
0
        public ActionResult CheckCompany()
        {
            TaskFactory factory    = System.Web.HttpContext.Current.Application.Get("TaskFactory") as TaskFactory;
            ThreadTask  threadTask = new ThreadTask("公司資料同步工作");

            lock (factory)
            {
                threadTask.AddWork(factory.StartNew(session =>
                {
                    threadTask.Start();

                    string error = "";

                    try
                    {
                        IRepository <Companies> Companies = new GenericRepository <Companies>(db);
                        List <Companies> dbCompany        = Companies.GetAll(true).ToList();

                        HttpSessionStateBase Session = (HttpSessionStateBase)session;
                        SC_WebService SCWS           = new SC_WebService(Session["ApiUserName"].ToString(), Session["ApiPassword"].ToString());
                        List <Companies> companyList = SCWS.Get_AllCompany().Select(c => new Companies()
                        {
                            ID = c.ID, CompanyName = c.CompanyName
                        }).ToList();

                        IEnumerable <Companies> newCompany = companyList.Except(dbCompany).ToList();
                        if (newCompany.Any())
                        {
                            foreach (Companies company in newCompany)
                            {
                                var ncompany = new Companies {
                                    CompanyName = company.CompanyName, ID = company.ID
                                };
                                Companies.Create(ncompany);
                            }
                        }

                        IEnumerable <Companies> updateCompany = companyList.Except(companyList.Except(dbCompany)).Except(dbCompany, new CompanyComparer()).ToList();
                        if (updateCompany.Any())
                        {
                            foreach (Companies company in updateCompany)
                            {
                                Companies update   = dbCompany.Find(c => c.ID == company.ID);
                                update.CompanyName = company.CompanyName;
                                Companies.Update(update, update.ID);
                            }
                        }

                        Companies.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        error = e.Message;
                    }

                    return(error);
                }, HttpContext.Session));
            }

            SyncResult result = new SyncResult(threadTask.ID);

            MyHelp.Log("Companies", null, "公司資料同步");

            return(Content(JsonConvert.SerializeObject(result), "appllication/json"));
        }