protected void OnButtonAddClicked(object sender, EventArgs e)
        {
            var subdivisionNode = treeviewSubdivisions.GetSelectedObject() as SubdivisionVMNode;

            if (subdivisionNode == null)
            {
                return;
            }
            var subdivision = UoW.GetById <Subdivision>(subdivisionNode.Id);

            var typeOfEntity = ytreeviewEntities.GetSelectedObject() as TypeOfEntity;

            if (subdivision == null || typeOfEntity == null)
            {
                return;
            }
            if (subdivision == employeeSubdivision)
            {
                MessageDialogHelper.RunWarningDialog("Нельзя добавлять данный вид прав для текущего подразделения сотрудника");
                return;
            }
            if (model.PermissionExists(typeOfEntity, subdivision))
            {
                MessageDialogHelper.RunWarningDialog("Такое право уже существует");
                return;
            }
            model.AddPermission(typeOfEntity, subdivision);
        }
        public LoadFrom1cClientsAndDeliveryPoints()
        {
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog("Доступ запрещён!", "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.", Gtk.ButtonsType.Ok);
                FailInitialize = true;
                return;
            }

            throw new ApplicationException("Сюда сейчас нельзя.");            //Counterparty.VodInternalId генерируется тригером на стороне БД. Исправить соответствующий код ниже.

            this.Build();

            TabName = "Загрузка из 1с";

            FileFilter Filter = new FileFilter();

            Filter.Name = "XML выгрузка";
            Filter.AddMimeType("application/xml");
            Filter.AddPattern("*.xml");
            filechooser.Filter = Filter;

            nomStroika = UoW.GetById <Nomenclature>(15);
            nomRuchki  = UoW.GetById <Nomenclature>(7);

            errorLog.Add(string.Format("Статус;Код1с контрагента;Код1с точки доставки;Причина"));
        }
示例#3
0
        public ExportToSiteDlg()
        {
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog("Доступ запрещён!", "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.", Gtk.ButtonsType.Ok);
                FailInitialize = true;
                return;
            }

            Build();
            TabName = "Экспорт интернет магазин";
            comboExportMode.ItemsEnum = typeof(ExportMode);

            if (_parametersProvider.ContainsParameter(Export.OnlineStoreUrlParameterName))
            {
                entrySitePath.Text = _parametersProvider.GetParameterValue(Export.OnlineStoreUrlParameterName);
            }

            if (_parametersProvider.ContainsParameter(Export.OnlineStoreLoginParameterName))
            {
                entryUser.Text = _parametersProvider.GetParameterValue(Export.OnlineStoreLoginParameterName);
            }

            if (_parametersProvider.ContainsParameter(Export.OnlineStorePasswordParameterName))
            {
                entryPassword.Text = _parametersProvider.GetParameterValue(Export.OnlineStorePasswordParameterName);
            }

            if (_parametersProvider.ContainsParameter(Export.OnlineStoreExportMode))
            {
                comboExportMode.SelectedItem = Enum.Parse(typeof(ExportMode), _parametersProvider.GetParameterValue(Export.OnlineStoreExportMode));
            }
        }
示例#4
0
        protected void OnButtonDeleteClicked(object sender, EventArgs e)
        {
            if (!CanDelete)
            {
                MessageDialogHelper.RunWarningDialog("У вас нет прав для удаления этого документа.");
                return;
            }
            var toDelete = ytreeviewRef.GetSelectedObjects();

            var text = NumberToTextRus.FormatCase(toDelete.Length,
                                                  "Вы собираетесь удалить {0} объект, вам нужно будет проверить ссылки для каждого из них. Продолжить?",
                                                  "Вы собираетесь удалить {0} объекта, вам нужно будет проверить ссылки для каждого из них. Продолжить?",
                                                  "Вы собираетесь удалить {0} объектов, вам нужно будет проверить ссылки для каждого из них. Продолжить?");

            if (toDelete.Length > 1 && !MessageDialogHelper.RunQuestionDialog(text))
            {
                return;
            }

            foreach (var delete in toDelete)
            {
                OrmMain.DeleteObject(delete);
            }

            UpdateObjectList();
        }
示例#5
0
        private void SendReport(string logContent, ErrorReportType reportType)
        {
            var svc = ReportWorker.GetReportService();

            if (svc == null)
            {
                MessageDialogHelper.RunErrorDialog("Не удалось установить соединение с сервером Quality Solution.");
                return;
            }

            var result = svc.SubmitErrorReport(
                new ErrorReport {
                Product     = application.ProductName,
                Edition     = application.Modification,
                Version     = application.Version.ToString(),
                DBName      = databaseInfo?.Name ?? String.Empty,
                StackTrace  = AppExceptionText,
                Description = textviewDescription.Buffer.Text,
                Email       = entryEmail.Text,
                UserName    = user?.Name,
                LogFile     = logContent,
                ReportType  = reportType
            });

            if (result)
            {
                this.Respond(ResponseType.Ok);
                reportSent = true;
            }
            else
            {
                MessageDialogHelper.RunWarningDialog("Отправка сообщения не удалась.\n" +
                                                     "Проверьте ваше интернет соединение и повторите попытку. Если отправка неудастся возможно имеются проблемы на стороне сервера.");
            }
        }
示例#6
0
        public MergeAddressesDlg()
        {
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog("Доступ запрещён!", "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.", Gtk.ButtonsType.Ok);
                FailInitialize = true;
                return;
            }

            this.Build();

            TabName = "Дубликаты адресов";

            ytreeviewDuplicates.ColumnsConfig = FluentColumnsConfig <DublicateNode> .Create()
                                                .AddColumn("Слить").AddToggleRenderer(x => x.Selected).Editing()
                                                .AddColumn("Контрагент").AddTextRenderer(x => x.CounterParty)
                                                .AddColumn("Адрес 1с").AddTextRenderer(x => x.FirstAddress1c)
                                                .Finish();

            ytreeviewDuplicates.Selection.Changed += DuplicateSelection_Changed;

            ytreeviewAddresses.ColumnsConfig = FluentColumnsConfig <AddressNode> .Create()
                                               .AddColumn("Главный").AddToggleRenderer(x => x.IsMain).Editing().Radio()
                                               .AddColumn("Не трогать").AddToggleRenderer(x => x.Ignore).Editing()
                                               .AddColumn("Код 1С").AddTextRenderer(x => x.Address.Code1c)
                                               .AddColumn("Адрес 1с").AddTextRenderer(x => x.PangoText, useMarkup: true)
                                               .Finish();
        }
示例#7
0
 void OnUpdate(bool hide = false)
 {
     if (dateperiodpicker.StartDateOrNull == null || dateperiodpicker.EndDateOrNull == null)
     {
         MessageDialogHelper.RunWarningDialog("Необходимо ввести полный период");
         return;
     }
     LoadReport?.Invoke(this, new LoadReportEventArgs(GetReportInfo(), hide));
 }
 void OnUpdate(bool hide = false)
 {
     if (datepicker.DateOrNull == null)
     {
         MessageDialogHelper.RunWarningDialog("Необходимо выбрать дату");
         return;
     }
     LoadReport?.Invoke(this, new LoadReportEventArgs(GetReportInfo(), hide));
 }
示例#9
0
        private async void OnButtonFormClicked(object sender, EventArgs args)
        {
            bool loadedSuccessfully = false;

            try
            {
                ViewModel.DataIsLoading = true;
                ViewModel.StatusMessage = "Загрузка данных водителей...";

                var items = await Task.Run(() => ViewModel.GetDriverInfoNodes());

                loadedSuccessfully = true;

                if (!_isDestroyed)
                {
                    Application.Invoke((s, eventArgs) =>
                    {
                        if (ViewModel.DriversInfoExportType == DriversInfoExportType.RouteListGrouping)
                        {
                            ConfigureTreeViewForRouteListGrouping(ViewModel.IsPlan, ViewModel.IsFact);
                        }
                        else
                        {
                            ConfigureTreeViewForDriverCarGrouping(ViewModel.IsPlan, ViewModel.IsFact);
                        }

                        ViewModel.Items = new GenericObservableList <DriverInfoNode>(items.ToList());
                    });
                }
            }
            catch (Exception ex)
            {
                if (ex.FindExceptionTypeInInner <TimeoutException>() != null)
                {
                    Application.Invoke((s, eventArgs) =>
                                       MessageDialogHelper.RunWarningDialog("Превышено время ожидания выполнения запроса.\nПопробуйте уменьшить период",
                                                                            "Таймаут"));
                }
                else
                {
                    Application.Invoke((s, eventArgs) => throw ex);
                }
            }
            finally
            {
                if (!_isDestroyed)
                {
                    Application.Invoke((s, eventArgs) =>
                    {
                        ViewModel.DataIsLoading = false;
                        ViewModel.StatusMessage = loadedSuccessfully ? "Данные загружены" : "Ошибка при загрузке данных";
                    });
                }
            }
        }
示例#10
0
 protected void OnButtonCreateReportClicked(object sender, EventArgs e)
 {
     if (dateperiodpicker.StartDate != default(DateTime))
     {
         OnUpdate(true);
     }
     else
     {
         MessageDialogHelper.RunWarningDialog("Заполните дату.");
     }
 }
示例#11
0
        protected void OnButtonRunClicked(object sender, EventArgs e)
        {
            var selectedTariffZone = yspeccomboboxTariffZone.SelectedItem as TariffZone;

            if (selectedTariffZone == null)
            {
                MessageDialogHelper.RunWarningDialog("Необходимо выбрать тарифную зону");
                return;
            }
            OnUpdate(true);
        }
 private void OnDatepickerDateDateChangedByUser(object sender, EventArgs e)
 {
     if (Entity.Date < DateTime.Today.AddDays(-1) && !_canСreateRoutelistInPastPeriod)
     {
         MessageDialogHelper.RunWarningDialog("Нельзя выставлять дату ранее вчерашнего дня!");
         Entity.Date = _previousSelectedDate;
     }
     else
     {
         _previousSelectedDate = Entity.Date;
     }
 }
示例#13
0
        private void ConfigureDlg()
        {
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog("Доступ запрещён!", "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.", Gtk.ButtonsType.Ok);
                FailInitialize = true;
                return;
            }

            entryreference1.SubjectType = typeof(Nomenclature);
            entryreference2.SubjectType = typeof(Nomenclature);
        }
        public void ConfigureDlg(IUnitOfWork uow, UserBase user)
        {
            var employee = _employeeRepository.GetEmployeesForUser(uow, user.Id).FirstOrDefault();

            if (employee == null)
            {
                MessageDialogHelper.RunWarningDialog($"К пользователю \"{user.Name}\" не привязан сотрудник, невозможно будет установить права на подразделение для документов.");
                return;
            }

            if (employee.Subdivision == null)
            {
                MessageDialogHelper.RunWarningDialog($"Сотрудник \"{employee.ShortName}\" не привязан к подразделению, невозможно будет установить права на подразделение для документов.");
                return;
            }

            UoW = uow;
            employeeSubdivision = employee.Subdivision;
            this.user           = user;

            model = new EntitySubdivisionForUserPermissionModel(UoW, employeeSubdivision, user);

            var subdivisionsVM = new SubdivisionsVM(UoW);

            treeviewSubdivisions.RepresentationModel = subdivisionsVM;
            treeviewSubdivisions.YTreeModel          = new RecursiveTreeModel <SubdivisionVMNode>(subdivisionsVM.Result, x => x.Parent, x => x.Children);

            ytreeviewPermissions.ColumnsConfig = ColumnsConfigFactory.Create <EntitySubdivisionForUserPermission>()
                                                 .AddColumn("Подразделение").AddTextRenderer(x => x.Subdivision.Name)
                                                 .AddColumn("Документ").AddTextRenderer(x => x.TypeOfEntity.CustomName)
                                                 .AddColumn("Просмотр").AddToggleRenderer(x => x.CanRead).Editing()
                                                 .AddColumn("Создание").AddToggleRenderer(x => x.CanCreate).Editing()
                                                 .AddColumn("Редактирование").AddToggleRenderer(x => x.CanUpdate).Editing()
                                                 .AddColumn("Удаление").AddToggleRenderer(x => x.CanDelete).Editing()
                                                 .Finish();

            ytreeviewPermissions.ItemsDataSource = model.ObservablePermissionsList;

            ytreeviewEntities.ColumnsConfig = ColumnsConfigFactory.Create <TypeOfEntity>()
                                              .AddColumn("Документ").AddTextRenderer(x => x.CustomName)
                                              .Finish();

            ytreeviewEntities.ItemsDataSource = model.ObservableTypeOfEntitiesList;

            searchSubdivisions.TextChanged    += SearchSubdivisionsOnTextChanged;
            searchTypesOfEntities.TextChanged += SearchPermissionsOnTextChanged;

            treeviewSubdivisions.ExpandAll();

            Sensitive = true;
        }
示例#15
0
        public override bool Save()
        {
            var all             = _deliveryScheduleRepository.All(UoWGeneric);
            var notArchivedList = all.Where(ds => ds.IsArchive == false && ds.From == Entity.From && ds.To == Entity.To).ToList();

            if (notArchivedList.Any() && UoWGeneric.Root.IsArchive == false)
            {            //при архивировании интервала эти проверки не нужны
                //есть вероятность, что среди активных интервалов есть дубликаты, так что берем первый
                var active = notArchivedList.First();
                MessageDialogHelper.RunWarningDialog("Уже существует интервал с таким же периодом.\n" +
                                                     "Создание нового интервала невозможно.\n" +
                                                     "Существующий интервал:\n" +
                                                     $"Код: {active.Id}\n" +
                                                     $"Название: {active.Name}\n" +
                                                     $"Период: {active.DeliveryTime}\n");
                return(false);                // нашли активный
            }

            var archivedList = all.Where(ds => ds.IsArchive && ds.From == Entity.From && ds.To == Entity.To).ToList();

            if (archivedList.Any() && UoWGeneric.Root.IsArchive == false)
            {            //при архивировании интервала эти проверки не нужны
                //т.к. интервалы нельзя удалять, архивными могут быть несколько, так что берем первый
                var archived = archivedList.First();
                if (MessageDialogHelper.RunQuestionDialog("Уже существует архивный интервал с таким же периодом.\n" +
                                                          "Создание нового интервала невозможно.\n" +
                                                          "Разархивировать существующий интервал?"))
                {                //отменяем изменения текущей сущности интервала и обновляем найденный архивный
                    UoWGeneric.Delete(UoWGeneric.Root);
                    archived.IsArchive = false;
                    UoWGeneric.Save(archived);
                    UoWGeneric.Commit();
                    MessageDialogHelper.RunInfoDialog("Разархивирован интервал:\n" +
                                                      $"Код: {archived.Id}\n" +
                                                      $"Название: {archived.Name}\n" +
                                                      $"Период: {archived.DeliveryTime}\n");
                }
                return(false);                // нашли/разархивировали старый
            }

            var valid = new QSValidator <DeliverySchedule> (UoWGeneric.Root);

            if (valid.RunDlgIfNotValid((Gtk.Window) this.Toplevel))
            {
                return(false);
            }

            logger.Info("Сохраняем график доставки...");
            UoWGeneric.Save();
            return(true);
        }
示例#16
0
        protected override void ConfigureWidget()
        {
            btnAddGuilty.Binding.AddBinding(ViewModel, vm => vm.CanAddGuilty, w => w.Visible).InitializeFromSource();

            GuiltyItemView wGuiltyItem = null;

            btnAddGuilty.Clicked += (sender, e) => {
                ViewModel.AddGuiltyCommand.Execute();
                CreateGuiltyWidget(ref wGuiltyItem);
            };

            btnSaveGuilty.Binding.AddBinding(ViewModel, vm => vm.CanEditGuilty, w => w.Visible).InitializeFromSource();
            btnSaveGuilty.Clicked += (sender, e) => {
                var err = ValidationHelper.RaiseValidationAndGetResult(ViewModel.CurrentGuiltyVM.Entity);
                if (err == null)
                {
                    DestroyGuiltyWidget(wGuiltyItem);
                    ViewModel.SaveGuiltyCommand.Execute();
                }
                else
                {
                    MessageDialogHelper.RunWarningDialog(err);
                }
            };

            btnCancel.Binding.AddBinding(ViewModel, vm => vm.CanEditGuilty, w => w.Visible).InitializeFromSource();
            btnCancel.Clicked += (sender, e) => {
                DestroyGuiltyWidget(wGuiltyItem);
                ViewModel.CancelCommand.Execute();
            };

            btnRemoveGuilty.Clicked += (sender, e) => ViewModel.RemoveGuiltyCommand.Execute(GetSelectedGuilty());
            btnRemoveGuilty.Binding.AddBinding(ViewModel, vm => vm.CanAddGuilty, w => w.Visible).InitializeFromSource();
            btnRemoveGuilty.Binding.AddBinding(ViewModel, vm => vm.CanRemoveGuilty, w => w.Sensitive).InitializeFromSource();

            treeViewGuilty.ColumnsConfig = FluentColumnsConfig <ComplaintGuiltyItem> .Create()
                                           .AddColumn("Сторона")
                                           .HeaderAlignment(0.5f)
                                           .AddTextRenderer(n => n.GuiltyType.GetEnumShortTitle())
                                           .AddColumn("Отдел ВВ")
                                           .HeaderAlignment(0.5f)
                                           .AddTextRenderer(n => n.GetGuiltySubdivisionOrEmployee)
                                           .AddColumn("")
                                           .Finish();

            treeViewGuilty.HeadersVisible = false;
            treeViewGuilty.Binding.AddBinding(ViewModel.Entity, s => s.ObservableGuilties, w => w.ItemsDataSource).InitializeFromSource();
            treeViewGuilty.Selection.Changed += (sender, e) => ViewModel.CanRemoveGuilty = GetSelectedGuilty() != null;
        }
示例#17
0
        protected void OnButtonRevertClicked(object sender, EventArgs e)
        {
            var toRevert = ytreeviewRLTo
                           .GetSelectedObjects <RouteListItemNode>()
                           .Where(x => x.WasTransfered)
                           .Select(x => x.RouteListItem)
                           .ToList();

            foreach (var address in toRevert)
            {
                if (address.Status == RouteListItemStatus.Transfered)
                {
                    MessageDialogHelper.RunWarningDialog(string.Format("Адрес {0} сам перенесен в МЛ №{1}. Отмена этого переноса не возможна. Сначала нужно отменить перенос в {1} МЛ.", address?.Order?.DeliveryPoint.ShortAddress, address.TransferedTo?.RouteList.Id));
                    continue;
                }

                RouteListItem pastPlace =
                    (yentryreferenceRLFrom.Subject as RouteList)
                    ?.Addresses
                    ?.FirstOrDefault(x => x.TransferedTo != null && x.TransferedTo.Id == address.Id)
                    ?? new RouteListItemRepository().GetTransferedFrom(UoW, address);

                if (pastPlace != null)
                {
                    pastPlace.SetStatusWithoutOrderChange(address.Status);
                    pastPlace.DriverBottlesReturned = address.DriverBottlesReturned;
                    pastPlace.TransferedTo          = null;

                    if (pastPlace.RouteList.ClosingFilled)
                    {
                        pastPlace.FirstFillClosing(UoW, _wageParameterService);
                    }

                    UpdateTranferDocuments(pastPlace.RouteList, address.RouteList);
                    UoW.Save(pastPlace);
                }

                address.RouteList.ObservableAddresses.Remove(address);
                UoW.Save(address.RouteList);
            }

            foreach (var routeListItem in toRevert)
            {
                routeListItem.RecalculateTotalCash();
            }

            UoW.Commit();
            UpdateNodes();
        }
示例#18
0
        public DocumentsPrinterDlg(Order order)
        {
            this.Build();

            TabName = "Печать документов заказа";

            entitiyDocumentsPrinter = new EntitiyDocumentsPrinter(order);
            if (!string.IsNullOrEmpty(entitiyDocumentsPrinter.ODTTemplateNotFoundMessages))
            {
                MessageDialogHelper.RunWarningDialog(entitiyDocumentsPrinter.ODTTemplateNotFoundMessages);
            }
            currentOrder = order;

            Configure();
        }
        public CalculateDistanceToPointsDlg()
        {
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog(
                    "Доступ запрещён!",
                    "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.",
                    Gtk.ButtonsType.Ok
                    );
                FailInitialize = true;
                return;
            }

            this.Build();
            TabName = "Расчет расстояний до точек";
            uow.Session.SetBatchSize(SaveBy);
        }
示例#20
0
        protected void OnButtonRevertClicked(object sender, EventArgs e)
        {
            var toRevert = ytreeviewRLTo
                           .GetSelectedObjects <RouteListItemNode>()
                           .Where(x => x.WasTransfered)
                           .Select(x => x.RouteListItem)
                           .ToList();

            foreach (var address in toRevert)
            {
                if (address.Status == RouteListItemStatus.Transfered)
                {
                    MessageDialogHelper.RunWarningDialog(string.Format("Адрес {0} сам перенесен в МЛ №{1}. Отмена этого переноса не возможна. Сначала нужно отменить перенос в {1} МЛ.", address?.Order?.DeliveryPoint.ShortAddress, address.TransferedTo?.RouteList.Id));
                    continue;
                }

                RouteListItem pastPlace =
                    (yentryreferenceRLFrom.Subject as RouteList)
                    ?.Addresses
                    ?.FirstOrDefault(x => x.TransferedTo != null && x.TransferedTo.Id == address.Id)
                    ?? _routeListItemRepository.GetTransferedFrom(UoW, address);

                var previousRouteList = pastPlace?.RouteList;

                if (pastPlace != null)
                {
                    previousRouteList.RevertTransferAddress(_wageParameterService, pastPlace, address);
                    pastPlace.NeedToReload  = address.NeedToReload;
                    pastPlace.WasTransfered = true;
                    UpdateTranferDocuments(pastPlace.RouteList, address.RouteList);
                    pastPlace.RecalculateTotalCash();
                    UoW.Save(pastPlace);
                    address.RouteList.TransferAddressTo(address, pastPlace);
                    address.WasTransfered = false;
                }

                address.RouteList.CalculateWages(_wageParameterService);
                address.RecalculateTotalCash();

                UoW.Save(address.RouteList);
            }

            UoW.Commit();
            UpdateNodes();
        }
示例#21
0
 protected void OnCheckNoCloseToggled(object sender, EventArgs e)
 {
     if (selectableAdvances == null)
     {
         return;
     }
     if (checkNoClose.Active && selectableAdvances.Count(x => x.Selected) > 1)
     {
         MessageDialogHelper.RunWarningDialog("Частично вернуть можно только один аванс.");
         checkNoClose.Active = false;
         return;
     }
     yspinMoney.Sensitive = checkNoClose.Active;
     if (!checkNoClose.Active)
     {
         yspinMoney.ValueAsDecimal = selectableAdvances.Where(x => x.Selected).Sum(x => x.Value.UnclosedMoney);
     }
 }
 public void AddTime(TimeSpan time)
 {
     if (time == new TimeSpan())
     {
         return;
     }
     if (Times.Count >= 12)
     {
         return;
     }
     if (Times.Any() && Times.Last().Value > time)
     {
         MessageDialogHelper.RunWarningDialog("Добавляемое время должно быть позже предыдущего");
         return;
     }
     Times.Add(new Time(time));
     UpdateButtonAddIntervalSensitive();
 }
示例#23
0
        public DocumentsPrinterDlg(Order order, IEntityDocumentsPrinterFactory entityDocumentsPrinterFactory)
        {
            Build();

            TabName = "Печать документов заказа";

            _entityDocumentsPrinter =
                (entityDocumentsPrinterFactory ?? throw new ArgumentNullException(nameof(entityDocumentsPrinterFactory)))
                .CreateOrderDocumentsPrinter(order);

            if (!string.IsNullOrEmpty(_entityDocumentsPrinter.ODTTemplateNotFoundMessages))
            {
                MessageDialogHelper.RunWarningDialog(_entityDocumentsPrinter.ODTTemplateNotFoundMessages);
            }

            _currentOrder = order;

            Configure();
        }
示例#24
0
        private bool CheckPermissions()
        {
            if (UoW == null)
            {
                throw new ArgumentNullException($"Необходимо установить UnitOfWork для {nameof(PermissionCommentView)}");
            }
            if (String.IsNullOrWhiteSpace(PermissionName))
            {
                throw new ArgumentNullException($"Необходимо установить PermissionName для {nameof(PermissionCommentView)}");
            }

            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_edit_cashier_review_comment"))
            {
                MessageDialogHelper.RunWarningDialog("У вас нет прав для изменения/создания комментария");
                return(false);
            }

            return(true);
        }
示例#25
0
        public ExportTo1cDialog(IUnitOfWorkFactory unitOfWorkFactory)
        {
            Build();
            TabName = "Выгрузка в 1с 8.3";

            comboOrganization.ItemsList = unitOfWorkFactory.CreateWithoutRoot().GetAll <Organization>();

            buttonExportBookkeeping.Clicked += (sender, args) => Export(Export1cMode.BuhgalteriaOOO);
            buttonExportIPTinkoff.Clicked   += (sender, args) => Export(Export1cMode.IPForTinkoff);

            ybuttonExportBookkeepingNew.Clicked += (sender, args) => {
                if (comboOrganization.SelectedItem is Organization)
                {
                    Export(Export1cMode.BuhgalteriaOOONew);
                }
                else
                {
                    MessageDialogHelper.RunWarningDialog("Для этой выгрузки необходимо выбрать организацию");
                }
            };
        }
示例#26
0
        public OrdersWithoutBottlesOperationDlg()
        {
            if (!ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("database_maintenance"))
            {
                MessageDialogHelper.RunWarningDialog("Доступ запрещён!", "У вас недостаточно прав для доступа к этой вкладке. Обратитесь к своему руководителю.", Gtk.ButtonsType.Ok);
                FailInitialize = true;
                return;
            }

            this.Build();

            TabName = "Заказы без передвижения бутылей";

            ytreeviewOrders.ColumnsConfig = FluentColumnsConfig <Order> .Create()
                                            .AddColumn("№ заказа").AddNumericRenderer(x => x.Id)
                                            .AddColumn("Клиент").AddNumericRenderer(x => x.Client.Name)
                                            .AddColumn("Дата").SetDataProperty(x => x.DeliveryDate.HasValue
                                                                   ? x.DeliveryDate.Value.ToShortDateString()
                                                                   : "")
                                            .AddColumn("Кол-во бутылей").AddNumericRenderer(x => x.OrderItems.Sum(item => item.Count))
                                            .Finish();
        }
示例#27
0
        protected void OnButtonRecalculateMileageClicked(object sender, EventArgs e)
        {
            logger.Info("Рассчет длинны маршрута...");
            RouteGeometryCalculator routeCalculator = new RouteGeometryCalculator(DistanceProvider.Osrm);

            var points = new List <long> {
                CachedDistance.BaseHash
            };

            #region если нет координат хотя бы у одной точки доставки
            bool   hasError = false;
            string ErMsg    = "Пересчёт километража невозможен, т.к. не найдены координаты для следующих точек доставки:\n";
            foreach (RouteListItem address in Entity.Addresses.Where(p => p.Order.DeliveryPoint.Latitude == null ||
                                                                     p.Order.DeliveryPoint.Longitude == null))
            {
                hasError = true;
                ErMsg   += String.Format("\tЗаказ №{0} - {1}\n", address.Order.Id, address.Order.DeliveryPoint.ShortAddress);
            }
            ErMsg += "Перейдите в указанные точки доставки и добавьте (проверьте) их координаты.";
            if (hasError)
            {
                MessageDialogHelper.RunWarningDialog(ErMsg);
                return;
            }
            #endregion
            foreach (RouteListItem address in Entity.Addresses.OrderBy(x => x.StatusLastUpdate))
            {
                if (address.Status == RouteListItemStatus.Completed)
                {
                    points.Add(address.Order.DeliveryPoint.СoordinatesHash);
                }
            }
            points.Add(CachedDistance.BaseHash);

            var distance = (decimal)routeCalculator.GetRouteDistance(points.ToArray());
            Entity.RecalculatedDistance = distance / 1000;
            logger.Info("Ок.");
        }
示例#28
0
 protected void OnButtonAddClicked(object sender, EventArgs e)
 {
     if (!CanCreate)
     {
         MessageDialogHelper.RunWarningDialog("У вас нет прав для создания этого документа.");
         return;
     }
     ytreeviewRef.Selection.UnselectAll();
     if (OrmMain.GetObjectDescription(objectType).SimpleDialog)
     {
         SelectObject(EntityEditSimpleDialog.RunSimpleDialog(this.Toplevel as Window, objectType, null));
     }
     else
     {
         var tab = TabParent.OpenTab(DialogHelper.GenerateDialogHashName(objectType, 0),
                                     () => OrmMain.CreateObjectDialog(objectType), this
                                     );
         if (tab != null)
         {
             (tab as ITdiDialog).EntitySaved += NewItemDlg_EntitySaved;
         }
     }
 }
        protected void OnBtnSendEnRouteClicked(object sender, EventArgs e)
        {
            #region костыль
            //FIXME пока не можем найти причину бага с несменой статуса на в пути при полной отгрузке, позволяем логистам отправлять МЛ в путь из этого диалога
            bool fullyLoaded = false;
            if (Entity.ShipIfCan(UoW, CallTaskWorker, out _))
            {
                fullyLoaded = true;
                MessageDialogHelper.RunInfoDialog("Маршрутный лист отгружен полностью.");
            }
            #endregion

            if (
                !fullyLoaded &&
                ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_send_not_loaded_route_lists_en_route") &&
                MessageDialogHelper.RunQuestionWithTitleDialog(
                    "Оптправить в путь?",
                    string.Format(
                        "{0} погружен <span foreground=\"Red\">НЕ ПОЛНОСТЬЮ</span> и будет переведён в статус \"{1}\". После сохранения изменений откат этого действия будет невозможен.\nВы уверены что хотите отправить МЛ в путь?",
                        Entity.Title,
                        RouteListStatus.EnRoute.GetEnumTitle()
                        )
                    )
                )
            {
                Entity.ChangeStatusAndCreateTask(RouteListStatus.EnRoute, CallTaskWorker);
                Entity.NotFullyLoaded = true;
            }
            else if (!fullyLoaded && !ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_send_not_loaded_route_lists_en_route"))
            {
                MessageDialogHelper.RunWarningDialog(
                    "Недостаточно прав",
                    string.Format("У вас нет прав для перевода не полностью погруженных МЛ в статус \"{0}\"", RouteListStatus.EnRoute.GetEnumTitle()),
                    Gtk.ButtonsType.Ok
                    );
            }
        }
示例#30
0
        protected void OnButtonEditClicked(object sender, EventArgs e)
        {
            if (!CanEdit)
            {
                MessageDialogHelper.RunWarningDialog("У вас нет прав для редактирования этого документа.");
                return;
            }
            if (OrmMain.GetObjectDescription(objectType).SimpleDialog)
            {
                EntityEditSimpleDialog.RunSimpleDialog(this.Toplevel as Window, objectType, ytreeviewRef.GetSelectedObjects().First());
            }
            else
            {
                var selected = ytreeviewRef.GetSelectedObjects();

                var text = NumberToTextRus.FormatCase(selected.Length,
                                                      "Вы действительно хотите открыть {0} вкладку?",
                                                      "Вы действительно хотите открыть {0} вкладки?",
                                                      "Вы действительно хотите открыть {0} вкладок?"
                                                      );

                if (selected.Length > 5 && !MessageDialogHelper.RunQuestionDialog(text))
                {
                    return;
                }

                foreach (var one in selected)
                {
                    TabParent.OpenTab(DialogHelper.GenerateDialogHashName(objectType, DomainHelper.GetId(one)),
                                      () => OrmMain.CreateObjectDialog(objectType, one),
                                      this,
                                      canSlided: selected.Length == 1
                                      );
                }
            }
        }