private void bwLoadSupplier_DoWork(object sender, DoWorkEventArgs e)
 {
     outsoleSupplierList    = OutsoleSuppliersController.Select();
     orderList              = OrdersController.Select();
     outsoleRawMaterialList = OutsoleRawMaterialController.Select();
     outsoleMaterialList    = OutsoleMaterialController.Select();
 }
 private void bwLoadData_DoWork(object sender, DoWorkEventArgs e)
 {
     outsoleSupplierList             = OutsoleSuppliersController.Select();
     outsoleMaterialList             = OutsoleMaterialController.Select(productNo);
     sizeRunList                     = SizeRunController.Select(productNo);
     outsoleRawMaterialList          = OutsoleRawMaterialController.Select(productNo);
     outsoleMaterialRackPositionList = OutsoleMaterialRackPositionController.Select(productNo);
 }
예제 #3
0
 private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
 {
     sizeRunList               = SizeRunController.Select(productNo);
     outsoleMaterialList       = OutsoleMaterialController.Select(productNo);
     outsoleSupplierList       = OutsoleSuppliersController.Select();
     outsoleMaterialDetailList = OutsoleMaterialDetailController.Select(productNo);
     orderSearch               = OrdersController.SelectTop1(productNo);
     accountList               = AccountController.SelectAccount();
 }
예제 #4
0
        private void bwAddMore_DoWork(object sender, DoWorkEventArgs e)
        {
            string productNo = "";

            txtProductNo.Dispatcher.Invoke((Action)(() =>
            {
                productNo = txtProductNo.Text;
            }));
            orderSearch       = OrdersController.SelectTop1(productNo);
            sizeRunSearchList = SizeRunController.Select(productNo);
            outsoleReleaseMaterialSearchList = OutsoleReleaseMaterialController.Select(productNo);
            outsoleMaterialSearchList        = OutsoleMaterialController.Select(productNo);
        }
        private void bwInsert_DoWork(object sender, DoWorkEventArgs e)
        {
            // Delete RackPosition
            foreach (var rackModelDetele in outsoleMaterialRackPositionToDeleteList)
            {
                OutsoleMaterialRackPositionController.Delete(rackModelDetele);
            }

            // Update RackPosition
            foreach (var rackModelInsert in outsoleMaterialRackPositionToInsertList)
            {
                OutsoleMaterialRackPositionController.Insert(rackModelInsert);
            }

            foreach (OutsoleRawMaterialModel model in outsoleRawMaterialToInsertList)
            {
                OutsoleRawMaterialController.UpdateActualDate(model);
            }
            foreach (OutsoleMaterialModel model in outsoleMaterialToInsertList)
            {
                var osMaterialDB = OutsoleMaterialController.Select(model.ProductNo).Where(w => w.SizeNo == model.SizeNo && w.OutsoleSupplierId == model.OutsoleSupplierId).FirstOrDefault();
                // Insert
                if (osMaterialDB == null)
                {
                    OutsoleMaterialController.Insert(model);
                }

                // Update
                else
                {
                    // Update Quantity
                    if (osMaterialDB.Quantity != model.Quantity)
                    {
                        OutsoleMaterialController.Update(model, false, true, false);
                    }

                    // Update Reject
                    if (osMaterialDB.QuantityReject != model.QuantityReject)
                    {
                        OutsoleMaterialController.Update(model, true, false, false);
                    }

                    // Update Reject Assembly
                    if (osMaterialDB.RejectAssembly != model.RejectAssembly)
                    {
                        OutsoleMaterialController.Update(model, true, false, true);
                    }
                }
            }
        }
        private void bwLoadData_DoWork(object sender, DoWorkEventArgs e)
        {
            outsoleMaterialList        = OutsoleMaterialController.Select();
            outsoleReleaseMaterialList = OutsoleReleaseMaterialController.SelectByOutsoleMaterial();
            outsoleOutputList          = OutsoleOutputController.SelectByAssemblyMaster();
            outsoleMasterList          = OutsoleMasterController.Select();
            orderList           = OrdersController.Select();
            outsoleSupplierList = OutsoleSuppliersController.Select();
            assemblyReleaseList = AssemblyReleaseController.SelectByAssemblyMaster();
            sizeRunList         = SizeRunController.SelectIsEnable();

            inventoryByOSCodeList = ReportController.InventoryByOutsoleCode();
            inventoryByOSLineList = ReportController.InventoryByOutsoleLine();

            foreach (var inven in inventoryByOSCodeList)
            {
                inven.ProductNoList = orderList.Where(w => w.OutsoleCode == inven.OutsoleCode).Select(s => s.ProductNo).Distinct().ToList();
            }
            foreach (var inven in inventoryByOSLineList)
            {
                inven.ProductNoList = outsoleMasterList.Where(w => w.OutsoleLine == inven.OutsoleLine).Select(s => s.ProductNo).Distinct().ToList();
                inven.OutsoleCode   = inven.OutsoleLine;
            }
        }
예제 #7
0
        private void bwLoadData_DoWork(object sender, DoWorkEventArgs e)
        {
            outsoleMaterialList        = OutsoleMaterialController.Select();
            outsoleReleaseMaterialList = OutsoleReleaseMaterialController.SelectByOutsoleMaterial();
            outsoleOutputList          = OutsoleOutputController.SelectByAssemblyMaster();
            // lay ra nhung order co outsolematerial roi.
            orderList = OrdersController.SelectByOutsoleMaterial();

            outsoleSupplierList = OutsoleSuppliersController.Select();
            assemblyReleaseList = AssemblyReleaseController.SelectByAssemblyMaster();

            var outsoleWHInventoryViewList = new List <OutsoleWHInventoryViewModel>();
            // lay ra outsolecode tu orderlist(la nhung order co outsolematerial roi)
            var outsoleCodeList = orderList.Select(o => o.OutsoleCode).Distinct().ToList();

            foreach (string outsoleCode in outsoleCodeList)
            {
                var productNoList                 = orderList.Where(o => o.OutsoleCode == outsoleCode).Select(o => o.ProductNo).Distinct().ToList();
                var outsoleMaterialList_D1        = outsoleMaterialList.Where(o => productNoList.Contains(o.ProductNo)).ToList();
                var outsoleReleaseMaterialList_D1 = outsoleReleaseMaterialList.Where(o => productNoList.Contains(o.ProductNo)).ToList();
                var supplierIdList                = outsoleMaterialList_D1.Select(o => o.OutsoleSupplierId).Distinct().ToList();
                var qtyTotalList = new List <Int32>();

                var outsoleOutputList_D1   = outsoleOutputList.Where(o => productNoList.Contains(o.ProductNo) == true).ToList();
                var assemblyReleaseList_D1 = assemblyReleaseList.Where(a => productNoList.Contains(a.ProductNo) == true).ToList();

                // add Finished Outsole Column
                int qtyOutsoleTotal = 0;
                foreach (string productNo in productNoList)
                {
                    var sizeNoList             = outsoleMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                    var outsoleOutputList_D2   = outsoleOutputList_D1.Where(o => o.ProductNo == productNo).ToList();
                    var assemblyReleaseList_D2 = assemblyReleaseList_D1.Where(a => a.ProductNo == productNo).ToList();
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyRelease = assemblyReleaseList_D2.Where(a => a.SizeNo == sizeNo).Sum(a => a.Quantity);
                        int qtyOutsole = outsoleOutputList_D2.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity) - qtyRelease;
                        qtyOutsoleTotal += qtyOutsole;
                    }
                }
                foreach (Int32 supplierId in supplierIdList)
                {
                    var outsoleMaterialList_D2 = outsoleMaterialList_D1.Where(o => o.OutsoleSupplierId == supplierId).ToList();
                    int qtyTotal = 0;
                    foreach (string productNo in productNoList)
                    {
                        var outsoleMaterialList_D3        = outsoleMaterialList_D2.Where(o => o.ProductNo == productNo).ToList();
                        var outsoleReleaseMaterialList_D3 = outsoleReleaseMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                        var sizeNoList = outsoleMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                        foreach (string sizeNo in sizeNoList)
                        {
                            int qtyMax     = outsoleMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity - o.QuantityReject);
                            int qtyRelease = outsoleReleaseMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity);
                            int qty        = qtyMax - qtyRelease;
                            if (qty < 0)
                            {
                                qty = 0;
                            }
                            qtyTotal += qty;
                        }
                    }
                    qtyTotalList.Add(qtyTotal);
                }

                int qtyMatchTotal = 0;
                foreach (string productNo in productNoList)
                {
                    var outsoleMaterialList_D2        = outsoleMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                    var outsoleReleaseMaterialList_D2 = outsoleReleaseMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                    var sizeNoList = outsoleMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyMin     = outsoleMaterialList_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;
                        if (qtyMatch < 0)
                        {
                            qtyMatch = 0;
                        }
                        qtyMatchTotal += qtyMatch;
                    }
                }
                var outsoleWHInventoryView = new OutsoleWHInventoryViewModel
                {
                    OutsoleCode             = outsoleCode,
                    ProductNoList           = productNoList,
                    SupplierIdList          = supplierIdList,
                    Quantity                = qtyTotalList.Max(),
                    Matching                = qtyMatchTotal,
                    FinishedOutsoleQuantity = qtyOutsoleTotal,
                };
                if (outsoleWHInventoryView.Quantity != 0)
                {
                    outsoleWHInventoryViewList.Add(outsoleWHInventoryView);
                }
            }

            e.Result = outsoleWHInventoryViewList;
        }
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            outsoleSupplierList = OutsoleSuppliersController.Select();
            sizeRunList         = SizeRunController.SelectByOutsoleRawMaterial();
            sewingMasterList    = SewingMasterController.Select();
            outsoleMaterialList = OutsoleMaterialController.Select().Where(w => productNoList.Contains(w.ProductNo) && w.OutsoleSupplierId == supplierID).ToList();

            DataTable dt = new DataTable();

            Dispatcher.Invoke(new Action(() =>
            {
                dt.Columns.Add("ProductNo", typeof(String));
                DataGridTextColumn columnProductNo = new DataGridTextColumn();
                columnProductNo.Header             = "PO No.";

                //Style
                Style styleColumnProductNo = new Style(typeof(DataGridCell));

                Setter setterColumnProductNoForeground   = new Setter();
                setterColumnProductNoForeground.Property = DataGridCell.ForegroundProperty;
                setterColumnProductNoForeground.Value    = Brushes.Black;
                styleColumnProductNo.Setters.Add(setterColumnProductNoForeground);

                Setter setterColumnProductNoBackground   = new Setter();
                setterColumnProductNoBackground.Property = DataGridCell.BackgroundProperty;
                setterColumnProductNoBackground.Value    = new Binding("ProductNoBackground");
                styleColumnProductNo.Setters.Add(setterColumnProductNoBackground);

                columnProductNo.CellStyle = styleColumnProductNo;

                columnProductNo.Binding    = new Binding("ProductNo");
                columnProductNo.FontWeight = FontWeights.Bold;

                DataColumn columnProductNoBackground   = new DataColumn("ProductNoBackground", typeof(SolidColorBrush));
                columnProductNoBackground.DefaultValue = Brushes.Transparent;
                dt.Columns.Add(columnProductNoBackground);

                dgInventory.Columns.Add(columnProductNo);

                Binding bindingWidth1 = new Binding();
                bindingWidth1.Source  = columnProductNo;
                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("OrderETD", typeof(DateTime));
                DataGridTextColumn column1_1 = new DataGridTextColumn();
                column1_1.Header             = "Order EFD";
                // Style
                Style styleOrderETD = new Style(typeof(DataGridCell));
                styleOrderETD.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center));
                column1_1.CellStyle = styleOrderETD;

                Binding binding      = new Binding();
                binding.Path         = new PropertyPath("OrderETD");
                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("DeliveryETD", typeof(DateTime));
                DataGridTextColumn column1_1_A = new DataGridTextColumn();
                column1_1_A.Header             = "Delivery EFD";
                Binding bindingEDTSupp         = new Binding();
                bindingEDTSupp.Path            = new PropertyPath("DeliveryETD");
                bindingEDTSupp.StringFormat    = "dd-MMM";
                column1_1_A.Binding            = bindingEDTSupp;
                column1_1_A.FontWeight         = FontWeights.Bold;

                // Style
                Style styleDeliveryETD = new Style(typeof(DataGridCell));
                styleDeliveryETD.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center));
                column1_1_A.CellStyle = styleDeliveryETD;

                dgInventory.Columns.Add(column1_1_A);
                Binding bindingWidth1_1_A = new Binding();
                bindingWidth1_1_A.Source  = column1_1_A;
                bindingWidth1_1_A.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cd1_1_A  = new ColumnDefinition();
                cd1_1_A.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1_1_A);
                gridTotal.ColumnDefinitions.Add(cd1_1_A);


                dt.Columns.Add("SewingStartDate", typeof(DateTime));
                DataGridTextColumn column1_1_B  = new DataGridTextColumn();
                column1_1_B.Header              = "Sewing Start";
                Binding bindingSewingStart      = new Binding();
                bindingSewingStart.Path         = new PropertyPath("SewingStartDate");
                bindingSewingStart.StringFormat = "dd-MMM";
                column1_1_B.Binding             = bindingSewingStart;
                column1_1_B.FontWeight          = FontWeights.Bold;

                // Style
                Style styleSewingStart = new Style(typeof(DataGridCell));
                styleDeliveryETD.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center));
                column1_1_B.CellStyle = styleDeliveryETD;

                dgInventory.Columns.Add(column1_1_B);
                Binding bindingWidthSewingStart = new Binding();
                bindingWidthSewingStart.Source  = column1_1_B;
                bindingWidthSewingStart.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cdSewingStart  = new ColumnDefinition();
                cdSewingStart.SetBinding(ColumnDefinition.WidthProperty, bindingWidthSewingStart);
                gridTotal.ColumnDefinitions.Add(cdSewingStart);

                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");
                column1_3.Binding            = bindingRelease;
                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);


                dt.Columns.Add("QuantityDelivery", typeof(Int32));
                DataGridTextColumn column1_4 = new DataGridTextColumn();
                column1_4.Header             = "Delivery Qty";
                // Style
                Style styleQtyDelivery = new Style(typeof(DataGridCell));
                styleQtyDelivery.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center));
                Setter setterBackgroundDelivery   = new Setter();
                setterBackgroundDelivery.Property = DataGridCell.ForegroundProperty;
                setterBackgroundDelivery.Value    = new Binding("QuantityDeliveryForeground");
                styleQtyDelivery.Setters.Add(setterBackgroundDelivery);
                column1_4.CellStyle = styleQtyDelivery;

                Binding bindingQtyDelivery = new Binding();
                bindingQtyDelivery.Path    = new PropertyPath("QuantityDelivery");
                column1_4.Binding          = bindingQtyDelivery;
                dgInventory.Columns.Add(column1_4);
                Binding bindingWidth1_4 = new Binding();
                bindingWidth1_4.Source  = column1_4;
                bindingWidth1_4.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cd1_4  = new ColumnDefinition();
                cd1_4.SetBinding(ColumnDefinition.WidthProperty, bindingWidth1_4);
                gridTotal.ColumnDefinitions.Add(cd1_4);

                DataColumn columnDeliveryForeground   = new DataColumn("QuantityDeliveryForeground", typeof(SolidColorBrush));
                columnDeliveryForeground.DefaultValue = Brushes.Black;
                dt.Columns.Add(columnDeliveryForeground);

                dgInventory.FrozenColumnCount = 8;

                var regex  = new Regex("[a-z]|[A-Z]");
                sizeNoList = outsoleMaterialList.Select(s => s.SizeNo).Distinct().OrderBy(s => regex.IsMatch(s) ? Double.Parse(regex.Replace(s, "")) : Double.Parse(s)).ToList();
                for (int i = 0; i <= sizeNoList.Count - 1; i++)
                {
                    //OutsoleSuppliersModel outsoleSupplier = outsoleSupplierList[i];
                    string sizeNoBinding = sizeNoList[i].Contains(".") ? sizeNoList[i].Replace(".", "") : sizeNoList[i];
                    dt.Columns.Add(String.Format("Column{0}", sizeNoBinding), typeof(Int32));
                    DataGridTextColumn column = new DataGridTextColumn();
                    //column.SetValue(TagProperty, sizeRun.SizeNo);
                    column.Header  = sizeNoList[i];
                    column.Width   = 35;
                    column.Binding = new Binding(String.Format("Column{0}", sizeNoBinding));

                    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", sizeNoBinding));

                    Setter setterForeground   = new Setter();
                    setterForeground.Property = DataGridCell.ForegroundProperty;
                    setterForeground.Value    = new Binding(String.Format("Column{0}Foreground", sizeNoBinding));

                    Setter setterToolTip   = new Setter();
                    setterToolTip.Property = DataGridCell.ToolTipProperty;
                    setterToolTip.Value    = new Binding(String.Format("Column{0}ToolTip", sizeNoBinding));

                    style.Setters.Add(setterBackground);
                    style.Setters.Add(setterForeground);
                    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", sizeNoBinding), typeof(SolidColorBrush));
                    columnBackground.DefaultValue = Brushes.Transparent;

                    DataColumn columnForeground   = new DataColumn(String.Format("Column{0}Foreground", sizeNoBinding), typeof(SolidColorBrush));
                    columnForeground.DefaultValue = Brushes.Black;

                    DataColumn columnToolTip = new DataColumn(String.Format("Column{0}ToolTip", sizeNoBinding), typeof(String));

                    dt.Columns.Add(columnBackground);
                    dt.Columns.Add(columnForeground);
                    dt.Columns.Add(columnToolTip);
                }

                dt.Columns.Add("TotalBalance", typeof(Int32));
                DataGridTextColumn columnTotalBalance = new DataGridTextColumn();
                columnTotalBalance.Header             = "Total";
                columnTotalBalance.Binding            = new Binding("TotalBalance");
                dgInventory.Columns.Add(columnTotalBalance);
                Binding bindingWidthTotalBalance = new Binding();
                bindingWidthTotalBalance.Source  = columnTotalBalance;
                bindingWidthTotalBalance.Path    = new PropertyPath("ActualWidth");
                ColumnDefinition cdTotalBalance  = new ColumnDefinition();
                cdTotalBalance.SetBinding(ColumnDefinition.WidthProperty, bindingWidthTotalBalance);
                gridTotal.ColumnDefinitions.Add(cdTotalBalance);
            }));

            foreach (string productNo in productNoList)
            {
                var outsoleMaterialDetailList = OutsoleMaterialDetailController.Select(productNo).Where(w => w.OutsoleSupplierId == supplierID).ToList();
                var order = orderList.FirstOrDefault(f => f.ProductNo == productNo);

                var dr = dt.NewRow();

                if (order == null)
                {
                    continue;
                }
                dr["ProductNo"] = productNo;

                //HighLightPO
                int qtyOutsoleMaterialDetail = outsoleMaterialDetailList.Sum(s => s.Quantity);
                if (qtyOutsoleMaterialDetail >= order.Quantity)
                {
                    dr["ProductNoBackground"] = Brushes.Green;
                }
                else if (qtyOutsoleMaterialDetail != 0 && qtyOutsoleMaterialDetail < order.Quantity)
                {
                    dr["ProductNoBackground"] = Brushes.Yellow;
                }

                dr["ArticleNo"] = order.ArticleNo;
                dr["Quantity"]  = order.Quantity;
                dr["OrderETD"]  = order.ETD;

                var sewingMasterModel = sewingMasterList.Where(w => w.ProductNo == productNo).FirstOrDefault();
                if (sewingMasterModel != null)
                {
                    dr["SewingStartDate"] = sewingMasterModel.SewingStartDate;
                }

                var outsoleRawMaterialModel = outsoleRawMaterialList.Where(w => w.ProductNo == productNo && w.OutsoleSupplierId == supplierID).FirstOrDefault();
                var dtTemp = new DateTime(2000, 01, 01);
                if (outsoleRawMaterialModel != null)
                {
                    dr["DeliveryETD"] = outsoleRawMaterialModel.ETD;
                    dtTemp            = outsoleRawMaterialModel.ETD;
                }

                int qtyDelivery = 0;
                foreach (string sizeNo in sizeNoList)
                {
                    string sizeNoBinding          = sizeNo.Contains(".") ? sizeNo.Replace(".", "") : sizeNo;
                    var    outsoleMaterialRecieve = outsoleMaterialList.Where(w => w.ProductNo == productNo && w.SizeNo == sizeNo).FirstOrDefault();

                    int qtyDeliveryPerSize = 0;
                    int qtyRejectPerSize   = 0;
                    if (outsoleMaterialRecieve != null)
                    {
                        qtyDeliveryPerSize = outsoleMaterialRecieve.Quantity;
                        qtyRejectPerSize   = outsoleMaterialRecieve.QuantityReject;
                    }
                    int qtyPerSize = 0;
                    if (sizeRunList.Where(w => w.ProductNo == productNo).Count() > 0)
                    {
                        qtyPerSize = sizeRunList.Where(w => w.ProductNo == productNo && w.SizeNo == sizeNo).Select(s => s.Quantity).FirstOrDefault();
                    }

                    if (qtyRejectPerSize > 0)
                    {
                        dr[String.Format("Column{0}", sizeNoBinding)]           = qtyRejectPerSize;
                        dr[String.Format("Column{0}Foreground", sizeNoBinding)] = Brushes.Red;
                    }

                    int qtyBalance = qtyPerSize - qtyDeliveryPerSize;
                    if (qtyBalance > 0 && dtTemp != dtDefault)
                    {
                        dr[String.Format("Column{0}", sizeNoBinding)] = qtyBalance + qtyRejectPerSize;
                        var dtNow = DateTime.Now;
                        if (outsoleMaterialRecieve != null)
                        {
                            if (outsoleMaterialRecieve.ModifiedTime.Date < dtNow.Date)
                            {
                                dr[String.Format("Column{0}Background", sizeNoBinding)] = Brushes.Tomato;
                            }
                            if (outsoleMaterialRecieve.ModifiedTime.Date == dtNow.Date)
                            {
                                dr[String.Format("Column{0}Background", sizeNoBinding)] = Brushes.Green;
                            }
                            dr[String.Format("Column{0}Foreground", sizeNoBinding)] = Brushes.Black;
                        }

                        if (qtyRejectPerSize > 0)
                        {
                            dr[String.Format("Column{0}Background", sizeNoBinding)] = Brushes.Yellow;
                            dr[String.Format("Column{0}ToolTip", sizeNoBinding)]    = String.Format("Balance: {0}\nReject: {1}", qtyBalance, qtyRejectPerSize);
                        }
                    }
                    qtyDelivery += qtyDeliveryPerSize;
                }
                int totalRelease = outsoleReleaseMaterialList.Where(w => w.ProductNo == productNo).Sum(s => s.Quantity);

                if (order.Quantity != qtyDelivery && qtyDelivery != 0)
                {
                    dr["QuantityDeliveryForeground"] = Brushes.Red;
                }

                dr["Release"]          = totalRelease;
                dr["QuantityDelivery"] = qtyDelivery;


                int totalQty    = outsoleMaterialList.Where(w => w.ProductNo == productNo).Sum(s => s.Quantity);
                int totalReject = outsoleMaterialList.Where(w => w.ProductNo == productNo).Sum(s => s.QuantityReject);

                if (order.Quantity - totalQty + totalReject > 0)
                {
                    dr["TotalBalance"] = order.Quantity - totalQty + totalReject;
                }

                dt.Rows.Add(dr);
            }

            Dispatcher.Invoke(new Action(() =>
            {
                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, 5);
                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;
                lblQuantityTotal.TextAlignment = TextAlignment.Center;

                Border bdrQuantityTotal = new Border();
                Grid.SetColumn(bdrQuantityTotal, 7);
                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;
                lblReleaseTotal.TextAlignment = TextAlignment.Center;

                Border bdrReleaseTotal = new Border();
                Grid.SetColumn(bdrReleaseTotal, 8);
                bdrReleaseTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                bdrReleaseTotal.BorderBrush     = Brushes.Black;
                bdrReleaseTotal.Child           = lblReleaseTotal;
                gridTotal.Children.Add(bdrReleaseTotal);
                dgInventory.ItemsSource = dt.AsDataView();

                TextBlock lblQuantityDelivery     = new TextBlock();
                lblQuantityDelivery.Text          = dt.Compute("Sum(QuantityDelivery)", "").ToString();
                lblQuantityDelivery.Margin        = new Thickness(1, 0, 0, 0);
                lblQuantityDelivery.FontWeight    = FontWeights.Bold;
                lblQuantityDelivery.TextAlignment = TextAlignment.Center;

                Border bdrQuantityDeliveryTotal = new Border();
                Grid.SetColumn(bdrQuantityDeliveryTotal, 9);
                bdrQuantityDeliveryTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                bdrQuantityDeliveryTotal.BorderBrush     = Brushes.Black;
                bdrQuantityDeliveryTotal.Child           = lblQuantityDelivery;
                gridTotal.Children.Add(bdrQuantityDeliveryTotal);
                dgInventory.ItemsSource = dt.AsDataView();

                for (int i = 0; i <= sizeNoList.Count - 1; i++)
                {
                    Border brTemp = new Border();
                    Grid.SetColumn(brTemp, 10 + i);
                    gridTotal.Children.Add(brTemp);
                }

                TextBlock txtTotalBalance     = new TextBlock();
                txtTotalBalance.Text          = dt.Compute("Sum(TotalBalance)", "").ToString();
                txtTotalBalance.Margin        = new Thickness(1, 0, 0, 0);
                txtTotalBalance.FontWeight    = FontWeights.Bold;
                txtTotalBalance.TextAlignment = TextAlignment.Center;

                Border brTotalBalance = new Border();
                Grid.SetColumn(brTotalBalance, 11 + sizeNoList.Count());
                brTotalBalance.BorderThickness = new Thickness(1, 0, 1, 1);
                brTotalBalance.BorderBrush     = Brushes.Black;
                brTotalBalance.Child           = txtTotalBalance;
                gridTotal.Children.Add(brTotalBalance);
                dgInventory.ItemsSource = dt.AsDataView();
            }));
            dtExportExcel = dt;
        }
        private void bwLoadData_DoWork(object sender, DoWorkEventArgs e)
        {
            outsoleMaterialList        = OutsoleMaterialController.Select();
            outsoleReleaseMaterialList = OutsoleReleaseMaterialController.SelectByOutsoleMaterial();
            //lay ra nhung order co outsolematerial roi

            orderList              = OrdersController.SelectByOutsoleMaterial();
            outsoleSupplierList    = OutsoleSuppliersController.Select();
            outsoleRawMaterialList = OutsoleRawMaterialController.Select();

            var outsoleCodeList = orderList.Select(o => o.OutsoleCode).Distinct().ToList();

            // Group By ProductNo
            //var outsoleMaterialGroupBy_ProductNo = from p in outsoleMaterialList
            //                                       group p.Quantity by p.ProductNo into g
            //                                       select new { ProductNo = g.Key, Quantities = g.ToList() };

            //var productNoList_Test = outsoleMaterialGroupBy_ProductNo.OrderBy(o => o.ProductNo).Select(s => s.ProductNo).ToList();

            //// PO has Quantity > 0
            //var productNoList = outsoleMaterialGroupBy_ProductNo.Where(w => w.Quantities.Sum() > 0).OrderBy(o => o.ProductNo).Select(s => s.ProductNo).Distinct().ToList();
            //var outsoleCodeList = orderList.Where(w => productNoList.Contains(w.ProductNo)).Select(s => s.OutsoleCode).Distinct().ToList();

            foreach (string outsoleCode in outsoleCodeList)
            {
                var productNoList          = orderList.Where(w => w.OutsoleCode == outsoleCode).Select(s => s.ProductNo).Distinct().ToList();
                var outsoleMaterialList_D1 = outsoleMaterialList.Where(o => productNoList.Contains(o.ProductNo)).ToList();
                var supplierId_OutsoleCode = outsoleMaterialList_D1.Select(o => o.OutsoleSupplierId).Distinct().ToList();
                supplierIdShowList.AddRange(supplierId_OutsoleCode);
            }

            supplierIdShowList = supplierIdShowList.Distinct().OrderBy(s => s).ToList();

            var 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");

                //Style headerRejectStyle = new Style(typeof(DataGridColumnHeader));
                //Setter setterHRS = new Setter();
                //setterHRS.Property = DataGridColumnHeader.ToolTipProperty;
                //setterHRS.Value = "RejectListMax()";
                //headerRejectStyle.Setters.Add(setterHRS);
                //column4.HeaderStyle = headerRejectStyle;

                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 < supplierIdShowList.Count; i++)
                {
                    var outsoleSupplier = outsoleSupplierList.FirstOrDefault(f => f.OutsoleSupplierId == supplierIdShowList[i]);
                    if (outsoleSupplier != null)
                    {
                        dt.Columns.Add(String.Format("Column{0}", supplierIdShowList[i]), typeof(String));
                        DataGridTextColumn column = new DataGridTextColumn();

                        string supplierNameDisplay = outsoleSupplier.Name.Contains(" ") ? outsoleSupplier.Name.Replace(' ', '\n') : outsoleSupplier.Name;
                        column.Header = supplierNameDisplay;

                        //column.Width = 30;
                        column.Binding    = new Binding(String.Format("Column{0}", supplierIdShowList[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", supplierIdShowList[i]));
                        style.Setters.Add(setterBackground);

                        Setter setterToolTip   = new Setter();
                        setterToolTip.Property = DataGridCell.ToolTipProperty;
                        setterToolTip.Value    = new Binding(String.Format("Column{0}ToolTip", supplierIdShowList[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", supplierIdShowList[i]), typeof(SolidColorBrush));
                        DataColumn columnToolTip      = new DataColumn(String.Format("Column{0}ToolTip", supplierIdShowList[i]), typeof(String));
                        columnBackground.DefaultValue = Brushes.Transparent;

                        dt.Columns.Add(columnBackground);
                        dt.Columns.Add(columnToolTip);
                    }
                }
            }));

            // Load Data
            foreach (string outsoleCode in outsoleCodeList)
            {
                var dr = dt.NewRow();

                dr["OutsoleCode"] = outsoleCode;
                var productNoList_OutsoleCode     = orderList.Where(o => o.OutsoleCode == outsoleCode).Select(o => o.ProductNo).Distinct().ToList();
                var outsoleMaterialList_D1        = outsoleMaterialList.Where(o => productNoList_OutsoleCode.Contains(o.ProductNo)).ToList();
                var outsoleReleaseMaterialList_D1 = outsoleReleaseMaterialList.Where(o => productNoList_OutsoleCode.Contains(o.ProductNo)).ToList();
                var supplierIdList = outsoleMaterialList_D1.Select(o => o.OutsoleSupplierId).Distinct().ToList();
                var qtyTotalList   = new List <Int32>();
                var qtyRejectList  = new List <Int32>();

                // Create one more SupplierIDList
                foreach (Int32 supplierId in supplierIdList)
                {
                    var outsoleMaterialList_D2 = outsoleMaterialList_D1.Where(o => o.OutsoleSupplierId == supplierId).ToList();
                    int qtyTotal       = 0;
                    int qtyRejectTotal = 0;
                    foreach (string productNo in productNoList_OutsoleCode)
                    {
                        var outsoleMaterialList_D3        = outsoleMaterialList_D2.Where(o => o.ProductNo == productNo).ToList();
                        var outsoleReleaseMaterialList_D3 = outsoleReleaseMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                        var sizeNoList = outsoleMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                        foreach (string sizeNo in sizeNoList)
                        {
                            int qtyMax     = outsoleMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity - o.QuantityReject);
                            int qtyRelease = outsoleReleaseMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(o => o.Quantity);
                            int qtyReject  = outsoleMaterialList_D3.Where(o => o.SizeNo == sizeNo).Sum(s => s.QuantityReject);
                            int qty        = qtyMax - qtyRelease;
                            if (qty < 0)
                            {
                                qty = 0;
                            }
                            qtyTotal       += qty;
                            qtyRejectTotal += qtyReject;
                        }
                    }
                    dr[String.Format("Column{0}", supplierId)]           = "x";
                    dr[String.Format("Column{0}Background", supplierId)] = Brushes.Green;
                    //var suppName = outsoleSupplierList.Where(w => w.OutsoleSupplierId == supplierId).Select(s => s.Name).FirstOrDefault();
                    var suppName = outsoleSupplierList.FirstOrDefault(f => f.OutsoleSupplierId == supplierId).Name;
                    if (suppName != null)
                    {
                        //string toolTipDisplay   = string.Format("{0}\n{1}", suppName, qtyRejectTotal.ToString());
                        //string toolTipShow      = string.Format("Supplier: {0}\nQuantity Delivery {1}", suppName, qtyTotal.ToString());

                        dr[String.Format("Column{0}ToolTip", supplierId)] =
                            string.Format("{0}{1}", suppName, qtyRejectTotal > 0 ? String.Format("\nQtyReject: {0}", qtyRejectTotal.ToString()) : "");
                        //suppName + "/n" + "Qty Reject: " + qtyRejectTotal.ToString();
                    }
                    qtyTotalList.Add(qtyTotal);
                    qtyRejectList.Add(qtyRejectTotal);
                }

                int qtyMatchTotal = 0;
                foreach (string productNo in productNoList_OutsoleCode)
                {
                    var outsoleMaterialList_D2        = outsoleMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                    var outsoleReleaseMaterialList_D2 = outsoleReleaseMaterialList_D1.Where(o => o.ProductNo == productNo).ToList();
                    var sizeNoList = outsoleMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyMin     = outsoleMaterialList_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;
                        if (qtyMatch < 0)
                        {
                            qtyMatch = 0;
                        }
                        qtyMatchTotal += qtyMatch;
                    }
                }

                //if (qtyTotalList.Sum() == 0 && qtyMatchTotal == 0 && qtyRejectList.Sum() == 0)
                //    continue;

                dr["RejectMaximum"] = qtyRejectList.Max();
                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();

                TextBlock lblTemporary      = new TextBlock();
                lblTemporary.Text           = dt.Compute("Sum(Matching)", "").ToString();
                lblTemporary.Margin         = new Thickness(2, 2, 2, 2);
                lblTemporary.FontWeight     = FontWeights.Bold;
                Border bdrMatching          = new Border();
                bdrMatching.BorderBrush     = Brushes.Black;
                bdrMatching.BorderThickness = new Thickness(1, 1, 1, 1);
                bdrMatching.Child           = lblTemporary;
            }));
        }
예제 #10
0
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            orderList                   = OrdersController.Select();
            rawMaterialList             = RawMaterialController.Select();
            sewingMasterList            = SewingMasterController.Select();
            outsoleMasterList           = OutsoleMasterController.Select();
            outsoleRawMaterialList      = OutsoleRawMaterialController.Select();
            outsoleReleaseMaterialList  = OutsoleReleaseMaterialController.SelectByOutsoleMaster();
            productionMemoList          = ProductionMemoController.Select();
            outsoleMaterialList         = OutsoleMaterialController.Select();
            rawMaterialViewModelNewList = RawMaterialController.Select_1();

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

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

            foreach (OutsoleMasterModel outsoleMaster in outsoleMasterList)
            {
                OutsoleMasterExportViewModel outsoleMasterExportView = new OutsoleMasterExportViewModel();
                outsoleMasterExportView.Sequence  = outsoleMaster.Sequence;
                outsoleMasterExportView.ProductNo = outsoleMaster.ProductNo;
                OrdersModel order  = orderList.FirstOrDefault(f => f.ProductNo == outsoleMaster.ProductNo);
                string      memoId = "";
                if (order != null)
                {
                    outsoleMasterExportView.Country     = order.Country;
                    outsoleMasterExportView.ShoeName    = order.ShoeName;
                    outsoleMasterExportView.ArticleNo   = order.ArticleNo;
                    outsoleMasterExportView.OutsoleCode = order.OutsoleCode;
                    outsoleMasterExportView.PatternNo   = order.PatternNo;
                    outsoleMasterExportView.Quantity    = order.Quantity;
                    outsoleMasterExportView.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";
                        }
                    }
                    outsoleMasterExportView.MemoId = memoId;
                }

                //MaterialArrivalViewModel materialArrivalOutsole = MaterialArrival(order.ProductNo, materialIdOutsoleArray);
                //outsoleMasterExportView.IsOutsoleMatsArrivalOk = false;
                //if (materialArrivalOutsole != null)
                //{
                //    outsoleMasterExportView.OutsoleMatsArrival = String.Format(new CultureInfo("en-US"), "{0:dd-MMM}", materialArrivalOutsole.Date);
                //    outsoleMasterExportView.IsOutsoleMatsArrivalOk = materialArrivalOutsole.IsMaterialArrivalOk;
                //}

                // Update follow OutsoleRawMaterial
                //var osRawMaterial = outsoleRawMaterialList.Where(w => w.ProductNo == order.ProductNo).ToList();
                //var actualDateList = osRawMaterial.Select(s => s.ActualDate).ToList();
                //outsoleMasterExportView.IsOutsoleMatsArrivalOk = false;

                //if (actualDateList.Count() > 0 && actualDateList.Contains(dtDefault) == false)
                //{
                //    outsoleMasterExportView.OutsoleMatsArrival = String.Format(new CultureInfo("en-US"), "{0:dd-MMM}", actualDateList.Max());
                //    outsoleMasterExportView.IsOutsoleMatsArrivalOk = true;
                //}
                //else
                //{
                //    var etdDateList = osRawMaterial.Select(s => s.ETD).ToList();
                //    if (etdDateList.Count() > 0)
                //    {
                //        outsoleMasterExportView.OutsoleMatsArrival = String.Format(new CultureInfo("en-US"), "{0:dd-MMM}", etdDateList.Max());
                //    }
                //}
                outsoleMasterExportView.IsOutsoleMatsArrivalOk = false;
                var rawMaterialViewModelNew = rawMaterialViewModelNewList.FirstOrDefault(f => f.ProductNo == order.ProductNo);
                if (String.IsNullOrEmpty(rawMaterialViewModelNew.OUTSOLE_Remarks) &&
                    !String.IsNullOrEmpty(rawMaterialViewModelNew.OUTSOLE_ActualDate))
                {
                    outsoleMasterExportView.OutsoleMatsArrival     = rawMaterialViewModelNew.OUTSOLE_ActualDate;
                    outsoleMasterExportView.IsOutsoleMatsArrivalOk = true;
                }
                else
                {
                    outsoleMasterExportView.OutsoleMatsArrival = rawMaterialViewModelNew.OUTSOLE_ETD;
                }


                outsoleMasterExportView.OutsoleLine       = outsoleMaster.OutsoleLine;
                outsoleMasterExportView.OutsoleStartDate  = outsoleMaster.OutsoleStartDate;
                outsoleMasterExportView.OutsoleFinishDate = outsoleMaster.OutsoleFinishDate;
                outsoleMasterExportView.OutsoleQuota      = outsoleMaster.OutsoleQuota;
                outsoleMasterExportView.OutsoleBalance    = outsoleMaster.OutsoleBalance;

                //RawMaterialModel outsoleRawMaterial = rawMaterialList.FirstOrDefault(f => f.ProductNo == outsoleMaster.ProductNo && materialIdOutsoleArray.Contains(f.MaterialTypeId));
                //if (outsoleRawMaterial != null)
                //{
                //    outsoleMasterExportView.OutsoleWHBalance = outsoleRawMaterial.Remarks;
                //}
                //else
                //{
                //    outsoleMasterExportView.OutsoleWHBalance = "";
                //}

                // Load Outsole_Remarks from OutsoleMaterial
                var outsoleMaterial_PO      = outsoleMaterialList.Where(w => w.ProductNo == order.ProductNo).ToList();
                var osMaterialSumBySupplier = outsoleMaterial_PO.GroupBy(
                    g => g.OutsoleSupplierId)
                                              .Select(s => new
                {
                    PO             = order.ProductNo,
                    Supplier       = s.Key,
                    ActualDelivery = outsoleMaterial_PO.Where(w => w.OutsoleSupplierId == s.Key)
                                     .Sum(su => su.Quantity - su.QuantityReject)
                }).ToList();

                // if pot no one delivery. not show the balance quantity.
                if (osMaterialSumBySupplier.Count > 0 && order.Quantity - osMaterialSumBySupplier.Min(m => m.ActualDelivery) > 0)
                {
                    // show the balance
                    outsoleMasterExportView.OutsoleWHBalance = (order.Quantity - osMaterialSumBySupplier.Min(m => m.ActualDelivery)).ToString();
                    // if no one delivery, show blank
                    if (outsoleMaterial_PO.Sum(s => s.Quantity) == 0)
                    {
                        outsoleMasterExportView.OutsoleWHBalance = "";
                    }
                }

                SewingMasterModel sewingMaster = sewingMasterList.FirstOrDefault(f => f.ProductNo == outsoleMaster.ProductNo);
                if (sewingMaster != null)
                {
                    outsoleMasterExportView.SewingStartDate  = sewingMaster.SewingStartDate;
                    outsoleMasterExportView.SewingFinishDate = sewingMaster.SewingFinishDate;
                    outsoleMasterExportView.SewingQuota      = sewingMaster.SewingQuota;
                    outsoleMasterExportView.SewingBalance    = sewingMaster.SewingBalance;
                }
                else
                {
                    outsoleMasterExportView.SewingStartDate  = dtDefault;
                    outsoleMasterExportView.SewingFinishDate = dtDefault;
                    outsoleMasterExportView.SewingQuota      = 0;
                    outsoleMasterExportView.SewingBalance    = "";
                }

                List <OutsoleReleaseMaterialModel> outsoleReleaseMaterialList_D1 = outsoleReleaseMaterialList.Where(o => o.ProductNo == outsoleMaster.ProductNo).ToList();
                int qtyReleased = outsoleReleaseMaterialList_D1.Sum(o => o.Quantity);
                outsoleMasterExportView.ReleasedQuantity = qtyReleased.ToString();
                if (qtyReleased <= 0)
                {
                    outsoleMasterExportView.ReleasedQuantity = "";
                }
                if (qtyReleased >= outsoleMasterExportView.Quantity && outsoleReleaseMaterialList_D1.Count > 0)
                {
                    DateTime releasedDate = outsoleReleaseMaterialList_D1.FirstOrDefault().ModifiedTime;
                    outsoleMasterExportView.ReleasedQuantity = string.Format("{0:M/d}", releasedDate);
                }

                outsoleMasterExportViewList.Add(outsoleMasterExportView);
            }
        }
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            Dispatcher.Invoke(new Action(() =>
            {
                lblStatus.Text = String.Format("Creating Columns");
            }));

            outsoleMaterialList        = OutsoleMaterialController.Select();
            outsoleReleaseMaterialList = OutsoleReleaseMaterialController.SelectByOutsoleMaterial();
            supplierList = OutsoleSuppliersController.Select();
            ordersList   = OrdersController.Select();
            sizeRunList  = SizeRunController.SelectIsEnable();

            osDeliverySummaryList = ReportController.GetOSDeliverySummary();

            var productNoList   = ordersList.Select(s => s.ProductNo).Distinct().ToList();
            var outsoleCodeList = osDeliverySummaryList.Select(s => s.OutsoleCode).Distinct().ToList();

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

            Dispatcher.Invoke(new Action(() =>
            {
                // Column OutsoleCode
                dt.Columns.Add("OutsoleCode", typeof(String));
                DataGridTemplateColumn colOutsoleCode = new DataGridTemplateColumn();
                colOutsoleCode.Header       = String.Format("Outsole Code");
                DataTemplate templateOSCode = new DataTemplate();
                FrameworkElementFactory tblOSCodeFactory = new FrameworkElementFactory(typeof(TextBlock));
                templateOSCode.VisualTree = tblOSCodeFactory;
                tblOSCodeFactory.SetValue(TextBlock.TextProperty, "");
                tblOSCodeFactory.SetBinding(TextBlock.TextProperty, new Binding(String.Format("OutsoleCode")));
                tblOSCodeFactory.SetValue(TextBlock.FontWeightProperty, FontWeights.SemiBold);
                tblOSCodeFactory.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblOSCodeFactory.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colOutsoleCode.CellTemplate            = templateOSCode;
                colOutsoleCode.ClipboardContentBinding = new Binding(String.Format("OutsoleCode"));
                dgWHDelivery.Columns.Add(colOutsoleCode);

                // Column OutsoleCode
                dt.Columns.Add("OrderQuantity", typeof(String));
                DataGridTemplateColumn colOrderQty = new DataGridTemplateColumn();
                colOrderQty.Header                 = String.Format("Order Quantity");
                DataTemplate templateOrderQty      = new DataTemplate();
                FrameworkElementFactory tblOderQty = new FrameworkElementFactory(typeof(TextBlock));
                templateOrderQty.VisualTree        = tblOderQty;
                tblOderQty.SetValue(TextBlock.TextProperty, "");
                tblOderQty.SetBinding(TextBlock.TextProperty, new Binding(String.Format("OrderQuantity")));
                tblOderQty.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblOderQty.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colOrderQty.CellTemplate            = templateOrderQty;
                colOrderQty.ClipboardContentBinding = new Binding(String.Format("OrderQuantity"));
                dgWHDelivery.Columns.Add(colOrderQty);

                // Column WHQuantity
                dt.Columns.Add("WHQuantity", typeof(String));
                DataGridTemplateColumn colWHQuantity = new DataGridTemplateColumn();
                colWHQuantity.Header                  = String.Format("WH Quantity");
                DataTemplate templateWHQuantity       = new DataTemplate();
                FrameworkElementFactory tblWHQuantity = new FrameworkElementFactory(typeof(TextBlock));
                templateWHQuantity.VisualTree         = tblWHQuantity;
                tblWHQuantity.SetBinding(TextBlock.TextProperty, new Binding(String.Format("WHQuantity")));
                tblWHQuantity.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                tblWHQuantity.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                colWHQuantity.CellTemplate            = templateWHQuantity;
                colWHQuantity.ClipboardContentBinding = new Binding(String.Format("WHQuantity"));
                dgWHDelivery.Columns.Add(colWHQuantity);

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

                // Column Matching
                dt.Columns.Add("Matching", typeof(String));
                DataGridTemplateColumn colMatching = new DataGridTemplateColumn();
                colMatching.Header                  = String.Format("Matching");
                DataTemplate templateMatching       = new DataTemplate();
                FrameworkElementFactory tblMatching = new FrameworkElementFactory(typeof(TextBlock));
                templateMatching.VisualTree         = tblMatching;
                tblMatching.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Matching")));
                tblMatching.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 0, 0));
                tblMatching.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
                colMatching.CellTemplate            = templateMatching;
                colMatching.ClipboardContentBinding = new Binding(String.Format("Matching"));
                dgWHDelivery.Columns.Add(colMatching);

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

                // Column Suppliers
                int maxNumberOfSupplier = osDeliverySummaryList.Max(m => m.NoOfSupp);
                for (int i = 0; i < maxNumberOfSupplier; i++)
                {
                    dt.Columns.Add(String.Format("Column{0}", i), typeof(String));
                    dt.Columns.Add(String.Format("ColumnSupplierID{0}", i), typeof(Int32));
                    DataGridTemplateColumn colSupplier = new DataGridTemplateColumn();
                    colSupplier.Header                  = String.Format("Supplier {0}", i + 1);
                    DataTemplate templateSupplier       = new DataTemplate();
                    FrameworkElementFactory tblSupplier = new FrameworkElementFactory(typeof(TextBlock));
                    templateSupplier.VisualTree         = tblSupplier;
                    tblSupplier.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Column{0}", i)));
                    tblSupplier.SetValue(TextBlock.PaddingProperty, new Thickness(3, 3, 3, 3));
                    tblSupplier.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);

                    colSupplier.CellTemplate            = templateSupplier;
                    colSupplier.ClipboardContentBinding = new Binding(String.Format("Column{0}", i));
                    dgWHDelivery.Columns.Add(colSupplier);
                }
            }));

            // Binding Data
            int indexProgressBar = 1;

            Dispatcher.Invoke(new Action(() => {
                progressBar.Maximum = outsoleCodeList.Count();
            }));
            int totalQtyOrder = 0, totalQtyWH = 0, totalQtyReject = 0, totalQtyMatch = 0, totalQtyRelease = 0;

            foreach (var outsoleCode in outsoleCodeList)
            {
                DataRow dr = dt.NewRow();

                var osDeliveryByOScode = osDeliverySummaryList.Where(w => w.OutsoleCode == outsoleCode).ToList();

                dr["OutsoleCode"]   = outsoleCode;
                dr["OrderQuantity"] = string.Format("{0:#,0}", osDeliveryByOScode.Max(m => m.QtyOrder));
                dr["WHQuantity"]    = string.Format("{0:#,0}", osDeliveryByOScode.Max(m => m.QtyWH));
                dr["Reject"]        = string.Format("{0:#,0}", osDeliveryByOScode.Max(m => m.QtyReject));
                dr["Matching"]      = string.Format("{0:#,0}", osDeliveryByOScode.Max(m => m.QtyMatch));
                dr["Release"]       = string.Format("{0:#,0}", osDeliveryByOScode.Max(m => m.QtyRelease));

                totalQtyOrder   += osDeliveryByOScode.Max(m => m.QtyOrder);
                totalQtyWH      += osDeliveryByOScode.Max(m => m.QtyWH);
                totalQtyReject  += osDeliveryByOScode.Max(m => m.QtyReject);
                totalQtyMatch   += osDeliveryByOScode.Max(m => m.QtyMatch);
                totalQtyRelease += osDeliveryByOScode.Max(m => m.QtyRelease);

                var supplierIDList_OSCode = osDeliverySummaryList.Where(w => w.OutsoleCode == outsoleCode).Select(s => s.OutsoleSupplierId).Distinct().ToList();

                for (int i = 0; i < supplierIDList_OSCode.Count(); i++)
                {
                    int supplierID = supplierIDList_OSCode[i];
                    var osDeliverySummaryByOSCodeBySupplier = osDeliverySummaryList.FirstOrDefault(w => w.OutsoleCode == outsoleCode && w.OutsoleSupplierId == supplierID);

                    string numberOfPO = osDeliverySummaryByOSCodeBySupplier.NoOfPO > 0 ?
                                        string.Format("({0:#,0})", osDeliverySummaryByOSCodeBySupplier.NoOfPO) :
                                        "";
                    string quantityDelivery_SupplierString = osDeliverySummaryByOSCodeBySupplier.QtyDelivery > 0 ? string.Format("\nDelivery: {0:#,0}", osDeliverySummaryByOSCodeBySupplier.QtyDelivery)   : "";
                    string reject_SupplierString           = osDeliverySummaryByOSCodeBySupplier.QtyReject > 0 ?   string.Format("\nReject:     {0:#,0}", osDeliverySummaryByOSCodeBySupplier.QtyReject)   : "";
                    string balance_SupplierString          = osDeliverySummaryByOSCodeBySupplier.QtyBalance > 0 ?  string.Format("\nBalance:  {0:#,0}", osDeliverySummaryByOSCodeBySupplier.QtyBalance)    : "";

                    dr[String.Format("Column{0}", i)] = String.Format("{0} {1}{2}{3}{4}",
                                                                      osDeliverySummaryByOSCodeBySupplier.Name,
                                                                      numberOfPO,
                                                                      quantityDelivery_SupplierString,
                                                                      reject_SupplierString,
                                                                      balance_SupplierString);

                    dr[String.Format("ColumnSupplierID{0}", i)] = supplierIDList_OSCode[i];
                }
                dt.Rows.Add(dr);
                Dispatcher.Invoke(new Action(() =>
                {
                    progressBar.Value = indexProgressBar;
                    lblStatus.Text    = String.Format("Writing  {0} rows / {1}", indexProgressBar, outsoleCodeList.Count());
                    Thread.Sleep(50);
                }));
                indexProgressBar++;
            }

            DataRow drTotal = dt.NewRow();

            drTotal["OutsoleCode"]   = "Total";
            drTotal["OrderQuantity"] = string.Format("{0:#,0}", totalQtyOrder);
            drTotal["WHQuantity"]    = string.Format("{0:#,0}", totalQtyWH);
            drTotal["Reject"]        = string.Format("{0:#,0}", totalQtyReject);
            drTotal["Matching"]      = string.Format("{0:#,0}", totalQtyMatch);
            drTotal["Release"]       = string.Format("{0:#,0}", totalQtyRelease);

            dt.Rows.Add(drTotal);
            e.Result = dt;
        }
        private void BwSearch_DoWork(object sender, DoWorkEventArgs e)
        {
            var searchFrom = DateTime.Now;
            var searchTo   = DateTime.Now;

            Dispatcher.Invoke(new Action(() => {
                searchFrom = dpFrom.SelectedDate.Value.Date;
                searchTo   = dpTo.SelectedDate.Value.Date;
            }));

            reportOSMWHCheckingList = ReportController.GetOSMWHCheckingFromTo(searchFrom, searchTo);
            var productNoList = reportOSMWHCheckingList.Select(s => s.ProductNo).Distinct().ToList();

            if (productNoList.Count() > 0)
            {
                productNoList = productNoList.OrderBy(o => o).ToList();
            }
            // Outole Material
            foreach (var po in productNoList)
            {
                outsoleMaterialList.AddRange(OutsoleMaterialController.Select(po));
            }

            DataTable dt = new OSMWHCheckingDetailDataset().Tables["OSMWHCheckingDetailTable"];

            var supplierIdList = reportOSMWHCheckingList.Select(s => s.OutsoleSupplierId).Distinct().ToList();

            foreach (var suppId in supplierIdList)
            {
                var reportOSMWHCheckingListBySuppId = reportOSMWHCheckingList.Where(w => w.OutsoleSupplierId == suppId).ToList();
                var osCodeListBySuppId = reportOSMWHCheckingListBySuppId.Select(s => s.OutsoleCode).Distinct().ToList();

                foreach (var osCode in osCodeListBySuppId)
                {
                    var reportOSMWHCheckingListBySuppIdByOSCode = reportOSMWHCheckingListBySuppId.Where(w => w.OutsoleCode == osCode).ToList();
                    var poListBySuppByOSCode = reportOSMWHCheckingListBySuppIdByOSCode.Select(s => s.ProductNo).Distinct().ToList();
                    foreach (var productNo in poListBySuppByOSCode)
                    {
                        var reportOSMWHCheckingListByPO = reportOSMWHCheckingListBySuppIdByOSCode.Where(w => w.ProductNo == productNo).ToList();
                        var errorIdListByPO             = reportOSMWHCheckingListByPO.Select(s => s.ErrorId).Distinct().ToList();
                        var xReport = reportOSMWHCheckingListByPO.FirstOrDefault();

                        var totalQtyOrder = reportOSMWHCheckingListByPO.FirstOrDefault().Quantity;
                        var totalChecked  = reportOSMWHCheckingListByPO.Sum(s => s.QuantityDelivery + s.Reject);

                        if (poStatus == POStatus.POFinished && totalQtyOrder != totalChecked)
                        {
                            continue;
                        }
                        if (poStatus == POStatus.PONotYetFinish && totalQtyOrder == totalChecked)
                        {
                            continue;
                        }

                        int index = 1;
                        foreach (var errorId in errorIdListByPO)
                        {
                            DataRow dr    = dt.NewRow();
                            var     regex = new Regex("[a-z]|[A-Z]");

                            dr["SupplierAndOutsoleCode"] = String.Format("{0}@{1}", xReport.Name, xReport.OutsoleCode);
                            dr["SupplierName"]           = String.Format("To: {0}", xReport.Name);
                            dr["OutsoleCode"]            = xReport.OutsoleCode;
                            dr["ProductNo"] = xReport.ProductNo;
                            dr["WorkerId"]  = String.Join(", ", reportOSMWHCheckingListByPO.Select(s => s.WorkerId).Distinct().ToList());
                            dr["ArticleNo"] = xReport.ArticleNo;
                            dr["EFD"]       = String.Format("{0: MM/dd}", xReport.EFD);

                            var sizeNoListContainsError = reportOSMWHCheckingListByPO.Where(w => w.ErrorId > 0).Select(s => s.SizeNo).Distinct().ToList();
                            if (sizeNoListContainsError.Count() > 0)
                            {
                                sizeNoListContainsError = sizeNoListContainsError.OrderBy(s => regex.IsMatch(s) ? Double.Parse(regex.Replace(s, "100")) : Double.Parse(s)).ToList();
                            }

                            List <String> detailViewList = new List <string>();
                            foreach (var sizeNo in sizeNoListContainsError)
                            {
                                var totalRejectBySize = reportOSMWHCheckingListByPO.Where(w => w.SizeNo == sizeNo).Sum(s => s.Reject);
                                detailViewList.Add(String.Format("#{0} = {1}", sizeNo, totalRejectBySize));
                            }
                            if (detailViewList.Count() > 0)
                            {
                                dr["Detail"] = String.Join("; ", detailViewList);
                            }


                            string fromTo = "";
                            if (searchFrom != searchTo)
                            {
                                fromTo = String.Format("From: {0: MM/dd/yyyy} to {1: MM/dd/yyyy}", searchFrom, searchTo);
                            }
                            else
                            {
                                fromTo = String.Format("From: {0: MM/dd/yyyy}", searchFrom);
                            }
                            dr["FromTo"] = fromTo;

                            // Delivery From MasterFile
                            int qtyDelivery = outsoleMaterialList.Where(w => w.ProductNo == productNo && w.OutsoleSupplierId == suppId).Sum(s => s.Quantity);
                            if (qtyDelivery > 0)
                            {
                                dr["QuantityDelivery"] = qtyDelivery;
                            }

                            // Qty Check = QtyDelivery at Outsole WH
                            int qtyChecked = reportOSMWHCheckingListByPO.Where(w => w.ErrorId == 0).Sum(s => s.QuantityDelivery);
                            if (qtyChecked > 0)
                            {
                                dr["QuantityCheck"] = qtyChecked;
                            }


                            var reportByErrorIdList  = reportOSMWHCheckingListByPO.Where(w => w.ErrorId == errorId && w.ErrorId > 0).ToList();
                            var reportByErrorIdFirst = reportByErrorIdList.FirstOrDefault();

                            List <string> errorAndQtyViewList = new List <string>();
                            if (errorId > 0)
                            {
                                dr["ErrorId"]   = errorId;
                                dr["ErrorName"] = String.Format("{0}\n{1}", reportByErrorIdFirst.ErrorName, reportByErrorIdFirst.ErrorVietNamese);

                                var sizeNoListHasError = reportByErrorIdList.Select(s => s.SizeNo).Distinct().ToList();
                                if (sizeNoListHasError.Count() > 0)
                                {
                                    sizeNoListHasError = sizeNoListHasError.OrderBy(s => regex.IsMatch(s) ? Double.Parse(regex.Replace(s, "100")) : Double.Parse(s)).ToList();
                                }
                                foreach (var sizeNo in sizeNoListHasError)
                                {
                                    int errorQtyBySizeNo = reportByErrorIdList.Where(w => w.SizeNo == sizeNo).Sum(s => s.Reject);
                                    if (errorQtyBySizeNo > 0)
                                    {
                                        errorAndQtyViewList.Add(String.Format("#{0} = {1}", sizeNo, errorQtyBySizeNo));
                                    }
                                }
                                if (errorAndQtyViewList.Count() > 0)
                                {
                                    dr["ErrorView"] = String.Join("; ", errorAndQtyViewList);
                                }
                            }

                            dt.Rows.Add(dr);
                            index++;
                        }
                    }
                }
            }

            e.Result = dt;
        }
예제 #13
0
        // Notifications
        private void bwLoadDelivery_DoWork(object sender, DoWorkEventArgs e)
        {
            outsoleSupplierList        = OutsoleSuppliersController.Select();
            outsoleMaterialList        = OutsoleMaterialController.Select();
            outsoleReleaseMaterialList = OutsoleReleaseMaterialController.SelectByOutsoleMaterial();
            outsoleOutputList          = OutsoleOutputController.SelectByAssemblyMaster();
            sewingMasterList           = SewingMasterController.Select();
            assemblyMasterList         = AssemblyMasterController.Select();
            outsoleMasterList          = OutsoleMasterController.Select();
            orderList = OrdersController.Select();
            outsoleRawMaterialList = OutsoleRawMaterialController.Select();

            var      outsoleCodeList = orderList.Select(o => o.OutsoleCode).Distinct().ToList();
            DateTime dtNow           = DateTime.Now;
            DateTime dtDefault       = new DateTime(2000, 1, 1);
            DateTime deliveryEFDDate = dtDefault;

            // Delay Shipment Notifications
            foreach (var order in orderList)
            {
                bool needToShow = false;
                int  assemblyBalance = 0, sewingBalance = 0, outsoleBalance = 0;
                var  assemblyMaster = assemblyMasterList.FirstOrDefault(f => f.ProductNo == order.ProductNo);
                var  sewingMaster   = sewingMasterList.FirstOrDefault(f => f.ProductNo == order.ProductNo);
                var  outsoleMaster  = outsoleMasterList.FirstOrDefault(f => f.ProductNo == order.ProductNo);
                if (assemblyMaster == null || sewingMaster == null || outsoleMaster == null)
                {
                    continue;
                }

                if (assemblyMaster.AssemblyBalance != "")
                {
                    Int32.TryParse(assemblyMaster.AssemblyBalance, out assemblyBalance);
                }
                else
                {
                    assemblyBalance = order.Quantity;
                }

                if (sewingMaster.SewingBalance != "")
                {
                    Int32.TryParse(sewingMaster.SewingBalance, out sewingBalance);
                }
                else
                {
                    sewingBalance = order.Quantity;
                }

                if (outsoleMaster.OutsoleBalance != "")
                {
                    Int32.TryParse(outsoleMaster.OutsoleBalance, out outsoleBalance);
                }
                else
                {
                    outsoleBalance = order.Quantity;
                }

                if (dtNow.AddDays(5) < order.ETD)
                {
                    needToShow = false;
                }
                else
                {
                    if (assemblyBalance > 0 || sewingBalance > 0 || outsoleBalance > 0)
                    {
                        needToShow = true;
                    }
                    if (assemblyBalance > 0 && sewingBalance == 0 && outsoleBalance == 0)
                    {
                        needToShow = false;
                    }
                }

                if (needToShow == true)
                {
                    var delayShipment = new DelayShipmentViewModel();
                    delayShipment.Style     = order.ShoeName;
                    delayShipment.ProductNo = order.ProductNo;
                    delayShipment.OrderCSD  = order.ETD.AddDays(10);
                    if (assemblyBalance > 0)
                    {
                        delayShipment.AssemblyBalance = assemblyBalance;
                    }
                    if (sewingBalance > 0)
                    {
                        delayShipment.SewingBalance = sewingBalance;
                    }
                    if (outsoleBalance > 0)
                    {
                        delayShipment.OutsoleBalance = outsoleBalance;
                    }
                    if (delayShipment.OrderCSD < DateTime.Now.Date)
                    {
                        delayShipmentList.Add(delayShipment);
                    }
                }
            }

            // OSWH Notifications
            foreach (string outsoleCode in outsoleCodeList)
            {
                var productNoList = orderList.Where(o => o.OutsoleCode == outsoleCode && o.IsEnable == true).Select(o => o.ProductNo).Distinct().ToList();
                foreach (var productNo in productNoList)
                {
                    var sewingMasterModel = sewingMasterList.Where(w => w.ProductNo == productNo).FirstOrDefault();
                    var orderModel        = orderList.Where(w => w.ProductNo == productNo).FirstOrDefault();
                    if (sewingMasterModel == null || orderModel == null)
                    {
                        continue;
                    }
                    var outsoleMaterialList_D1 = outsoleMaterialList.Where(w => w.ProductNo == productNo).ToList();
                    var supplierIdList         = outsoleMaterialList_D1.Select(s => s.OutsoleSupplierId).Distinct().ToList();

                    foreach (var supplierId in supplierIdList)
                    {
                        int quantityDelivery        = outsoleMaterialList_D1.Where(w => w.OutsoleSupplierId == supplierId).Sum(s => s.Quantity) - outsoleMaterialList_D1.Where(w => w.OutsoleSupplierId == supplierId).Sum(s => s.QuantityReject);
                        int quantityDelivery1       = outsoleMaterialList_D1.Where(w => w.OutsoleSupplierId == supplierId).Sum(s => s.Quantity - s.QuantityReject);
                        var outsoleMaterialDelivery = outsoleMaterialList_D1.Where(w => w.OutsoleSupplierId == supplierId).FirstOrDefault();
                        if (quantityDelivery > 0)
                        {
                            var outsoleRawMaterialModel = outsoleRawMaterialList.Where(w => w.ProductNo == productNo && w.OutsoleSupplierId == supplierId).FirstOrDefault();
                            if (outsoleRawMaterialModel != null)
                            {
                                deliveryEFDDate = outsoleRawMaterialModel.ETD;
                            }
                            if (deliveryEFDDate != dtDefault && deliveryEFDDate > dtNow.AddDays(15) && sewingMasterModel.SewingStartDate > dtNow.AddDays(25))
                            {
                                var deliveryEarly = new NoticeOutsoleWHInventoryViewModel()
                                {
                                    Style            = orderModel.ShoeName,
                                    ProductNo        = productNo,
                                    QuantityDelivery = quantityDelivery,
                                    Supplier         = outsoleSupplierList.Where(w => w.OutsoleSupplierId == supplierId).Select(s => s.Name).FirstOrDefault(),
                                    OutsoleCode      = outsoleCode,
                                    DeliveryEFDDate  = deliveryEFDDate,
                                    SewingStartDate  = sewingMasterModel.SewingStartDate,
                                };
                                noticeOSWHInventoryDeliveryEarlyList.Add(deliveryEarly);
                            }
                        }

                        var outsoleRawMaterialLateModel = outsoleRawMaterialList.Where(w => w.ETD <= dtNow && w.ProductNo == productNo && w.OutsoleSupplierId == supplierId).FirstOrDefault();
                        if (outsoleRawMaterialLateModel != null)
                        {
                            int quantityOrder = orderModel.Quantity;
                            if (quantityOrder - quantityDelivery > 0)
                            {
                                var notDelivery = new NoticeOutsoleWHInventoryViewModel()
                                {
                                    Style               = orderModel.ShoeName,
                                    ProductNo           = productNo,
                                    QuantityNotDelivery = quantityOrder - quantityDelivery,
                                    Supplier            = outsoleSupplierList.Where(w => w.OutsoleSupplierId == supplierId).Select(s => s.Name).FirstOrDefault(),
                                    OutsoleCode         = outsoleCode,
                                    DeliveryEFDDate     = outsoleRawMaterialLateModel.ETD,
                                    OrderCSD            = orderModel.ETD.AddDays(10)
                                };
                                noticeOSWHInventoryNotDeliveryList.Add(notDelivery);
                            }
                        }

                        int quantityReject           = outsoleMaterialList_D1.Where(w => w.OutsoleSupplierId == supplierId).Sum(s => s.QuantityReject);
                        var outsoleMaterialReject    = outsoleMaterialList_D1.Where(w => w.OutsoleSupplierId == supplierId).FirstOrDefault(); // allways not null
                        var outsoleRawMaterialReject = outsoleRawMaterialList.Where(w => w.ETD <= dtNow && w.ProductNo == productNo && w.OutsoleSupplierId == supplierId).FirstOrDefault();
                        if (quantityReject > 0 && outsoleMaterialReject.ModifiedTimeReject < dtNow.AddDays(-2) && outsoleRawMaterialReject != null)
                        {
                            var reject = new NoticeOutsoleWHInventoryViewModel()
                            {
                                Style           = orderModel.ShoeName,
                                ProductNo       = productNo,
                                OrderEFD        = orderModel.ETD,
                                QuantityReject  = quantityReject,
                                Supplier        = outsoleSupplierList.Where(w => w.OutsoleSupplierId == supplierId).Select(s => s.Name).FirstOrDefault(),
                                OutsoleCode     = outsoleCode,
                                DeliveryEFDDate = outsoleRawMaterialReject.ETD
                            };

                            noticeOSWHInventoryRejectList.Add(reject);
                        }
                    }
                }
            }
        }
예제 #14
0
        private void bwLoad_DoWork(object sender, DoWorkEventArgs e)
        {
            outsoleMaterialList = OutsoleMaterialController.Select().Where(w => productNoList.Contains(w.ProductNo)).ToList();

            Dispatcher.Invoke(new Action(() => {
                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 <= outsoleSupplierList.Count - 1; i++)
                {
                    OutsoleSuppliersModel outsoleSupplier = outsoleSupplierList[i];
                    dt.Columns.Add(String.Format("Column{0}", i), typeof(Int32));
                    DataGridTextColumn column = new DataGridTextColumn();
                    //column.SetValue(TagProperty, sizeRun.SizeNo);
                    column.Header  = outsoleSupplier.Name;
                    column.Binding = new Binding(String.Format("Column{0}", i));

                    Style style = new Style(typeof(DataGridCell));
                    style.Setters.Add(new Setter(TextBlock.TextAlignmentProperty, TextAlignment.Center));

                    Setter setterForeground   = new Setter();
                    setterForeground.Property = DataGridCell.ForegroundProperty;
                    setterForeground.Value    = Brushes.Black;
                    style.Setters.Add(setterForeground);

                    Setter setterBackground   = new Setter();
                    setterBackground.Property = DataGridCell.BackgroundProperty;
                    setterBackground.Value    = new Binding(String.Format("Column{0}Background", i));
                    style.Setters.Add(setterBackground);

                    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", i), typeof(SolidColorBrush));
                    columnBackground.DefaultValue = Brushes.Transparent;

                    dt.Columns.Add(columnBackground);
                }

                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)
                {
                    var outsoleMaterialDetailPerPOList = OutsoleMaterialDetailController.Select(productNo).ToList();

                    if (productNo == "105-5900")
                    {
                    }
                    List <OutsoleMaterialModel> outsoleMaterialList_D1 = outsoleMaterialList.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    = outsoleMaterialList.Where(o => o.ProductNo == productNo).Select(o => o.SizeNo).Distinct().ToList();
                    int qtyMaterialTotalToCheck = 0;

                    for (int i = 0; i <= outsoleSupplierList.Count - 1; i++)
                    {
                        OutsoleSuppliersModel outsoleSupplier = outsoleSupplierList[i];
                        List <OutsoleMaterialModel> outsoleMaterialList_D2 = outsoleMaterialList_D1.Where(o => o.OutsoleSupplierId == outsoleSupplier.OutsoleSupplierId).ToList();

                        int qtyMaterialTotal = 0;
                        int qtyReleaseTotal  = 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;
                            if (qtyMaterial < 0)
                            {
                                qtyMaterial = 0;
                            }
                            qtyMaterialTotal        += qtyMaterial;
                            qtyMaterialTotalToCheck += qtyMaterial;
                            qtyReleaseTotal         += qtyRelease;
                        }
                        dr["Release"] = qtyReleaseTotal;
                        dr[String.Format("Column{0}", i)] = qtyMaterialTotal;

                        var outsoleMaterialDetailPerPOPerSupplierList = outsoleMaterialDetailPerPOList.Where(w => w.OutsoleSupplierId == outsoleSupplierList[i].OutsoleSupplierId).ToList();
                        if (outsoleMaterialDetailPerPOPerSupplierList.Count > 0)
                        {
                            int qtyMaterialDetail = outsoleMaterialDetailPerPOPerSupplierList.Sum(s => s.Quantity);
                            if (qtyMaterialDetail != 0 && qtyMaterialDetail < order.Quantity)
                            {
                                dr[String.Format("Column{0}Background", i)] = Brushes.Yellow;
                            }
                            if (qtyMaterialDetail != 0 && qtyMaterialDetail >= order.Quantity)
                            {
                                dr[String.Format("Column{0}Background", i)] = Brushes.Green;
                            }
                        }
                    }
                    int qtyMatchingTotal = 0;
                    foreach (string sizeNo in sizeNoList)
                    {
                        int qtyMin      = outsoleMaterialList_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;
                        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 <= outsoleSupplierList.Count - 1; i++)
                {
                    TextBlock lblSupplierTotal  = new TextBlock();
                    lblSupplierTotal.Text       = dt.Compute(String.Format("Sum(Column{0})", i), "").ToString();
                    lblSupplierTotal.Margin     = new Thickness(1, 0, 0, 0);
                    lblSupplierTotal.FontWeight = FontWeights.Bold;
                    Border bdrSupplierTotal     = new Border();
                    Grid.SetColumn(bdrSupplierTotal, 7 + i);
                    bdrSupplierTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                    bdrSupplierTotal.BorderBrush     = Brushes.Black;
                    bdrSupplierTotal.Child           = lblSupplierTotal;
                    gridTotal.Children.Add(bdrSupplierTotal);
                }

                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, 7 + outsoleSupplierList.Count());
                bdrMatchingTotal.BorderThickness = new Thickness(0, 0, 1, 1);
                bdrMatchingTotal.BorderBrush     = Brushes.Black;
                bdrMatchingTotal.Child           = lblMatchingTotal;
                gridTotal.Children.Add(bdrMatchingTotal);
                dgInventory.ItemsSource = dt.AsDataView();
            }));
        }