private void BwUpload_DoWork(object sender, DoWorkEventArgs e) { var importList = e.Argument as List <MaterialPlanModel>; try { Dispatcher.Invoke(new Action(() => { txtStatus.Text = "Importing ..."; prgStatus.Maximum = importList.Count(); })); foreach (var item in importList) { MaterialPlanController.Insert(item, isUpdateActualDate: false); dgMain.Dispatcher.Invoke(new Action(() => { dgMain.SelectedItem = item; dgMain.ScrollIntoView(item); })); } e.Result = true; } catch (Exception ex) { e.Result = false; Dispatcher.Invoke(new Action(() => { MessageBox.Show(ex.InnerException.InnerException.Message.ToString()); })); } }
private void BwLoad_DoWork(object sender, DoWorkEventArgs e) { materialPlanList = MaterialPlanController.GetMaterialPlanByPO(productNo); materialPlanList.ForEach(t => t.ActualDateString = t.ActualDate != dtDefault ? String.Format("{0:MM/dd}", t.ActualDate) : ""); supplierAccessoriesList = SupplierController.GetSuppliersAccessories(); sizeRunList = SizeRunController.Select(productNo); matsInspectionList = MaterialInspectController.GetMaterialInspectByPO(productNo); matsDeliveryList = MaterialDeliveryController.GetMaterialDeliveryByPO(productNo); }
private void BwInsert_DoWork(object sender, DoWorkEventArgs e) { var par = e.Argument as object[]; var suppSelected = par[0] as SupplierModel; var etdPicked = (DateTime)par[1]; var remarks = par[2] as String; var materialRevise = new MaterialPlanModel() { ProductNo = productNo, SupplierId = suppSelected.SupplierId, Name = suppSelected.Name, ProvideAccessories = suppSelected.ProvideAccessories, Remarks = remarks, ETD = etdPicked, ActualDate = matsSubmit != null ? matsSubmit.ActualDate : new DateTime(2000, 01, 01) }; try { if (runMode == EExcute.AddNew) { MaterialPlanController.Insert(materialRevise, isUpdateActualDate: false); } else if (runMode == EExcute.Update) { MaterialPlanController.Update(matsSubmit.ProductNo, matsSubmit.SupplierId, materialRevise); } else if (runMode == EExcute.Delete) { MaterialPlanController.Delete(materialRevise); } materialUpdate = materialRevise as MaterialPlanModel; runModeRespone = runMode; e.Result = true; } catch (Exception ex) { e.Result = false; Dispatcher.Invoke(new Action(() => { MessageBox.Show(ex.Message.ToString()); })); } }
private void BwUpload_DoWork(object sender, DoWorkEventArgs e) { var deliveryOKList = e.Argument as List <MaterialInspectModel>; try { if (eAction == EExcute.AddNew) { foreach (var itemInsert in deliveryOKList) { MaterialInspectController.Insert(itemInsert, insertQty: true, insertReject: false, deleteReject: false); matsInspectionList.RemoveAll(r => r.SupplierId.Equals(itemInsert.SupplierId) && r.DeliveryDate.Equals(itemInsert.DeliveryDate) && r.SizeNo.Equals(itemInsert.SizeNo) && r.Quantity > 0); matsInspectionList.Add(itemInsert); } } else if (eAction == EExcute.Delete) { MaterialInspectController.DeleteByPOBySupplier(productNo, supplierClicked.SupplierId); matsInspectionList.RemoveAll(r => r.SupplierId.Equals(supplierClicked.SupplierId)); } e.Result = true; // Update ActualDate var deliveryListBySupp = matsInspectionList. GroupBy(g => g.SupplierId). Select(s => new { SupplierId = s.Key, TotalInspect = matsInspectionList.Where(w => w.SupplierId.Equals(s.Key)).Sum(sum => sum.Quantity), TotalReject = matsInspectionList.Where(w => w.SupplierId.Equals(s.Key)).Sum(r => r.Reject), MaxDeliveryDate = matsInspectionList.Where(w => w.SupplierId.Equals(s.Key)).Max(m => m.DeliveryDate) }).ToList(); foreach (var materialPlan in materialPlanList) { var deliveryBySupp = deliveryListBySupp.FirstOrDefault(f => f.SupplierId.Equals(materialPlan.SupplierId)); if (deliveryBySupp != null) { if (deliveryBySupp.TotalInspect.Equals(sizeRunList.Sum(s => s.Quantity))) { materialPlan.ActualDate = deliveryBySupp.MaxDeliveryDate.Date; } else { materialPlan.ActualDate = dtDefault; } } else { materialPlan.ActualDate = dtDefault; } MaterialPlanController.Insert(materialPlan, isUpdateActualDate: true); materialPlanList.ForEach(t => t.ActualDateString = t.ActualDate != dtDefault ? String.Format("{0:MM/dd}", t.ActualDate) : ""); } } catch (Exception ex) { Dispatcher.Invoke(new Action(() => { MessageBox.Show(ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error); })); e.Result = false; } }
private void BwLoad_DoWork(object sender, DoWorkEventArgs e) { try { sizeRunList = SizeRunController.Select(productNo); matsDeliveryByPOList = MaterialDeliveryController.GetMaterialDeliveryByPO(productNo); matsPlanByPOList = MaterialPlanController.GetMaterialPlanByPO(productNo); supplierList = SupplierController.GetSuppliersAccessories(); Dispatcher.Invoke(new Action(() => { // Create Column Datagrid dgDeliveryInfo.Columns.Clear(); dtDelivery = new DataTable(); dtDelivery.Columns.Add("Status", typeof(String)); dtDelivery.Columns.Add("Name", typeof(String)); dtDelivery.Columns.Add("SupplierId", typeof(String)); DataGridTemplateColumn colSuppName = new DataGridTemplateColumn(); colSuppName.Header = String.Format("Supplier"); DataTemplate templateSuppName = new DataTemplate(); FrameworkElementFactory tblSuppName = new FrameworkElementFactory(typeof(TextBlock)); templateSuppName.VisualTree = tblSuppName; tblSuppName.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Name"))); tblSuppName.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center); tblSuppName.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 3, 0)); colSuppName.CellTemplate = templateSuppName; colSuppName.ClipboardContentBinding = new Binding(String.Format("Name")); dgDeliveryInfo.Columns.Add(colSuppName); //Column ETD dtDelivery.Columns.Add("ETD", typeof(String)); dtDelivery.Columns.Add("ETDDate", typeof(DateTime)); DataGridTemplateColumn colETD = new DataGridTemplateColumn(); colETD.Header = String.Format("EFD"); colETD.MinWidth = 60; DataTemplate templateETD = new DataTemplate(); FrameworkElementFactory tblETD = new FrameworkElementFactory(typeof(TextBlock)); templateETD.VisualTree = tblETD; tblETD.SetBinding(TextBlock.TextProperty, new Binding(String.Format("ETD"))); tblETD.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center); tblETD.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center); tblETD.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 3, 0)); colETD.CellTemplate = templateETD; colETD.ClipboardContentBinding = new Binding(String.Format("ETD")); dgDeliveryInfo.Columns.Add(colETD); //Column Actual Date dtDelivery.Columns.Add("ActualDate", typeof(String)); dtDelivery.Columns.Add("ActualDateDate", typeof(DateTime)); DataGridTemplateColumn colActualDate = new DataGridTemplateColumn(); colActualDate.Header = String.Format("{0}\n{1}\n{2}", "Order Size", "Qty", "Actual Date"); DataTemplate templateActualDate = new DataTemplate(); FrameworkElementFactory tblActualDate = new FrameworkElementFactory(typeof(TextBlock)); templateActualDate.VisualTree = tblActualDate; tblActualDate.SetBinding(TextBlock.TextProperty, new Binding(String.Format("ActualDate"))); tblActualDate.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center); tblActualDate.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center); tblActualDate.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 3, 0)); colActualDate.CellTemplate = templateActualDate; colActualDate.ClipboardContentBinding = new Binding(String.Format("ActualDate")); dgDeliveryInfo.Columns.Add(colActualDate); var regex = new Regex("[a-z]|[A-Z]"); if (sizeRunList.Count() > 0) { sizeRunList = sizeRunList.OrderBy(s => regex.IsMatch(s.SizeNo) ? Double.Parse(regex.Replace(s.SizeNo, "100")) : Double.Parse(s.SizeNo)).ToList(); } foreach (var sizeRun in sizeRunList) { string sizeBinding = sizeRun.SizeNo.Contains(".") ? sizeRun.SizeNo.Replace(".", "@") : sizeRun.SizeNo; dtDelivery.Columns.Add(String.Format("Column{0}", sizeBinding), typeof(String)); dtDelivery.Columns.Add(String.Format("Column{0}Foreground", sizeBinding), typeof(SolidColorBrush)); //dtDelDetail.Columns.Add(String.Format("Column{0}ToolTip", sizeBinding), typeof(String)); DataGridTextColumn column = new DataGridTextColumn(); column.SetValue(TagProperty, sizeRun.SizeNo); column.Header = string.Format("{0}\n\n{1}", sizeRun.SizeNo, sizeRun.Quantity); column.MinWidth = 40; column.MaxWidth = 200; column.Binding = new Binding(String.Format("Column{0}", sizeBinding)); Style styleColumn = new Style(); Setter setterColumnForecolor = new Setter(); setterColumnForecolor.Property = DataGridCell.ForegroundProperty; setterColumnForecolor.Value = new Binding(String.Format("Column{0}Foreground", sizeBinding)); styleColumn.Setters.Add(setterColumnForecolor); column.CellStyle = styleColumn; dgDeliveryInfo.Columns.Add(column); } //Column Total dtDelivery.Columns.Add("Balance", typeof(String)); DataGridTemplateColumn colBalance = new DataGridTemplateColumn(); colBalance.Header = String.Format("Total\n\n{0}", sizeRunList.Sum(s => s.Quantity)); colBalance.MinWidth = 80; colBalance.MaxWidth = 80; DataTemplate templateBalance = new DataTemplate(); FrameworkElementFactory tblBalance = new FrameworkElementFactory(typeof(TextBlock)); templateBalance.VisualTree = tblBalance; tblBalance.SetBinding(TextBlock.TextProperty, new Binding(String.Format("Balance"))); tblBalance.SetValue(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center); tblBalance.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center); tblBalance.SetValue(TextBlock.PaddingProperty, new Thickness(3, 0, 3, 0)); colBalance.CellTemplate = templateBalance; colBalance.ClipboardContentBinding = new Binding(String.Format("Balance")); dgDeliveryInfo.Columns.Add(colBalance); DataGridTemplateColumn colButtonOK = new DataGridTemplateColumn(); colButtonOK.MinWidth = 40; colButtonOK.MaxWidth = 40; DataTemplate templateButtonOK = new DataTemplate(); FrameworkElementFactory fefButtonOK = new FrameworkElementFactory(typeof(Button)); templateButtonOK.VisualTree = fefButtonOK; fefButtonOK.SetValue(Button.ContentProperty, "Ok"); fefButtonOK.AddHandler(Button.ClickEvent, new RoutedEventHandler(BtnOK_Click)); colButtonOK.CellTemplate = templateButtonOK; dgDeliveryInfo.Columns.Add(colButtonOK); // Binding Data if (matsDeliveryByPOList.Count() == 0) { foreach (var matsPlan in matsPlanByPOList) { var supplierByPlan = supplierList.FirstOrDefault(f => f.SupplierId == matsPlan.SupplierId); foreach (var sizeRun in sizeRunList) { matsDeliveryByPOList.Add(new MaterialDeliveryModel { SupplierId = matsPlan.SupplierId, SupplierNameDisplay = supplierByPlan != null ? String.Format("{0} - {1}", supplierByPlan.Name, supplierByPlan.ProvideAccessories) : "", ProductNo = matsPlan.ProductNo, ETD = matsPlan.ETD, ActualDeliveryDate = dtDefault, SizeNo = sizeRun.SizeNo, Quantity = 0, Reject = 0, RejectSewing = 0 }); } } } else { // Put Supplier Name - Accessories Name matsDeliveryByPOList.ForEach(f => f.SupplierNameDisplay = String.Format("{0} - {1}", supplierList.FirstOrDefault(w => w.SupplierId == f.SupplierId).Name, supplierList.FirstOrDefault(w => w.SupplierId == f.SupplierId).ProvideAccessories)); } var supplierIdList = matsDeliveryByPOList.Select(s => s.SupplierId).Distinct().ToList(); foreach (var supplierId in supplierIdList) { var deliveryListBySupp = matsDeliveryByPOList.Where(w => w.SupplierId == supplierId).ToList(); var materialInfoBySupp = deliveryListBySupp.FirstOrDefault(); // Row Quantity, Reject, RejectSewing DataRow drQuantity = dtDelivery.NewRow(); DataRow drReject = dtDelivery.NewRow(); DataRow drRejectSewing = dtDelivery.NewRow(); drQuantity["Status"] = RowQuantity; drReject["Status"] = RowReject; drRejectSewing["Status"] = RowRejectSewing; drQuantity["Name"] = materialInfoBySupp.SupplierNameDisplay; drReject["Name"] = RowReject; drRejectSewing["Name"] = RowRejectSewing; drQuantity["SupplierId"] = materialInfoBySupp.SupplierId; drReject["SupplierId"] = materialInfoBySupp.SupplierId; drRejectSewing["SupplierId"] = materialInfoBySupp.SupplierId; drQuantity["ETD"] = string.Format("{0:MM/dd}", materialInfoBySupp.ETD); if (materialInfoBySupp.ActualDeliveryDate != dtDefault) { drQuantity["ActualDate"] = string.Format("{0:MM/dd}", materialInfoBySupp.ActualDeliveryDate); } drQuantity["ActualDateDate"] = materialInfoBySupp.ActualDeliveryDate; drQuantity["ETDDate"] = materialInfoBySupp.ETD; foreach (var sizeRun in sizeRunList) { string sizeBinding = sizeRun.SizeNo.Contains(".") ? sizeRun.SizeNo.Replace(".", "@") : sizeRun.SizeNo; var deliveryBySizeNo = deliveryListBySupp.FirstOrDefault(f => f.SizeNo == sizeRun.SizeNo); if (deliveryBySizeNo != null) { if (deliveryBySizeNo.Quantity > 0) { drQuantity[String.Format("Column{0}", sizeBinding)] = deliveryBySizeNo.Quantity; if (deliveryBySizeNo.Quantity == sizeRun.Quantity) { drQuantity[String.Format("Column{0}Foreground", sizeBinding)] = Brushes.Blue; } } if (deliveryBySizeNo.Reject > 0) { drReject[String.Format("Column{0}", sizeBinding)] = deliveryBySizeNo.Reject; drReject[String.Format("Column{0}Foreground", sizeBinding)] = Brushes.Red; } if (deliveryBySizeNo.RejectSewing > 0) { drRejectSewing[String.Format("Column{0}", sizeBinding)] = deliveryBySizeNo.RejectSewing; drRejectSewing[String.Format("Column{0}Foreground", sizeBinding)] = Brushes.Red; } } } int totalBalanceBySupp = sizeRunList.Sum(s => s.Quantity) - deliveryListBySupp.Sum(s => s.Quantity); int totalReject = deliveryListBySupp.Sum(s => s.Reject); int totalRejectSewing = deliveryListBySupp.Sum(s => s.RejectSewing); drQuantity["Balance"] = totalBalanceBySupp > 0 ? totalBalanceBySupp.ToString() : ""; drReject["Balance"] = totalReject > 0 ? totalReject.ToString() : ""; drRejectSewing["Balance"] = totalRejectSewing > 0 ? totalRejectSewing.ToString() : ""; dtDelivery.Rows.Add(drQuantity); dtDelivery.Rows.Add(drReject); dtDelivery.Rows.Add(drRejectSewing); } dgDeliveryInfo.ItemsSource = dtDelivery.AsDataView(); })); } catch (Exception ex) { Dispatcher.Invoke(new Action(() => { MessageBox.Show(ex.InnerException.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error); })); } }
private void BwUpload_DoWork(object sender, DoWorkEventArgs e) { var args = e.Argument as object[]; var matsUploadList = args[0] as List <MaterialDeliveryModel>; var matsPlanUpdateList = args[1] as List <MaterialPlanModel>; e.Result = true; try { if (eAction == EExcute.AddNew) { foreach (var item in matsUploadList) { MaterialDeliveryController.Insert(item); } // Update MaterialPlan string remarksPO = "", actualDeliveryPO = ""; string etdPO = String.Format(new CultureInfo("en-US"), "{0:dd-MMM}", matsPlanUpdateList.Max(m => m.ETD)); // Finish Delivery if (matsPlanUpdateList.Where(w => w.ActualDeliveryDate == dtDefault).Count() == 0) { actualDeliveryPO = String.Format(new CultureInfo("en-US"), "{0:dd-MMM}", matsPlanUpdateList.Max(m => m.ActualDeliveryDate)); } int qtyDeliveryPO = matsPlanUpdateList.Sum(s => s.TotalDeliveryQuantity); int balancePO = matsPlanUpdateList.Max(m => m.BalancePO); int rejectPO = matsPlanUpdateList.Max(m => m.RejectPO); int remarksNumber = matsPlanUpdateList.Max(m => m.BalancePO + m.RejectPO); // Already Delivery if (qtyDeliveryPO > 0 && (balancePO > 0 || rejectPO > 0)) { //remarksPO = balancePO + rejectPO > 0 ? (balancePO + rejectPO).ToString() : ""; remarksPO = remarksNumber.ToString(); var etdNotYetFinishDelivery = matsPlanUpdateList.Where(w => w.ActualDeliveryDate == dtDefault).ToList(); if (etdNotYetFinishDelivery.Count() > 0) { etdPO = String.Format(new CultureInfo("en-US"), "{0:dd-MMM}", etdNotYetFinishDelivery.Max(m => m.ETD)); } } foreach (var item in matsPlanUpdateList) { item.ETDPO = etdPO; item.ActualDeliveryPO = actualDeliveryPO; MaterialPlanController.UpdatePlanWhenDelivery(item); } // Update RawMaterialViewModel rawMaterialView.UpperAccessories_ActualDeliveryDate = ""; rawMaterialView.UpperAccessories_Remarks = ""; rawMaterialView.UpperAccessories_ETD = etdPO; if (!String.IsNullOrEmpty(actualDeliveryPO)) { rawMaterialView.UpperAccessories_ActualDeliveryDate = actualDeliveryPO; } if (!String.IsNullOrEmpty(remarksPO)) { rawMaterialView.UpperAccessories_Remarks = remarksPO; } } else if (eAction == EExcute.Delete) { MaterialDeliveryController.DeleteByPO(productNo); // Update RawMaterialViewModel rawMaterialView.UpperAccessories_ActualDeliveryDate = ""; rawMaterialView.UpperAccessories_Remarks = ""; } } catch (Exception ex) { e.Result = false; Dispatcher.Invoke(new Action(() => { MessageBox.Show(ex.InnerException.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error); })); } }