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()); } }