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