private void BwPreview_DoWork(object sender, DoWorkEventArgs e)
        {
            printSizeRunList = new List <PrintSizeRunModel>();
            var lisfOfPOSearch = e.Argument as List <String>;

            privateDef = PrivateDefineController.GetDefine();
            foreach (var po in lisfOfPOSearch.Distinct().ToList())
            {
                printSizeRunList.AddRange(PrintSizeRunController.GetByPO(po.Trim().ToUpper().ToString()));
            }

            // CREATE COLUMNS
            Dispatcher.Invoke(new Action(() =>
            {
                DataTable dt = new DataTable();
                dgSizeRun.Columns.Clear();

                // Column ProductNo
                dt.Columns.Add("ProductNo", typeof(String));
                DataGridTemplateColumn colPO = new DataGridTemplateColumn();
                colPO.Header                  = String.Format("ProductNo");
                DataTemplate templatePO       = new DataTemplate();
                FrameworkElementFactory tblPO = new FrameworkElementFactory(typeof(TextBlock));
                templatePO.VisualTree         = tblPO;
                tblPO.SetValue(TextBlock.TextProperty, "");
                tblPO.SetBinding(TextBlock.TextProperty, new Binding(String.Format("ProductNo")));
                tblPO.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblPO.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colPO.CellTemplate            = templatePO;
                colPO.ClipboardContentBinding = new Binding(String.Format("ProductNo"));
                dgSizeRun.Columns.Add(colPO);

                // Column EFD
                dt.Columns.Add("EFD", typeof(String));
                DataGridTemplateColumn colEFD = new DataGridTemplateColumn();
                colEFD.Header                  = String.Format("EFD");
                DataTemplate templateEFD       = new DataTemplate();
                FrameworkElementFactory tblEFD = new FrameworkElementFactory(typeof(TextBlock));
                templateEFD.VisualTree         = tblEFD;
                tblEFD.SetValue(TextBlock.TextProperty, "");
                tblEFD.SetBinding(TextBlock.TextProperty, new Binding(String.Format("EFD")));
                tblEFD.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblEFD.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colEFD.CellTemplate            = templateEFD;
                colEFD.ClipboardContentBinding = new Binding(String.Format("EFD"));
                dgSizeRun.Columns.Add(colEFD);

                // Column ShoeName
                dt.Columns.Add("ShoeName", typeof(String));
                DataGridTemplateColumn colShoeName = new DataGridTemplateColumn();
                colShoeName.Header                  = String.Format("Shoe Name");
                DataTemplate templateShoeName       = new DataTemplate();
                FrameworkElementFactory tblShoeName = new FrameworkElementFactory(typeof(TextBlock));
                templateShoeName.VisualTree         = tblShoeName;
                tblShoeName.SetValue(TextBlock.TextProperty, "");
                tblShoeName.SetBinding(TextBlock.TextProperty, new Binding(String.Format("ShoeName")));
                tblShoeName.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblShoeName.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colShoeName.CellTemplate            = templateShoeName;
                colShoeName.ClipboardContentBinding = new Binding(String.Format("ShoeName"));
                dgSizeRun.Columns.Add(colShoeName);

                // Column SewingStart
                dt.Columns.Add("SewingStartDate", typeof(String));
                DataGridTemplateColumn colSewStart = new DataGridTemplateColumn();
                colSewStart.Header                  = String.Format("Sewing Start");
                DataTemplate templateSewStart       = new DataTemplate();
                FrameworkElementFactory tblSewStart = new FrameworkElementFactory(typeof(TextBlock));
                templateSewStart.VisualTree         = tblSewStart;
                tblSewStart.SetValue(TextBlock.TextProperty, "");
                tblSewStart.SetBinding(TextBlock.TextProperty, new Binding(String.Format("SewingStartDate")));
                tblSewStart.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblSewStart.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colSewStart.CellTemplate            = templateSewStart;
                colSewStart.ClipboardContentBinding = new Binding(String.Format("SewingStartDate"));
                dgSizeRun.Columns.Add(colSewStart);

                var sizeNoRawList = printSizeRunList.Select(s => s.SizeNo).Distinct().ToList();
                var regex         = new Regex("[a-z]|[A-Z]");
                var sizeNoList    = sizeNoRawList.Select(s => s).Distinct().OrderBy(s => regex.IsMatch(s) ? Double.Parse(regex.Replace(s, "100")) : Double.Parse(s)).ToList();

                foreach (var sizeNo in sizeNoList)
                {
                    string sizeNoVar = sizeNo.Contains(".") ? sizeNo.Replace(".", "@").ToString() : sizeNo;

                    dt.Columns.Add(String.Format("Column{0}", sizeNoVar), typeof(String));
                    DataGridTemplateColumn colQuantity = new DataGridTemplateColumn();
                    colQuantity.Header                  = String.Format(sizeNo);
                    colQuantity.Width                   = 40;
                    DataTemplate templateQuantity       = new DataTemplate();
                    FrameworkElementFactory tblQuantity = new FrameworkElementFactory(typeof(TextBlock));
                    templateQuantity.VisualTree         = tblQuantity;
                    tblQuantity.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Column{0}", sizeNoVar)));
                    tblQuantity.SetValue(TextBlock.PaddingProperty, new Thickness(3, 3, 3, 3));
                    tblQuantity.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                    tblQuantity.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);

                    colQuantity.CellTemplate            = templateQuantity;
                    colQuantity.ClipboardContentBinding = new Binding(String.Format("Column{0}", sizeNoVar));
                    dgSizeRun.Columns.Add(colQuantity);
                }

                // Binding Data
                var productNoList = printSizeRunList.Select(s => s.ProductNo).Distinct().ToList();
                //if (productNoList.Count() > 0)
                //    productNoList = productNoList.OrderBy(o => o).ToList();
                foreach (var productNo in productNoList)
                {
                    var printSizeRunFirst = printSizeRunList.FirstOrDefault(f => f.ProductNo == productNo);
                    var printSizeListByPO = printSizeRunList.Where(w => w.ProductNo == productNo).ToList();

                    DataRow dr = dt.NewRow();

                    dr["ProductNo"]       = productNo;
                    dr["EFD"]             = String.Format("{0:MM/dd/yyy}", printSizeRunFirst.EFD);
                    dr["SewingStartDate"] = String.Format("{0:MM/dd/yyy}", printSizeRunFirst.SewingStartDate);
                    dr["ShoeName"]        = printSizeRunFirst.ShoeName;

                    foreach (var printSizeRun in printSizeListByPO)
                    {
                        var psrBySize    = printSizeListByPO.FirstOrDefault(f => f.SizeNo == printSizeRun.SizeNo);
                        string sizeNoVar = printSizeRun.SizeNo.Contains(".") ? printSizeRun.SizeNo.Replace(".", "@").ToString() : printSizeRun.SizeNo;
                        dr[String.Format("Column{0}", sizeNoVar)] = psrBySize.Quantity;
                    }
                    dt.Rows.Add(dr);
                }
                dgSizeRun.ItemsSource = dt.AsDataView();
            }));
        }
Exemple #2
0
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                orderList          = OrdersController.Select();
                rawMaterialList    = RawMaterialController.Select();
                sewingMasterList   = SewingMasterController.Select();
                productionMemoList = ProductionMemoController.Select();
                offDayList         = OffDayController.Select();
                privateDefine      = PrivateDefineController.GetDefine();
            }
            catch (Exception ex)
            {
                Dispatcher.Invoke(new Action(() => {
                    MessageBox.Show(ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error);
                }));
                return;
            }

            _SEW_VS_OTHERS_CUT_A = privateDefine.SewingVsOthersCutTypeA;
            _SEW_VS_OTHERS_CUT_B = privateDefine.SewingVsOthersCutTypeB;

            //sewingMasterList.RemoveAll(s => DateTimeHelper.Create(s.SewingBalance) != dtDefault && DateTimeHelper.Create(s.SewingBalance) != dtNothing);
            sewingMasterList = sewingMasterList.OrderBy(s => s.Sequence).ToList();

            int[] materialIdUpperArray   = { 1, 2, 3, 4, 10 };
            int[] materialIdSewingArray  = { 5, 7 };
            int[] materialIdOutsoleArray = { 6 };

            foreach (SewingMasterModel sewingMaster in sewingMasterList)
            {
                CutprepMasterExportViewModel cutprepMasterExportView = new CutprepMasterExportViewModel();
                cutprepMasterExportView.Sequence  = sewingMaster.Sequence;
                cutprepMasterExportView.ProductNo = sewingMaster.ProductNo;
                OrdersModel order  = orderList.FirstOrDefault(f => f.ProductNo == sewingMaster.ProductNo);
                string      memoId = "";
                if (order != null)
                {
                    cutprepMasterExportView.Country   = order.Country;
                    cutprepMasterExportView.ShoeName  = order.ShoeName;
                    cutprepMasterExportView.ArticleNo = order.ArticleNo;
                    cutprepMasterExportView.PatternNo = order.PatternNo;
                    cutprepMasterExportView.Quantity  = order.Quantity;
                    cutprepMasterExportView.ETD       = order.ETD;

                    List <ProductionMemoModel> productionMemoByProductionNumberList = productionMemoList.Where(p => p.ProductionNumbers.Contains(order.ProductNo) == true).ToList();
                    for (int p = 0; p <= productionMemoByProductionNumberList.Count - 1; p++)
                    {
                        ProductionMemoModel productionMemo = productionMemoByProductionNumberList[p];
                        memoId += productionMemo.MemoId;
                        if (p < productionMemoByProductionNumberList.Count - 1)
                        {
                            memoId += "\n";
                        }
                    }
                    cutprepMasterExportView.MemoId = memoId;
                }

                MaterialArrivalViewModel materialArrivalUpper = MaterialArrival(order.ProductNo, materialIdUpperArray);
                cutprepMasterExportView.IsUpperMatsArrivalOk = false;
                if (materialArrivalUpper != null)
                {
                    cutprepMasterExportView.UpperMatsArrival     = String.Format(new CultureInfo("en-US"), "{0:dd-MMM}", materialArrivalUpper.Date);
                    cutprepMasterExportView.IsUpperMatsArrivalOk = materialArrivalUpper.IsMaterialArrivalOk;
                }
                cutprepMasterExportView.SewingLine        = sewingMaster.SewingLine;
                cutprepMasterExportView.SewingStartDate   = sewingMaster.SewingStartDate;
                cutprepMasterExportView.SewingQuota       = sewingMaster.SewingQuota;
                cutprepMasterExportView.SewingBalance     = sewingMaster.SewingBalance;
                cutprepMasterExportView.CutAStartDate     = sewingMaster.CutAStartDate;
                cutprepMasterExportView.CutAFinishDate    = sewingMaster.CutAFinishDate;
                cutprepMasterExportView.CutAQuota         = sewingMaster.CutAQuota;
                cutprepMasterExportView.AutoCut           = sewingMaster.AutoCut;
                cutprepMasterExportView.LaserCut          = sewingMaster.LaserCut;
                cutprepMasterExportView.HuasenCut         = sewingMaster.HuasenCut;
                cutprepMasterExportView.CutABalance       = sewingMaster.CutABalance;
                cutprepMasterExportView.PrintingBalance   = sewingMaster.PrintingBalance;
                cutprepMasterExportView.H_FBalance        = sewingMaster.H_FBalance;
                cutprepMasterExportView.EmbroideryBalance = sewingMaster.EmbroideryBalance;
                cutprepMasterExportView.CutBBalance       = sewingMaster.CutBBalance;

                // Cut type A before sewing 18days
                var cutTypeABeforeSewing       = sewingMaster.SewingStartDate.AddDays(-_SEW_VS_OTHERS_CUT_A);
                var dtCheckOffDateCutTypeAList = CheckOffDay(cutTypeABeforeSewing, sewingMaster.SewingStartDate);

                // Cut type B before sewing 10days
                var cutTypeBBeforeSewing       = sewingMaster.SewingStartDate.AddDays(-_SEW_VS_OTHERS_CUT_B);
                var dtCheckOffDateCutTypeBList = CheckOffDay(cutTypeBBeforeSewing, sewingMaster.SewingStartDate);

                var firstDateCheckOffCutTypeA = String.Format("{0:M/d}", dtCheckOffDateCutTypeAList.FirstOrDefault());
                var firstDateCheckOffCutTypeB = String.Format("{0:M/d}", dtCheckOffDateCutTypeBList.FirstOrDefault());

                if (!String.IsNullOrEmpty(sewingMaster.CutBStartDate))
                {
                    cutprepMasterExportView.CutBStartDate = sewingMaster.CutBStartDate;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.CutBStartDate = firstDateCheckOffCutTypeB;
                }
                else
                {
                    cutprepMasterExportView.CutBStartDate = "";
                }


                if (!String.IsNullOrEmpty(sewingMaster.AtomCutA))
                {
                    cutprepMasterExportView.AtomCutA = sewingMaster.AtomCutA;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.AtomCutA = firstDateCheckOffCutTypeA;
                }
                else
                {
                    cutprepMasterExportView.AtomCutA = "";
                }


                if (!String.IsNullOrEmpty(sewingMaster.AtomCutB))
                {
                    cutprepMasterExportView.AtomCutB = sewingMaster.AtomCutB;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.AtomCutB = firstDateCheckOffCutTypeB;
                }
                else
                {
                    cutprepMasterExportView.AtomCutB = "";
                }


                if (!String.IsNullOrEmpty(sewingMaster.LaserCutA))
                {
                    cutprepMasterExportView.LaserCutA = sewingMaster.LaserCutA;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.LaserCutA = firstDateCheckOffCutTypeA;
                }
                else
                {
                    cutprepMasterExportView.LaserCutA = "";
                }

                if (!String.IsNullOrEmpty(sewingMaster.LaserCutB))
                {
                    cutprepMasterExportView.LaserCutB = sewingMaster.LaserCutB;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.LaserCutB = firstDateCheckOffCutTypeB;
                }
                else
                {
                    cutprepMasterExportView.LaserCutB = "";
                }


                if (!String.IsNullOrEmpty(sewingMaster.HuasenCutA))
                {
                    cutprepMasterExportView.HuasenCutA = sewingMaster.HuasenCutA;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.HuasenCutA = firstDateCheckOffCutTypeA;
                }
                else
                {
                    cutprepMasterExportView.HuasenCutA = "";
                }


                if (!String.IsNullOrEmpty(sewingMaster.HuasenCutB))
                {
                    cutprepMasterExportView.HuasenCutB = sewingMaster.HuasenCutB;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.HuasenCutB = firstDateCheckOffCutTypeB;
                }
                else
                {
                    cutprepMasterExportView.HuasenCutB = "";
                }

                if (!String.IsNullOrEmpty(sewingMaster.ComelzCutA))
                {
                    cutprepMasterExportView.ComelzCutA = sewingMaster.ComelzCutA;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.ComelzCutA = firstDateCheckOffCutTypeA;
                }
                else
                {
                    cutprepMasterExportView.ComelzCutA = "";
                }

                if (!String.IsNullOrEmpty(sewingMaster.ComelzCutB))
                {
                    cutprepMasterExportView.ComelzCutB = sewingMaster.ComelzCutB;
                }
                else if (sewingMaster.SewingStartDate != dtDefault)
                {
                    cutprepMasterExportView.ComelzCutB = firstDateCheckOffCutTypeB;
                }
                else
                {
                    cutprepMasterExportView.ComelzCutB = "";
                }


                cutprepMasterExportViewList.Add(cutprepMasterExportView);
            }
        }
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            Excel.Application excelApplication = new Excel.Application();
            Excel.Workbook    excelWorkbook    = excelApplication.Workbooks.Open(filePath);
            //excelApplication.Visible = true;
            Excel.Worksheet excelWorksheet;
            Excel.Range     excelRange;
            try
            {
                privateDef = PrivateDefineController.GetDefine();
                var regex = new Regex("[a-z]|[A-Z]");

                excelWorksheet = (Excel.Worksheet)excelWorkbook.Worksheets[1];
                excelRange     = excelWorksheet.UsedRange;
                progressBar.Dispatcher.Invoke((Action)(() => progressBar.Maximum = excelRange.Rows.Count));
                int noOfPO = 0;
                for (int i = 5; i <= excelRange.Rows.Count; i++)
                {
                    var productNoValue = (excelRange.Cells[i, 4] as Excel.Range).Value2;
                    if (productNoValue != null)
                    {
                        noOfPO++;
                        string productNo = productNoValue.ToString();
                        // Order
                        var    order              = new OrdersModel();
                        string UCustomerCode      = "";
                        var    uCustomerCodeValue = (excelRange.Cells[i, 2] as Excel.Range).Value2;
                        if (uCustomerCodeValue != null)
                        {
                            UCustomerCode = uCustomerCodeValue.ToString();
                        }
                        order.UCustomerCode = UCustomerCode;

                        string GTNPONo      = "";
                        var    GTNPONoValue = (excelRange.Cells[i, 3] as Excel.Range).Value2;
                        if (GTNPONoValue != null)
                        {
                            GTNPONo = GTNPONoValue.ToString();
                        }
                        order.GTNPONo = GTNPONo;

                        order.ProductNo = productNo;

                        double csdOADate = 0;
                        Double.TryParse((excelRange.Cells[i, 5] as Excel.Range).Value2.ToString(), out csdOADate);
                        DateTime csd = DateTime.FromOADate(csdOADate);
                        order.ETD = csd.AddDays(-10);

                        string articleNo = (excelRange.Cells[i, 6] as Excel.Range).Value2.ToString();
                        order.ArticleNo = articleNo;

                        string shoeName = (excelRange.Cells[i, 7] as Excel.Range).Value2.ToString();
                        order.ShoeName = shoeName;

                        int quantity = 0;
                        int.TryParse((excelRange.Cells[i, 8] as Excel.Range).Value2.ToString(), out quantity);
                        order.Quantity = quantity;

                        string patternNo = (excelRange.Cells[i, 12] as Excel.Range).Value2.ToString();
                        order.PatternNo = patternNo;

                        var    midsoleCodeValue = (excelRange.Cells[i, 13] as Excel.Range).Value2;
                        string midsoleCode      = "";
                        if (midsoleCodeValue != null)
                        {
                            midsoleCode = midsoleCodeValue.ToString();
                        }
                        order.MidsoleCode = midsoleCode;

                        var    outsoleCodeValue = (excelRange.Cells[i, 14] as Excel.Range).Value2;
                        string outsoleCode      = "";
                        if (outsoleCodeValue != null)
                        {
                            outsoleCode = outsoleCodeValue.ToString();
                        }
                        order.OutsoleCode = outsoleCode;

                        var    lastCodeValue = (excelRange.Cells[i, 15] as Excel.Range).Value2;
                        string lastCode      = "";
                        if (lastCodeValue != null)
                        {
                            lastCode = lastCodeValue.ToString();
                        }
                        order.LastCode = lastCode;

                        var    countryValue = (excelRange.Cells[i, 16] as Excel.Range).Value2;
                        string country      = "";
                        if (countryValue != null)
                        {
                            country = countryValue.ToString();
                        }
                        order.Country = country;
                        order.Reviser = acc.UserName;

                        ordersList.Add(order);

                        //for (int j = 17; j <= 65; j++)
                        // Size Run
                        int noOfColumnLoad = privateDef != null ? privateDef.NoOfColumnOrderExcelFile : 100;
                        for (int j = 18; j <= privateDef.NoOfColumnOrderExcelFile; j++)
                        {
                            var qtyValue      = (excelRange.Cells[i, j] as Excel.Range).Value2;
                            var sizeNoValue   = (excelRange.Cells[i - noOfPO, j] as Excel.Range).Value2;
                            var osSizeValue   = (excelRange.Cells[i - noOfPO - 1, j] as Excel.Range).Value2;
                            var midSizeValue  = (excelRange.Cells[i - noOfPO - 2, j] as Excel.Range).Value2;
                            var lastSizeValue = (excelRange.Cells[i - noOfPO - 3, j] as Excel.Range).Value2;
                            if (qtyValue != null && sizeNoValue != null)
                            {
                                int qty = 0;
                                int.TryParse(qtyValue.ToString(), out qty);
                                //string sizeNo = (excelRange.Cells[1, j] as Excel.Range).Value2.ToString();
                                string sizeNo      = sizeNoValue.ToString();
                                string outsoleSize = osSizeValue != null?osSizeValue.ToString() : sizeNo;

                                string midsoleSize = midSizeValue != null?midSizeValue.ToString() : sizeNo;

                                string lastSize = lastSizeValue != null?lastSizeValue.ToString() : sizeNo;

                                SizeRunModel sizeRun = new SizeRunModel
                                {
                                    ProductNo   = productNo,
                                    SizeNo      = regex.IsMatch(sizeNo) ? regex.Replace(sizeNo, "") : sizeNo,
                                    OutsoleSize = regex.IsMatch(outsoleSize) ? regex.Replace(outsoleSize, "") : outsoleSize,
                                    MidsoleSize = regex.IsMatch(midsoleSize) ? regex.Replace(midsoleSize, "") : midsoleSize,
                                    LastSize    = regex.IsMatch(lastSize) ? regex.Replace(lastSize, "") : lastSize,
                                    Quantity    = qty,
                                };
                                sizeRunList.Add(sizeRun);
                            }
                        }
                    }
                    else
                    {
                        i      = i + 4;
                        noOfPO = 0;
                    }

                    progressBar.Dispatcher.Invoke((Action)(() => progressBar.Value = i));
                }
            }
            catch
            {
                sizeRunList.Clear();
            }
            finally
            {
                excelWorkbook.Close(false, Missing.Value, Missing.Value);
                excelApplication.Quit();
            }
        }
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            sewingMasterList   = SewingMasterController.Select();
            outsoleRawMaterial = OutsoleRawMaterialController.Select();
            var productNoList = orderList.Select(s => s.ProductNo).Distinct().ToList();

            sewingMasterList   = sewingMasterList.Where(w => productNoList.Contains(w.ProductNo)).ToList();
            outsoleRawMaterial = outsoleRawMaterial.Where(w => productNoList.Contains(w.ProductNo) && w.OutsoleSupplierId == supplier.OutsoleSupplierId).ToList();
            def = PrivateDefineController.GetDefine();

            var regex      = new Regex("[a-z]|[A-Z]");
            var sizeNoList = sizeRunList.Select(s => s.SizeNo).Distinct().OrderBy(s => regex.IsMatch(s) ? Double.Parse(regex.Replace(s, "100")) : Double.Parse(s)).ToList();

            // Create Column
            DataTable dt = new DataTable();

            Dispatcher.Invoke(new Action(() =>
            {
                // Column OutsoleCode
                dt.Columns.Add("ProductNo", typeof(String));
                DataGridTemplateColumn colPO = new DataGridTemplateColumn();
                colPO.Header                  = String.Format("ProductNo");
                DataTemplate tplPO            = new DataTemplate();
                FrameworkElementFactory tblPO = new FrameworkElementFactory(typeof(TextBlock));
                tplPO.VisualTree              = tblPO;
                tblPO.SetBinding(TextBlock.TextProperty, new Binding(String.Format("ProductNo")));
                tblPO.SetValue(TextBlock.FontWeightProperty, FontWeights.SemiBold);
                tblPO.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblPO.SetValue(TextBlock.PaddingProperty, new Thickness(3, 2, 3, 2));
                colPO.CellTemplate            = tplPO;
                colPO.SortMemberPath          = "ProductNo";
                colPO.ClipboardContentBinding = new Binding(String.Format("ProductNo"));
                dgWHDeliveryDetail.Columns.Add(colPO);

                // Column ArticleNo
                dt.Columns.Add("ArticleNo", typeof(String));
                DataGridTemplateColumn colArticleNo = new DataGridTemplateColumn();
                colArticleNo.Header                  = String.Format("ArticleNo");
                DataTemplate tplArticleNo            = new DataTemplate();
                FrameworkElementFactory tblArticleNo = new FrameworkElementFactory(typeof(TextBlock));
                tplArticleNo.VisualTree              = tblArticleNo;
                tblArticleNo.SetBinding(TextBlock.TextProperty, new Binding(String.Format("ArticleNo")));
                tblArticleNo.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblArticleNo.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colArticleNo.CellTemplate            = tplArticleNo;
                colArticleNo.SortMemberPath          = "ArticleNo";
                colArticleNo.ClipboardContentBinding = new Binding(String.Format("ArticleNo"));
                dgWHDeliveryDetail.Columns.Add(colArticleNo);

                // Column OrderEFD
                dt.Columns.Add("OrderEFD", typeof(DateTime));
                DataGridTemplateColumn colEFDOrder = new DataGridTemplateColumn();
                colEFDOrder.Header                  = String.Format("Order\nEFD");
                DataTemplate tplEFDOrder            = new DataTemplate();
                FrameworkElementFactory tblEFDOrder = new FrameworkElementFactory(typeof(TextBlock));
                tplEFDOrder.VisualTree              = tblEFDOrder;

                Binding bindingOrderEFD      = new Binding();
                bindingOrderEFD.Path         = new PropertyPath("OrderEFD");
                bindingOrderEFD.StringFormat = "dd-MMM";

                //tblEFDOrder.SetBinding(TextBlock.TextProperty, new Binding(String.Format("OrderEFD")));
                tblEFDOrder.SetBinding(TextBlock.TextProperty, bindingOrderEFD);
                tblEFDOrder.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblEFDOrder.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colEFDOrder.SortMemberPath          = "OrderEFD";
                colEFDOrder.ClipboardContentBinding = bindingOrderEFD;
                colEFDOrder.CellTemplate            = tplEFDOrder;
                dgWHDeliveryDetail.Columns.Add(colEFDOrder);

                // Column DeliveryEFD
                dt.Columns.Add("DeliveryEFD", typeof(DateTime));
                DataGridTemplateColumn colEFDDelivery = new DataGridTemplateColumn();
                colEFDDelivery.Header                  = String.Format("Delivery\nEFD");
                DataTemplate tplEFDDelivery            = new DataTemplate();
                FrameworkElementFactory tblEFDDelivery = new FrameworkElementFactory(typeof(TextBlock));
                tplEFDDelivery.VisualTree              = tblEFDDelivery;

                Binding bindingDeliveryEFD      = new Binding();
                bindingDeliveryEFD.Path         = new PropertyPath("DeliveryEFD");
                bindingDeliveryEFD.StringFormat = "dd-MMM";

                //tblEFDDelivery.SetBinding(TextBlock.TextProperty, new Binding(String.Format("DeliveryEFD")));
                tblEFDDelivery.SetBinding(TextBlock.TextProperty, bindingDeliveryEFD);
                tblEFDDelivery.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblEFDDelivery.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colEFDDelivery.SortMemberPath          = "DeliveryEFD";
                colEFDDelivery.ClipboardContentBinding = bindingDeliveryEFD;
                colEFDDelivery.CellTemplate            = tplEFDDelivery;
                dgWHDeliveryDetail.Columns.Add(colEFDDelivery);

                // Column SewingStart
                dt.Columns.Add("SewingStartDate", typeof(DateTime));
                DataGridTemplateColumn colSewingStart = new DataGridTemplateColumn();
                colSewingStart.Header                  = String.Format("Sewing\nStart");
                DataTemplate tplSewingStart            = new DataTemplate();
                FrameworkElementFactory tblSewingStart = new FrameworkElementFactory(typeof(TextBlock));
                tplSewingStart.VisualTree              = tblSewingStart;

                Binding bindingSewingStart      = new Binding();
                bindingSewingStart.Path         = new PropertyPath("SewingStartDate");
                bindingSewingStart.StringFormat = "dd-MMM";

                //tblSewingStart.SetBinding(TextBlock.TextProperty, new Binding(String.Format("SewingStartDate")));
                tblSewingStart.SetBinding(TextBlock.TextProperty, bindingSewingStart);
                tblSewingStart.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblSewingStart.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colSewingStart.SortMemberPath          = "SewingStartDate";
                colSewingStart.ClipboardContentBinding = bindingSewingStart;
                colSewingStart.CellTemplate            = tplSewingStart;
                dgWHDeliveryDetail.Columns.Add(colSewingStart);

                // Column QuantityOrder
                dt.Columns.Add("QuantityOrder", typeof(Int32));
                DataGridTemplateColumn colQtyOrder = new DataGridTemplateColumn();
                colQtyOrder.Header                  = String.Format("Quantity\nOrder");
                DataTemplate tplQtyOrder            = new DataTemplate();
                FrameworkElementFactory tblQtyOrder = new FrameworkElementFactory(typeof(TextBlock));
                tplQtyOrder.VisualTree              = tblQtyOrder;
                tblQtyOrder.SetBinding(TextBlock.TextProperty, new Binding(String.Format("QuantityOrder")));
                tblQtyOrder.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
                tblQtyOrder.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblQtyOrder.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colQtyOrder.CellTemplate            = tplQtyOrder;
                colQtyOrder.SortMemberPath          = "QuantityOrder";
                colQtyOrder.ClipboardContentBinding = new Binding(String.Format("QuantityOrder"));
                dgWHDeliveryDetail.Columns.Add(colQtyOrder);

                // Column Release
                dt.Columns.Add("Release", typeof(Int32));
                DataGridTemplateColumn colRelease = new DataGridTemplateColumn();
                colRelease.Header                  = String.Format("Release");
                DataTemplate tplRelease            = new DataTemplate();
                FrameworkElementFactory tblRelease = new FrameworkElementFactory(typeof(TextBlock));
                tplRelease.VisualTree              = tblRelease;
                tblRelease.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Release")));
                tblRelease.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
                tblRelease.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblRelease.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colRelease.CellTemplate            = tplRelease;
                colRelease.SortMemberPath          = "Release";
                colRelease.ClipboardContentBinding = new Binding(String.Format("Release"));
                dgWHDeliveryDetail.Columns.Add(colRelease);

                // Column Delivery
                dt.Columns.Add("Delivery", typeof(Int32));
                DataGridTemplateColumn colDelivery = new DataGridTemplateColumn();
                colDelivery.Header                  = String.Format("Delivery");
                DataTemplate tplDelivery            = new DataTemplate();
                FrameworkElementFactory tblDelivery = new FrameworkElementFactory(typeof(TextBlock));
                tplDelivery.VisualTree              = tblDelivery;
                tblDelivery.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Delivery")));
                tblDelivery.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
                tblDelivery.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblDelivery.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colDelivery.CellTemplate            = tplDelivery;
                colDelivery.SortMemberPath          = "Delivery";
                colDelivery.ClipboardContentBinding = new Binding(String.Format("Delivery"));
                dgWHDeliveryDetail.Columns.Add(colDelivery);

                // Column Reject
                dt.Columns.Add("Reject", typeof(Int32));
                DataGridTemplateColumn colReject = new DataGridTemplateColumn();
                colReject.Header                  = String.Format("Reject");
                DataTemplate tplReject            = new DataTemplate();
                FrameworkElementFactory tblReject = new FrameworkElementFactory(typeof(TextBlock));
                tplReject.VisualTree              = tblReject;
                tblReject.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Reject")));
                tblReject.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
                tblReject.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblReject.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colReject.CellTemplate            = tplReject;
                colReject.SortMemberPath          = "Reject";
                colReject.ClipboardContentBinding = new Binding(String.Format("Reject"));
                dgWHDeliveryDetail.Columns.Add(colReject);

                // Column SizeNo
                for (int i = 0; i < sizeNoList.Count(); i++)
                {
                    var sizeRun_Size = sizeRunList.FirstOrDefault(w => w.SizeNo == sizeNoList[i]);
                    if (sizeRun_Size == null)
                    {
                        continue;
                    }
                    string outsoleSize = "", midsoleSize = "";
                    if (sizeRun_Size != null)
                    {
                        outsoleSize = sizeRun_Size.OutsoleSize;
                        midsoleSize = sizeRun_Size.MidsoleSize;
                    }

                    string sizeID = sizeRun_Size.SizeNo.Contains(".") == true ? sizeRun_Size.SizeNo.Replace(".", "@") : sizeRun_Size.SizeNo;

                    dt.Columns.Add(String.Format("Column{0}", sizeID), typeof(String));
                    dt.Columns.Add(String.Format("ColumnBackground{0}", sizeID), typeof(SolidColorBrush));
                    dt.Columns.Add(String.Format("ColumnForeground{0}", sizeID), typeof(SolidColorBrush));
                    dt.Columns.Add(String.Format("ColumnTooltip{0}", sizeID), typeof(String));
                    DataGridTemplateColumn colSize = new DataGridTemplateColumn();

                    if (def.ShowOSSizeValue)
                    {
                        colSize.Header = String.Format("{0}\n{1}\n", sizeNoList[i], outsoleSize);
                    }
                    else
                    {
                        colSize.Header = String.Format("\n{0}\n", sizeNoList[i], "");
                    }

                    colSize.MinWidth                = 35;
                    DataTemplate tplSize            = new DataTemplate();
                    FrameworkElementFactory tblSize = new FrameworkElementFactory(typeof(TextBlock));
                    tplSize.VisualTree              = tblSize;
                    tblSize.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Column{0}", sizeID)));
                    tblSize.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
                    tblSize.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                    tblSize.SetValue(TextBlock.PaddingProperty, new Thickness(3, 3, 3, 3));

                    tblSize.SetValue(TextBlock.BackgroundProperty, new Binding(String.Format("ColumnBackground{0}", sizeID)));
                    tblSize.SetValue(TextBlock.ForegroundProperty, new Binding(String.Format("ColumnForeground{0}", sizeID)));
                    tblSize.SetValue(TextBlock.ToolTipProperty, new Binding(String.Format("ColumnTooltip{0}", sizeID)));

                    colSize.CellTemplate            = tplSize;
                    colSize.ClipboardContentBinding = new Binding(String.Format("Column{0}", sizeID));
                    dgWHDeliveryDetail.Columns.Add(colSize);
                }
                // Column Balance
                dt.Columns.Add("TotalBalance", typeof(Int32));
                DataGridTemplateColumn colBalance = new DataGridTemplateColumn();
                colBalance.Header                  = String.Format("Total\nBalance");
                DataTemplate tplBalance            = new DataTemplate();
                FrameworkElementFactory tblBalance = new FrameworkElementFactory(typeof(TextBlock));
                tplBalance.VisualTree              = tblBalance;
                tblBalance.SetBinding(TextBlock.TextProperty, new Binding(String.Format("TotalBalance")));
                tblBalance.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
                tblBalance.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblBalance.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colBalance.CellTemplate            = tplBalance;
                colBalance.SortMemberPath          = "TotalBalance";
                colBalance.ClipboardContentBinding = new Binding(String.Format("TotalBalance"));
                dgWHDeliveryDetail.Columns.Add(colBalance);

                // Column Reject
                dt.Columns.Add("ReleasePainting", typeof(Int32));
                DataGridTemplateColumn colReleasePainting = new DataGridTemplateColumn();
                colReleasePainting.Header                  = String.Format("Release\nPainting");
                DataTemplate tplReleasePainting            = new DataTemplate();
                FrameworkElementFactory tblReleasePainting = new FrameworkElementFactory(typeof(TextBlock));
                tplReleasePainting.VisualTree              = tblReleasePainting;
                tblReleasePainting.SetBinding(TextBlock.TextProperty, new Binding(String.Format("ReleasePainting")));
                tblReleasePainting.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
                tblReleasePainting.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblReleasePainting.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colReleasePainting.CellTemplate            = tplReleasePainting;
                colReleasePainting.SortMemberPath          = "ReleasePainting";
                colReleasePainting.ClipboardContentBinding = new Binding(String.Format("ReleasePainting"));
                dgWHDeliveryDetail.Columns.Add(colReleasePainting);
            }));

            // Binding Data
            if (productNoList.Count > 0)
            {
                productNoList = productNoList.OrderBy(o => o).ToList();
            }

            foreach (var productNo in productNoList)
            {
                DataRow dr = dt.NewRow();

                var order_PO         = orderList.FirstOrDefault(w => w.ProductNo == productNo);
                var osMaterial_PO    = outsoleMaterialList.Where(w => w.ProductNo == productNo).ToList();
                var osRawMaterial_PO = outsoleRawMaterial.FirstOrDefault(w => w.ProductNo == productNo);
                var sewingMaster_PO  = sewingMasterList.FirstOrDefault(w => w.ProductNo == productNo);
                var osRelease_PO     = outsoleReleaseList.Where(w => w.ProductNo == productNo).ToList();

                var contentStatusList = new List <ContentStatus>();
                var sizeRunList_PO    = sizeRunList.Where(w => w.ProductNo == productNo).ToList();
                for (int i = 0; i < sizeNoList.Count(); i++)
                {
                    string sizeNo        = sizeNoList[i];
                    var    contentStatus = new ContentStatus();
                    var    sizeRun_Size  = sizeRunList_PO.FirstOrDefault(w => w.SizeNo == sizeNo);
                    string sizeID        = sizeNo.Contains(".") == true?sizeNo.Replace(".", "@") : sizeNo;

                    // if has balance, show balance = qty - delivery + reject
                    // if contains reject highlight
                    int qtyOrder_Size    = sizeRun_Size != null ? sizeRun_Size.Quantity : 0;
                    int qtyDelivery_Size = osMaterial_PO.FirstOrDefault(w => w.SizeNo == sizeNo) != null?osMaterial_PO.FirstOrDefault(w => w.SizeNo == sizeNo).Quantity : 0;

                    int qtyReject_Size = osMaterial_PO.FirstOrDefault(w => w.SizeNo == sizeNo) != null?osMaterial_PO.FirstOrDefault(w => w.SizeNo == sizeNo).QuantityReject : 0;

                    // Default Color
                    contentStatus.WidthDefaultCell = 5;
                    contentStatus.BorderColorCell  = System.Drawing.Color.LightGray;
                    contentStatus.ForegroundCell   = System.Drawing.Color.Black;
                    contentStatus.BackgroundCell   = System.Drawing.Color.Transparent;

                    int qtyBalance_Size = qtyOrder_Size - qtyDelivery_Size;
                    if (qtyBalance_Size > 0)
                    {
                        dr[String.Format("Column{0}", sizeID)]           = qtyBalance_Size;
                        dr[String.Format("ColumnBackground{0}", sizeID)] = Brushes.Tomato;
                        contentStatus.Quantity = qtyBalance_Size;
                    }
                    if (qtyReject_Size > 0)
                    {
                        dr[String.Format("Column{0}", sizeID)]           = qtyReject_Size;
                        dr[String.Format("ColumnForeground{0}", sizeID)] = Brushes.Red;

                        contentStatus.Quantity       = qtyReject_Size;
                        contentStatus.ForegroundCell = System.Drawing.Color.Red;
                        if (qtyBalance_Size > 0)
                        {
                            int qtyBalanceTotal = qtyBalance_Size + qtyReject_Size;

                            dr[String.Format("Column{0}", sizeID)]           = qtyBalanceTotal;
                            dr[String.Format("ColumnBackground{0}", sizeID)] = Brushes.Yellow;
                            dr[String.Format("ColumnTooltip{0}", sizeID)]    = String.Format("Balance: {0}\nReject : {1}", qtyBalance_Size, qtyReject_Size);

                            contentStatus.Quantity       = qtyBalanceTotal;
                            contentStatus.BackgroundCell = System.Drawing.Color.Yellow;
                        }
                    }
                    //
                    //if (qtyBalance_Size > 0 || qtyReject_Size > 0)
                    contentStatusList.Add(contentStatus);
                }

                var articleNo          = order_PO != null ? order_PO.ArticleNo : "";
                var orderEFD           = order_PO != null ? order_PO.ETD : new DateTime(2000, 1, 1);
                var delEFD             = osRawMaterial_PO != null ? osRawMaterial_PO.ETD : new DateTime(2000, 1, 1);
                var sewStart           = sewingMaster_PO != null ? sewingMaster_PO.SewingStartDate : new DateTime(2000, 1, 1);
                var release            = osRelease_PO.Sum(s => s.Quantity);
                var qtyOrder           = sizeRunList_PO.Sum(s => s.Quantity);
                var qtyDelivery        = osMaterial_PO.Sum(s => s.Quantity);
                var qtyReject          = osMaterial_PO.Sum(s => s.QuantityReject);
                var qtyReleasePainting = osMaterial_PO.FirstOrDefault().TotalReleasePainting;

                dr["ProductNo"]       = productNo;
                dr["ArticleNo"]       = articleNo;
                dr["OrderEFD"]        = orderEFD;
                dr["DeliveryEFD"]     = delEFD;
                dr["SewingStartDate"] = sewStart;
                dr["QuantityOrder"]   = qtyOrder;
                dr["Release"]         = release;
                dr["Delivery"]        = qtyDelivery;
                dr["Reject"]          = qtyReject;
                dr["TotalBalance"]    = qtyOrder - qtyDelivery + qtyReject;
                dr["ReleasePainting"] = qtyReleasePainting;


                dt.Rows.Add(dr);
                var excelExportModel = new ExportExcelModel()
                {
                    ProductNo            = productNo,
                    ArticleNo            = articleNo,
                    OrderEFD             = orderEFD,
                    DeliveryEFD          = delEFD,
                    SewingStartDate      = sewStart,
                    QuantityOrder        = qtyOrder,
                    Release              = release,
                    Delivery             = qtyDelivery,
                    Reject               = qtyReject,
                    ContentStatusList    = contentStatusList,
                    TotalBalance         = qtyOrder - qtyDelivery + qtyReject,
                    TotalReleasePainting = qtyReleasePainting,
                };
                excelExportList.Add(excelExportModel);
            }
            DataRow drTotal = dt.NewRow();

            drTotal["ProductNo"]       = "Total";
            drTotal["QuantityOrder"]   = string.Format("{0:#,0}", dt.Compute("Sum(QuantityOrder)", "").ToString());
            drTotal["Release"]         = string.Format("{0:#,0}", dt.Compute("Sum(Release)", "").ToString());
            drTotal["Delivery"]        = string.Format("{0:#,0}", dt.Compute("Sum(Delivery)", "").ToString());
            drTotal["Reject"]          = string.Format("{0:#,0}", dt.Compute("Sum(Reject)", "").ToString());
            drTotal["TotalBalance"]    = string.Format("{0:#,0}", dt.Compute("Sum(TotalBalance)", "").ToString());
            drTotal["ReleasePainting"] = string.Format("{0:#,0}", dt.Compute("Sum(ReleasePainting)", "").ToString());

            dt.Rows.Add(drTotal);
            e.Result = dt;
        }
        private void bwLoadData_DoWork(object sender, DoWorkEventArgs e)
        {
            outsoleMaterialRejectList = OutsoleMaterialController.SelectReject();
            outsoleSupplierList       = OutsoleSuppliersController.Select();
            orderList = OrdersController.SelectByOutsoleMaterialReject();
            outsoleRawMaterialList = OutsoleRawMaterialController.Select();
            sizeRunList            = SizeRunController.SelectIsEnable();
            def = PrivateDefineController.GetDefine();

            DataTable dt  = new OutsoleMaterialRejectDataSet().Tables["OutsoleMaterialRejectTable"];
            DataTable dt1 = new OutsoleMaterialRejectDataSet().Tables["OutsoleMaterialRejectTable"];

            var regex = new Regex(@"[a-z]|[A-Z]");

            foreach (OutsoleMaterialModel outsoleMaterialReject in outsoleMaterialRejectList)
            {
                var     outsoleSupplier    = outsoleSupplierList.FirstOrDefault(f => f.OutsoleSupplierId == outsoleMaterialReject.OutsoleSupplierId);
                var     order              = orderList.FirstOrDefault(f => f.ProductNo == outsoleMaterialReject.ProductNo);
                var     outsoleRawMaterial = outsoleRawMaterialList.FirstOrDefault(f => f.ProductNo == outsoleMaterialReject.ProductNo && f.OutsoleSupplierId == outsoleMaterialReject.OutsoleSupplierId);
                DataRow dr  = dt.NewRow();
                DataRow dr1 = dt1.NewRow();

                dr["ProductNo"]  = outsoleMaterialReject.ProductNo;
                dr1["ProductNo"] = outsoleMaterialReject.ProductNo;
                var productNoList = new List <String>();
                if (order != null)
                {
                    dr["OutsoleCode"]  = order.OutsoleCode;
                    dr1["OutsoleCode"] = order.OutsoleCode;
                    dr["ETD"]          = order.ETD;
                    dr1["ETD"]         = order.ETD;
                    dr["ArticleNo"]    = order.ArticleNo;
                    dr1["ArticleNo"]   = order.ArticleNo;
                    productNoList      = orderList.Where(w => w.OutsoleCode == order.OutsoleCode).Select(s => s.ProductNo).ToList();
                }
                if (outsoleRawMaterial != null)
                {
                    dr["SupplierETD"]  = outsoleRawMaterial.ETD;
                    dr1["SupplierETD"] = outsoleRawMaterial.ETD;
                }
                if (outsoleSupplier != null)
                {
                    dr["OutsoleSupplier"]  = outsoleSupplier.Name;
                    dr1["OutsoleSupplier"] = outsoleSupplier.Name;
                }

                string sizeNoOutsole      = outsoleMaterialReject.SizeNo;
                var    sizeNo_OutsoleCode = sizeRunList.Where(w => productNoList.Contains(w.ProductNo) && w.SizeNo == sizeNoOutsole).FirstOrDefault();
                if (sizeNo_OutsoleCode != null)
                {
                    if (String.IsNullOrEmpty(sizeNo_OutsoleCode.OutsoleSize) == false)
                    {
                        sizeNoOutsole = sizeNo_OutsoleCode.OutsoleSize;
                    }
                }

                string sizeNoString = regex.IsMatch(sizeNoOutsole) == true?regex.Replace(sizeNoOutsole, "") : sizeNoOutsole;

                double sizeNoDouble = 0;
                Double.TryParse(sizeNoString, out sizeNoDouble);
                dr["SizeNoDouble"]  = sizeNoDouble;
                dr1["SizeNoDouble"] = sizeNoDouble;

                dr["SizeNo"]  = outsoleMaterialReject.SizeNo;
                dr1["SizeNo"] = outsoleMaterialReject.SizeNo;
                if (def.ShowOSSizeValue)
                {
                    dr["SizeOutsole"]  = sizeNoOutsole;
                    dr1["SizeOutsole"] = sizeNoOutsole;
                }


                if (outsoleMaterialReject.QuantityReject > 0)
                {
                    dr["QuantityReject"] = outsoleMaterialReject.QuantityReject;
                    dt.Rows.Add(dr);
                }

                if (outsoleMaterialReject.RejectAssembly > 0)
                {
                    dr1["QuantityReject"] = outsoleMaterialReject.RejectAssembly;
                    dt1.Rows.Add(dr1);
                }
            }
            dtRejectAssemblyStockfit = dt1;
            e.Result = dt;
        }