示例#1
0
        private void btnCompleted_Click(object sender, RoutedEventArgs e)
        {
            DataRow dr = ((DataRowView)dgUpperComponent.CurrentItem).Row;

            if (dr == null)
            {
                return;
            }
            UpperComponentModel upperComponent = dr["UpperComponent"] as UpperComponentModel;

            if (upperComponent == null)
            {
                return;
            }
            if (upperComponent.UpperComponentName != "Reject")
            {
                dr["ActualDate"] = String.Format(new CultureInfo("en-US"), "{0:M/dd}", DateTime.Now);
            }
            for (int i = 0; i <= sizeRunList.Count - 1; i++)
            {
                SizeRunModel sizeRun = sizeRunList[i];
                dr[String.Format("Column{0}", i)] = sizeRun.Quantity;
            }
            dgUpperComponent.ItemsSource = null;
            dgUpperComponent.ItemsSource = dt.AsDataView();
        }
示例#2
0
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Confirm Save?", this.Title, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
            {
                return;
            }
            dt = ((DataView)dgUpperComponent.ItemsSource).ToTable();
            for (int r = 0; r <= dt.Rows.Count - 1; r = r + 2)
            {
                DataRow             dr             = dt.Rows[r];
                DataRow             dr1            = dt.Rows[r + 1];
                UpperComponentModel upperComponent = (UpperComponentModel)dr["UpperComponent"];
                if (upperComponent != null)
                {
                    int      upperComponentID = upperComponent.UpperComponentID;
                    string   actualDate       = dr["ActualDate"] as String;
                    DateTime dtActualDate     = TimeHelper.Convert(actualDate);
                    if (String.IsNullOrEmpty(actualDate) == false && dtActualDate != dtNothing)
                    {
                        UpperComponentRawMaterialModel upperComponentRawMaterialModel = new UpperComponentRawMaterialModel
                        {
                            ProductNo        = productNo,
                            UpperComponentID = upperComponentID,
                            ActualDate       = dtActualDate,
                        };

                        upperComponentRawMaterialToInsertList.Add(upperComponentRawMaterialModel);
                    }
                    for (int i = 0; i <= sizeRunList.Count - 1; i++)
                    {
                        string sizeNo         = sizeRunList[i].SizeNo;
                        int    quantity       = (Int32)dr[String.Format("Column{0}", i)];
                        int    quantityReject = (Int32)dr1[String.Format("Column{0}", i)];
                        if (quantity >= 0 && quantityReject >= 0)
                        {
                            UpperComponentMaterialModel model = new UpperComponentMaterialModel
                            {
                                ProductNo        = productNo,
                                UpperComponentID = upperComponentID,
                                SizeNo           = sizeNo,
                                Quantity         = quantity,
                                QuantityReject   = quantityReject,
                            };
                            upperComponentMaterialToInsertList.Add(model);
                        }
                    }
                }
            }
            if (threadInsert.IsBusy == false)
            {
                this.Cursor       = Cursors.Wait;
                btnSave.IsEnabled = false;
                threadInsert.RunWorkerAsync();
            }
        }
示例#3
0
        private void dgUpperComponent_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            if (e.Column.GetValue(TagProperty) == null)
            {
                return;
            }
            string sizeNo = e.Column.GetValue(TagProperty).ToString();

            if (sizeRunList.Select(s => s.SizeNo).Contains(sizeNo) == false)
            {
                return;
            }
            UpperComponentModel upperComponent = (UpperComponentModel)((DataRowView)e.Row.Item)["UpperComponent"];
            int qtyOld = 0;

            if (upperComponent.UpperComponentName != "Reject")
            {
                qtyOld = upperComponentMaterialList.Where(o => o.UpperComponentID == upperComponent.UpperComponentID && o.SizeNo == sizeNo).Sum(o => o.Quantity);
            }
            else if (upperComponent.UpperComponentName == "Reject")
            {
                qtyOld = upperComponentMaterialList.Where(o => o.UpperComponentID == upperComponent.UpperComponentID && o.SizeNo == sizeNo).Sum(o => o.QuantityReject);
            }
            int     qtyOrder   = sizeRunList.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity);
            TextBox txtCurrent = (TextBox)e.EditingElement;
            int     qtyNew     = 0;

            if (int.TryParse(txtCurrent.Text, out qtyNew) == true)
            {
                txtCurrent.Text = (qtyOld + qtyNew).ToString();
                if (qtyOld + qtyNew < 0)
                {
                    txtCurrent.Text = qtyOld.ToString();
                }
            }
        }
示例#4
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //if (bwLoad.IsBusy == false)
            //{
            //    this.Cursor = Cursors.Wait;
            //    bwLoad.RunWorkerAsync();
            //}

            DataTable dt = new DataTable();

            dt.Columns.Add("ProductNo", typeof(String));
            DataGridTextColumn column1 = new DataGridTextColumn();

            column1.Header     = "PO No.";
            column1.Binding    = new Binding("ProductNo");
            column1.FontWeight = FontWeights.Bold;
            dgInventory.Columns.Add(column1);
            Binding bindingWidth1 = new Binding();

            bindingWidth1.Source = column1;
            bindingWidth1.Path   = new PropertyPath("ActualWidth");
            ColumnDefinition cd1 = new ColumnDefinition();

            cd1.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1);
            gridTotal.ColumnDefinitions.Add(cd1);

            dt.Columns.Add("ArticleNo", typeof(String));
            DataGridTextColumn column1_1_1 = new DataGridTextColumn();

            column1_1_1.Header  = "Article No.";
            column1_1_1.Binding = new Binding("ArticleNo");
            //column1_1_1.FontWeight = FontWeights.Bold;
            dgInventory.Columns.Add(column1_1_1);
            Binding bindingWidth1_1_1 = new Binding();

            bindingWidth1_1_1.Source = column1_1_1;
            bindingWidth1_1_1.Path   = new PropertyPath("ActualWidth");
            ColumnDefinition cd1_1_1 = new ColumnDefinition();

            cd1_1_1.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1_1_1);
            gridTotal.ColumnDefinitions.Add(cd1_1_1);

            dt.Columns.Add("ETD", typeof(DateTime));
            DataGridTextColumn column1_1 = new DataGridTextColumn();

            column1_1.Header = "EFD";
            Binding binding = new Binding();

            binding.Path         = new PropertyPath("ETD");
            binding.StringFormat = "dd-MMM";
            column1_1.Binding    = binding;
            column1_1.FontWeight = FontWeights.Bold;
            dgInventory.Columns.Add(column1_1);
            Binding bindingWidth1_1 = new Binding();

            bindingWidth1_1.Source = column1_1;
            bindingWidth1_1.Path   = new PropertyPath("ActualWidth");
            ColumnDefinition cd1_1 = new ColumnDefinition();

            cd1_1.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1_1);
            gridTotal.ColumnDefinitions.Add(cd1_1);

            dt.Columns.Add("Quantity", typeof(Int32));
            DataGridTextColumn column1_2 = new DataGridTextColumn();

            column1_2.Header = "Quantity";
            Binding bindingQuantity = new Binding();

            bindingQuantity.Path = new PropertyPath("Quantity");
            //binding.StringFormat = "dd-MMM";
            column1_2.Binding = bindingQuantity;
            //column1_2.FontWeight = FontWeights.Bold;
            dgInventory.Columns.Add(column1_2);
            Binding bindingWidth1_2 = new Binding();

            bindingWidth1_2.Source = column1_2;
            bindingWidth1_2.Path   = new PropertyPath("ActualWidth");
            ColumnDefinition cd1_2 = new ColumnDefinition();

            cd1_2.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1_2);
            gridTotal.ColumnDefinitions.Add(cd1_2);

            //dt.Columns.Add("Release", typeof(Int32));
            //DataGridTextColumn column1_3 = new DataGridTextColumn();
            //column1_3.Header = "Release";
            //Binding bindingRelease = new Binding();
            //bindingRelease.Path = new PropertyPath("Release");
            ////binding.StringFormat = "dd-MMM";
            //column1_3.Binding = bindingRelease;
            ////column1_2.FontWeight = FontWeights.Bold;
            //dgInventory.Columns.Add(column1_3);
            //Binding bindingWidth1_3 = new Binding();
            //bindingWidth1_3.Source = column1_3;
            //bindingWidth1_3.Path = new PropertyPath("ActualWidth");
            //ColumnDefinition cd1_3 = new ColumnDefinition();
            //cd1_3.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1_3);
            //gridTotal.ColumnDefinitions.Add(cd1_3);

            for (int i = 0; i <= upperComponentList.Count - 1; i++)
            {
                UpperComponentModel upperComponent = upperComponentList[i];
                dt.Columns.Add(String.Format("Column{0}", i), typeof(Int32));
                DataGridTextColumn column = new DataGridTextColumn();
                //column.SetValue(TagProperty, sizeRun.SizeNo);
                column.Header  = upperComponent.UpperComponentName;
                column.Binding = new Binding(String.Format("Column{0}", i));
                dgInventory.Columns.Add(column);
                Binding bindingWidth = new Binding();
                bindingWidth.Source = column;
                bindingWidth.Path   = new PropertyPath("ActualWidth");
                ColumnDefinition cd = new ColumnDefinition();
                cd.SetBinding(ColumnDefinition.WidthProperty, bindingWidth);
                gridTotal.ColumnDefinitions.Add(cd);
            }

            dt.Columns.Add("Matching", typeof(Int32));
            DataGridTextColumn column2 = new DataGridTextColumn();

            column2.Header  = "Matching";
            column2.Binding = new Binding("Matching");
            dgInventory.Columns.Add(column2);
            Binding bindingWidth2 = new Binding();

            bindingWidth2.Source = column2;
            bindingWidth2.Path   = new PropertyPath("ActualWidth");
            ColumnDefinition cd2 = new ColumnDefinition();

            cd2.SetBinding(ColumnDefinition.WidthProperty, bindingWidth2);
            gridTotal.ColumnDefinitions.Add(cd2);

            foreach (string productNo in productNoList)
            {
                if (productNo == "105-5900")
                {
                }
                var upperComponentMaterialList_D1 = upperComponentMaterialList.Where(o => o.ProductNo == productNo).ToList();
                //List<OutsoleReleaseMaterialModel> outsoleReleaseMaterialList_D1 = outsoleReleaseMaterialList.Where(o => o.ProductNo == productNo).ToList();

                DataRow dr = dt.NewRow();
                dr["ProductNo"] = productNo;
                OrdersModel order = orderList.Where(o => o.ProductNo == productNo).FirstOrDefault();

                if (order != null)
                {
                    dr["ETD"]       = order.ETD;
                    dr["ArticleNo"] = order.ArticleNo;
                    dr["Quantity"]  = order.Quantity;
                }

                List <String> sizeNoList = upperComponentMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                int           qtyMaterialTotalToCheck = 0;

                for (int i = 0; i <= upperComponentList.Count - 1; i++)
                {
                    UpperComponentModel upperComponent = upperComponentList[i];
                    var outsoleMaterialList_D2         = upperComponentMaterialList_D1.Where(o => o.UpperComponentID == upperComponent.UpperComponentID).ToList();

                    int qtyMaterialTotal = 0;
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyMax = outsoleMaterialList_D2.Where(o => o.SizeNo == sizeNo).Sum(o => (o.Quantity - o.QuantityReject));
                        //int qtyRelease = outsoleReleaseMaterialList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity);

                        //int qtyMaterial = qtyMax - qtyRelease;
                        int qtyMaterial = qtyMax;
                        //if (qtyMaterial < 0)
                        //{
                        //    qtyMaterial = 0;
                        //}
                        //qtyMaterialTotal += qtyMaterial;
                        qtyMaterialTotal        += qtyMax;
                        qtyMaterialTotalToCheck += qtyMaterial;
                        //qtyReleaseTotal += qtyRelease;
                    }
                    //dr["Release"] = qtyReleaseTotal;
                    dr[String.Format("Column{0}", i)] = qtyMaterialTotal;
                }
                int qtyMatchingTotal = 0;
                foreach (string sizeNo in sizeNoList)
                {
                    int qtyMin = upperComponentMaterialList_D1.Where(o => o.SizeNo == sizeNo).Select(o => (o.Quantity - o.QuantityReject)).Min();
                    //int qtyRelease = outsoleReleaseMaterialList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity);
                    //int qtyMatching = qtyMin - qtyRelease;
                    int qtyMatching = qtyMin;
                    if (qtyMatching < 0)
                    {
                        qtyMatching = 0;
                    }
                    qtyMatchingTotal += qtyMatching;
                }
                dr["Matching"] = qtyMatchingTotal;
                if (qtyMaterialTotalToCheck != 0)
                {
                    dt.Rows.Add(dr);
                }
            }

            TextBlock lblTotal = new TextBlock();

            lblTotal.Text       = "TOTAL";
            lblTotal.Margin     = new Thickness(1, 0, 0, 0);
            lblTotal.FontWeight = FontWeights.Bold;
            Border bdrTotal = new Border();

            Grid.SetColumn(bdrTotal, 2);
            Grid.SetColumnSpan(bdrTotal, 3);
            bdrTotal.BorderThickness = new Thickness(1, 0, 1, 1);
            bdrTotal.BorderBrush     = Brushes.Black;
            bdrTotal.Child           = lblTotal;
            gridTotal.Children.Add(bdrTotal);

            TextBlock lblQuantityTotal = new TextBlock();

            lblQuantityTotal.Text       = dt.Compute("Sum(Quantity)", "").ToString();
            lblQuantityTotal.Margin     = new Thickness(1, 0, 0, 0);
            lblQuantityTotal.FontWeight = FontWeights.Bold;
            Border bdrQuantityTotal = new Border();

            Grid.SetColumn(bdrQuantityTotal, 5);
            bdrQuantityTotal.BorderThickness = new Thickness(0, 0, 1, 1);
            bdrQuantityTotal.BorderBrush     = Brushes.Black;
            bdrQuantityTotal.Child           = lblQuantityTotal;
            gridTotal.Children.Add(bdrQuantityTotal);
            dgInventory.ItemsSource = dt.AsDataView();

            //TextBlock lblReleaseTotal = new TextBlock();
            //lblReleaseTotal.Text = dt.Compute("Sum(Release)", "").ToString();
            //lblReleaseTotal.Margin = new Thickness(1, 0, 0, 0);
            //lblReleaseTotal.FontWeight = FontWeights.Bold;
            //Border bdrReleaseTotal = new Border();
            //Grid.SetColumn(bdrReleaseTotal, 6);
            //bdrReleaseTotal.BorderThickness = new Thickness(0, 0, 1, 1);
            //bdrReleaseTotal.BorderBrush = Brushes.Black;
            //bdrReleaseTotal.Child = lblReleaseTotal;
            //gridTotal.Children.Add(bdrReleaseTotal);
            //dgInventory.ItemsSource = dt.AsDataView();

            for (int i = 0; i <= upperComponentList.Count - 1; i++)
            {
                TextBlock lblUpperComponentTotal = new TextBlock();
                lblUpperComponentTotal.Text       = dt.Compute(String.Format("Sum(Column{0})", i), "").ToString();
                lblUpperComponentTotal.Margin     = new Thickness(1, 0, 0, 0);
                lblUpperComponentTotal.FontWeight = FontWeights.Bold;
                Border bdrUpperComponentTotal = new Border();
                Grid.SetColumn(bdrUpperComponentTotal, 6 + i);
                bdrUpperComponentTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                bdrUpperComponentTotal.BorderBrush     = Brushes.Black;
                bdrUpperComponentTotal.Child           = lblUpperComponentTotal;
                gridTotal.Children.Add(bdrUpperComponentTotal);
            }

            TextBlock lblMatchingTotal = new TextBlock();

            lblMatchingTotal.Text       = dt.Compute("Sum(Matching)", "").ToString();
            lblMatchingTotal.Margin     = new Thickness(1, 0, 0, 0);
            lblMatchingTotal.FontWeight = FontWeights.Bold;
            Border bdrMatchingTotal = new Border();

            Grid.SetColumn(bdrMatchingTotal, 6 + upperComponentList.Count());
            bdrMatchingTotal.BorderThickness = new Thickness(0, 0, 1, 1);
            bdrMatchingTotal.BorderBrush     = Brushes.Black;
            bdrMatchingTotal.Child           = lblMatchingTotal;
            gridTotal.Children.Add(bdrMatchingTotal);
            dgInventory.ItemsSource = dt.AsDataView();
        }
示例#5
0
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            upperComponentMaterialList = UpperComponentMaterialController.Select();
            //outsoleReleaseMaterialList = OutsoleReleaseMaterialController.SelectByOutsoleMaterial();
            // lay ra nhung order co outsolematerial roi.
            orderList                     = OrdersController.SelectByOutsoleMaterial();
            upperComponentList            = UpperComponentController.Select();
            upperComponentRawMaterialList = UpperComponentRawMaterialController.Select();


            List <String> outsoleCodeList = orderList.Select(o => o.OutsoleCode).Distinct().ToList();

            foreach (string outsoleCode in outsoleCodeList)
            {
                List <String> productNoList = orderList.Where(o => o.OutsoleCode == outsoleCode).Select(o => o.ProductNo).Distinct().ToList();
                List <UpperComponentMaterialModel> upperComponentMaterialList_D1 = upperComponentMaterialList.Where(o => productNoList.Contains(o.ProductNo)).ToList();
                List <Int32> upperComponentPerOutsole = upperComponentMaterialList_D1.Select(o => o.UpperComponentID).Distinct().ToList();
                upperComponentIDShowInGridviewList.AddRange(upperComponentPerOutsole);
            }
            upperComponentIDShowInGridviewList = upperComponentIDShowInGridviewList.Distinct().OrderBy(s => s).ToList();

            DataTable dt = new DataTable();

            Dispatcher.Invoke(new Action(() =>
            {
                dt.Columns.Add("OutsoleCode", typeof(String));
                DataGridTextColumn column1 = new DataGridTextColumn();
                column1.Header             = "O/S Code";
                column1.Binding            = new Binding("OutsoleCode");
                column1.FontWeight         = FontWeights.Bold;
                dgInventory.Columns.Add(column1);
                Binding bindingWidth1 = new Binding();
                bindingWidth1.Source  = column1;
                bindingWidth1.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cd1  = new ColumnDefinition();
                cd1.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1);
                gridTotal.ColumnDefinitions.Add(cd1);

                dt.Columns.Add("Quantity", typeof(Int32));
                DataGridTextColumn column2 = new DataGridTextColumn();
                column2.Header             = "Quantity";
                column2.Binding            = new Binding("Quantity");
                dgInventory.Columns.Add(column2);
                Binding bindingWidth2 = new Binding();
                bindingWidth2.Source  = column2;
                bindingWidth2.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cd2  = new ColumnDefinition();
                cd2.SetBinding(ColumnDefinition.WidthProperty, bindingWidth2);
                gridTotal.ColumnDefinitions.Add(cd2);

                dt.Columns.Add("Matching", typeof(Int32));
                DataGridTextColumn column3 = new DataGridTextColumn();
                column3.Header             = "Matching";
                column3.Binding            = new Binding("Matching");
                dgInventory.Columns.Add(column3);
                Binding bindingWidth3 = new Binding();
                bindingWidth3.Source  = column3;
                bindingWidth3.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cd3  = new ColumnDefinition();
                cd3.SetBinding(ColumnDefinition.WidthProperty, bindingWidth3);
                gridTotal.ColumnDefinitions.Add(cd3);


                dt.Columns.Add("RejectMaximum", typeof(Int32));
                DataGridTextColumn column4 = new DataGridTextColumn();
                column4.Header             = "Reject";
                column4.Binding            = new Binding("RejectMaximum");
                dgInventory.Columns.Add(column4);

                Binding bindingWidth4 = new Binding();
                bindingWidth4.Source  = column4;
                bindingWidth4.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cd4  = new ColumnDefinition();
                cd4.SetBinding(ColumnDefinition.WidthProperty, bindingWidth4);
                gridTotal.ColumnDefinitions.Add(cd4);

                dgInventory.FrozenColumnCount = 4;

                for (int i = 0; i < upperComponentIDShowInGridviewList.Count; i++)
                {
                    UpperComponentModel upperComponent = upperComponentList.Where(w => w.UpperComponentID == upperComponentIDShowInGridviewList[i]).FirstOrDefault();
                    if (upperComponent != null)
                    {
                        dt.Columns.Add(String.Format("Column{0}", upperComponentIDShowInGridviewList[i]), typeof(String));
                        DataGridTextColumn column = new DataGridTextColumn();
                        column.Width      = 30;
                        column.Binding    = new Binding(String.Format("Column{0}", upperComponentIDShowInGridviewList[i]));
                        column.FontWeight = FontWeights.Bold;

                        Style style = new Style(typeof(DataGridCell));
                        style.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center));
                        Setter setterBackground   = new Setter();
                        setterBackground.Property = DataGridCell.BackgroundProperty;
                        setterBackground.Value    = new Binding(String.Format("Column{0}Background", upperComponentIDShowInGridviewList[i]));
                        style.Setters.Add(setterBackground);

                        Setter setterToolTip   = new Setter();
                        setterToolTip.Property = DataGridCell.ToolTipProperty;
                        setterToolTip.Value    = new Binding(String.Format("Column{0}ToolTip", upperComponentIDShowInGridviewList[i]));
                        style.Setters.Add(setterToolTip);

                        column.CellStyle = style;

                        dgInventory.Columns.Add(column);
                        Binding bindingWidth = new Binding();
                        bindingWidth.Source  = column;
                        bindingWidth.Path    = new PropertyPath("ActualWidth");
                        ColumnDefinition cd  = new ColumnDefinition();
                        cd.SetBinding(ColumnDefinition.WidthProperty, bindingWidth);
                        gridTotal.ColumnDefinitions.Add(cd);

                        DataColumn columnBackground   = new DataColumn(String.Format("Column{0}Background", upperComponentIDShowInGridviewList[i]), typeof(SolidColorBrush));
                        DataColumn columnToolTip      = new DataColumn(String.Format("Column{0}ToolTip", upperComponentIDShowInGridviewList[i]), typeof(String));
                        columnBackground.DefaultValue = Brushes.White;
                        dt.Columns.Add(columnBackground);
                        dt.Columns.Add(columnToolTip);
                    }
                }
            }));


            foreach (string outsoleCode in outsoleCodeList)
            {
                DataRow dr = dt.NewRow();
                dr["OutsoleCode"] = outsoleCode;
                List <String> productNoList = orderList.Where(o => o.OutsoleCode == outsoleCode).Select(o => o.ProductNo).Distinct().ToList();
                List <UpperComponentMaterialModel> upperComponentMaterialList_D1 = upperComponentMaterialList.Where(o => productNoList.Contains(o.ProductNo)).ToList();
                //List<OutsoleReleaseMaterialModel> outsoleReleaseMaterialList_D1 = outsoleReleaseMaterialList.Where(o => productNoList.Contains(o.ProductNo)).ToList();
                List <Int32> upperComponentIDList = upperComponentMaterialList_D1.Select(o => o.UpperComponentID).Distinct().ToList();
                List <Int32> qtyTotalList         = new List <Int32>();
                List <Int32> qtyRejectList        = new List <Int32>();

                foreach (Int32 upperComponentID in upperComponentIDList)
                {
                    List <UpperComponentMaterialModel> upperComponentMaterialList_D2 = upperComponentMaterialList_D1.Where(o => o.UpperComponentID == upperComponentID).ToList();
                    int qtyTotal       = 0;
                    int qtyRejectTotal = 0;

                    foreach (string productNo in productNoList)
                    {
                        List <UpperComponentMaterialModel> upperComponentMaterialList_D3 = upperComponentMaterialList_D2.Where(o => o.ProductNo == productNo).ToList();
                        //List<OutsoleReleaseMaterialModel> outsoleReleaseMaterialList_D3 = outsoleReleaseMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();

                        List <String> sizeNoList = upperComponentMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                        foreach (string sizeNo in sizeNoList)
                        {
                            int qtyMax    = upperComponentMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity - o.QuantityReject);
                            int qtyReject = upperComponentMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(o => o.QuantityReject);
                            //int qtyRelease = outsoleReleaseMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity);
                            //int qty = qtyMax - qtyRelease;
                            int qty = qtyMax;
                            if (qty < 0)
                            {
                                qty = 0;
                            }
                            qtyTotal       += qty;
                            qtyRejectTotal += qtyReject;
                        }
                    }
                    dr[String.Format("Column{0}", upperComponentID)]           = "x";
                    dr[String.Format("Column{0}Background", upperComponentID)] = Brushes.Green;
                    var upperComponentName = upperComponentList.Where(w => w.UpperComponentID == upperComponentID).Select(s => s.UpperComponentName).FirstOrDefault();
                    if (upperComponentName != null)
                    {
                        dr[String.Format("Column{0}ToolTip", upperComponentID)] = string.Format("{0}{1}", upperComponentName, qtyRejectTotal > 0 ? String.Format("\nQtyReject: {0}", qtyRejectTotal.ToString()) : "");
                        //upperComponentName;
                    }
                    qtyTotalList.Add(qtyTotal);
                    qtyRejectList.Add(qtyRejectTotal);
                }

                int qtyMatchTotal = 0;
                foreach (string productNo in productNoList)
                {
                    List <UpperComponentMaterialModel> upperComponentMaterialList_D2 = upperComponentMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                    //List<OutsoleReleaseMaterialModel> outsoleReleaseMaterialList_D2 = outsoleReleaseMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                    List <String> sizeNoList = upperComponentMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyMin = upperComponentMaterialList_D2.Where(o => o.SizeNo == sizeNo).Select(o => o.Quantity - o.QuantityReject).Min();
                        //int qtyRelease = outsoleReleaseMaterialList_D2.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity);
                        //int qtyMatch = qtyMin - qtyRelease;
                        int qtyMatch = qtyMin;
                        if (qtyMatch < 0)
                        {
                            qtyMatch = 0;
                        }
                        qtyMatchTotal += qtyMatch;
                    }
                }

                if (qtyRejectList.Count > 0)
                {
                    dr["RejectMaximum"] = qtyRejectList.Max();
                }

                if (qtyTotalList.Count > 0)
                {
                    dr["Quantity"] = qtyTotalList.Max();
                    dr["Matching"] = qtyMatchTotal;
                    dt.Rows.Add(dr);
                }
            }

            Dispatcher.Invoke(new Action(() =>
            {
                dgInventory.ItemsSource = dt.AsDataView();

                TextBlock lblTotal  = new TextBlock();
                lblTotal.Text       = "TOTAL";
                lblTotal.Margin     = new Thickness(1, 0, 0, 0);
                lblTotal.FontWeight = FontWeights.Bold;
                Border bdrTotal     = new Border();
                Grid.SetColumn(bdrTotal, 1);
                Grid.SetColumnSpan(bdrTotal, 2);
                bdrTotal.BorderThickness = new Thickness(1, 0, 1, 1);
                bdrTotal.BorderBrush     = Brushes.Black;
                bdrTotal.Child           = lblTotal;
                gridTotal.Children.Add(bdrTotal);

                TextBlock lblQuantityTotal  = new TextBlock();
                lblQuantityTotal.Text       = dt.Compute("Sum(Quantity)", "").ToString();
                lblQuantityTotal.Margin     = new Thickness(1, 0, 0, 0);
                lblQuantityTotal.FontWeight = FontWeights.Bold;
                Border bdrQuantityTotal     = new Border();
                Grid.SetColumn(bdrQuantityTotal, 3);
                bdrQuantityTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                bdrQuantityTotal.BorderBrush     = Brushes.Black;
                bdrQuantityTotal.Child           = lblQuantityTotal;
                gridTotal.Children.Add(bdrQuantityTotal);
                dgInventory.ItemsSource = dt.AsDataView();

                TextBlock lblMatchingTotal  = new TextBlock();
                lblMatchingTotal.Text       = dt.Compute("Sum(Matching)", "").ToString();
                lblMatchingTotal.Margin     = new Thickness(1, 0, 0, 0);
                lblMatchingTotal.FontWeight = FontWeights.Bold;
                Border bdrMatchingTotal     = new Border();
                Grid.SetColumn(bdrMatchingTotal, 4);
                bdrMatchingTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                bdrMatchingTotal.BorderBrush     = Brushes.Black;
                bdrMatchingTotal.Child           = lblMatchingTotal;
                gridTotal.Children.Add(bdrMatchingTotal);
                dgInventory.ItemsSource = dt.AsDataView();

                TextBlock lblRejectMaximunTotal  = new TextBlock();
                lblRejectMaximunTotal.Text       = dt.Compute("Sum(RejectMaximum)", "").ToString();
                lblRejectMaximunTotal.Margin     = new Thickness(1, 0, 0, 0);
                lblRejectMaximunTotal.FontWeight = FontWeights.Bold;
                Border bdrRejectMaximumTotal     = new Border();
                Grid.SetColumn(bdrRejectMaximumTotal, 5);
                bdrRejectMaximumTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                bdrRejectMaximumTotal.BorderBrush     = Brushes.Black;
                bdrRejectMaximumTotal.Child           = lblRejectMaximunTotal;
                gridTotal.Children.Add(bdrRejectMaximumTotal);
                dgInventory.ItemsSource = dt.AsDataView();
            }));
        }