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());
                }));
            }
        }
示例#2
0
 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());
                }));
            }
        }
示例#4
0
        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);
                }));
            }
        }