Exemplo n.º 1
0
        public Batch()
        {
            NavigateOnShowCatalog = true;
            DisplayName           = "АвтоЗаказ";
            AddressSelector       = new AddressSelector(this);
            Filter = new[] {
                "Все",
                "Заказано",
                "   Минимальные",
                "   Не минимальные",
                "   Присутствующие в замороженных заказах",
                "   Ограничен лимитом",
                "Не заказано",
                "   Нет предложений",
                "   Нулевое количество",
                "   Прочее",
                "   Не сопоставлено",
                "   Лимит исчерпан"
            };
            CurrentFilter  = new NotifyValue <string>("Все");
            SearchBehavior = new SearchBehavior(this);
            Lines          = new NotifyValue <ObservableCollection <BatchLineView> >(new ObservableCollection <BatchLineView>());
            ReportLines    = new NotifyValue <ObservableCollection <BatchLineView> >(() => {
                var query = Lines.Value.Where(l => l.Product.CultureContains(SearchBehavior.ActiveSearchTerm.Value) &&
                                              (l.OrderLine != null || !l.BatchLine.Status.HasFlag(ItemToOrderStatus.Ordered)));
                if (CurrentFilter.Value == Filter[1])
                {
                    query = query.Where(l => !l.IsNotOrdered);
                }
                else if (CurrentFilter.Value == Filter[2])
                {
                    query = query.Where(l => !l.IsNotOrdered && l.IsMinCost);
                }
                else if (CurrentFilter.Value == Filter[3])
                {
                    query = query.Where(l => !l.IsNotOrdered && !l.IsMinCost);
                }
                else if (CurrentFilter.Value == Filter[4])
                {
                    query = query.Where(l => !l.IsNotOrdered && l.ExistsInFreezed);
                }
                else if (CurrentFilter.Value == Filter[5])
                {
                    query = query.Where(l => l.IsSplitByLimit);
                }
                else if (CurrentFilter.Value == Filter[6])
                {
                    query = query.Where(l => l.IsNotOrdered);
                }
                else if (CurrentFilter.Value == Filter[7])
                {
                    query = query.Where(l => l.IsNotOrdered && !l.BatchLine.Status.HasFlag(ItemToOrderStatus.OffersExists));
                }
                else if (CurrentFilter.Value == Filter[8])
                {
                    query = query.Where(l => l.IsNotOrdered && l.BatchLine.Quantity == 0);
                }
                else if (CurrentFilter.Value == Filter[9])
                {
                    query = query.Where(l => l.IsNotOrdered && l.BatchLine.Quantity > 0 &&
                                        l.BatchLine.ProductId != null &&
                                        l.BatchLine.Status.HasFlag(ItemToOrderStatus.OffersExists));
                }
                else if (CurrentFilter.Value == Filter[10])
                {
                    query = query.Where(l => l.IsNotOrdered && l.BatchLine.ProductId == null);
                }
                else if (CurrentFilter.Value == Filter[11])
                {
                    query = query.Where(l => l.IsLimited);
                }
                return(query.OrderBy(l => l.Product).ToObservableCollection());
            }, CurrentFilter, SearchBehavior.ActiveSearchTerm);
            CurrentReportLine   = new NotifyValue <BatchLineView>();
            CanDelete           = CurrentReportLine.Select(l => l != null).ToValue();
            SelectedReportLines = new List <BatchLineView>();
            CanClear            = Lines.CollectionChanged()
                                  .Select(e => e.Sender as ObservableCollection <BatchLineView>)
                                  .Select(v => v != null && v.Count > 0).ToValue();
            CanReload = Lines.CollectionChanged()
                        .Select(e => e.Sender as ObservableCollection <BatchLineView>)
                        .Select(v => CanUpload && v != null && v.Count > 0).ToValue();
            WatchForUpdate(CurrentReportLine.Select(l => l?.BatchLine));
            ActivePrint = new NotifyValue <string>();
            ActivePrint.Subscribe(ExcelExporter.ActiveProperty);
            CurrentFilter.Subscribe(_ => SearchBehavior.ActiveSearchTerm.Value = "");
            ReportEditor = new ReportEditor(this);

            PrintMenuItems = new ObservableCollection <MenuItem>();
            IsView         = true;
        }