public override void Persist()
        {
            if (Header.Cache.IsDirty && Detail.Select().Count == 0 && Header.Current != null)
            {
                throw new PXException(Messages.DimensionIsEmpty);
            }

            var dimension = Header.Current;

            if (dimension == null)
            {
                base.Persist();
            }
            else
            {
                try
                {
                    using (PXTransactionScope tscope = new PXTransactionScope())
                    {
                        if (Header.Cache.GetStatus(dimension) != PXEntryStatus.Deleted)
                        {
                            InsertNumberingValue(Header.Current);
                            CorrectChildDimensions();
                        }

                        var oldLength = (short?)Header.Cache.GetValueOriginal <Dimension.length>(dimension);

                        if (dimension.Length < oldLength)
                        {
                            if (dimension.DimensionID == "SUBACCOUNT")
                            {
                                CheckLongerSubKeysDoNotExist(dimension.Length);

                                PXUpdate <Set <Sub.subCD, Substring <Sub.subCD, int1, CurrentValue <Dimension.length> > >,
                                          Sub>
                                .Update(this);
                            }

                            ValidateDimensionForKeyDuplication(dimension);
                        }

                        PXDimensionAttribute.Clear();
                        base.Persist();
                        Header.Current = dimension;
                        PXDimensionAttribute.Clear();

                        tscope.Complete();
                    }
                }
                catch (PXDatabaseException e)
                {
                    if (e.ErrorCode == PXDbExceptions.DeleteForeignKeyConstraintViolation)
                    {
                        throw new PXException(Messages.SegmentHasValues, e.Keys[1]);
                    }
                    throw;
                }
            }
            PXPageCacheUtils.InvalidateCachedPages();
        }
示例#2
0
 public void Persist(PersistDelegate baseMethod)
 {
     baseMethod();
     // We need to reset Slots and Cache after the values may change.
     PXDatabase.ResetSlots();
     PXPageCacheUtils.InvalidateCachedPages();
 }
        public override void Persist()
        {
            WebDialogResult result = Setup.Ask(ActionsMessages.Warning, PXMessages.LocalizeFormatNoPrefix("Saving will modify instance behavior"), MessageButtons.OKCancel, MessageIcon.Warning, true);

            //        //checking answer
            if (result == WebDialogResult.OK)
            {
                base.Persist();
                PXDatabase.ResetSlots();
                PXPageCacheUtils.InvalidateCachedPages();
                this.Clear();
                throw new PXRefreshException();
            }
        }
        public virtual void GLWorkBook_RowPersisting(PXCache sender, PXRowPersistingEventArgs e)
        {
            GLWorkBook row = e.Row as GLWorkBook;

            if (row != null)
            {
                if (!IsSupported(row))
                {
                    sender.RaiseExceptionHandling <GLWorkBook.docType>(row, row.DocType, new PXSetPropertyException(Messages.DocumentTypeIsNotSupportedYet, PXErrorLevel.Error));
                }
                Boolean result = _screenToSiteMapAddHelper.DeleteObsoleteSiteMapNode(row, e.Operation);
                IsSiteMapAltered = result ? result : IsSiteMapAltered;
                PXPageCacheUtils.InvalidateCachedPages();
            }
        }
示例#5
0
        public override void Persist()
        {
            if (Header.Cache.IsDirty && Detail.Select().Count == 0 && Header.Current != null)
            {
                throw new PXException(Messages.DimensionIsEmpty);
            }

            var current = Header.Current;

            if (current == null)
            {
                base.Persist();
            }
            else
            {
                try
                {
                    if (Header.Cache.GetStatus(current) != PXEntryStatus.Deleted)
                    {
                        InsertNumberingValue(Header.Current);
                        CorrectChildDimensions();
                    }

                    if (Header.Current.DimensionID == IN.SubItemAttribute.DimensionName)
                    {
                        ValidateSubItems();
                    }


                    PXDimensionAttribute.Clear();
                    base.Persist();
                    Header.Current = current;
                    PXDimensionAttribute.Clear();
                }
                catch (PXDatabaseException e)
                {
                    if (e.ErrorCode == PXDbExceptions.DeleteForeignKeyConstraintViolation)
                    {
                        throw new PXException(Messages.SegmentHasValues, e.Keys[1]);
                    }
                    throw;
                }
            }
            PXPageCacheUtils.InvalidateCachedPages();
        }
示例#6
0
        public IEnumerable requestValidation(PXAdapter adapter)
        {
            foreach (FeaturesSet feature in adapter.Get())
            {
                if (feature.Status == 3)
                {
                    FeaturesSet update = PXCache <FeaturesSet> .CreateCopy(feature);

                    update.Status = 0;
                    update        = this.Features.Update(update);
                    this.Features.Delete(feature);

                    if (update.Status != 1)
                    {
                        this.Features.Delete(new FeaturesSet()
                        {
                            Status = 1
                        });
                    }


                    this.Persist();
                    yield return(update);
                }
                else
                {
                    yield return(feature);
                }
            }

            PXDatabase.ResetSlots();
            PXPageCacheUtils.InvalidateCachedPages();
            this.Clear();

            throw new PXRedirectToUrlException(@"~\Main.aspx$target=_top", PXBaseRedirectException.WindowMode.Same, Messages.RefreshSettings);
        }
示例#7
0
 public override void ClearDependencies()
 {
     PXDatabase.SelectTimeStamp();
     PXPageCacheUtils.InvalidateCachedPages();
 }
示例#8
0
 protected virtual void _(Events.FieldUpdated <PMSetup, PMSetup.costCommitmentTracking> e)
 {
     PXPageCacheUtils.InvalidateCachedPages();
 }
示例#9
0
        public IEnumerable requestValidation(PXAdapter adapter)
        {
            foreach (FeaturesSet feature in adapter.Get())
            {
                if (feature.Status == 3)
                {
                    bool?       customerDiscountsOld = PXAccess.FeatureInstalled <FeaturesSet.customerDiscounts>();
                    bool?       branchOld            = PXAccess.FeatureInstalled <FeaturesSet.branch>();
                    PXCache     cache  = new PXCache <FeaturesSet>(this);
                    FeaturesSet update = PXCache <FeaturesSet> .CreateCopy(feature);

                    update.Status = 0;
                    update        = this.Features.Update(update);
                    this.Features.Delete(feature);

                    if (update.Status != 1)
                    {
                        this.Features.Delete(new FeaturesSet()
                        {
                            Status = 1
                        });
                    }

                    this.Persist();
                    PXAccess.Version++;

                    var tasks = PXSelect <WZTask> .Select(this);

                    WZTaskEntry taskGraph = CreateInstance <WZTaskEntry>();
                    foreach (WZTask task in tasks)
                    {
                        bool disableTask = false;
                        bool enableTask  = false;
                        foreach (
                            WZTaskFeature taskFeature in
                            PXSelectReadonly <WZTaskFeature, Where <WZTaskFeature.taskID, Equal <Required <WZTask.taskID> > > > .Select(
                                this, task.TaskID))
                        {
                            bool featureInstalled = (bool?)cache.GetValue(update, taskFeature.Feature) == true;

                            if (!featureInstalled)
                            {
                                disableTask = true;
                                enableTask  = false;
                                break;
                            }

                            enableTask = true;
                        }

                        if (disableTask)
                        {
                            task.Status = WizardTaskStatusesAttribute._DISABLED;
                            taskGraph.TaskInfo.Update(task);
                            taskGraph.Save.Press();
                        }

                        if (enableTask && task.Status == WizardTaskStatusesAttribute._DISABLED)
                        {
                            bool       needToBeOpen = false;
                            WZScenario scenario     = PXSelect <WZScenario, Where <WZScenario.scenarioID, Equal <Required <WZTask.scenarioID> > > > .Select(this, task.ScenarioID);

                            if (scenario != null && scenario.Status == WizardScenarioStatusesAttribute._ACTIVE)
                            {
                                WZTask parentTask =
                                    PXSelect <WZTask, Where <WZTask.taskID, Equal <Required <WZTask.parentTaskID> > > > .Select(
                                        this, task.ParentTaskID);

                                if (parentTask != null && (parentTask.Status == WizardTaskStatusesAttribute._OPEN ||
                                                           parentTask.Status == WizardTaskStatusesAttribute._ACTIVE))
                                {
                                    needToBeOpen = true;
                                }

                                foreach (
                                    PXResult <WZTaskPredecessorRelation, WZTask> predecessorResult in
                                    PXSelectJoin <WZTaskPredecessorRelation,
                                                  InnerJoin
                                                  <WZTask,
                                                   On <WZTask.taskID, Equal <WZTaskPredecessorRelation.predecessorID> > >,
                                                  Where <WZTaskPredecessorRelation.taskID, Equal <Required <WZTask.taskID> > > > .
                                    Select(this, task.TaskID))
                                {
                                    WZTask predecessorTask = (WZTask)predecessorResult;
                                    if (predecessorTask != null)
                                    {
                                        if (predecessorTask.Status == WizardTaskStatusesAttribute._COMPLETED)
                                        {
                                            needToBeOpen = true;
                                        }
                                        else
                                        {
                                            needToBeOpen = false;
                                            break;
                                        }
                                    }
                                }
                            }
                            task.Status = needToBeOpen ? WizardTaskStatusesAttribute._OPEN : WizardTaskStatusesAttribute._PENDING;
                            taskGraph.TaskInfo.Update(task);
                            taskGraph.Save.Press();
                        }
                    }

                    if (customerDiscountsOld == true && update.CustomerDiscounts != true)
                    {
                        PXUpdate <Set <ARSetup.applyLineDiscountsIfCustomerPriceDefined, True>, ARSetup> .Update(this);

                        PXUpdate <Set <ARSetup.applyLineDiscountsIfCustomerClassPriceDefined, True>, ARSetup> .Update(this);

                        PXUpdate <Set <SOOrderType.recalculateDiscOnPartialShipment, False, Set <SOOrderType.postLineDiscSeparately, False> >, SOOrderType> .Update(this);
                    }

                    if (branchOld != update.Branch)
                    {
                        PXUpdate <Set <ListEntryPoint.isActive, Required <ListEntryPoint.isActive> >, ListEntryPoint,
                                  Where <ListEntryPoint.entryScreenID, Equal <Required <ListEntryPoint.entryScreenID> > > >
                        .Update(this, update.Branch == true, "CS101500");
                    }

                    yield return(update);
                }
                else
                {
                    yield return(feature);
                }
            }

            bool needRefresh = !(ActivationBehaviour.Current != null && ActivationBehaviour.Current.Refresh == false);

            PXDatabase.ResetSlots();
            PXPageCacheUtils.InvalidateCachedPages();
            this.Clear();
            if (needRefresh)
            {
                throw new PXRefreshException();
            }
        }