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(); }
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(); } }
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(); } } }
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(); }
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(); })); }