protected void OnButtonAcceptClicked(object sender, EventArgs e)
        {
            try
            {
                SetSensetivity(false);
                var callTaskWorker = new CallTaskWorker(
                    CallTaskSingletonFactory.GetInstance(),
                    new CallTaskRepository(),
                    new OrderRepository(),
                    _employeeRepository,
                    _baseParametersProvider,
                    ServicesConfig.CommonServices.UserService,
                    ErrorReporter.Instance);

                if (Entity.Car == null)
                {
                    MessageDialogHelper.RunWarningDialog("Не заполнен автомобиль");
                    return;
                }
                StringBuilder warningMsg = new StringBuilder($"Автомобиль '{ Entity.Car.Title }':");
                if (Entity.HasOverweight())
                {
                    warningMsg.Append($"\n\t- перегружен на { Entity.Overweight() } кг");
                }

                if (Entity.HasVolumeExecess())
                {
                    warningMsg.Append($"\n\t- объём груза превышен на { Entity.VolumeExecess() } м<sup>3</sup>");
                }

                if (buttonAccept.Label == "Подтвердить" && (Entity.HasOverweight() || Entity.HasVolumeExecess()))
                {
                    if (ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_confirm_routelist_with_overweight"))
                    {
                        warningMsg.AppendLine("\nВы уверены что хотите подтвердить маршрутный лист?");
                        if (!MessageDialogHelper.RunQuestionDialog(warningMsg.ToString()))
                        {
                            return;
                        }
                    }
                    else
                    {
                        warningMsg.AppendLine("\nПодтвердить маршрутный лист нельзя.");
                        MessageDialogHelper.RunWarningDialog(warningMsg.ToString());
                        return;
                    }
                }

                if (Entity.Status == RouteListStatus.New)
                {
                    var valid = new QSValidator <RouteList>(Entity,
                                                            new Dictionary <object, object> {
                        { "NewStatus", RouteListStatus.Confirmed },
                        { nameof(IRouteListItemRepository), new RouteListItemRepository() }
                    });
                    if (valid.RunDlgIfNotValid((Window)this.Toplevel))
                    {
                        return;
                    }

                    Entity.ChangeStatusAndCreateTask(RouteListStatus.Confirmed, callTaskWorker);
                    //Строим маршрут для МЛ.
                    if ((!Entity.PrintsHistory?.Any() ?? true) || MessageDialogHelper.RunQuestionWithTitleDialog("Перестроить маршрут?", "Этот маршрутный лист уже был когда-то напечатан. При новом построении маршрута порядок адресов может быть другой. При продолжении обязательно перепечатайте этот МЛ.\nПерестроить маршрут?"))
                    {
                        RouteOptimizer optimizer = new RouteOptimizer(ServicesConfig.InteractiveService);
                        var            newRoute  = optimizer.RebuidOneRoute(Entity);
                        if (newRoute != null)
                        {
                            createroutelistitemsview1.DisableColumnsUpdate = true;
                            newRoute.UpdateAddressOrderInRealRoute(Entity);
                            //Рассчитываем расстояние
                            using (var calc = new RouteGeometryCalculator())
                            {
                                Entity.RecalculatePlanedDistance(calc);
                            }
                            createroutelistitemsview1.DisableColumnsUpdate = false;
                            var noPlan = Entity.Addresses.Count(x => !x.PlanTimeStart.HasValue);
                            if (noPlan > 0)
                            {
                                MessageDialogHelper.RunWarningDialog($"Для маршрута незапланировано { noPlan } адресов.");
                            }
                        }
                        else
                        {
                            MessageDialogHelper.RunWarningDialog($"Маршрут не был перестроен.");
                        }
                    }

                    Save();

                    if (Entity.GetCarVersion.IsCompanyCar && Entity.Car.CarModel.CarTypeOfUse == CarTypeOfUse.Truck && !Entity.NeedToLoad)
                    {
                        if (MessageDialogHelper.RunQuestionDialog(
                                "Маршрутный лист для транспортировки на склад, перевести машрутный лист сразу в статус '{0}'?",
                                RouteListStatus.OnClosing.GetEnumTitle()))
                        {
                            Entity.CompleteRouteAndCreateTask(_wageParameterService, callTaskWorker, _trackRepository);
                        }
                    }
                    else
                    {
                        //Проверяем нужно ли маршрутный лист грузить на складе, если нет переводим в статус в пути.
                        var needTerminal = Entity.Addresses.Any(x => x.Order.PaymentType == PaymentType.Terminal);

                        if (!Entity.NeedToLoad && !needTerminal)
                        {
                            if (MessageDialogHelper.RunQuestionDialog("Для маршрутного листа, нет необходимости грузится на складе. Перевести маршрутный лист сразу в статус '{0}'?", RouteListStatus.EnRoute.GetEnumTitle()))
                            {
                                valid = new QSValidator <RouteList>(
                                    Entity,
                                    new Dictionary <object, object>
                                {
                                    { "NewStatus", RouteListStatus.EnRoute },
                                    { nameof(IRouteListItemRepository), new RouteListItemRepository() }
                                });
                                if (!valid.IsValid)
                                {
                                    return;
                                }

                                Entity.ChangeStatusAndCreateTask(valid.RunDlgIfNotValid((Window)this.Toplevel) ? RouteListStatus.New : RouteListStatus.EnRoute, callTaskWorker);
                            }
                            else
                            {
                                Entity.ChangeStatusAndCreateTask(RouteListStatus.New, callTaskWorker);
                            }
                        }
                    }
                    Save();
                    UpdateButtonStatus();
                    createroutelistitemsview1.SubscribeOnChanges();
                    UpdateAdditionalLoadingWidgets();

                    return;
                }
                if (Entity.Status == RouteListStatus.InLoading || Entity.Status == RouteListStatus.Confirmed)
                {
                    if (_routeListRepository.GetCarLoadDocuments(UoW, Entity.Id).Any())
                    {
                        MessageDialogHelper.RunErrorDialog("Для маршрутного листа были созданы документы погрузки. Сначала необходимо удалить их.");
                    }
                    else
                    {
                        Entity.ChangeStatusAndCreateTask(RouteListStatus.New, callTaskWorker);
                    }
                    UpdateButtonStatus();
                    return;
                }
            }
            finally
            {
                SetSensetivity(true);
            }
            UpdateDlg(_isLogistican);
        }