Esempio n. 1
0
 protected void FillDebts()
 {
     if (Entity.TypeOperation == IncomeType.Return && Entity.Employee != null)
     {
         var advances = AccountableDebtsRepository
                        .UnclosedAdvance(UoW, Entity.Employee, Entity.ExpenseCategory, Entity.Organisation?.Id);
         selectableAdvances = advances.Select(advance => new Selectable <Expense> (advance))
                              .ToList();
         selectableAdvances.ForEach(advance => advance.SelectChanged += OnAdvanceSelectionChanged);
         ytreeviewDebts.ItemsDataSource = selectableAdvances;
     }
 }
Esempio n. 2
0
        private void ConfigureDlg()
        {
            Entity.ObservableFuelDocuments.ElementAdded   += ObservableFuelDocuments_ElementAdded;
            Entity.ObservableFuelDocuments.ElementRemoved += ObservableFuelDocuments_ElementRemoved;
            referenceCar.SubjectType = typeof(Car);
            referenceCar.ItemsQuery  = CarRepository.ActiveCarsQuery();
            referenceCar.Binding.AddBinding(Entity, rl => rl.Car, widget => widget.Subject).InitializeFromSource();
            referenceCar.Sensitive = editing;

            var filterDriver = new EmployeeFilter(UoW);

            filterDriver.SetAndRefilterAtOnce(
                x => x.RestrictCategory = EmployeeCategory.driver,
                x => x.ShowFired        = false
                );
            referenceDriver.RepresentationModel = new EmployeesVM(filterDriver);
            referenceDriver.Binding.AddBinding(Entity, rl => rl.Driver, widget => widget.Subject).InitializeFromSource();
            referenceDriver.Sensitive = editing;

            previousForwarder = Entity.Forwarder;
            var filterForwarder = new EmployeeFilter(UoW);

            filterForwarder.SetAndRefilterAtOnce(
                x => x.RestrictCategory = EmployeeCategory.forwarder,
                x => x.ShowFired        = false
                );
            referenceForwarder.RepresentationModel = new EmployeesVM(filterForwarder);
            referenceForwarder.Binding.AddBinding(Entity, rl => rl.Forwarder, widget => widget.Subject).InitializeFromSource();
            referenceForwarder.Sensitive = editing;
            referenceForwarder.Changed  += ReferenceForwarder_Changed;

            var filterLogistican = new EmployeeFilter(UoW);

            filterLogistican.SetAndRefilterAtOnce(x => x.ShowFired = false);
            referenceLogistican.RepresentationModel = new EmployeesVM(filterLogistican);
            referenceLogistican.Binding.AddBinding(Entity, rl => rl.Logistican, widget => widget.Subject).InitializeFromSource();
            referenceLogistican.Sensitive = editing;

            speccomboShift.ItemsList = DeliveryShiftRepository.ActiveShifts(UoW);
            speccomboShift.Binding.AddBinding(Entity, rl => rl.Shift, widget => widget.SelectedItem).InitializeFromSource();
            speccomboShift.Sensitive = editing;

            yspinActualDistance.Binding.AddBinding(Entity, rl => rl.ActualDistance, widget => widget.ValueAsDecimal).InitializeFromSource();
            yspinActualDistance.Sensitive = editing;

            datePickerDate.Binding.AddBinding(Entity, rl => rl.Date, widget => widget.Date).InitializeFromSource();
            datePickerDate.Sensitive = editing;

            ycheckConfirmDifferences.Binding.AddBinding(Entity, e => e.DifferencesConfirmed, w => w.Active).InitializeFromSource();
            ycheckConfirmDifferences.Sensitive = editing && Entity.Status == RouteListStatus.OnClosing;

            decimal unclosedAdvanceMoney = AccountableDebtsRepository.EmloyeeDebt(UoW, Entity.Driver);

            ylabelUnclosedAdvancesMoney.LabelProp =
                String.Format(unclosedAdvanceMoney > 0m ? "<span foreground='red'><b>Долг: {0}</b></span>" : "", unclosedAdvanceMoney);

            ytextClosingComment.Binding.AddBinding(Entity, e => e.ClosingComment, w => w.Buffer.Text).InitializeFromSource();
            ytextClosingComment.Sensitive = editing;
            labelOrderEarly.Text          = "Сдано ранее:" + GetCashOrder().ToString();
            spinCashOrder.Value           = 0;
            advanceSpinbutton.Value       = 0;
            advanceSpinbutton.Visible     = false;

            ycheckNormalWage.Binding.AddSource(Entity)
            .AddFuncBinding(x => x.Driver.WageCalcType == WageCalculationType.normal && x.Car.IsCompanyHavings, w => w.Visible)
            .AddBinding(x => x.NormalWage, w => w.Active)
            .InitializeFromSource();
            ycheckNormalWage.Sensitive = editing && QSMain.User.Permissions["change_driver_wage"];

            PerformanceHelper.AddTimePoint("Создан диалог");

            //Предварительная загрузка объектов для ускорения.

            /*			Vodovoz.Domain.Orders.Order orderAlias = null;
             *                      var clients = UoW.Session.QueryOver<RouteListItem>()
             *                              .Where(rli => rli.RouteList.Id == Entity.Id)
             *                              .JoinAlias(rli => rli.Order, () => orderAlias)
             *                              .Fetch(rli => rli.Order.Client).Eager
             *                              .List();
             *                              //.Select(Projections. a => orderAlias.Client).Future();
             *                              //.List<Counterparty>();
             */
            PerformanceHelper.AddTimePoint("Предварительная загрузка");

            routeListAddressesView.UoW       = UoW;
            routeListAddressesView.RouteList = Entity;
            foreach (RouteListItem item in routeListAddressesView.Items)
            {
                item.Order.ObservableOrderItems.ElementChanged += ObservableOrderItems_ElementChanged;
                item.Order.ObservableOrderItems.ElementAdded   += ObservableOrderItems_ElementAdded;
                item.Order.ObservableOrderItems.ElementRemoved += ObservableOrderItems_ElementRemoved;

                item.Order.ObservableOrderEquipments.ElementChanged += ObservableOrderItems_ElementChanged;
                item.Order.ObservableOrderEquipments.ElementAdded   += ObservableOrderItems_ElementAdded;
                item.Order.ObservableOrderEquipments.ElementRemoved += ObservableOrderItems_ElementRemoved;

                item.Order.ObservableOrderDepositItems.ElementChanged += ObservableOrderItems_ElementChanged;
                item.Order.ObservableOrderDepositItems.ElementAdded   += ObservableOrderItems_ElementAdded;
                item.Order.ObservableOrderDepositItems.ElementRemoved += ObservableOrderItems_ElementRemoved;
            }
            routeListAddressesView.Items.ElementChanged   += OnRouteListItemChanged;
            routeListAddressesView.OnClosingItemActivated += OnRouteListItemActivated;
            routeListAddressesView.IsEditing        = editing;
            routeListAddressesView.ColumsVisibility = !ycheckHideCells.Active;
            ycheckHideCells.Sensitive = editing;
            PerformanceHelper.AddTimePoint("заполнили список адресов");
            ReloadReturnedToWarehouse();
            var returnableOrderItems = routeListAddressesView.Items
                                       .Where(address => address.IsDelivered())
                                       .SelectMany(address => address.Order.OrderItems)
                                       .Where(orderItem => !orderItem.Nomenclature.IsSerial)
                                       .Where(orderItem => Nomenclature.GetCategoriesForShipment().Any(nom => nom == orderItem.Nomenclature.Category));

            foreach (var item in returnableOrderItems)
            {
                if (allReturnsToWarehouse.All(r => r.NomenclatureId != item.Nomenclature.Id))
                {
                    allReturnsToWarehouse.Add(new RouteListRepository.ReturnsNode {
                        Name           = item.Nomenclature.Name,
                        Trackable      = item.Nomenclature.IsSerial,
                        NomenclatureId = item.Nomenclature.Id,
                        Amount         = 0
                    });
                }
            }
            PerformanceHelper.AddTimePoint("Получили возврат на склад");
            //FIXME Убрать из этого места первоначальное заполнение. Сейчас оно вызывается при переводе статуса на сдачу. После того как не нормально не переведенных в закрытие маршрутников, тут заполение можно убрать.
            if (!Entity.ClosingFilled)
            {
                Entity.FirstFillClosing();
            }

            PerformanceHelper.AddTimePoint("Закончено первоначальное заполнение");

            hbox6.Remove(vboxHidenPanel);
            rightsidepanel1.Panel   = vboxHidenPanel;
            rightsidepanel1.IsHided = true;

            expander1.Expanded = false;

            routelistdiscrepancyview.FindDiscrepancies(Entity.Addresses, allReturnsToWarehouse);
            routelistdiscrepancyview.FineChanged += Routelistdiscrepancyview_FineChanged;
            routelistdiscrepancyview.Sensitive    = editing;
            PerformanceHelper.AddTimePoint("Заполнили расхождения");

            buttonAddFuelDocument.Sensitive             = Entity.Car?.FuelType?.Cost != null && Entity.Driver != null && editing;
            buttonDeleteFuelDocument.Sensitive          = Entity.Car?.FuelType?.Cost != null && Entity.Driver != null && editing;
            ytreeviewFuelDocuments.ItemsDataSource      = Entity.ObservableFuelDocuments;
            ytreeviewFuelDocuments.Reorderable          = true;
            Entity.ObservableFuelDocuments.ListChanged += ObservableFuelDocuments_ListChanged;
            UpdateFuelDocumentsColumns();

            enummenuRLActions.ItemsEnum        = typeof(RouteListActions);
            enummenuRLActions.EnumItemClicked += EnummenuRLActions_EnumItemClicked;
            enummenuRLActions.Sensitive        = editing;

            CheckWage();

            LoadDataFromFine();
            OnItemsUpdated();
            PerformanceHelper.AddTimePoint("Загрузка штрафов");
            GetFuelInfo();
            UpdateFuelInfo();
            PerformanceHelper.AddTimePoint("Загрузка бензина");

            PerformanceHelper.Main.PrintAllPoints(logger);

            //Подписки на обновления
            OrmMain.GetObjectDescription <CarUnloadDocument>().ObjectUpdatedGeneric += OnCalUnloadUpdated;

            enumPrint.ItemsEnum        = typeof(RouteListPrintDocuments);
            enumPrint.EnumItemClicked += (sender, e) => PrintSelectedDocument((RouteListPrintDocuments)e.ItemEnum);

            ylabelRecalculatedMileage.Binding.AddFuncBinding(Entity, e => e.RecalculatedDistance.HasValue ? $" {e.RecalculatedDistance} км" : "", w => w.LabelProp).InitializeFromSource();
            checkSendToMileageCheck.Binding.AddBinding(Entity, x => x.MileageCheck, w => w.Active).InitializeFromSource();
            Entity.PropertyChanged += Entity_PropertyChanged;
            //FIXME костыли, необходимо избавится от этого кода когда решим проблему с сессиями и flush nhibernate
            HasChanges          = true;
            UoW.CanCheckIfDirty = false;
        }