TR_PHONE_TASYNC_D
Definition
Copy
CREATE trigger TR_PHONE_TASYNC_D on dbo.PHONE after delete not for replication
as begin
if dbo.UFN_B2T_CONTEXTISSYNC() = 1
delete from dbo.TA_PHONE
where ID in(select ID from DELETED)
else
begin
merge dbo.TA_PHONE t
using (select ID from DELETED) d
on (d.ID = t.ID)
when matched and t.ACTIONCODE = 1 then
delete
when matched then
update set ACTIONCODE = 3;
--
-- reset the primary.
--
update t
set ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_PHONE t, DELETED i
where t.ID = dbo.UFN_B2T_GETACCOUNTPREFERREDTELEPHONE(i.CONSTITUENTID,1)
and i.ISPRIMARY = 1
--
-- When deleting a master row (t2), flag the linked non-master (t) rows for insert
-- into TA.
--
update t
set t.ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_PHONE t
inner join dbo.TA_PHONE t2 on t.MASTERSYNCID = t2.SYNCID
inner join DELETED d on d.ID = t2.ID
--
-- flag the constituent record that the PHONE is on or
-- flag the members in the household for update when a primary record is deleted
-- and the constituent does not have an PHONE
--
update t
set t.ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_CONSTITUENT t
inner join DELETED i on i.CONSTITUENTID = t.ID
where i.ISPRIMARY = 1
update t
set t.ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from DELETED i
cross apply dbo.UFN_B2T_GET_HOUSEHOLDANDMEMBERS(i.CONSTITUENTID, 1) m
inner join dbo.TA_CONSTITUENT t on t.ID = m.MEMBERID
where i.ISPRIMARY = 1
and NOT exists (select 'x' from dbo.PHONE a where t.ID = a.CONSTITUENTID)
--
-- flag members when household master records are deleted and the member
-- record is primary.
--
update t
set ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_CONSTITUENT t, dbo.TA_PHONE d, dbo.TA_PHONE m, dbo.PHONE a, DELETED i
where t.ID in (select MEMBERID from dbo.UFN_B2T_GET_HOUSEHOLDANDMEMBERS(i.CONSTITUENTID, 1))
and i.ID = d.ID
and d.SYNCID = m.MASTERSYNCID
and m.ID = a.ID
and t.ID = a.CONSTITUENTID
and a.ISPRIMARY = 1
--
-- do the same for org contacts
--
update t
set ACTIONCODE = case when t.ACTIONCODE in (1,3) then t.ACTIONCODE else 2 end
from dbo.TA_CONSTITUENT t, dbo.TA_PHONE d, dbo.TA_PHONE m, dbo.PHONE a, DELETED i
where dbo.UFN_CONSTITUENT_ISORGANIZATION (i.CONSTITUENTID) = 1
and t.ID in (select r.RECIPROCALCONSTITUENTID from dbo.RELATIONSHIP r where r.RELATIONSHIPCONSTITUENTID = i.CONSTITUENTID)
and i.ID = d.ID
and d.SYNCID = m.MASTERSYNCID
and m.ID = a.ID
and t.ID = a.CONSTITUENTID
and a.ISPRIMARY = 1
--
update t
set ACTIONCODE = case when ACTIONCODE=1 then 1 else 2 end
from dbo.TA_NAMES0 t
inner join DELETED i on i.CONSTITUENTID = t.ID and i.ISPRIMARY = 1
-- Refresh accounts.telephone_sts
update dbo.TA_ACCOUNTS
set ACTIONCODE = case when ACTIONCODE=1 then 1 else 2 end
where ID in(select CONSTITUENTID from DELETED);
end
end