public virtual IEnumerable StartTask(PXAdapter adapter)
        {
            WZTaskEntry graph        = PXGraph.CreateInstance <WZTaskEntry>();
            WZTask      selectedTask = Tasks.Current;

            if (selectedTask != null && selectedTask.Status == WizardTaskStatusesAttribute._ACTIVE)
            {
                viewTask.Press();
                return(adapter.Get());
            }
            if (selectedTask != null && selectedTask.Status == WizardTaskStatusesAttribute._OPEN)
            {
                selectedTask.Status = WizardTaskStatusesAttribute._ACTIVE;
                graph.TaskInfo.Update(selectedTask);
                graph.Save.Press();

                viewTask.Press();
            }

            Tasks.Cache.ClearQueryCache();
            Scenario.Cache.ClearQueryCache();
            Scenario.Cache.Clear();
            Scenario.View.RequestRefresh();
            return(adapter.Get());
        }
        public virtual IEnumerable MarkAsCompleted(PXAdapter adapter)
        {
            WZTaskEntry graph        = PXGraph.CreateInstance <WZTaskEntry>();
            WZTask      selectedTask = Tasks.Current;

            if (selectedTask != null && selectedTask.Status != WizardTaskStatusesAttribute._PENDING &&
                selectedTask.Status != WizardTaskStatusesAttribute._DISABLED)
            {
                if (graph.CanTaskBeCompleted(selectedTask))
                {
                    selectedTask.Status = WizardTaskStatusesAttribute._COMPLETED;
                    graph.TaskInfo.Update(selectedTask);
                    graph.Save.Press();
                    if (graph.ScenarioTasksCompleted(selectedTask.ScenarioID))
                    {
                        PXSiteMap.Provider.Clear();
                        PXSiteMapNode node = PXSiteMap.Provider.FindSiteMapNodeByScreenID("WZ201505");


                        throw new PXRedirectToUrlException(node.Url + "?ScenarioID=" + selectedTask.ScenarioID, PXBaseRedirectException.WindowMode.Same, "Refresh SiteMap");
                    }
                }
                else
                {
                    throw new PXException(Messages.CannotBeCompletedWileOpenTasks);
                }
            }

            Tasks.Cache.ClearQueryCache();
            Scenario.Cache.ClearQueryCache();
            Scenario.Cache.Clear();
            Scenario.View.RequestRefresh();
            return(adapter.Get());
        }
        public virtual IEnumerable GoToScreen(PXAdapter adapter)
        {
            WZTask task = PXSelect <WZTask, Where <WZTask.taskID, Equal <Current <WZTask.taskID> > > > .Select(this);

            if (task == null)
            {
                return(adapter.Get());
            }

            if (task.ScreenID != null)
            {
                PXSiteMapNode node = PXSiteMap.Provider.FindSiteMapNodeByScreenID(task.ScreenID);
                if (task.ImportScenarioID != null)
                {
                    SYMappingActive importScenario =
                        PXSelect
                        <SYMappingActive, Where <SYMappingActive.mappingID, Equal <Required <SYMapping.mappingID> > >
                        >
                        .Select(this, task.ImportScenarioID);

                    if (importScenario != null)
                    {
                        SYImportProcessSingle importGraph = CreateInstance <SYImportProcessSingle>();

                        importGraph.MappingsSingle.Current = (SYMappingActive)importScenario;
                        throw new PXRedirectRequiredException(importGraph, true, task.Name);
                    }
                }
                else
                {
                    if (node.GraphType != null)
                    {
                        Type t = GraphHelper.GetType(node.GraphType);
                        if (t == typeof(FeaturesMaint))
                        {
                            FeaturesMaint featuresMaint = PXGraph.CreateInstance <FeaturesMaint>();
                            featuresMaint.Features.Current = featuresMaint.Features.Select();
                            featuresMaint.ActivationBehaviour.Cache.SetValueExt <AfterActivation.refresh>(featuresMaint.ActivationBehaviour.Current, false);

                            PXRedirectHelper.TryRedirect(featuresMaint, PXRedirectHelper.WindowMode.InlineWindow);
                        }
                        PXGraph tgraph = CreateInstance(t);
                        throw new PXRedirectRequiredException(tgraph, true, task.Name)
                              {
                                  Mode = PXBaseRedirectException.WindowMode.NewWindow
                              };
                    }

                    throw new PXRedirectToUrlException(node.Url, PXBaseRedirectException.WindowMode.NewWindow, task.Name);
                }
            }
            return(adapter.Get());
        }
        protected virtual void WZTask_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            WZTask row = e.Row as WZTask;

            if (row == null)
            {
                return;
            }

            if (this.Actions.Contains("CancelClose"))
            {
                this.Actions["CancelClose"].SetTooltip(Messages.BackToScenario);
            }

            PXUIFieldAttribute.SetEnabled <WZTask.details>(Tasks.Cache, row, false);
            PXUIFieldAttribute.SetEnabled <WZTask.assignedTo>(Tasks.Cache, row, false);
            bool canBeComplete = row.Status == WizardTaskStatusesAttribute._ACTIVE || row.Status == WizardTaskStatusesAttribute._OPEN;
            bool canBeReopened = row.Status == WizardTaskStatusesAttribute._COMPLETED;

            markAsComplete.SetEnabled(canBeComplete);
            skip.SetVisible(false);
            if (row.IsOptional == true)
            {
                skip.SetVisible(true);
                skip.SetEnabled(!(row.Status == WizardTaskStatusesAttribute._SKIPPED || row.Status == WizardTaskStatusesAttribute._COMPLETED));
            }


            startTask.SetEnabled(row.Status == WizardTaskStatusesAttribute._OPEN);

            SubTasks.AllowUpdate     = false;
            Predecessors.AllowUpdate = false;
            Successors.AllowUpdate   = false;

            var predecessors = Predecessors.Select();
            var successors   = Successors.Select();
            var subTasks     = SubTasks.Select();

            if (predecessors.Count == 0)
            {
                Predecessors.Cache.AllowSelect = false;
            }
            if (successors.Count == 0)
            {
                Successors.Cache.AllowSelect = false;
            }
            if (subTasks.Count == 0)
            {
                SubTasks.Cache.AllowSelect = false;
            }
            goToScreen.SetVisible(row.ScreenID != null);
        }
        public virtual IEnumerable ViewSubTask(PXAdapter adapter)
        {
            WZTask task = SubTasks.Current;

            if (task == null)
            {
                return(adapter.Get());
            }

            PXSiteMapNode node = PXSiteMap.Provider.FindSiteMapNode(typeof(WizardArticleMaint));

            throw new PXRedirectToUrlException(node.Url + "?TaskID=" + task.TaskID, PXBaseRedirectException.WindowMode.InlineWindow, task.Name);
        }
        public virtual IEnumerable ViewTask(PXAdapter adapter)
        {
            WZTask task = PXSelect <WZTask, Where <WZTask.taskID, Equal <Current <WZTask.taskID> > > > .Select(this);

            if (task == null)
            {
                return(adapter.Get());
            }

            PXSiteMapNode node = PXSiteMap.Provider.FindSiteMapNode(typeof(WizardArticleMaint));

            if (node == null)
            {
                throw new PXException(Messages.NoAccessRightsToWizardArticle);
            }
            throw new PXRedirectToUrlException(node.Url + "?TaskID=" + task.TaskID, PXBaseRedirectException.WindowMode.InlineWindow, task.Name);
        }
        public virtual IEnumerable StartTask(PXAdapter adapter)
        {
            WZTask      task      = Tasks.Current;
            WZTaskEntry taskGraph = PXGraph.CreateInstance <WZTaskEntry>();

            if (task != null && task.Status == WizardTaskStatusesAttribute._OPEN)
            {
                task.Status = WizardTaskStatusesAttribute._ACTIVE;
                taskGraph.TaskInfo.Update(task);
                taskGraph.Save.Press();

                Tasks.Cache.Clear();
                Tasks.Cache.ClearQueryCache();
            }

            return(adapter.Get());
        }
        public virtual IEnumerable Skip(PXAdapter adapter)
        {
            WZTaskEntry graph        = PXGraph.CreateInstance <WZTaskEntry>();
            WZTask      selectedTask = Tasks.Current;

            if (selectedTask != null && selectedTask.IsOptional == true)
            {
                selectedTask.Status = WizardTaskStatusesAttribute._SKIPPED;
                graph.TaskInfo.Update(selectedTask);
                graph.Save.Press();
            }

            Tasks.Cache.ClearQueryCache();
            Scenario.Cache.ClearQueryCache();
            Scenario.Cache.Clear();
            Scenario.View.RequestRefresh();
            return(adapter.Get());
        }
        public virtual IEnumerable SkipSubtask(PXAdapter adapter)
        {
            WZTask      task      = SubTasks.Current;
            WZTaskEntry taskGraph = PXGraph.CreateInstance <WZTaskEntry>();

            if (task != null && (task.Status == WizardTaskStatusesAttribute._OPEN ||
                                 task.Status == WizardTaskStatusesAttribute._PENDING ||
                                 task.Status == WizardTaskStatusesAttribute._ACTIVE) &&
                task.IsOptional == true)
            {
                task.Status = WizardTaskStatusesAttribute._SKIPPED;
                taskGraph.TaskInfo.Update(task);
                taskGraph.Actions.PressSave();

                Tasks.Cache.Clear();
                Tasks.Cache.ClearQueryCache();
            }
            return(adapter.Get());
        }
        public virtual IEnumerable Reopen(PXAdapter adapter)
        {
            WZTaskEntry graph        = PXGraph.CreateInstance <WZTaskEntry>();
            WZTask      selectedTask = Tasks.Current;

            if (selectedTask != null && (selectedTask.Status == WizardTaskStatusesAttribute._COMPLETED ||
                                         selectedTask.Status == WizardTaskStatusesAttribute._SKIPPED))
            {
                selectedTask.Status = WizardTaskStatusesAttribute._OPEN;
                graph.TaskInfo.Update(selectedTask);
                graph.Save.Press();
            }

            Tasks.Cache.ClearQueryCacheObsolete();
            Scenario.Cache.ClearQueryCacheObsolete();
            Scenario.Cache.Clear();
            Scenario.View.RequestRefresh();
            return(adapter.Get());
        }
        public virtual IEnumerable ViewPredecessorTask(PXAdapter adapter)
        {
            WZTaskPredecessorRelation relation = Predecessors.Current;

            if (relation == null)
            {
                return(adapter.Get());
            }

            WZTask task = PXSelect <WZTask, Where <WZTask.taskID, Equal <Required <WZTask.taskID> > > > .Select(this, relation.PredecessorID);

            if (task == null)
            {
                return(adapter.Get());
            }

            PXSiteMapNode node = PXSiteMap.Provider.FindSiteMapNode(typeof(WizardArticleMaint));

            throw new PXRedirectToUrlException(node.Url + "?TaskID=" + task.TaskID, PXBaseRedirectException.WindowMode.InlineWindow, task.Name);
        }
        public virtual IEnumerable Assign(PXAdapter adapter)
        {
            if (CurrentTask.AskExt(true) == WebDialogResult.OK)
            {
                if (CurrentTask.Current.AssignedTo != null)
                {
                    WZTaskEntry taskGraph = PXGraph.CreateInstance <WZTaskEntry>();
                    WZTask      task      = Tasks.Current as WZTask;

                    if (task != null)
                    {
                        task.AssignedTo = CurrentTask.Current.AssignedTo;
                        taskGraph.TaskInfo.Update(task);
                        taskGraph.Actions.PressSave();
                    }
                }
                Tasks.Cache.ClearQueryCache();
            }
            return(adapter.Get());
        }
        public virtual IEnumerable Assign(PXAdapter adapter)
        {
            if (CurrentTask.AskExtRequired())
            {
                if (CurrentTask.Current.AssignedTo != null)
                {
                    WZTaskEntry taskGraph = PXGraph.CreateInstance <WZTaskEntry>();
                    WZTask      task      = PXSelect <WZTask, Where <WZTask.taskID, Equal <Required <WZTask.taskID> > > > .Select(this,
                                                                                                                                  CurrentTask.Current.TaskID);

                    if (task != null)
                    {
                        WZTask taskCopy = (WZTask)taskGraph.TaskInfo.Cache.CreateCopy(task);
                        taskCopy.AssignedTo = CurrentTask.Current.AssignedTo;
                        taskGraph.TaskInfo.Update(taskCopy);

                        taskGraph.TaskInfo.Current = task;
                        taskGraph.Scenario.Current = Scenario.Current;
                        if (CurrentTask.Current.OverrideAssignee == true)
                        {
                            foreach (WZTask subTask in taskGraph.Childs.Select())
                            {
                                WZTask subTaskCopy = (WZTask)taskGraph.TaskInfo.Cache.CreateCopy(subTask);
                                subTaskCopy.AssignedTo = CurrentTask.Current.AssignedTo;
                                taskGraph.TaskInfo.Update(subTaskCopy);
                            }
                        }
                        taskGraph.Save.Press();
                        this.CurrentTask.Cache.IsDirty = false;
                    }
                }
                Tasks.Cache.ClearQueryCache();
                CurrentTask.Cache.SetDefaultExt <WZTaskAssign.overrideAssignee>(CurrentTask.Current);
                CurrentTask.Cache.ClearQueryCache();
                CurrentTask.View.RequestRefresh();
            }
            return(adapter.Get());
        }
        public virtual IEnumerable MarkAsComplete(PXAdapter adapter)
        {
            WZTaskEntry graph        = PXGraph.CreateInstance <WZTaskEntry>();
            WZTask      selectedTask = Tasks.Current;

            if (selectedTask != null && selectedTask.Status != WizardTaskStatusesAttribute._PENDING &&
                selectedTask.Status != WizardTaskStatusesAttribute._DISABLED)
            {
                if (graph.CanTaskBeCompleted(selectedTask))
                {
                    selectedTask.Status = WizardTaskStatusesAttribute._COMPLETED;
                    graph.TaskInfo.Update(selectedTask);
                    graph.Save.Press();
                }
                else
                {
                    throw new PXException(Messages.CannotBeCompletedWileOpenTasks);
                }
            }

            Tasks.Cache.ClearQueryCache();
            return(adapter.Get());
        }