Ejemplo n.º 1
0
        public override void Persist()
        {
            bool requestRelogin = Accessinfo.BranchID == null;

            using (PXTransactionScope ts = new PXTransactionScope())
            {
                foreach (BranchBAccount item in BAccount.Cache.Deleted)
                {
                    Branch branch = PXSelect <Branch, Where <Branch.branchCD, Equal <Required <Branch.branchCD> > > > .Select(this, item.BranchBranchCD);

                    if (branch != null)
                    {
                        if (Accessinfo.BranchID == branch.BranchID)
                        {
                            requestRelogin = true;
                        }
                        PXDatabase.Update <Ledger>(
                            new PXDataFieldAssign <Ledger.defBranchID>(null),
                            new PXDataFieldRestrict <Ledger.defBranchID>(branch.BranchID));
                    }
                }
                base.Persist();
                ts.Complete();
            }
            using (PXTransactionScope tran = new PXTransactionScope())
            {
                PXResultset <Branch> activeBranches = PXSelect <Branch> .Select(this);

                bool clearRoleNames = true;
                foreach (Branch branch in PXSelect <Branch> .Select(this))
                {
                    if (branch.RoleName != null)
                    {
                        clearRoleNames = false;
                    }
                }
                using (PXReadDeletedScope rds = new PXReadDeletedScope())
                {
                    if (clearRoleNames)
                    {
                        PXDatabase.Update <Branch>(new PXDataFieldAssign <Branch.roleName>(null));
                    }
                }
                tran.Complete();
            }
            if (requestRelogin)
            {
                PXAccess.ResetBranchSlot();
                PXLogin.SetBranchID(CreateInstance <PX.SM.SMAccessPersonalMaint>().GetDefaultBranchId());
            }
        }