public void AddMore(OrdersModel order, List <SizeRunModel> sizeRunList, List <AssemblyReleaseModel> assemblyReleaseList,
                            List <SewingOutputModel> sewingOutputList, List <OutsoleOutputModel> outsoleOutputList)
        {
            if (order == null)
            {
                return;
            }

            StackPanel sp = new StackPanel();

            sp.Orientation = Orientation.Vertical;
            sp.Margin      = new Thickness(0, 10, 0, 0);

            Grid grid = new Grid();

            for (int i = 1; i <= 10; i++)
            {
                ColumnDefinition cd = new ColumnDefinition();
                cd.Width = new GridLength(1, GridUnitType.Auto);

                grid.ColumnDefinitions.Add(cd);
            }
            ColumnDefinition cd1 = new ColumnDefinition();

            cd1.Width = new GridLength(1, GridUnitType.Star);
            grid.ColumnDefinitions.Add(cd1);

            TextBlock lbl1 = new TextBlock();

            Grid.SetColumn(lbl1, 0);
            lbl1.Text = "PO No.:";
            lbl1.VerticalAlignment = VerticalAlignment.Bottom;


            TextBlock lbl1_1 = new TextBlock();

            Grid.SetColumn(lbl1_1, 1);
            lbl1_1.Margin            = new Thickness(5, 0, 0, 0);
            lbl1_1.MinWidth          = 33;
            lbl1_1.Text              = order.ProductNo;
            lbl1_1.FontWeight        = FontWeights.Bold;
            lbl1_1.VerticalAlignment = VerticalAlignment.Bottom;

            TextBlock lbl2 = new TextBlock();

            Grid.SetColumn(lbl2, 2);
            lbl2.Margin            = new Thickness(10, 0, 0, 0);
            lbl2.Text              = "Style:";
            lbl2.VerticalAlignment = VerticalAlignment.Bottom;

            TextBlock lbl3 = new TextBlock();

            Grid.SetColumn(lbl3, 3);
            lbl3.Margin            = new Thickness(5, 0, 0, 0);
            lbl3.MinWidth          = 33;
            lbl3.Text              = order.ShoeName;
            lbl3.FontWeight        = FontWeights.Bold;
            lbl3.VerticalAlignment = VerticalAlignment.Bottom;

            TextBlock lbl4 = new TextBlock();

            Grid.SetColumn(lbl4, 4);
            lbl4.Margin            = new Thickness(10, 0, 0, 0);
            lbl4.Text              = "Article No.:";
            lbl4.VerticalAlignment = VerticalAlignment.Bottom;


            TextBlock lbl5 = new TextBlock();

            Grid.SetColumn(lbl5, 5);
            lbl5.Margin            = new Thickness(5, 0, 0, 0);
            lbl5.MinWidth          = 33;
            lbl5.Text              = order.ArticleNo;
            lbl5.FontWeight        = FontWeights.Bold;
            lbl5.VerticalAlignment = VerticalAlignment.Bottom;

            TextBlock lbl5_1 = new TextBlock();

            Grid.SetColumn(lbl5_1, 6);
            lbl5_1.Margin            = new Thickness(10, 0, 0, 0);
            lbl5_1.Text              = "Last Code:";
            lbl5_1.VerticalAlignment = VerticalAlignment.Bottom;


            TextBlock lbl5_2 = new TextBlock();

            Grid.SetColumn(lbl5_2, 7);
            lbl5_2.Margin            = new Thickness(5, 0, 0, 0);
            lbl5_2.MinWidth          = 33;
            lbl5_2.Text              = order.LastCode;
            lbl5_2.FontWeight        = FontWeights.Bold;
            lbl5_2.VerticalAlignment = VerticalAlignment.Bottom;

            TextBlock lbl6 = new TextBlock();

            Grid.SetColumn(lbl6, 8);
            lbl6.Margin            = new Thickness(10, 0, 0, 0);
            lbl6.Text              = "Released Qty:";
            lbl6.VerticalAlignment = VerticalAlignment.Bottom;

            int qtyReleasedTotal = assemblyReleaseList.Where(a => a.ReportId != reportId).Sum(o => o.Quantity);

            TextBlock lbl7 = new TextBlock();

            Grid.SetColumn(lbl7, 9);
            lbl7.Margin            = new Thickness(5, 0, 0, 0);
            lbl7.MinWidth          = 33;
            lbl7.Text              = String.Format("{0}/{1}", qtyReleasedTotal, order.Quantity);
            lbl7.FontWeight        = FontWeights.Bold;
            lbl7.VerticalAlignment = VerticalAlignment.Bottom;

            Button btnRemove = new Button();

            Grid.SetColumn(btnRemove, 10);
            btnRemove.Content             = " X ";
            btnRemove.HorizontalAlignment = HorizontalAlignment.Right;
            btnRemove.Tag       = order.ProductNo;
            btnRemove.IsEnabled = false;
            if (account.AssemblyMaster == true)
            {
                btnRemove.IsEnabled = true;
            }
            btnRemove.Click += new RoutedEventHandler(btnRemove_Click);

            grid.Children.Add(lbl1);
            grid.Children.Add(lbl1_1);
            grid.Children.Add(lbl2);
            grid.Children.Add(lbl3);
            grid.Children.Add(lbl4);
            grid.Children.Add(lbl5);
            grid.Children.Add(lbl5_1);
            grid.Children.Add(lbl5_2);
            grid.Children.Add(lbl6);
            grid.Children.Add(lbl7);
            grid.Children.Add(btnRemove);

            List <Object> tags = new List <Object>();

            tags.Add(order.ProductNo);
            tags.Add(qtyReleasedTotal);
            DataTable dt = new DataTable();
            DataGrid  dg = new DataGrid();

            Grid.SetColumn(dg, 0);
            Grid.SetColumnSpan(dg, 6);
            Grid.SetRow(dg, 1);
            dg.Margin              = new Thickness(0, 5, 0, 0);
            dg.SelectionUnit       = DataGridSelectionUnit.CellOrRowHeader;
            dg.AutoGenerateColumns = false;
            dg.CanUserDeleteRows   = false;
            dg.Tag             = tags;
            dg.CellEditEnding += new EventHandler <DataGridCellEditEndingEventArgs>(dg_CellEditEnding);

            dt.Columns.Add("Cycle", typeof(Int32));
            DataGridTextColumn column1 = new DataGridTextColumn();

            column1.Header   = String.Format("{0}\n{1}\n{2}\n{3}\n{4}\n\n{5}", "Size", "Quantity", "Upper In", "Outsole In", "Current Matching", "Cycle");
            column1.MinWidth = 100;
            column1.Binding  = new Binding(String.Format("Cycle"));
            dg.Columns.Add(column1);
            int qtyTotal          = 0;
            int qtyUpperInTotal   = 0;
            int qtyOutsoleInTotal = 0;
            int qtyMatchTotal     = 0;

            for (int i = 0; i <= sizeRunList.Count - 1; i++)
            {
                dt.Columns.Add(String.Format("Column{0}", i), typeof(Int32));
                SizeRunModel sizeRun = sizeRunList[i];

                int qtyMatch = 0;
                //if (sewingOutputList.Where(o => o.SizeNo == sizeRun.SizeNo).Count() >= 1)
                //{
                int qtyUpperIn   = sewingOutputList.Where(o => o.SizeNo == sizeRun.SizeNo).Sum(o => o.Quantity);
                int qtyOutsoleIn = outsoleOutputList.Where(o => o.SizeNo == sizeRun.SizeNo).Sum(o => o.Quantity);
                int qtyReleased  = assemblyReleaseList.Where(o => o.SizeNo == sizeRun.SizeNo && o.ReportId != reportId).Sum(o => o.Quantity);
                qtyMatch = MatchingHelper.Calculate(qtyUpperIn, qtyOutsoleIn, sizeRun.SizeNo) - qtyReleased;
                if (qtyMatch < 0)
                {
                    qtyMatch = 0;
                }
                qtyTotal          += sizeRun.Quantity;
                qtyUpperInTotal   += qtyUpperIn;
                qtyOutsoleInTotal += qtyOutsoleIn;
                qtyMatchTotal     += qtyMatch;
                //}

                DataGridTextColumn column = new DataGridTextColumn();
                column.SetValue(TagProperty, new Int32[] { i, qtyMatch });
                column.Header   = String.Format("{0}\n({1})\n({2})\n({3})\n({4})\n\n{5}", sizeRun.SizeNo, sizeRun.Quantity, qtyUpperIn, qtyOutsoleIn, qtyMatch, "");
                column.MinWidth = 40;
                Binding binding = new Binding();
                binding.Path = new PropertyPath(String.Format("Column{0}", i));
                binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
                column.Binding = binding;
                dg.Columns.Add(column);
            }

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

            //column2.Header = String.Format("{0}\n({1})", "Total Qty", qtyMatchTotal);
            column2.Header     = String.Format("{0}\n({1})\n({2})\n({3})\n({4})\n\n{5}", "Total Qty", qtyTotal, qtyUpperInTotal, qtyOutsoleInTotal, qtyMatchTotal, "");
            column2.MinWidth   = 80;
            column2.Binding    = new Binding(String.Format("Total"));
            column2.FontWeight = FontWeights.Bold;
            column2.IsReadOnly = true;
            dg.Columns.Add(column2);

            List <Int32> cycleList = assemblyReleaseList.Where(o => o.ReportId == reportId).Select(o => o.Cycle).Distinct().OrderBy(o => o).ToList();

            foreach (int cycle in cycleList)
            {
                DataRow dr1 = dt.NewRow();
                dr1["Cycle"] = cycle.ToString();
                int qtyReleaseTotal = 0;
                for (int i = 0; i <= sizeRunList.Count - 1; i++)
                {
                    SizeRunModel sizeRun    = sizeRunList[i];
                    int          qtyRelease = assemblyReleaseList.Where(o => o.Cycle == cycle && o.SizeNo == sizeRun.SizeNo && o.ReportId == reportId).Sum(o => o.Quantity);
                    qtyReleaseTotal += qtyRelease;
                    dr1[String.Format("Column{0}", i)] = qtyRelease;
                }
                dr1["Total"] = qtyReleaseTotal;
                dt.Rows.Add(dr1);
            }

            dg.ItemsSource = dt.AsDataView();

            sp.Children.Add(grid);
            sp.Children.Add(dg);

            spMain.Children.Add(sp);

            svMain.ScrollToBottom();
        }
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            List <UpperWHInventoryDetailViewModel> upperWHInventoryDetailViewList = new List <UpperWHInventoryDetailViewModel>();
            DataTable dt = new UpperWHInventoryDataSet().Tables["UpperWHInventoryTable"];

            foreach (string productNo in productNoList)
            {
                DataRow dr = dt.NewRow();
                UpperWHInventoryDetailViewModel upperWHInventoryDetailView = new UpperWHInventoryDetailViewModel();
                dr["ProductNo"] = productNo;
                upperWHInventoryDetailView.ProductNo = productNo;
                OrdersModel order = orderList.Where(o => o.ProductNo == productNo).FirstOrDefault();
                if (order != null)
                {
                    upperWHInventoryDetailView.ShoeName  = order.ShoeName;
                    upperWHInventoryDetailView.ArticleNo = order.ArticleNo;
                    upperWHInventoryDetailView.ETD       = order.ETD;
                }
                int qtyUpperTotal   = 0;
                int qtyOutsoleTotal = 0;
                int qtyMatchTotal   = 0;
                int qtyQuantity     = order.Quantity;
                int qtyReleaseTotal = 0;
                List <AssemblyReleaseModel> assemblyReleaseList_D1 = assemblyReleaseList.Where(a => a.ProductNo == productNo).ToList();
                List <SewingOutputModel>    sewingOutputList_D1    = sewingOutputList.Where(s => s.ProductNo == productNo).ToList();
                List <OutsoleOutputModel>   outsoleOutputList_D1   = outsoleOutputList.Where(o => o.ProductNo == productNo).ToList();

                List <String> sizeNoList = sewingOutputList_D1.Select(s => s.SizeNo).Distinct().ToList();
                if (sizeNoList.Count == 0)
                {
                    sizeNoList = outsoleOutputList_D1.Select(o => o.SizeNo).Distinct().ToList();
                }
                foreach (string sizeNo in sizeNoList)
                {
                    int qtyRelease = assemblyReleaseList_D1.Where(a => a.SizeNo == sizeNo).Sum(a => a.Quantity);
                    int qtyUpper   = sewingOutputList_D1.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity)
                                     - qtyRelease;
                    int qtyOutsole = outsoleOutputList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity)
                                     - qtyRelease;
                    int qtyMatch =
                        MatchingHelper.Calculate(sewingOutputList_D1.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity),
                                                 outsoleOutputList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity), sizeNo)
                        - qtyRelease;
                    if (qtyUpper < 0)
                    {
                        qtyUpper = 0;
                    }
                    qtyUpperTotal += qtyUpper;
                    if (qtyOutsole < 0)
                    {
                        qtyOutsole = 0;
                    }
                    qtyOutsoleTotal += qtyOutsole;
                    if (qtyMatch < 0)
                    {
                        qtyMatch = 0;
                    }
                    qtyMatchTotal += qtyMatch;
                    if (qtyRelease < 0)
                    {
                        qtyRelease = 0;
                    }
                    qtyReleaseTotal += qtyRelease;
                }
                upperWHInventoryDetailView.Quantity        = qtyQuantity;
                upperWHInventoryDetailView.ReleaseQuantity = qtyReleaseTotal;
                upperWHInventoryDetailView.SewingOutput    = qtyUpperTotal;
                upperWHInventoryDetailView.OutsoleOutput   = qtyOutsoleTotal;
                upperWHInventoryDetailView.Matching        = qtyMatchTotal;
                dr["Quantity"]        = qtyQuantity;
                dr["ReleaseQuantity"] = qtyReleaseTotal;
                dr["SewingOutput"]    = qtyUpperTotal;
                dr["OutsoleOutput"]   = qtyOutsoleTotal;
                dr["Matching"]        = qtyMatchTotal;
                if (upperWHInventoryDetailView.SewingOutput != 0 || upperWHInventoryDetailView.OutsoleOutput != 0)
                {
                    upperWHInventoryDetailViewList.Add(upperWHInventoryDetailView);
                }
                dt.Rows.Add(dr);
            }
            e.Result = dt;
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            DataTable dt = new UpperWHInventoryDetailDataSet().Tables["UpperWHInventoryDetailTable"];

            assemblyMasterList  = AssemblyMasterController.Select();
            sewingOutputList    = SewingOutputController.SelectByAssemblyMaster();
            outsoleOutputList   = OutsoleOutputController.SelectByAssemblyMaster();
            assemblyReleaseList = AssemblyReleaseController.SelectByAssemblyMaster();
            orderList           = OrdersController.SelectByAssemblyMaster();

            List <UpperWHInventoryViewModel> upperWHInventoryViewList = new List <UpperWHInventoryViewModel>();

            assemblyLineList = assemblyMasterList.Where(a => String.IsNullOrEmpty(a.AssemblyLine) == false).Select(a => a.AssemblyLine).Distinct().OrderBy(l => l).ToList();

            // Total value
            //int upperTotal = 0;
            //int outsoleTotal = 0;
            //int matchingTotal = 0;
            // Sum value
            int upperSum, outsoleSum, matchingSum;

            foreach (string assemblyLine in assemblyLineList)
            {
                List <String> productNoList = assemblyMasterList.Where(a => a.AssemblyLine == assemblyLine).Select(o => o.ProductNo).OrderBy(l => l).Distinct().ToList();
                List <UpperWHInventoryDetailViewModel> upperWHInventoryDetailViewList = new List <UpperWHInventoryDetailViewModel>();
                foreach (string productNo in productNoList)
                {
                    UpperWHInventoryDetailViewModel upperWHInventoryDetailView = new UpperWHInventoryDetailViewModel();
                    OrdersModel order = orderList.Where(o => o.ProductNo == productNo).FirstOrDefault();
                    if (order != null)
                    {
                        upperWHInventoryDetailView.ProductNo = productNo;
                        upperWHInventoryDetailView.ShoeName  = order.ShoeName;
                        upperWHInventoryDetailView.ArticleNo = order.ArticleNo;
                    }
                    int qtyUpperTotal   = 0;
                    int qtyOutsoleTotal = 0;
                    int qtyMatchTotal   = 0;
                    int qtyQuantity     = order.Quantity;
                    int qtyReleaseTotal = 0;
                    List <AssemblyReleaseModel> assemblyReleaseList_D1 = assemblyReleaseList.Where(a => a.ProductNo == productNo).ToList();
                    List <SewingOutputModel>    sewingOutputList_D1    = sewingOutputList.Where(s => s.ProductNo == productNo).ToList();
                    List <OutsoleOutputModel>   outsoleOutputList_D1   = outsoleOutputList.Where(o => o.ProductNo == productNo).ToList();

                    List <String> sizeNoList = sewingOutputList_D1.Select(s => s.SizeNo).Distinct().ToList();
                    if (sizeNoList.Count == 0)
                    {
                        sizeNoList = outsoleOutputList_D1.Select(o => o.SizeNo).Distinct().ToList();
                    }
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyRelease = assemblyReleaseList_D1.Where(a => a.SizeNo == sizeNo).Sum(a => a.Quantity);
                        int qtyUpper   = sewingOutputList_D1.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity)
                                         - qtyRelease;
                        int qtyOutsole = outsoleOutputList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity)
                                         - qtyRelease;
                        int qtyMatch =
                            MatchingHelper.Calculate(sewingOutputList_D1.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity),
                                                     outsoleOutputList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity), sizeNo)
                            - qtyRelease;
                        if (qtyUpper < 0)
                        {
                            qtyUpper = 0;
                        }
                        qtyUpperTotal += qtyUpper;
                        if (qtyOutsole < 0)
                        {
                            qtyOutsole = 0;
                        }
                        qtyOutsoleTotal += qtyOutsole;
                        if (qtyMatch < 0)
                        {
                            qtyMatch = 0;
                        }
                        qtyMatchTotal += qtyMatch;
                        if (qtyRelease < 0)
                        {
                            qtyRelease = 0;
                        }
                        qtyReleaseTotal += qtyRelease;
                    }
                    upperWHInventoryDetailView.Quantity        = qtyQuantity;
                    upperWHInventoryDetailView.ReleaseQuantity = qtyReleaseTotal;
                    upperWHInventoryDetailView.SewingOutput    = qtyUpperTotal;
                    upperWHInventoryDetailView.OutsoleOutput   = qtyOutsoleTotal;
                    upperWHInventoryDetailView.Matching        = qtyMatchTotal;

                    //UpperWHInventoryViewModel upperWHInventoryView = new UpperWHInventoryViewModel
                    //{
                    //    AssemblyLine = assemblyLine,
                    //    ProductNoList = productNoList,
                    //    SewingOutput = qtyUpperTotal,
                    //    OutsoleOutput = qtyOutsoleTotal,
                    //    Matching = qtyMatchTotal,
                    //};
                    //upperWHInventoryViewList.Add(upperWHInventoryView);


                    if (upperWHInventoryDetailView.SewingOutput != 0 || upperWHInventoryDetailView.OutsoleOutput != 0)
                    {
                        upperWHInventoryDetailViewList.Add(upperWHInventoryDetailView);
                    }
                }

                Int32.TryParse(upperWHInventoryDetailViewList.Sum(o => o.SewingOutput).ToString(), out upperSum);
                Int32.TryParse(upperWHInventoryDetailViewList.Sum(o => o.OutsoleOutput).ToString(), out outsoleSum);
                Int32.TryParse(upperWHInventoryDetailViewList.Sum(o => o.Matching).ToString(), out matchingSum);

                //List<int> upperSumList = upperWHInventoryDetailViewList.Where(o => o.SewingOutput != 0).Select(p => p.SewingOutput).ToList();
                //List<int> ousoleSumList = upperWHInventoryDetailViewList.Where(o => o.OutsoleOutput != 0).Select(p => p.OutsoleOutput).ToList();
                //List<int> matchingSumList = upperWHInventoryDetailViewList.Where(o => o.Matching != 0).Select(p => p.Matching).ToList();

                foreach (UpperWHInventoryDetailViewModel print in upperWHInventoryDetailViewList)
                {
                    DataRow dr = dt.NewRow();
                    dr["ProductNo"]    = print.ProductNo;
                    dr["ShoeName"]     = print.ShoeName;
                    dr["ArticleNo"]    = print.ArticleNo;
                    dr["AssemblyLine"] = assemblyLine;
                    //dr["AssemblyLineSum"] = assemblyLine;
                    dr["Quantity"] = print.Quantity;
                    dr["Release"]  = print.ReleaseQuantity;
                    dr["Upper"]    = print.SewingOutput;
                    dr["OutSole"]  = print.OutsoleOutput;
                    dr["Matching"] = print.Matching;

                    //dr["UpperSum"] = upperWHInventoryDetailViewList.Sum(o => o.SewingOutput).ToString();
                    //dr["OutSoleSum"] = upperWHInventoryDetailViewList.Sum(o => o.OutsoleOutput).ToString();
                    //dr["MatchingSum"] = upperWHInventoryDetailViewList.Sum(o => o.Matching).ToString();
                    dr["UpperSum"]    = upperSum;
                    dr["OutSoleSum"]  = outsoleSum;
                    dr["MatchingSum"] = matchingSum;

                    dt.Rows.Add(dr);
                }
            }


            ReportDataSource rds = new ReportDataSource();

            rds.Name = "UpperWHInventoryDetail_DataSetV9";
            //rds.Name = "UpperWHInventoryDetailFinal";
            rds.Value = dt;
            //reportViewer.LocalReport.ReportPath = @"C:\Users\IT02\Documents\Visual Studio 2010\Projects\Saoviet Master Schedule Solution\MasterSchedule\Reports\DelayReport.rdlc";
            reportViewer.LocalReport.ReportPath = @"Reports\UpperWHInventoryDetailReport.rdlc";
            //reportViewer.LocalReport.ReportPath = @"Reports\UpperWHInventoryDetailReportV11.rdlc";
            reportViewer.LocalReport.DataSources.Add(rds);
            reportViewer.RefreshReport();
            this.Cursor = null;
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<UpperWHInventoryDetailViewModel> upperWHInventoryDetailViewList = new List<UpperWHInventoryDetailViewModel>();
            foreach (string productNo in productNoList)
            {
                UpperWHInventoryDetailViewModel upperWHInventoryDetailView = new UpperWHInventoryDetailViewModel();
                upperWHInventoryDetailView.ProductNo = productNo;
                OrdersModel order = orderList.Where(o => o.ProductNo == productNo).FirstOrDefault();
                if (order != null)
                {
                    upperWHInventoryDetailView.ShoeName = order.ShoeName;
                    upperWHInventoryDetailView.ArticleNo = order.ArticleNo;
                    upperWHInventoryDetailView.ETD = order.ETD;
                }
                int qtyUpperTotal = 0;
                int qtyOutsoleTotal = 0;
                int qtyMatchTotal = 0;
                int qtyQuantity = order.Quantity;
                int qtyReleaseTotal = 0;
                List<AssemblyReleaseModel> assemblyReleaseList_D1 = assemblyReleaseList.Where(a => a.ProductNo == productNo).ToList();
                List<SewingOutputModel> sewingOutputList_D1 = sewingOutputList.Where(s => s.ProductNo == productNo).ToList();
                List<OutsoleOutputModel> outsoleOutputList_D1 = outsoleOutputList.Where(o => o.ProductNo == productNo).ToList();

                List<String> sizeNoList = sewingOutputList_D1.Select(s => s.SizeNo).Distinct().ToList();
                if (sizeNoList.Count == 0)
                {
                    sizeNoList = outsoleOutputList_D1.Select(o => o.SizeNo).Distinct().ToList();
                }
                foreach (string sizeNo in sizeNoList)
                {
                    int qtyRelease = assemblyReleaseList_D1.Where(a => a.SizeNo == sizeNo).Sum(a => a.Quantity);
                    int qtyUpper = sewingOutputList_D1.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity)
                        - qtyRelease;
                    int qtyOutsole = outsoleOutputList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity)
                        - qtyRelease;
                    int qtyMatch =
                        MatchingHelper.Calculate(sewingOutputList_D1.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity),
                        outsoleOutputList_D1.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity), sizeNo)
                        - qtyRelease;
                    if (qtyUpper < 0)
                    {
                        qtyUpper = 0;
                    }
                    qtyUpperTotal += qtyUpper;
                    if (qtyOutsole < 0)
                    {
                        qtyOutsole = 0;
                    }
                    qtyOutsoleTotal += qtyOutsole;
                    if (qtyMatch < 0)
                    {
                        qtyMatch = 0;
                    }
                    qtyMatchTotal += qtyMatch;
                    if (qtyRelease < 0)
                    {
                        qtyRelease = 0;
                    }
                    qtyReleaseTotal += qtyRelease;
                }
                upperWHInventoryDetailView.Quantity = qtyQuantity;
                upperWHInventoryDetailView.ReleaseQuantity = qtyReleaseTotal;
                upperWHInventoryDetailView.SewingOutput = qtyUpperTotal;
                upperWHInventoryDetailView.OutsoleOutput = qtyOutsoleTotal;
                upperWHInventoryDetailView.Matching = qtyMatchTotal;
                if (upperWHInventoryDetailView.SewingOutput != 0 || upperWHInventoryDetailView.OutsoleOutput != 0)
                {
                    upperWHInventoryDetailViewList.Add(upperWHInventoryDetailView);
                }
            }

            dgInventory.ItemsSource = upperWHInventoryDetailViewList;
            lblQuantityTotal.Text = upperWHInventoryDetailViewList.Sum(u => u.Quantity).ToString();
            lblReleaseQuantityTotal.Text = upperWHInventoryDetailViewList.Sum(u => u.ReleaseQuantity).ToString();
            lblSewingOutput.Text = upperWHInventoryDetailViewList.Sum(u => u.SewingOutput).ToString();
            lblOutsoleOutput.Text = upperWHInventoryDetailViewList.Sum(u => u.OutsoleOutput).ToString();
            lblMatching.Text = upperWHInventoryDetailViewList.Sum(u => u.Matching).ToString();
        }
Exemplo n.º 5
0
        private void bwLoadData_DoWork(object sender, DoWorkEventArgs e)
        {
            assemblyMasterList  = AssemblyMasterController.Select();
            sewingOutputList    = SewingOutputController.SelectByAssemblyMaster();
            outsoleOutputList   = OutsoleOutputController.SelectByAssemblyMaster();
            assemblyReleaseList = AssemblyReleaseController.SelectByAssemblyMaster();
            orderList           = OrdersController.SelectByAssemblyMaster();

            List <UpperWHInventoryViewModel> upperWHInventoryViewList = new List <UpperWHInventoryViewModel>();

            assemblyLineList = assemblyMasterList.Where(a => String.IsNullOrEmpty(a.AssemblyLine) == false).Select(a => a.AssemblyLine).Distinct().OrderBy(l => l).ToList();
            foreach (string assemblyLine in assemblyLineList)
            {
                List <String> productNoList = assemblyMasterList.Where(a => a.AssemblyLine == assemblyLine).Select(o => o.ProductNo).Distinct().ToList();

                List <AssemblyReleaseModel> assemblyReleaseList_D1 = assemblyReleaseList.Where(a => productNoList.Contains(a.ProductNo) == true).ToList();
                List <SewingOutputModel>    sewingOutputList_D1    = sewingOutputList.Where(s => productNoList.Contains(s.ProductNo) == true).ToList();
                List <OutsoleOutputModel>   outsoleOutputList_D1   = outsoleOutputList.Where(o => productNoList.Contains(o.ProductNo) == true).ToList();

                int qtyUpperTotal   = 0;
                int qtyOutsoleTotal = 0;
                int qtyMatchTotal   = 0;
                foreach (string productNo in productNoList)
                {
                    List <AssemblyReleaseModel> assemblyReleaseList_D2 = assemblyReleaseList_D1.Where(a => a.ProductNo == productNo).ToList();
                    List <SewingOutputModel>    sewingOutputList_D2    = sewingOutputList_D1.Where(s => s.ProductNo == productNo).ToList();
                    List <OutsoleOutputModel>   outsoleOutputList_D2   = outsoleOutputList_D1.Where(o => o.ProductNo == productNo).ToList();

                    List <String> sizeNoList = sewingOutputList_D2.Select(s => s.SizeNo).Distinct().ToList();
                    if (sizeNoList.Count == 0)
                    {
                        sizeNoList = outsoleOutputList_D2.Select(o => o.SizeNo).Distinct().ToList();
                    }
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyRelease = assemblyReleaseList_D2.Where(a => a.SizeNo == sizeNo).Sum(a => a.Quantity);
                        int qtyUpper   = sewingOutputList_D2.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity)
                                         - qtyRelease;
                        int qtyOutsole = outsoleOutputList_D2.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity)
                                         - qtyRelease;
                        int qtyMatch =
                            MatchingHelper.Calculate(sewingOutputList_D2.Where(s => s.SizeNo == sizeNo).Sum(s => s.Quantity),
                                                     outsoleOutputList_D2.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity), sizeNo)
                            - qtyRelease;
                        if (qtyUpper < 0)
                        {
                            qtyUpper = 0;
                        }
                        qtyUpperTotal += qtyUpper;
                        if (qtyOutsole < 0)
                        {
                            qtyOutsole = 0;
                        }
                        qtyOutsoleTotal += qtyOutsole;
                        if (qtyMatch < 0)
                        {
                            qtyMatch = 0;
                        }
                        qtyMatchTotal += qtyMatch;
                    }
                }
                UpperWHInventoryViewModel upperWHInventoryView = new UpperWHInventoryViewModel
                {
                    AssemblyLine  = assemblyLine,
                    ProductNoList = productNoList,
                    SewingOutput  = qtyUpperTotal,
                    OutsoleOutput = qtyOutsoleTotal,
                    Matching      = qtyMatchTotal,
                };

                upperWHInventoryViewList.Add(upperWHInventoryView);
            }

            e.Result = upperWHInventoryViewList;
        }