示例#1
0
        void SplitInvoice_Loaded(object sender, RoutedEventArgs e)
        {
            SOQueryFacade = new SOQueryFacade(Page);
            SOFacade      = new SOFacade(Page);
            int totalQty = 0;

            //need reload sovm
            SOQueryFacade.QuerySOInfo(m_soSysNo, vm =>
            {
                if (vm == null)
                {
                    Window.Alert(ResSO.Info_SOIsNotExist, ResSO.Info_SOIsNotExist, MessageType.Warning, (obj, args) =>
                    {
                        Window.Close();
                    });
                    return;
                }
                m_soVM = vm;
                m_soVM.ItemsVM.ForEach(soItem =>
                {
                    if (soItem.ProductType != SOProductType.Coupon)
                    {
                        if (soItem.ProductType != SOProductType.ExtendWarranty)
                        {
                            totalQty += soItem.Quantity.Value;
                        }

                        InvoiceProductVM invoiceProductVM = new InvoiceProductVM
                        {
                            InvoiceNo            = 1,
                            Price                = soItem.Price.Value,
                            ProductID            = soItem.ProductID,
                            ProductName          = soItem.ProductName,
                            ProductSysNo         = soItem.ProductSysNo.Value,
                            Quantity             = soItem.Quantity.Value,
                            StockSysNo           = soItem.StockSysNo,
                            InvoiceQuantity      = soItem.Quantity.Value,
                            IsExtendWarrantyItem = soItem.ProductType == SOProductType.ExtendWarranty
                        };

                        string[] mpSysNo = null;
                        if (soItem.MasterProductSysNo != null)
                        {
                            mpSysNo = soItem.MasterProductSysNo.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        }

                        if (mpSysNo != null)
                        {
                            invoiceProductVM.MasterProductSysNo = invoiceProductVM.MasterProductSysNo ?? new List <int>();
                            mpSysNo.ForEach(n =>
                            {
                                int no; if (int.TryParse(n, out no))
                                {
                                    invoiceProductVM.MasterProductSysNo.Add(no);
                                }
                            });
                        }
                        PageView.OriginalProductList.Add(invoiceProductVM);
                    }
                });
                SOFacade.GetSOInvoiceList(m_soSysNo, PageView.OriginalProductList, (isSplited, invoiceList) =>
                {
                    if (isSplited)
                    {
                        PageView.SplitedProductList = invoiceList;
                        btnSave.IsEnabled           = false;
                        btnCancelSplit.IsEnabled    = true;
                    }
                    else
                    {
                        PageView.SplitedProductList = PageView.OriginalProductList.DeepCopy();
                        ECCentral.BizEntity.SO.SOStatus soStatus = m_soVM.BaseInfoVM.Status.Value;
                        btnSave.IsEnabled = totalQty > 1 &&
                                            (soStatus == ECCentral.BizEntity.SO.SOStatus.Origin ||
                                             soStatus == ECCentral.BizEntity.SO.SOStatus.WaitingOutStock ||
                                             soStatus == ECCentral.BizEntity.SO.SOStatus.Shipping);
                        btnCancelSplit.IsEnabled = false;
                    }
                    btnGroupSort.IsEnabled = btnSave.IsEnabled;
                    SortInvoice();
                });
            });
        }