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; } }
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; }