Exemplo n.º 1
0
        void EnummenuRLActions_EnumItemClicked(object sender, EnumItemClickedEventArgs e)
        {
            switch ((RouteListActions)e.ItemEnum)
            {
            case RouteListActions.CreateNewFine:
                this.TabParent.AddSlaveTab(
                    this, new FineDlg(default(decimal), Entity)
                    );
                break;

            case RouteListActions.TransferReceptionToAnotherRL:
                this.TabParent.AddSlaveTab(
                    this, new TransferGoodsBetweenRLDlg(Entity, TransferGoodsBetweenRLDlg.OpenParameter.Sender)
                    );
                break;

            case RouteListActions.TransferReceptionToThisRL:
                this.TabParent.AddSlaveTab(
                    this, new TransferGoodsBetweenRLDlg(Entity, TransferGoodsBetweenRLDlg.OpenParameter.Receiver)
                    );
                break;

            case RouteListActions.TransferAddressesToThisRL:
                if (UoW.HasChanges)
                {
                    if (MessageDialogHelper.RunQuestionDialog("Необходимо сохранить документ.\nСохранить?"))
                    {
                        this.Save();
                    }
                    else
                    {
                        return;
                    }
                }
                this.TabParent.AddSlaveTab(
                    this, new RouteListAddressesTransferringDlg(Entity, RouteListAddressesTransferringDlg.OpenParameter.Receiver)
                    );
                break;

            case RouteListActions.TransferAddressesToAnotherRL:
                if (UoW.HasChanges)
                {
                    if (MessageDialogHelper.RunQuestionDialog("Необходимо сохранить документ.\nСохранить?"))
                    {
                        this.Save();
                    }
                    else
                    {
                        return;
                    }
                }
                this.TabParent.AddSlaveTab(
                    this, new RouteListAddressesTransferringDlg(Entity, RouteListAddressesTransferringDlg.OpenParameter.Sender)
                    );
                break;

            default:
                break;
            }
        }
Exemplo n.º 2
0
        public static void CheckBanksUpdate(bool forceUpdate)
        {
            if (!forceUpdate)
            {
                dynamic parameters = new ParametersService(Connection.ConnectionDB);
                DateTime.TryParse(parameters.last_banks_update, out DateTime lastModified);

                int withoutUpdate = (int)DateTime.Now.Subtract(lastModified).TotalDays;
                if (withoutUpdate < UpdatePeriod)
                {
                    return;
                }
                var runUpdate = MessageDialogHelper.RunQuestionDialog(
                    lastModified == default(DateTime)
                                                ? "Справочник банков никогда не обновлялся. Обновить?"
                                                : NumberToTextRus.FormatCase(
                        withoutUpdate,
                        "Cправочник банков обновлялся\n{0} день назад. Обновить?",
                        "Cправочник банков обновлялся\n{0} дня назад. Обновить?",
                        "Cправочник банков обновлялся\n{0} дней назад. Обновить?"));
                if (!runUpdate)
                {
                    return;
                }
            }
            BanksUpdateWindow updateWindow = new BanksUpdateWindow();

            updateWindow.Show();
        }
 public bool AskToCloseTab(ITdiTab tab, CloseSource source)
 {
     if (MessageDialogHelper.RunQuestionDialog("Вы действительно хотите закрыть окно?"))
     {
         tab.OnTabClosed();
     }
     return(true);
 }
Exemplo n.º 4
0
        protected void OnButtonChangeToEmployeeClicked(object sender, EventArgs e)
        {
            if (UoW.HasChanges || Entity.Id == 0)
            {
                if (!MessageDialogHelper.RunQuestionDialog("Для продолжения необходимо сохранить изменения, сохранить и продолжить?"))
                {
                    return;
                }
                if (Save())
                {
                    OnEntitySaved(true);
                }
                else
                {
                    return;
                }
            }
            var employeeUow = UnitOfWorkFactory.CreateWithNewRoot <Employee>();

            Personnel.ChangeTraineeToEmployee(employeeUow, Entity);

            var cs = new ConfigurationSection(new ConfigurationRoot(new List <IConfigurationProvider> {
                new MemoryConfigurationProvider(new MemoryConfigurationSource())
            }), "");

            cs["BaseUri"] = "https://driverapi.vod.qsolution.ru:7090/api/";

            var apiHelper = new ApiClientProvider.ApiClientProvider(cs);

            var driverApiRegisterEndpoint = new DriverApiUserRegisterEndpoint(apiHelper);

            var employeeViewModel = new EmployeeViewModel(
                _authorizationService,
                _employeeWageParametersFactory,
                _employeeJournalFactory,
                _subdivisionJournalFactory,
                _employeePostsJournalFactory,
                _cashDistributionCommonOrganisationProvider,
                _subdivisionService,
                _emailServiceSettingAdapter,
                _wageCalculationRepository,
                _employeeRepository,
                employeeUow,
                ServicesConfig.CommonServices,
                _validationContextFactory,
                _phonesViewModelFactory,
                _warehouseRepository,
                _routeListRepository,
                driverApiRegisterEndpoint,
                CurrentUserSettings.Settings,
                _userRepository,
                _baseParametersProvider,
                true);

            TabParent.OpenTab(DialogHelper.GenerateDialogHashName <Employee>(Entity.Id),
                              () => employeeViewModel);
            OnCloseTab(false);
        }
Exemplo n.º 5
0
 public void OpenIssuenceSheet()
 {
     if (UoW.HasChanges)
     {
         if (!MessageDialogHelper.RunQuestionDialog("Сохранить документ выдачи перед открытием ведомости?") || !Save())
         {
             return;
         }
     }
     MainClass.MainWin.NavigationManager.OpenViewModel <IssuanceSheetViewModel, IEntityUoWBuilder>(this, EntityUoWBuilder.ForOpen(Entity.IssuanceSheet.Id));
 }
Exemplo n.º 6
0
        void dlg_EntitySaved(object sender, EntitySavedEventArgs e)
        {
            if (e.Entity != null && dialog.Mode == JournalSelectMode.Single)
            {
                if (!MessageDialogHelper.RunQuestionDialog("Выбрать созданный объект и вернуться к предыдущему диалогу?"))
                {
                    return;
                }

                dialog.OnObjectSelected(e.Entity);
            }
        }
Exemplo n.º 7
0
        protected void OnButtonAcceptClicked(object sender, EventArgs e)
        {
            var casher = EmployeeRepository.GetEmployeeForCurrentUser(UoW);

            if (casher == null)
            {
                MessageDialogHelper.RunErrorDialog("Ваш пользователь не привязан к действующему сотруднику, вы не можете закрыть МЛ, так как некого указывать в качестве кассира.");
                return;
            }

            if (!isConsistentWithUnloadDocument())
            {
                return;
            }

            if (!checkSendToMileageCheck.Active)
            {
                Entity.ConfirmedDistance = Entity.ActualDistance;
            }

            var valid = new QSValidator <RouteList>(UoWGeneric.Root,
                                                    new Dictionary <object, object>
            {
                { "NewStatus", RouteListStatus.MileageCheck }
            });

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

            if (advanceCheckbox.Active && advanceSpinbutton.Value > 0)
            {
                EmployeeAdvanceOrder((decimal)advanceSpinbutton.Value);
            }

            Entity.Cashier = casher;
            Entity.Confirm(checkSendToMileageCheck.Active);

            if (!MessageDialogHelper.RunQuestionDialog("Перед выходом распечатать документ?"))
            {
                SaveAndClose();
            }
            else
            {
                Save();

                PrintRouteList();

                UpdateButtonState();
                this.OnCloseTab(false);
            }
        }
Exemplo n.º 8
0
 /// <summary>
 /// Открытие существующего заказа
 /// </summary>
 /// <param name="order">Заказ, который требуется открыть</param>
 void OpenOrder(Order order)
 {
     if (MessageDialogHelper.RunQuestionDialog("Требуется сохранить недовоз. Сохранить?"))
     {
         UoW.Save();
         UoW.Commit();
         var dlg = new OrderDlg(order);
         MyTab.TabParent.OpenTab(
             DialogHelper.GenerateDialogHashName <Order>(order.Id),
             () => dlg
             );
     }
 }
Exemplo n.º 9
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);
        }
        private void Configure()
        {
            ylabelCurrentDistrictsSetStr.Text  = ViewModel.ActiveDistrictsSet?.Name ?? "-";
            ylabelSelectedDistrictsSetStr.Text = ViewModel.Entity?.Name ?? "";

            ybuttonActivate.Clicked += async(sender, args) =>
            {
                if (!MessageDialogHelper.RunQuestionDialog($"Переключить базу на версию районов \"{ViewModel.Entity.Name}\""))
                {
                    return;
                }
                try
                {
                    await ViewModel.ActivateAsync();
                }
                catch (Exception ex)
                {
                    Application.Invoke((s, e) => throw ex);
                }
            };

            ytreePrioritiesToDelete.ColumnsConfig = ColumnsConfigFactory.Create <DriverDistrictPriority>()
                                                    .AddColumn("Код").AddTextRenderer(x => x.Id.ToString())
                                                    .AddColumn("Водитель").AddTextRenderer(x => x.DriverDistrictPrioritySet.Driver.ShortName)
                                                    .AddColumn("Старый район").AddTextRenderer(x => x.District.DistrictName)
                                                    .AddColumn("")
                                                    .Finish();

            ViewModel.PropertyChanged += (sender, args) =>
            {
                Application.Invoke((s, e) =>
                {
                    if (args.PropertyName == nameof(ViewModel.ActivationStatus))
                    {
                        ylabelActivationStatus.Text = ViewModel.ActivationStatus;
                    }
                    if (args.PropertyName == nameof(ViewModel.ActivationInProgress) || args.PropertyName == nameof(ViewModel.WasActivated))
                    {
                        ybuttonActivate.Sensitive = !ViewModel.ActivationInProgress && !ViewModel.WasActivated;
                    }
                    if (args.PropertyName == nameof(ViewModel.ActiveDistrictsSet))
                    {
                        ylabelCurrentDistrictsSetStr.Text = ViewModel.ActiveDistrictsSet.Name;
                    }
                    if (args.PropertyName == nameof(ViewModel.NotCopiedPriorities))
                    {
                        ytreePrioritiesToDelete.ItemsDataSource = ViewModel.NotCopiedPriorities;
                    }
                });
            };
        }
Exemplo n.º 11
0
        protected void OnButtonEditCloseDeliveryCommentClicked(object sender, EventArgs e)
        {
            if (!CheckPermissions())
            {
                return;
            }
            if (!MessageDialogHelper.RunQuestionDialog("Вы уверены что хотите изменить комментарий (преведущий комментарий будет удален)?"))
            {
                return;
            }

            Comment = String.Empty;
            CommentChanged?.Invoke(comment);
        }
Exemplo n.º 12
0
        public override bool Save()
        {
            if (!Entity.CanEdit)
            {
                return(false);
            }

            Entity.UpdateAlreadyLoaded(UoW, _routeListRepository);
            var valid = new QS.Validation.QSValidator <CarLoadDocument> (UoWGeneric.Root);

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

            Entity.LastEditor     = _employeeRepository.GetEmployeeForCurrentUser(UoW);
            Entity.LastEditedTime = DateTime.Now;
            if (Entity.LastEditor == null)
            {
                MessageDialogHelper.RunErrorDialog("Ваш пользователь не привязан к действующему сотруднику, вы не можете изменять складские документы, так как некого указывать в качестве кладовщика.");
                return(false);
            }

            if (Entity.Items.Any(x => x.Amount == 0))
            {
                if (MessageDialogHelper.RunQuestionDialog("<span foreground=\"red\">В списке есть нулевые позиции. Убрать нулевые позиции перед сохранением?</span>"))
                {
                    Entity.ClearItemsFromZero();
                }
            }

            Entity.UpdateOperations(UoW);

            logger.Info("Сохраняем погрузочный талон...");
            UoWGeneric.Save();

            logger.Info("Меняем статус маршрутного листа...");
            if (Entity.RouteList.ShipIfCan(UoW, CallTaskWorker))
            {
                MessageDialogHelper.RunInfoDialog("Маршрутный лист отгружен полностью.");
            }
            UoW.Save(Entity.RouteList);
            UoW.Commit();

            logger.Info("Ok.");

            return(true);
        }
Exemplo n.º 13
0
        protected void OnBtnChooseOrderClicked(object sender, EventArgs e)
        {
            var filter = new OrdersFilter(UnitOfWorkFactory.CreateWithoutRoot());

            filter.SetAndRefilterAtOnce(
                x => x.RestrictCounterparty = oldOrder.Client,
                x => x.HideStatuses         = new Enum[] { OrderStatus.WaitForPayment }
                );
            Buttons buttons = ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_delete") ? Buttons.All : (Buttons.Add | Buttons.Edit);
            PermissionControlledRepresentationJournal dlg = new PermissionControlledRepresentationJournal(new OrdersVM(filter), buttons)
            {
                Mode = JournalSelectMode.Single
            };

            MyTab.TabParent.AddTab(dlg, MyTab, false);

            dlg.ObjectSelected += (s, ea) => {
                var selectedId = ea.GetSelectedIds().FirstOrDefault();
                if (selectedId == 0)
                {
                    return;
                }
                if (oldOrder.Id == selectedId)
                {
                    MessageDialogHelper.RunErrorDialog("Перенесённый заказ не может совпадать с недовезённым!");
                    OnBtnChooseOrderClicked(sender, ea);
                    return;
                }
                newOrder        = undelivery.NewOrder = UoW.GetById <Order>(selectedId);
                newOrder.Author = this.oldOrder.Author;
                SetLabelsAcordingToNewOrder();
                undelivery.NewDeliverySchedule = newOrder.DeliverySchedule;
                if ((oldOrder.PaymentType == Domain.Client.PaymentType.ByCard) &&
                    (oldOrder.OrderTotalSum == newOrder.OrderTotalSum) &&
                    MessageDialogHelper.RunQuestionDialog("Перенести на выбранный заказ Оплату по Карте?"))
                {
                    newOrder.PaymentType       = oldOrder.PaymentType;
                    newOrder.OnlineOrder       = oldOrder.OnlineOrder;
                    newOrder.PaymentByCardFrom = oldOrder.PaymentByCardFrom;
                }
            };
        }
Exemplo n.º 14
0
        protected void OnBtnChooseOrderClicked(object sender, EventArgs e)
        {
            var filter = new OrderJournalFilterViewModel(new CounterpartyJournalFactory(), new DeliveryPointJournalFactory());

            filter.SetAndRefilterAtOnce(
                x => x.RestrictCounterparty = _oldOrder.Client,
                x => x.HideStatuses         = new Enum[] { OrderStatus.WaitForPayment }
                );
            var orderFactory = new OrderSelectorFactory(filter);
            var orderJournal = orderFactory.CreateOrderJournalViewModel();

            orderJournal.SelectionMode = JournalSelectionMode.Single;

            MyTab.TabParent.AddTab(orderJournal, MyTab, false);

            orderJournal.OnEntitySelectedResult += (s, ea) =>
            {
                var selectedId = ea.SelectedNodes.FirstOrDefault()?.Id ?? 0;
                if (selectedId == 0)
                {
                    return;
                }
                if (_oldOrder.Id == selectedId)
                {
                    MessageDialogHelper.RunErrorDialog("Перенесённый заказ не может совпадать с недовезённым!");
                    OnBtnChooseOrderClicked(sender, ea);
                    return;
                }
                _newOrder        = _undelivery.NewOrder = UoW.GetById <Order>(selectedId);
                _newOrder.Author = this._oldOrder.Author;
                SetLabelsAcordingToNewOrder();
                _undelivery.NewDeliverySchedule = _newOrder.DeliverySchedule;
                if ((_oldOrder.PaymentType == Domain.Client.PaymentType.ByCard) &&
                    (_oldOrder.OrderSum == _newOrder.OrderSum) &&
                    MessageDialogHelper.RunQuestionDialog("Перенести на выбранный заказ Оплату по Карте?"))
                {
                    _newOrder.PaymentType       = _oldOrder.PaymentType;
                    _newOrder.OnlineOrder       = _oldOrder.OnlineOrder;
                    _newOrder.PaymentByCardFrom = _oldOrder.PaymentByCardFrom;
                }
            };
        }
Exemplo n.º 15
0
        public override bool Save()
        {
            var valid = new QSValidator <RouteList>(Entity);

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

            if (!ValidateOrders())
            {
                return(false);
            }

            var messages = new List <string>();

            if (Entity.FuelOperationHaveDiscrepancy())
            {
                if (!MessageDialogHelper.RunQuestionDialog("Был изменен водитель или автомобиль, при сохранении МЛ баланс по топливу изменится с учетом этих изменений. Продолжить сохранение?"))
                {
                    return(false);
                }
            }

            if (Entity.Status > RouteListStatus.OnClosing)
            {
                messages.AddRange(Entity.UpdateMovementOperations());
            }

            UoW.Save();

            if (messages.Any())
            {
                MessageDialogHelper.RunInfoDialog(String.Format("Были выполнены следующие действия:\n*{0}", String.Join("\n*", messages)));
            }

            return(true);
        }
Exemplo n.º 16
0
        public override bool Save()
        {
            if (Entity.Status > RouteListStatus.OnClosing)
            {
                if (Entity.FuelOperationHaveDiscrepancy())
                {
                    if (!MessageDialogHelper.RunQuestionDialog("Был изменен водитель или автомобиль, при сохранении МЛ баланс по топливу изменится с учетом этих изменений. Продолжить сохранение?"))
                    {
                        return(false);
                    }
                }
                Entity.UpdateFuelOperation();
            }

            if (Entity.Status == RouteListStatus.Delivered)
            {
                Entity.ChangeStatusAndCreateTask(RouteListStatus.MileageCheck, CallTaskWorker);
            }

            UoWGeneric.Save();

            return(true);
        }