public RouteListJournalFilterViewModel() { statusNodes.AddRange(Enum.GetValues(typeof(RouteListStatus)).Cast <RouteListStatus>().Select(x => new RouteListStatusNode(x))); foreach (var addressType in Enum.GetValues(typeof(AddressType)).Cast <AddressType>()) { addressTypeNodes.Add(new AddressTypeNode(addressType)); addressTypeNodes.Last().PropertyChanged += OnStatusCheckChanged; } GeographicGroups = UoW.Session.QueryOver <GeographicGroup>().List <GeographicGroup>().ToList(); var currentUserSettings = UserSingletonRepository.GetInstance().GetUserSettings(UoW, ServicesConfig.CommonServices.UserService.CurrentUserId); foreach (var addressTypeNode in AddressTypeNodes) { switch (addressTypeNode.AddressType) { case AddressType.Delivery: addressTypeNode.Selected = currentUserSettings.LogisticDeliveryOrders; break; case AddressType.Service: addressTypeNode.Selected = currentUserSettings.LogisticServiceOrders; break; case AddressType.ChainStore: addressTypeNode.Selected = currentUserSettings.LogisticChainStoreOrders; break; } } SubscribeOnCheckChanged(); }
void ActionRouteListsAtDay_Activated(object sender, System.EventArgs e) { if (new BaseParametersProvider().UseOldAutorouting()) { tdiMain.OpenTab( TdiTabBase.GenerateHashName <RoutesAtDayDlg>(), () => new RoutesAtDayDlg() ); } else { tdiMain.OpenTab( "AutoRouting", () => new RouteListsOnDayViewModel( ServicesConfig.CommonServices, new DeliveryScheduleParametersProvider(ParametersProvider.Instance), new GtkTabsOpener(), new RouteListRepository(), new SubdivisionRepository(), OrderSingletonRepository.GetInstance(), new AtWorkRepository(), new CarRepository(), NavigationManagerProvider.NavigationManager, UserSingletonRepository.GetInstance(), new BaseParametersProvider() ) ); } }
void ActionOrdersTableActivated(object sender, System.EventArgs e) { var nomenclatureRepository = new NomenclatureRepository(new NomenclatureParametersProvider()); IEntityAutocompleteSelectorFactory counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>(ServicesConfig.CommonServices); IEntityAutocompleteSelectorFactory nomenclatureSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>(ServicesConfig.CommonServices, new NomenclatureFilterViewModel(), counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance()); OrderJournalFilterViewModel filter = new OrderJournalFilterViewModel() { IsForRetail = false }; var ordersJournal = new OrderJournalViewModel(filter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, VodovozGtkServicesConfig.EmployeeService, nomenclatureSelectorFactory, counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance()); tdiMain.AddTab(ordersJournal); }
void ActionNewRequestToSupplier_Activated(object sender, System.EventArgs e) { var nomenclatureRepository = new NomenclatureRepository(new NomenclatureParametersProvider()); IEntityAutocompleteSelectorFactory counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>(ServicesConfig.CommonServices); IEntityAutocompleteSelectorFactory nomenclatureSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>(ServicesConfig.CommonServices, new NomenclatureFilterViewModel(), counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance()); tdiMain.OpenTab( DialogHelper.GenerateDialogHashName <RequestToSupplier>(0), () => new RequestToSupplierViewModel( EntityUoWBuilder.ForCreate(), UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, VodovozGtkServicesConfig.EmployeeService, new SupplierPriceItemsRepository(), counterpartySelectorFactory, nomenclatureSelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance() ) ); }
void ActionJournalOfRequestsToSuppliers_Activated(object sender, System.EventArgs e) { var nomenclatureRepository = new NomenclatureRepository(new NomenclatureParametersProvider()); IEntityAutocompleteSelectorFactory counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>(ServicesConfig.CommonServices); IEntityAutocompleteSelectorFactory nomenclatureSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>(ServicesConfig.CommonServices, new NomenclatureFilterViewModel(), counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance()); RequestsToSuppliersFilterViewModel filter = new RequestsToSuppliersFilterViewModel(nomenclatureSelectorFactory); var requestsJournal = new RequestsToSuppliersJournalViewModel( filter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, VodovozGtkServicesConfig.EmployeeService, new SupplierPriceItemsRepository(), counterpartySelectorFactory, nomenclatureSelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance() ); tdiMain.AddTab(requestsJournal); }
public CashExpenseDlg(int id, IPermissionService permissionService) { this.Build(); UoWGeneric = UnitOfWorkFactory.CreateForRoot <Expense>(id); if (!accessfilteredsubdivisionselectorwidget.Configure(UoW, false, typeof(Expense))) { MessageDialogHelper.RunErrorDialog(accessfilteredsubdivisionselectorwidget.ValidationErrorMessage); FailInitialize = true; return; } var userPermission = permissionService.ValidateUserPermission(typeof(Expense), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id); if (!userPermission.CanRead) { MessageDialogHelper.RunErrorDialog("Отсутствуют права на просмотр расходного ордера"); FailInitialize = true; return; } canEdit = userPermission.CanUpdate; var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); canEditRectroactively = permmissionValidator.Validate(typeof(Expense), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); ConfigureDlg(); }
public IEntitySelector CreateNomenclatureSelectorForFuelSelect() { NomenclatureFilterViewModel nomenclatureFilter = new NomenclatureFilterViewModel(); nomenclatureFilter.RestrictCategory = NomenclatureCategory.fuel; nomenclatureFilter.RestrictArchive = false; var nomenclatureRepository = new NomenclatureRepository(new NomenclatureParametersProvider()); var counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>( ServicesConfig.CommonServices); var nomenclatureSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>( ServicesConfig.CommonServices, nomenclatureFilter, counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance()); NomenclaturesJournalViewModel vm = new NomenclaturesJournalViewModel( nomenclatureFilter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, new EmployeeService(), nomenclatureSelectorFactory, counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance() ); vm.SelectionMode = JournalSelectionMode.Multiple; return(vm); }
public override bool Save() { if (String.IsNullOrWhiteSpace(Entity.Code1c)) { Entity.Code1c = NomenclatureRepository.GetNextCode1c(UoW); } var valid = new QSValidator <Nomenclature>(UoWGeneric.Root); if (valid.RunDlgIfNotValid((Gtk.Window) this.Toplevel)) { return(false); } logger.Info("Сохраняем номенклатуру..."); Entity.SetNomenclatureCreationInfo(UserSingletonRepository.GetInstance()); pricesView.SaveChanges(); UoWGeneric.Save(); return(true); }
protected void OnButtonChangeNewClicked(object sender, EventArgs e) { var filter = new NomenclatureFilterViewModel(); var nomenclatureRepository = new EntityRepositories.Goods.NomenclatureRepository(new NomenclatureParametersProvider()); var userRepository = UserSingletonRepository.GetInstance(); var employeeService = VodovozGtkServicesConfig.EmployeeService; var counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>( ServicesConfig.CommonServices); var nomenclatureAutoCompleteSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>( ServicesConfig.CommonServices, filter, counterpartySelectorFactory, nomenclatureRepository, userRepository ); var nomenclaturesJournalViewModel = new NomenclaturesJournalViewModel( filter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, employeeService, nomenclatureAutoCompleteSelectorFactory, counterpartySelectorFactory, nomenclatureRepository, userRepository ); nomenclaturesJournalViewModel.SelectionMode = JournalSelectionMode.Single; nomenclaturesJournalViewModel.OnEntitySelectedResult += ChangeNewNomenclature_OnEntitySelectedResult; MyTab.TabParent.AddSlaveTab(MyTab, nomenclaturesJournalViewModel); }
void ConfigureDlg() { if(StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.IncomingWaterEdit, Entity.IncomingWarehouse, Entity.WriteOffWarehouse)) { FailInitialize = true; return; } var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.IncomingWaterEdit, Entity.IncomingWarehouse, Entity.WriteOffWarehouse); buttonFill.Sensitive = referenceProduct.IsEditable = spinAmount.Sensitive = referenceSrcWarehouse.IsEditable = referenceDstWarehouse.IsEditable = editing; incomingwatermaterialview1.Sensitive = editing; labelTimeStamp.Binding.AddBinding(Entity, e => e.DateString, w => w.LabelProp).InitializeFromSource(); spinAmount.Binding.AddBinding(Entity, e => e.Amount, w => w.ValueAsInt).InitializeFromSource(); referenceProduct.SubjectType = typeof(Nomenclature); referenceProduct.Binding.AddBinding(Entity, e => e.Product, w => w.Subject).InitializeFromSource(); referenceSrcWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.IncomingWaterEdit); referenceSrcWarehouse.Binding.AddBinding(Entity, e => e.WriteOffWarehouse, w => w.Subject).InitializeFromSource(); referenceDstWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.IncomingWaterEdit); referenceDstWarehouse.Binding.AddBinding(Entity, e => e.IncomingWarehouse, w => w.Subject).InitializeFromSource(); incomingwatermaterialview1.DocumentUoW = UoWGeneric; var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); Entity.CanEdit = permmissionValidator.Validate(typeof(IncomingWater), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if(!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { spinAmount.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); referenceProduct.Sensitive = false; referenceDstWarehouse.Sensitive = false; referenceSrcWarehouse.Sensitive = false; buttonFill.Sensitive = false; incomingwatermaterialview1.Sensitive = false; buttonSave.Sensitive = false; } else { Entity.CanEdit = true; } }
public ProducedProductionReport( IEntityAutocompleteSelectorFactory nomenclatureSelectorFactory, IEntityAutocompleteSelectorFactory counterpartySelectorFactory, INomenclatureRepository nomenclatureRepository) { this.Build(); UoW = UnitOfWorkFactory.CreateWithoutRoot(); yenumcomboboxMonths.ItemsEnum = typeof(Month); yenumcomboboxMonths.SelectedItem = (Month)(DateTime.Now.AddMonths(-1).Month); ylistcomboboxYear.ItemsList = Enumerable.Range(DateTime.Now.AddYears(-10).Year, 21).Reverse(); ylistcomboboxYear.SelectedItem = DateTime.Today.Year; ycomboboxProduction.SetRenderTextFunc <Warehouse>(x => x.Name); ycomboboxProduction.ItemsList = UoW.Session.QueryOver <Warehouse>().Where(x => x.TypeOfUse == WarehouseUsing.Production).List(); entryreferenceNomenclature.SetEntityAutocompleteSelectorFactory( new EntityAutocompleteSelectorFactory <NomenclaturesJournalViewModel>(typeof(Nomenclature), () => { var nomenclatureFilter = new NomenclatureFilterViewModel(); return(new NomenclaturesJournalViewModel( nomenclatureFilter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, new EmployeeService(), nomenclatureSelectorFactory, counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance() )); }) ); buttonCreateReport.Sensitive = true; buttonCreateReport.Clicked += OnButtonCreateReportClicked; }
public void CreateComplaint(Order order) { if (order != null) { var nomenclatureRepository = new NomenclatureRepository(new NomenclatureParametersProvider()); IEntityAutocompleteSelectorFactory employeeSelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Employee, EmployeesJournalViewModel, EmployeeFilterViewModel>( ServicesConfig.CommonServices); IEntityAutocompleteSelectorFactory counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>(ServicesConfig.CommonServices); IEntityAutocompleteSelectorFactory nomenclatureSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>(ServicesConfig .CommonServices, new NomenclatureFilterViewModel(), counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance()); ISubdivisionRepository subdivisionRepository = new SubdivisionRepository(); var parameters = new Dictionary <string, object> { { "order", order }, { "uowBuilder", EntityUoWBuilder.ForCreate() }, { "unitOfWorkFactory", UnitOfWorkFactory.GetDefaultFactory }, { "employeeSelectorFactory", employeeSelectorFactory }, { "counterpartySelectorFactory", counterpartySelectorFactory }, { "subdivisionService", subdivisionRepository }, { "nomenclatureSelectorFactory", nomenclatureSelectorFactory }, { "nomenclatureRepository", nomenclatureRepository }, { "phone", "+7" + this.MangoManager.CurrentCall.Phone.Number } }; tdiNavigation.OpenTdiTabOnTdiNamedArgs <CreateComplaintViewModel>(null, parameters); } }
protected void OnButtonAddEnumItemClicked(object sender, QS.Widgets.EnumItemClickedEventArgs e) { DocumentType type = (DocumentType)e.ItemEnum; switch (type) { case DocumentType.MovementDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName(Document.GetDocClass(type), 0), () => { return(new MovementDocumentViewModel( EntityUoWBuilder.ForCreate(), UnitOfWorkFactory.GetDefaultFactory, new WarehousePermissionService(), VodovozGtkServicesConfig.EmployeeService, new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()), new NomenclatureSelectorFactory(), new OrderSelectorFactory(), new WarehouseRepository(), UserSingletonRepository.GetInstance(), new RdlPreviewOpener(), ServicesConfig.CommonServices )); }, this ); break; case DocumentType.IncomingInvoice: TabParent.OpenTab( DialogHelper.GenerateDialogHashName(Document.GetDocClass(type), 0), () => { return(new IncomingInvoiceViewModel( EntityUoWBuilder.ForCreate(), UnitOfWorkFactory.GetDefaultFactory, new WarehousePermissionService(), VodovozGtkServicesConfig.EmployeeService, new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()), new NomenclatureSelectorFactory(), new OrderSelectorFactory(), new WarehouseRepository(), new RdlPreviewOpener(), ServicesConfig.CommonServices )); }, this ); break; case DocumentType.IncomingWater: case DocumentType.WriteoffDocument: case DocumentType.SelfDeliveryDocument: case DocumentType.CarLoadDocument: case DocumentType.CarUnloadDocument: case DocumentType.InventoryDocument: case DocumentType.ShiftChangeDocument: case DocumentType.RegradingOfGoodsDocument: default: TabParent.OpenTab( DialogHelper.GenerateDialogHashName(Document.GetDocClass(type), 0), () => OrmMain.CreateObjectDialog(Document.GetDocClass(type)), this ); break; } }
void ConfigureDlg() { if (StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.CarLoadEdit, Entity.Warehouse)) { FailInitialize = true; return; } var currentUserId = QS.Project.Services.ServicesConfig.CommonServices.UserService.CurrentUserId; var hasPermitionToEditDocWithClosedRL = QS.Project.Services.ServicesConfig.CommonServices.PermissionService.ValidateUserPresetPermission("can_change_car_load_and_unload_docs", currentUserId); var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.CarLoadEdit, Entity.Warehouse); editing &= Entity.RouteList?.Status != RouteListStatus.Closed || hasPermitionToEditDocWithClosedRL; yentryrefRouteList.IsEditable = ySpecCmbWarehouses.Sensitive = ytextviewCommnet.Editable = editing; carloaddocumentview1.Sensitive = editing; ylabelDate.Binding.AddFuncBinding(Entity, e => e.TimeStamp.ToString("g"), w => w.LabelProp).InitializeFromSource(); ySpecCmbWarehouses.ItemsList = StoreDocumentHelper.GetRestrictedWarehousesList(UoW, WarehousePermissions.CarLoadEdit); ySpecCmbWarehouses.Binding.AddBinding(Entity, e => e.Warehouse, w => w.SelectedItem).InitializeFromSource(); ytextviewCommnet.Binding.AddBinding(Entity, e => e.Comment, w => w.Buffer.Text).InitializeFromSource(); var filter = new RouteListsFilter(UoW); filter.SetAndRefilterAtOnce(x => x.RestrictedStatuses = new[] { RouteListStatus.InLoading }); yentryrefRouteList.RepresentationModel = new ViewModel.RouteListsVM(filter); yentryrefRouteList.Binding.AddBinding(Entity, e => e.RouteList, w => w.Subject).InitializeFromSource(); yentryrefRouteList.CanEditReference = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_delete"); enumPrint.ItemsEnum = typeof(CarLoadPrintableDocuments); UpdateRouteListInfo(); Entity.UpdateStockAmount(UoW); Entity.UpdateAlreadyLoaded(UoW, new RouteListRepository()); Entity.UpdateInRouteListAmount(UoW, new RouteListRepository()); carloaddocumentview1.DocumentUoW = UoWGeneric; carloaddocumentview1.SetButtonEditing(editing); buttonSave.Sensitive = editing; if (!editing) { HasChanges = false; } if (UoW.IsNew && Entity.Warehouse != null) { carloaddocumentview1.FillItemsByWarehouse(); } ySpecCmbWarehouses.ItemSelected += OnYSpecCmbWarehousesItemSelected; var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); Entity.CanEdit = permmissionValidator.Validate(typeof(CarLoadDocument), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if (!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { ytextviewCommnet.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryrefRouteList.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); ySpecCmbWarehouses.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); ytextviewRouteListInfo.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); carloaddocumentview1.Sensitive = false; buttonSave.Sensitive = false; } else { Entity.CanEdit = true; } }
void ConfigureDlg() { if (StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.IncomingWaterEdit, Entity.IncomingWarehouse, Entity.WriteOffWarehouse)) { FailInitialize = true; return; } var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.IncomingWaterEdit, Entity.IncomingWarehouse, Entity.WriteOffWarehouse); buttonFill.Sensitive = yentryProduct.IsEditable = spinAmount.Sensitive = referenceSrcWarehouse.IsEditable = referenceDstWarehouse.IsEditable = editing; incomingwatermaterialview1.Sensitive = editing; labelTimeStamp.Binding.AddBinding(Entity, e => e.DateString, w => w.LabelProp).InitializeFromSource(); spinAmount.Binding.AddBinding(Entity, e => e.Amount, w => w.ValueAsInt).InitializeFromSource(); referenceSrcWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.IncomingWaterEdit); referenceSrcWarehouse.Binding.AddBinding(Entity, e => e.WriteOffWarehouse, w => w.Subject).InitializeFromSource(); referenceDstWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.IncomingWaterEdit); referenceDstWarehouse.Binding.AddBinding(Entity, e => e.IncomingWarehouse, w => w.Subject).InitializeFromSource(); incomingwatermaterialview1.DocumentUoW = UoWGeneric; var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); Entity.CanEdit = permmissionValidator.Validate(typeof(IncomingWater), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if (!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { spinAmount.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryProduct.Sensitive = false; referenceDstWarehouse.Sensitive = false; referenceSrcWarehouse.Sensitive = false; buttonFill.Sensitive = false; incomingwatermaterialview1.Sensitive = false; buttonSave.Sensitive = false; } else { Entity.CanEdit = true; } var nomenclatureFilter = new NomenclatureFilterViewModel() { HidenByDefault = true }; var nomenclatureRepository = new EntityRepositories.Goods.NomenclatureRepository(new NomenclatureParametersProvider()); var counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>( ServicesConfig.CommonServices); var nomenclatureAutoCompleteSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>( ServicesConfig.CommonServices, nomenclatureFilter, counterpartySelectorFactory, nomenclatureRepository, UserSingletonRepository.GetInstance() ); yentryProduct.SetEntityAutocompleteSelectorFactory(nomenclatureAutoCompleteSelectorFactory); yentryProduct.Binding.AddBinding(Entity, e => e.Product, w => w.Subject).InitializeFromSource(); }
protected void OnButtonEditClicked(object sender, EventArgs e) { if (tableDocuments.GetSelectedObjects().GetLength(0) > 0) { int id = (tableDocuments.GetSelectedObjects() [0] as ViewModel.DocumentVMNode).Id; DocumentType DocType = (tableDocuments.GetSelectedObjects() [0] as ViewModel.DocumentVMNode).DocTypeEnum; switch (DocType) { case DocumentType.IncomingInvoice: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <IncomingInvoice>(id), () => { return(new IncomingInvoiceViewModel( EntityUoWBuilder.ForOpen(id), UnitOfWorkFactory.GetDefaultFactory, new WarehousePermissionService(), VodovozGtkServicesConfig.EmployeeService, new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()), new NomenclatureSelectorFactory(), new OrderSelectorFactory(), new WarehouseRepository(), new RdlPreviewOpener(), ServicesConfig.CommonServices )); }, this ); break; case DocumentType.IncomingWater: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <IncomingWater>(id), () => new IncomingWaterDlg(id), this); break; case DocumentType.MovementDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <MovementDocument>(id), () => { return(new MovementDocumentViewModel( EntityUoWBuilder.ForOpen(id), UnitOfWorkFactory.GetDefaultFactory, new WarehousePermissionService(), VodovozGtkServicesConfig.EmployeeService, new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()), new NomenclatureSelectorFactory(), new OrderSelectorFactory(), new WarehouseRepository(), UserSingletonRepository.GetInstance(), new RdlPreviewOpener(), ServicesConfig.CommonServices )); }, this ); break; case DocumentType.WriteoffDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <WriteoffDocument>(id), () => new WriteoffDocumentDlg(id), this); break; case DocumentType.InventoryDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <InventoryDocument>(id), () => new InventoryDocumentDlg(id), this); break; case DocumentType.ShiftChangeDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <ShiftChangeWarehouseDocument>(id), () => new ShiftChangeWarehouseDocumentDlg(id), this); break; case DocumentType.RegradingOfGoodsDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <RegradingOfGoodsDocument>(id), () => new RegradingOfGoodsDocumentDlg(id), this); break; case DocumentType.SelfDeliveryDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <SelfDeliveryDocument>(id), () => new SelfDeliveryDocumentDlg(id), this); break; case DocumentType.CarLoadDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <CarLoadDocument>(id), () => new CarLoadDocumentDlg(id), this); break; case DocumentType.CarUnloadDocument: TabParent.OpenTab( DialogHelper.GenerateDialogHashName <CarUnloadDocument>(id), () => new CarUnloadDocumentDlg(id), this); break; default: throw new NotSupportedException("Тип документа не поддерживается."); } } }
public CashExpenseDlg(IPermissionService permissionService) { this.Build(); UoWGeneric = UnitOfWorkFactory.CreateWithNewRoot <Expense>(); Entity.Casher = EmployeeRepository.GetEmployeeForCurrentUser(UoW); if (Entity.Casher == null) { MessageDialogHelper.RunErrorDialog("Ваш пользователь не привязан к действующему сотруднику, вы не можете создавать кассовые документы, так как некого указывать в качестве кассира."); FailInitialize = true; return; } var userPermission = permissionService.ValidateUserPermission(typeof(Expense), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id); canCreate = userPermission.CanCreate; if (!userPermission.CanCreate) { MessageDialogHelper.RunErrorDialog("Отсутствуют права на создание расходного ордера"); FailInitialize = true; return; } if (!accessfilteredsubdivisionselectorwidget.Configure(UoW, false, typeof(Expense))) { MessageDialogHelper.RunErrorDialog(accessfilteredsubdivisionselectorwidget.ValidationErrorMessage); FailInitialize = true; return; } Entity.Date = DateTime.Now; ConfigureDlg(); }
protected void OnButtonAddClicked(object sender, EventArgs e) { NomenclatureStockFilterViewModel filter = new NomenclatureStockFilterViewModel( new WarehouseRepository() ); filter.RestrictWarehouse = DocumentUoW.Root.Warehouse; NomenclatureStockBalanceJournalViewModel vm = new NomenclatureStockBalanceJournalViewModel( filter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices ); vm.SelectionMode = JournalSelectionMode.Single; vm.TabName = "Выберите номенклатуру на замену"; vm.OnEntitySelectedResult += (s, ea) => { var selectedNode = ea.SelectedNodes.Cast <NomenclatureStockJournalNode>().FirstOrDefault(); if (selectedNode == null) { return; } var nomenclature = DocumentUoW.GetById <Nomenclature>(selectedNode.Id); newRow = new RegradingOfGoodsDocumentItem() { NomenclatureOld = nomenclature, AmountInStock = selectedNode.StockAmount }; var nomenclatureFilter = new NomenclatureFilterViewModel(); var nomenclatureRepository = new EntityRepositories.Goods.NomenclatureRepository(new NomenclatureParametersProvider()); var userRepository = UserSingletonRepository.GetInstance(); var employeeService = VodovozGtkServicesConfig.EmployeeService; var counterpartySelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Counterparty, CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>( ServicesConfig.CommonServices); var nomenclatureAutoCompleteSelectorFactory = new NomenclatureAutoCompleteSelectorFactory <Nomenclature, NomenclaturesJournalViewModel>( ServicesConfig.CommonServices, nomenclatureFilter, counterpartySelectorFactory, nomenclatureRepository, userRepository ); var nomenclaturesJournalViewModel = new NomenclaturesJournalViewModel( nomenclatureFilter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, employeeService, nomenclatureAutoCompleteSelectorFactory, counterpartySelectorFactory, nomenclatureRepository, userRepository ); nomenclaturesJournalViewModel.SelectionMode = JournalSelectionMode.Single; nomenclaturesJournalViewModel.OnEntitySelectedResult += SelectNewNomenclature_ObjectSelected; MyTab.TabParent.AddSlaveTab(MyTab, nomenclaturesJournalViewModel); }; MyTab.TabParent.AddSlaveTab(MyTab, vm); }
void ConfigureDlg() { if (StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.RegradingOfGoodsEdit, Entity.Warehouse)) { FailInitialize = true; return; } var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.RegradingOfGoodsEdit, Entity.Warehouse); yentryrefWarehouse.IsEditable = ytextviewCommnet.Editable = editing; regradingofgoodsitemsview.Sensitive = editing; ylabelDate.Binding.AddFuncBinding(Entity, e => e.TimeStamp.ToString("g"), w => w.LabelProp).InitializeFromSource(); yentryrefWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.RegradingOfGoodsEdit); yentryrefWarehouse.Binding.AddBinding(Entity, e => e.Warehouse, w => w.Subject).InitializeFromSource(); ytextviewCommnet.Binding.AddBinding(Entity, e => e.Comment, w => w.Buffer.Text).InitializeFromSource(); regradingofgoodsitemsview.DocumentUoW = UoWGeneric; if (Entity.Items.Count > 0) { yentryrefWarehouse.Sensitive = false; } var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); Entity.CanEdit = permmissionValidator.Validate(typeof(RegradingOfGoodsDocument), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if (!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { ytextviewCommnet.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryrefWarehouse.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); regradingofgoodsitemsview.Sensitive = false; buttonSave.Sensitive = false; } else { Entity.CanEdit = true; } }
static void AutofacClassConfig() { var builder = new ContainerBuilder(); #region База builder.Register(c => UnitOfWorkFactory.GetDefaultFactory).As <IUnitOfWorkFactory>(); builder.RegisterType <BaseParametersProvider>().AsSelf(); #endregion #region Сервисы #region GtkUI builder.RegisterType <GtkMessageDialogsInteractive>().As <IInteractiveMessage>(); builder.RegisterType <GtkQuestionDialogsInteractive>().As <IInteractiveQuestion>(); builder.RegisterType <GtkInteractiveService>().As <IInteractiveService>(); #endregion GtkUI builder.Register(c => ServicesConfig.CommonServices).As <ICommonServices>(); builder.RegisterType <UserService>().As <IUserService>(); #endregion #region Vodovoz #region Adapters builder.RegisterType <UndeliveriesViewOpener>().As <IUndeliveriesViewOpener>(); #endregion #region Services builder.Register(c => VodovozGtkServicesConfig.EmployeeService).As <IEmployeeService>(); builder.RegisterType <GtkFilePicker>().As <IFilePickerService>(); builder.Register(c => new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance())).As <IEntityExtendedPermissionValidator>(); builder.RegisterType <EmployeeService>().As <IEmployeeService>(); #endregion #region Selectors builder.RegisterType <NomenclatureSelectorFactory>().As <INomenclatureSelectorFactory>(); builder.RegisterType <OrderSelectorFactory>().As <IOrderSelectorFactory>(); builder.RegisterType <RdlPreviewOpener>().As <IRDLPreviewOpener>(); #endregion #region Интерфейсы репозиториев builder.RegisterType <SubdivisionRepository>().As <ISubdivisionRepository>(); builder.Register(c => EmployeeSingletonRepository.GetInstance()).As <IEmployeeRepository>(); builder.RegisterType <WarehouseRepository>().As <IWarehouseRepository>(); builder.Register(c => UserSingletonRepository.GetInstance()).As <IUserRepository>(); #endregion #region Mango builder.RegisterType <MangoManager>().AsSelf(); #endregion #endregion #region Навигация builder.RegisterType <ClassNamesHashGenerator>().As <IPageHashGenerator>(); builder.Register((ctx) => new AutofacViewModelsTdiPageFactory(AppDIContainer)).As <IViewModelsPageFactory>(); builder.Register((ctx) => new AutofacTdiPageFactory(AppDIContainer)).As <ITdiPageFactory>(); builder.Register((ctx) => new AutofacViewModelsGtkPageFactory(AppDIContainer)).AsSelf(); builder.RegisterType <TdiNavigationManager>().AsSelf().As <INavigationManager>().As <ITdiCompatibilityNavigation>().SingleInstance(); builder.Register(cc => new ClassNamesBaseGtkViewResolver(typeof(InternalTalkView), typeof(DeletionView))).As <IGtkViewResolver>(); #endregion #region Старые диалоги builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetAssembly(typeof(CounterpartyDlg))) .Where(t => t.IsAssignableTo <ITdiTab>()) .AsSelf(); #endregion #region Старые общие диалоги builder.RegisterType <ReportViewDlg>().AsSelf(); #endregion #region ViewModels builder.Register(x => new AutofacViewModelResolver(AppDIContainer)).As <IViewModelResolver>(); builder.RegisterAssemblyTypes( System.Reflection.Assembly.GetAssembly(typeof(InternalTalkViewModel)), System.Reflection.Assembly.GetAssembly(typeof(ComplaintViewModel))) .Where(t => t.IsAssignableTo <ViewModelBase>() && t.Name.EndsWith("ViewModel")) .AsSelf(); #endregion #region Repository builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetAssembly(typeof(CounterpartyContractRepository))) .Where(t => t.Name.EndsWith("Repository")) .AsSelf(); #endregion AppDIContainer = builder.Build(); }
void ConfigureDlg() { callTaskWorker = new CallTaskWorker( CallTaskSingletonFactory.GetInstance(), new CallTaskRepository(), OrderSingletonRepository.GetInstance(), EmployeeSingletonRepository.GetInstance(), new BaseParametersProvider(), ServicesConfig.CommonServices.UserService, SingletonErrorReporter.Instance); if (StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.CarUnloadEdit, Entity.Warehouse)) { FailInitialize = true; return; } var currentUserId = QS.Project.Services.ServicesConfig.CommonServices.UserService.CurrentUserId; var hasPermitionToEditDocWithClosedRL = QS.Project.Services.ServicesConfig.CommonServices.PermissionService.ValidateUserPresetPermission("can_change_car_load_and_unload_docs", currentUserId); var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.CarUnloadEdit, Entity.Warehouse); editing &= Entity.RouteList?.Status != RouteListStatus.Closed || hasPermitionToEditDocWithClosedRL; Entity.InitializeDefaultValues(UoW, new NomenclatureRepository(new NomenclatureParametersProvider())); yentryrefRouteList.IsEditable = ySpecCmbWarehouses.Sensitive = ytextviewCommnet.Editable = editing; returnsreceptionview.Sensitive = hbxTareToReturn.Sensitive = nonserialequipmentreceptionview1.Sensitive = defectiveitemsreceptionview1.Sensitive = editing; defectiveitemsreceptionview1.UoW = returnsreceptionview.UoW = UoW; ylabelDate.Binding.AddFuncBinding(Entity, e => e.TimeStamp.ToString("g"), w => w.LabelProp).InitializeFromSource(); ySpecCmbWarehouses.ItemsList = StoreDocumentHelper.GetRestrictedWarehousesList(UoW, WarehousePermissions.CarUnloadEdit); ySpecCmbWarehouses.Binding.AddBinding(Entity, e => e.Warehouse, w => w.SelectedItem).InitializeFromSource(); ytextviewCommnet.Binding.AddBinding(Entity, e => e.Comment, w => w.Buffer.Text).InitializeFromSource(); var filter = new RouteListsFilter(UoW); filter.SetAndRefilterAtOnce(x => x.RestrictedStatuses = new[] { RouteListStatus.EnRoute }); yentryrefRouteList.RepresentationModel = new ViewModel.RouteListsVM(filter); yentryrefRouteList.Binding.AddBinding(Entity, e => e.RouteList, w => w.Subject).InitializeFromSource(); yentryrefRouteList.CanEditReference = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_delete"); Entity.PropertyChanged += (sender, e) => { if (e.PropertyName == nameof(Entity.Warehouse)) { OnWarehouseChanged(); } if (e.PropertyName == nameof(Entity.RouteList)) { UpdateWidgetsVisible(); } }; lblTareReturnedBefore.Binding.AddFuncBinding(Entity, e => e.ReturnedTareBeforeText, w => w.Text).InitializeFromSource(); spnTareToReturn.Binding.AddBinding(Entity, e => e.TareToReturn, w => w.ValueAsInt).InitializeFromSource(); defectiveitemsreceptionview1.Warehouse = returnsreceptionview.Warehouse = Entity.Warehouse; UpdateWidgetsVisible(); buttonSave.Sensitive = editing; if (!editing) { HasChanges = false; } if (!UoW.IsNew) { LoadReception(); } var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeRepository); Entity.CanEdit = permmissionValidator.Validate(typeof(CarUnloadDocument), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if (!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { ytextviewCommnet.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryrefRouteList.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); ySpecCmbWarehouses.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); ytextviewRouteListInfo.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); spnTareToReturn.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); defectiveitemsreceptionview1.Sensitive = false; nonserialequipmentreceptionview1.Sensitive = false; returnsreceptionview.Sensitive = false; buttonSave.Sensitive = false; } else { Entity.CanEdit = true; } }
void ConfigureDlg() { if (StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.InventoryEdit, Entity.Warehouse)) { FailInitialize = true; return; } var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.InventoryEdit, Entity.Warehouse); ydatepickerDocDate.Sensitive = yentryrefWarehouse.IsEditable = ytextviewCommnet.Editable = editing; ytreeviewItems.Sensitive = buttonAdd.Sensitive = buttonFillItems.Sensitive = buttonFine.Sensitive = buttonDeleteFine.Sensitive = editing; ydatepickerDocDate.Binding.AddBinding(Entity, e => e.TimeStamp, w => w.Date).InitializeFromSource(); yentryrefWarehouse.ItemsQuery = StoreDocumentHelper.GetRestrictedWarehouseQuery(WarehousePermissions.InventoryEdit); yentryrefWarehouse.Binding.AddBinding(Entity, e => e.Warehouse, w => w.Subject).InitializeFromSource(); ytextviewCommnet.Binding.AddBinding(Entity, e => e.Comment, w => w.Buffer.Text).InitializeFromSource(); string errorMessage = "Не установлены единицы измерения у следующих номенклатур :" + Environment.NewLine; int wrongNomenclatures = 0; foreach (var item in UoWGeneric.Root.Items) { if (item.Nomenclature.Unit == null) { errorMessage += string.Format("Номер: {0}. Название: {1}{2}", item.Nomenclature.Id, item.Nomenclature.Name, Environment.NewLine); wrongNomenclatures++; } } if (wrongNomenclatures > 0) { MessageDialogHelper.RunErrorDialog(errorMessage); FailInitialize = true; return; } var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); Entity.CanEdit = permmissionValidator.Validate(typeof(InventoryDocument), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if (!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { ydatepickerDocDate.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryrefWarehouse.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); ytextviewCommnet.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); buttonSave.Sensitive = false; ytreeviewItems.Sensitive = buttonAdd.Sensitive = buttonFillItems.Sensitive = buttonFine.Sensitive = buttonDeleteFine.Sensitive = false; } else { Entity.CanEdit = true; } filter = new SelectableParametersReportFilter(UoW); var nomenclatureParam = filter.CreateParameterSet( "Номенклатуры", "nomenclature", new ParametersFactory(UoW, (filters) => { SelectableEntityParameter <Nomenclature> resultAlias = null; var query = UoW.Session.QueryOver <Nomenclature>() .Where(x => !x.IsArchive); if (filters != null && filters.Any()) { foreach (var f in filters) { var filterCriterion = f(); if (filterCriterion != null) { query.Where(filterCriterion); } } } query.SelectList(list => list .Select(x => x.Id).WithAlias(() => resultAlias.EntityId) .Select(x => x.OfficialName).WithAlias(() => resultAlias.EntityTitle) ); query.TransformUsing(Transformers.AliasToBean <SelectableEntityParameter <Nomenclature> >()); return(query.List <SelectableParameter>()); }) ); var nomenclatureTypeParam = filter.CreateParameterSet( "Типы номенклатур", "nomenclature_type", new ParametersEnumFactory <NomenclatureCategory>() ); nomenclatureParam.AddFilterOnSourceSelectionChanged(nomenclatureTypeParam, () => { var selectedValues = nomenclatureTypeParam.GetSelectedValues(); if (!selectedValues.Any()) { return(null); } return(Restrictions.On <Nomenclature>(x => x.Category).IsIn(nomenclatureTypeParam.GetSelectedValues().ToArray())); } ); //Предзагрузка. Для избежания ленивой загрузки UoW.Session.QueryOver <ProductGroup>().Fetch(SelectMode.Fetch, x => x.Childs).List(); filter.CreateParameterSet( "Группы товаров", "product_group", new RecursiveParametersFactory <ProductGroup>(UoW, (filters) => { var query = UoW.Session.QueryOver <ProductGroup>(); if (filters != null && filters.Any()) { foreach (var f in filters) { query.Where(f()); } } return(query.List()); }, x => x.Name, x => x.Childs) ); var filterViewModel = new SelectableParameterReportFilterViewModel(filter); var filterWidget = new SelectableParameterReportFilterView(filterViewModel); vboxParameters.Add(filterWidget); filterWidget.Show(); ConfigNomenclatureColumns(); }
void ConfigureDlg() { var validationResult = CheckPermission(EmployeeSingletonRepository.GetInstance().GetEmployeeForCurrentUser(UoW)); if (StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.SelfDeliveryEdit, Entity.Warehouse)) { FailInitialize = true; return; } Entity.InitializeDefaultValues(UoW, new NomenclatureRepository(new NomenclatureParametersProvider())); vbxMain.Sensitive = canEditDocument; buttonCancel.Sensitive = true; var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.SelfDeliveryEdit, Entity.Warehouse); yentryrefOrder.IsEditable = lstWarehouse.Sensitive = ytextviewCommnet.Editable = editing && canEditDocument; selfdeliverydocumentitemsview1.Sensitive = hbxTareToReturn.Sensitive = editing && canEditDocument; ylabelDate.Binding.AddFuncBinding(Entity, e => e.TimeStamp.ToString("g"), w => w.LabelProp).InitializeFromSource(); lstWarehouse.ItemsList = StoreDocumentHelper.GetRestrictedWarehousesList(UoW, WarehousePermissions.SelfDeliveryEdit); lstWarehouse.Binding.AddBinding(Entity, e => e.Warehouse, w => w.SelectedItem).InitializeFromSource(); lstWarehouse.ItemSelected += OnWarehouseSelected; ytextviewCommnet.Binding.AddBinding(Entity, e => e.Comment, w => w.Buffer.Text).InitializeFromSource(); var filter = new OrdersFilter(UoW); filter.SetAndRefilterAtOnce( x => x.RestrictSelfDelivery = true, x => x.RestrictStatus = OrderStatus.OnLoading ); yentryrefOrder.RepresentationModel = new ViewModel.OrdersVM(filter); yentryrefOrder.Binding.AddBinding(Entity, e => e.Order, w => w.Subject).InitializeFromSource(); yentryrefOrder.CanEditReference = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_delete"); yentryrefOrder.ChangedByUser += (sender, e) => { FillTrees(); }; UpdateOrderInfo(); Entity.UpdateStockAmount(UoW); Entity.UpdateAlreadyUnloaded(UoW, new NomenclatureRepository(new NomenclatureParametersProvider()), new BottlesRepository()); selfdeliverydocumentitemsview1.DocumentUoW = UoWGeneric; //bottlereceptionview1.UoW = UoW; UpdateWidgets(); lblTareReturnedBefore.Binding.AddFuncBinding(Entity, e => e.ReturnedTareBeforeText, w => w.Text).InitializeFromSource(); spnTareToReturn.Binding.AddBinding(Entity, e => e.TareToReturn, w => w.ValueAsInt).InitializeFromSource(); IColumnsConfig goodsColumnsConfig = FluentColumnsConfig <GoodsReceptionVMNode> .Create() .AddColumn("Номенклатура").AddTextRenderer(node => node.Name) .AddColumn("Кол-во").AddNumericRenderer(node => node.Amount) .Adjustment(new Gtk.Adjustment(0, 0, 9999, 1, 100, 0)) .Editing(true) .AddColumn("Ожидаемое кол-во").AddNumericRenderer(node => node.ExpectedAmount) .AddColumn("Категория").AddTextRenderer(node => node.Category.GetEnumTitle()) .AddColumn("Направление").AddTextRenderer(node => node.Direction != null ? node.Direction.GetEnumTitle() : "") .AddColumn("Принадлежность").AddEnumRenderer(node => node.OwnType, true, new Enum[] { OwnTypes.None }) .AddSetter((c, n) => { c.Editable = false; c.Editable = n.Category == NomenclatureCategory.equipment; }) .AddColumn("Причина").AddEnumRenderer( node => node.DirectionReason , true ).AddSetter((c, n) => { switch (n.DirectionReason) { case DirectionReason.Rent: c.Text = "Закрытие аренды"; break; case DirectionReason.Repair: c.Text = "В ремонт"; break; case DirectionReason.Cleaning: c.Text = "На санобработку"; break; case DirectionReason.RepairAndCleaning: c.Text = "В ремонт и санобработку"; break; default: break; } c.Editable = false; c.Editable = n.Category == NomenclatureCategory.equipment; }) .AddColumn("") .Finish(); yTreeOtherGoods.ColumnsConfig = goodsColumnsConfig; yTreeOtherGoods.ItemsDataSource = GoodsReceptionList; var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); Entity.CanEdit = permmissionValidator.Validate(typeof(SelfDeliveryDocument), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if (!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { yTreeOtherGoods.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryrefOrder.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); ytextviewCommnet.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); ytextviewOrderInfo.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); lstWarehouse.Sensitive = false; selfdeliverydocumentitemsview1.Sensitive = false; spnTareToReturn.Sensitive = false; btnAddOtherGoods.Sensitive = false; buttonSave.Sensitive = false; } else { Entity.CanEdit = true; } FillTrees(); }
public TransferExpenseDlg(int id, IPermissionService permissionService) { this.Build(); UoWGeneric = UnitOfWorkFactory.CreateForRoot <Expense>(id); var userPermission = permissionService.ValidateUserPermission(typeof(Expense), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id); if (!userPermission.CanRead) { MessageDialogHelper.RunErrorDialog("Отсутствуют права на просмотр приходного ордера"); FailInitialize = true; return; } if (Entity.TypeDocument != ExpenseInvoiceDocumentType.ExpenseTransferDocument) { throw new InvalidOperationException($"Диалог доступен только для документа типа {nameof(ExpenseInvoiceDocumentType.ExpenseTransferDocument)}"); } ConfigureDlg(); }
public AdvanceReportDlg(int id, IPermissionService permissionService) { this.Build(); UoWGeneric = UnitOfWorkFactory.CreateForRoot <AdvanceReport>(id); if (!accessfilteredsubdivisionselectorwidget.Configure(UoW, false, typeof(Income))) { MessageDialogHelper.RunErrorDialog(accessfilteredsubdivisionselectorwidget.ValidationErrorMessage); FailInitialize = true; return; } var userPermission = permissionService.ValidateUserPermission(typeof(AdvanceReport), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id); if (!userPermission.CanRead) { MessageDialogHelper.RunErrorDialog("Отсутствуют права на просмотр приходного ордера"); FailInitialize = true; return; } canEdit = userPermission.CanUpdate; var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); canEditRectroactively = permmissionValidator.Validate(typeof(AdvanceReport), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); //Отключаем отображение ненужных элементов. labelDebtTitle.Visible = labelTableTitle.Visible = hboxDebt.Visible = GtkScrolledWindow1.Visible = labelCreating.Visible = false; comboExpense.Sensitive = yspinMoney.Sensitive = yentryEmployee.Sensitive = specialListCmbOrganisation.Sensitive = false; ConfigureDlg(); }
private void ConfigureDlg() { if (Entity.Id == 0) { Entity.OrganisationForSalary = commonOrganisationProvider.GetCommonOrganisation(UoW); } canManageDriversAndForwarders = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_manage_drivers_and_forwarders"); canManageOfficeWorkers = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_manage_office_workers"); canEditOrganisationForSalary = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_edit_organisation_for_salary"); ConfigureCategory(); ConfigureSubdivision(); OnRussianCitizenToggled(null, EventArgs.Empty); dataentryDrivingNumber.MaxLength = 20; dataentryDrivingNumber.Binding.AddBinding(Entity, e => e.DrivingLicense, w => w.Text).InitializeFromSource(); UoWGeneric.Root.PropertyChanged += OnPropertyChanged; notebookMain.Page = 0; notebookMain.ShowTabs = false; GenderComboBox.ItemsEnum = typeof(Gender); GenderComboBox.Binding.AddBinding(Entity, e => e.Gender, w => w.SelectedItemOrNull).InitializeFromSource(); subdivisionService = SubdivisionParametersProvider.Instance; yenumcomboStatus.ItemsEnum = typeof(EmployeeStatus); yenumcomboStatus.Binding.AddBinding(Entity, e => e.Status, w => w.SelectedItem).InitializeFromSource(); chkDriverForOneDay.Binding.AddBinding(Entity, e => e.IsDriverForOneDay, w => w.Active).InitializeFromSource(); cmbDriverOf.ItemsEnum = typeof(CarTypeOfUse); cmbDriverOf.Binding.AddBinding(Entity, e => e.DriverOf, w => w.SelectedItemOrNull).InitializeFromSource(); dataentryLastName.Binding.AddBinding(Entity, e => e.LastName, w => w.Text).InitializeFromSource(); dataentryName.Binding.AddBinding(Entity, e => e.Name, w => w.Text).InitializeFromSource(); dataentryPatronymic.Binding.AddBinding(Entity, e => e.Patronymic, w => w.Text).InitializeFromSource(); dataentryInnerPhone.Binding.AddBinding(Entity, e => e.InnerPhone, w => w.Text, new Gamma.Binding.Converters.NumbersToStringConverter()).InitializeFromSource(); entryAddressCurrent.Binding.AddBinding(Entity, e => e.AddressCurrent, w => w.Text).InitializeFromSource(); entryAddressRegistration.Binding.AddBinding(Entity, e => e.AddressRegistration, w => w.Text).InitializeFromSource(); entryInn.Binding.AddBinding(Entity, e => e.INN, w => w.Text).InitializeFromSource(); dataentryAndroidLogin.Binding.AddBinding(Entity, e => e.AndroidLogin, w => w.Text).InitializeFromSource(); dataentryAndroidPassword.Binding.AddBinding(Entity, e => e.AndroidPassword, w => w.Text).InitializeFromSource(); var filterDefaultForwarder = new EmployeeFilterViewModel(); filterDefaultForwarder.SetAndRefilterAtOnce( x => x.Category = EmployeeCategory.forwarder, x => x.Status = EmployeeStatus.IsWorking ); repEntDefaultForwarder.RepresentationModel = new EmployeesVM(filterDefaultForwarder); repEntDefaultForwarder.Binding.AddBinding(Entity, e => e.DefaultForwarder, w => w.Subject).InitializeFromSource(); referenceNationality.SubjectType = typeof(Nationality); referenceNationality.Binding.AddBinding(Entity, e => e.Nationality, w => w.Subject).InitializeFromSource(); referenceCitizenship.SubjectType = typeof(Citizenship); referenceCitizenship.Binding.AddBinding(Entity, e => e.Citizenship, w => w.Subject).InitializeFromSource(); referenceUser.SubjectType = typeof(User); referenceUser.CanEditReference = false; referenceUser.Binding.AddBinding(Entity, e => e.User, w => w.Subject).InitializeFromSource(); referenceUser.Sensitive = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_manage_users"); yenumcombobox13.ItemsEnum = typeof(RegistrationType); yenumcombobox13.Binding.AddBinding(Entity, e => e.Registration, w => w.SelectedItemOrNull).InitializeFromSource(); comboDriverType.ItemsEnum = typeof(DriverType); comboDriverType.Binding.AddBinding(Entity, e => e.DriverType, w => w.SelectedItemOrNull).InitializeFromSource(); ydatepicker1.Binding.AddBinding(Entity, e => e.BirthdayDate, w => w.DateOrNull).InitializeFromSource(); dateFired.Binding.AddBinding(Entity, e => e.DateFired, w => w.DateOrNull).InitializeFromSource(); dateHired.Binding.AddBinding(Entity, e => e.DateHired, w => w.DateOrNull).InitializeFromSource(); dateCalculated.Binding.AddBinding(Entity, e => e.DateCalculated, w => w.DateOrNull).InitializeFromSource(); photoviewEmployee.Binding.AddBinding(Entity, e => e.Photo, w => w.ImageFile).InitializeFromSource(); photoviewEmployee.GetSaveFileName = () => Entity.FullName; attachmentFiles.AttachToTable = OrmConfig.GetDBTableName(typeof(Employee)); if (Entity.Id != 0) { attachmentFiles.ItemId = UoWGeneric.Root.Id; attachmentFiles.UpdateFileList(); } phonesView.UoW = UoWGeneric; if (UoWGeneric.Root.Phones == null) { UoWGeneric.Root.Phones = new List <Phone>(); } phonesView.Phones = UoWGeneric.Root.Phones; accountsView.ParentReference = new ParentReferenceGeneric <Employee, Account>(UoWGeneric, o => o.Accounts); accountsView.SetTitle("Банковские счета сотрудника"); ydateFirstWorkDay.Binding.AddBinding(Entity, e => e.FirstWorkDay, w => w.DateOrNull).InitializeFromSource(); yspinTripsPriority.Binding.AddBinding(Entity, e => e.TripPriority, w => w.ValueAsShort).InitializeFromSource(); yspinDriverSpeed.Binding.AddBinding(Entity, e => e.DriverSpeed, w => w.Value, new MultiplierToPercentConverter()).InitializeFromSource(); minAddressesSpin.Binding.AddBinding(Entity, e => e.MinRouteAddresses, w => w.ValueAsInt).InitializeFromSource(); maxAddressesSpin.Binding.AddBinding(Entity, e => e.MaxRouteAddresses, w => w.ValueAsInt).InitializeFromSource(); checkbuttonRussianCitizen.Binding.AddBinding(Entity, e => e.IsRussianCitizen, w => w.Active).InitializeFromSource(); checkVisitingMaster.Binding.AddBinding(Entity, e => e.VisitingMaster, w => w.Active).InitializeFromSource(); checkChainStoreDriver.Binding.AddBinding(Entity, e => e.IsChainStoreDriver, w => w.Active).InitializeFromSource(); ylblUserLogin.TooltipText = "При сохранении сотрудника создаёт нового пользователя с введённым логином и отправляет сотруднику SMS с сгенерированным паролем"; yentryUserLogin.Binding.AddBinding(Entity, e => e.LoginForNewUser, w => w.Text); yentryUserLogin.Sensitive = CanCreateNewUser; specialListCmbOrganisation.ItemsList = UoW.GetAll <Organization>(); specialListCmbOrganisation.Binding.AddBinding(Entity, e => e.OrganisationForSalary, w => w.SelectedItem).InitializeFromSource(); specialListCmbOrganisation.Sensitive = canEditOrganisationForSalary; ConfigureWorkSchedules(); ConfigureDistrictPriorities(); ytreeviewEmployeeDocument.ColumnsConfig = FluentColumnsConfig <EmployeeDocument> .Create() .AddColumn("Документ").AddTextRenderer(x => x.Document.GetEnumTitle()) .AddColumn("Доп. название").AddTextRenderer(x => x.Name) .Finish(); ytreeviewEmployeeDocument.SetItemsSource(Entity.ObservableDocuments); ytreeviewEmployeeContract.ColumnsConfig = FluentColumnsConfig <EmployeeContract> .Create() .AddColumn("Договор").AddTextRenderer(x => x.EmployeeContractTemplate.TemplateType.GetEnumTitle()) .AddColumn("Название").AddTextRenderer(x => x.Name) .AddColumn("Дата начала").AddTextRenderer(x => x.FirstDay.ToString("dd/MM/yyyy")) .AddColumn("Дата конца").AddTextRenderer(x => x.LastDay.ToString("dd/MM/yyyy")) .Finish(); ytreeviewEmployeeContract.SetItemsSource(Entity.ObservableContracts); wageParametersView.ViewModel = new EmployeeWageParametersViewModel ( Entity, this, UoW, new HierarchicalPresetPermissionValidator(EmployeeSingletonRepository.GetInstance(), new PermissionRepository()), UserSingletonRepository.GetInstance(), ServicesConfig.CommonServices, NavigationManagerProvider.NavigationManager ); logger.Info("Ok"); }
void ConfigureDlg() { if (StoreDocumentHelper.CheckAllPermissions(UoW.IsNew, WarehousePermissions.WriteoffEdit, Entity.WriteoffWarehouse)) { FailInitialize = true; return; } var editing = StoreDocumentHelper.CanEditDocument(WarehousePermissions.WriteoffEdit, Entity.WriteoffWarehouse); repEntryEmployee.IsEditable = textComment.Editable = editing; writeoffdocumentitemsview1.Sensitive = editing && (Entity.WriteoffWarehouse != null || Entity.Client != null); textComment.Binding.AddBinding(Entity, e => e.Comment, w => w.Buffer.Text).InitializeFromSource(); labelTimeStamp.Binding.AddBinding(Entity, e => e.DateString, w => w.LabelProp).InitializeFromSource(); referenceCounterparty.RepresentationModel = new ViewModel.CounterpartyVM(new CounterpartyFilter(UoW)); referenceCounterparty.Binding.AddBinding(Entity, e => e.Client, w => w.Subject).InitializeFromSource(); ySpecCmbWarehouses.ItemsList = StoreDocumentHelper.GetRestrictedWarehousesList(UoW, WarehousePermissions.WriteoffEdit); ySpecCmbWarehouses.Binding.AddBinding(Entity, e => e.WriteoffWarehouse, w => w.SelectedItem).InitializeFromSource(); ySpecCmbWarehouses.ItemSelected += (sender, e) => { writeoffdocumentitemsview1.Sensitive = editing && (Entity.WriteoffWarehouse != null || Entity.Client != null); }; referenceDeliveryPoint.SubjectType = typeof(DeliveryPoint); referenceDeliveryPoint.CanEditReference = false; referenceDeliveryPoint.Binding.AddBinding(Entity, e => e.DeliveryPoint, w => w.Subject).InitializeFromSource(); repEntryEmployee.RepresentationModel = new EmployeesVM(); repEntryEmployee.Binding.AddBinding(Entity, e => e.ResponsibleEmployee, w => w.Subject).InitializeFromSource(); comboType.ItemsEnum = typeof(WriteoffType); referenceDeliveryPoint.Sensitive = referenceCounterparty.Sensitive = (UoWGeneric.Root.Client != null); comboType.EnumItemSelected += (object sender, Gamma.Widgets.ItemSelectedEventArgs e) => { ySpecCmbWarehouses.Sensitive = WriteoffType.warehouse.Equals(comboType.SelectedItem); referenceDeliveryPoint.Sensitive = WriteoffType.counterparty.Equals(comboType.SelectedItem) && UoWGeneric.Root.Client != null; referenceCounterparty.Sensitive = WriteoffType.counterparty.Equals(comboType.SelectedItem); }; //FIXME Списание с контрагента не реализовано. Поэтому блокирует выбор типа списания. comboType.Sensitive = false; comboType.SelectedItem = UoWGeneric.Root.Client != null ? WriteoffType.counterparty : WriteoffType.warehouse; writeoffdocumentitemsview1.DocumentUoW = UoWGeneric; Entity.ObservableItems.ElementAdded += (aList, aIdx) => ySpecCmbWarehouses.Sensitive = !Entity.ObservableItems.Any(); Entity.ObservableItems.ElementRemoved += (aList, aIdx, aObject) => ySpecCmbWarehouses.Sensitive = !Entity.ObservableItems.Any(); ySpecCmbWarehouses.Sensitive = editing && !Entity.Items.Any(); var permmissionValidator = new EntityExtendedPermissionValidator(PermissionExtensionSingletonStore.GetInstance(), EmployeeSingletonRepository.GetInstance()); Entity.CanEdit = permmissionValidator.Validate(typeof(WriteoffDocument), UserSingletonRepository.GetInstance().GetCurrentUser(UoW).Id, nameof(RetroactivelyClosePermission)); if (!Entity.CanEdit && Entity.TimeStamp.Date != DateTime.Now.Date) { ySpecCmbWarehouses.Binding.AddFuncBinding(Entity, e => e.CanEdit, w => w.Sensitive).InitializeFromSource(); referenceCounterparty.Sensitive = false; referenceDeliveryPoint.Sensitive = false; comboType.Sensitive = false; repEntryEmployee.Sensitive = false; textComment.Sensitive = false; writeoffdocumentitemsview1.Sensitive = false; buttonSave.Sensitive = false; } else { Entity.CanEdit = true; } }