![]() |
---|
CREATE trigger TR_RELATIONSHIP_INSERT on dbo.RELATIONSHIP after insert not for replication as begin set nocount on; if dbo.UFN_B2T_CONTEXTISSYNC() = 0 begin /*Remove any references to the current record as a spouse*/ update dbo.RELATIONSHIP set RELATIONSHIP.ISSPOUSE = 0, RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED, RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID from INSERTED where RELATIONSHIP.ID in( select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISSPOUSE = 1 and RELATIONSHIP.ISSPOUSE = 1 union all select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISSPOUSE = 1 and RELATIONSHIP.ISSPOUSE = 1 union all select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISSPOUSE = 1 and RELATIONSHIP.ISSPOUSE = 1 union all select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISSPOUSE = 1 and RELATIONSHIP.ISSPOUSE = 1 ); /* If constituent spouses are supposed to be marked as spouses make sure the new spouse is marked as a constituent */ if (dbo.UFN_CONSTITUENCYCRITERIASPOUSE_SPOUSEISCONSTITUENT() = 1) begin update dbo.CONSTITUENT set CONSTITUENT.ISCONSTITUENT = 1, CONSTITUENT.DATECHANGED = INSERTED.DATECHANGED, CONSTITUENT.CHANGEDBYID = INSERTED.CHANGEDBYID from dbo.CONSTITUENT inner join INSERTED on INSERTED.RECIPROCALCONSTITUENTID = CONSTITUENT.ID inner join dbo.CONSTITUENT as RELATIONSHIPCONSTITUENT on INSERTED.RELATIONSHIPCONSTITUENTID = RELATIONSHIPCONSTITUENT.ID where (INSERTED.ISSPOUSE = 1) and (CONSTITUENT.ISCONSTITUENT = 0) and (RELATIONSHIPCONSTITUENT.ISCONSTITUENT = 1); end /*Remove any references to the current record as a primary business*/ update dbo.RELATIONSHIP set RELATIONSHIP.ISPRIMARYBUSINESS = 0, RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED, RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID from INSERTED inner join dbo.CONSTITUENT on INSERTED.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID where CONSTITUENT.ISORGANIZATION = 0 and RELATIONSHIP.ID in( select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISPRIMARYBUSINESS = 1 and RELATIONSHIP.ISPRIMARYBUSINESS = 1 union all select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID where RELATIONSHIP.RELATIONSHIPCONSTITUENTID <> INSERTED.RECIPROCALCONSTITUENTID and INSERTED.ISPRIMARYBUSINESS = 1 and RELATIONSHIP.ISPRIMARYBUSINESS = 1 ) update dbo.RELATIONSHIP set RELATIONSHIP.ISPRIMARYBUSINESS = 0, RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED, RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID from INSERTED inner join dbo.CONSTITUENT on INSERTED.RECIPROCALCONSTITUENTID = CONSTITUENT.ID where CONSTITUENT.ISORGANIZATION = 0 and RELATIONSHIP.ID in ( select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID where INSERTED.ISPRIMARYBUSINESS = 1 and RELATIONSHIP.ISPRIMARYBUSINESS = 1 and RELATIONSHIP.RECIPROCALCONSTITUENTID <> INSERTED.RELATIONSHIPCONSTITUENTID union all select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISPRIMARYBUSINESS = 1 and RELATIONSHIP.ISPRIMARYBUSINESS = 1 ) /*Remove any references to the current record as a primary contact*/ update dbo.RELATIONSHIP set RELATIONSHIP.ISPRIMARYCONTACT = 0, RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED, RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID from INSERTED inner join dbo.CONSTITUENT on INSERTED.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID where CONSTITUENT.ISORGANIZATION = 1 and RELATIONSHIP.ID in( select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISPRIMARYCONTACT = 1 and RELATIONSHIP.ISPRIMARYCONTACT = 1 union all select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID where RELATIONSHIP.RELATIONSHIPCONSTITUENTID <> INSERTED.RECIPROCALCONSTITUENTID and INSERTED.ISPRIMARYCONTACT = 1 and RELATIONSHIP.ISPRIMARYCONTACT = 1 ) update dbo.RELATIONSHIP set RELATIONSHIP.ISPRIMARYCONTACT = 0, RELATIONSHIP.DATECHANGED = INSERTED.DATECHANGED, RELATIONSHIP.CHANGEDBYID = INSERTED.CHANGEDBYID from INSERTED inner join dbo.CONSTITUENT on INSERTED.RECIPROCALCONSTITUENTID = CONSTITUENT.ID where CONSTITUENT.ISORGANIZATION = 1 and RELATIONSHIP.ID in ( select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID where INSERTED.ISPRIMARYCONTACT = 1 and RELATIONSHIP.ISPRIMARYCONTACT = 1 and RELATIONSHIP.RECIPROCALCONSTITUENTID <> INSERTED.RELATIONSHIPCONSTITUENTID union all select RELATIONSHIP.ID from dbo.RELATIONSHIP inner join INSERTED on RELATIONSHIP.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID where RELATIONSHIP.ID <> INSERTED.ID and INSERTED.ISPRIMARYCONTACT = 1 and RELATIONSHIP.ISPRIMARYCONTACT = 1 ) end /*Create the reciprocal relationship record*/ insert into dbo.RELATIONSHIP ( RELATIONSHIPCONSTITUENTID, RECIPROCALCONSTITUENTID, RELATIONSHIPTYPECODEID, RECIPROCALTYPECODEID, ISSPOUSE, ISPRIMARYBUSINESS, ISCONTACT, ISPRIMARYCONTACT, CONTACTTYPECODEID, POSITION, STARTDATE, ENDDATE, ISMATCHINGGIFTRELATIONSHIP, RELATIONSHIPSETID, COMMENTS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED ) select RECIPROCALCONSTITUENTID, RELATIONSHIPCONSTITUENTID, RECIPROCALTYPECODEID, RELATIONSHIPTYPECODEID, ISSPOUSE, ISPRIMARYBUSINESS, ISCONTACT, ISPRIMARYCONTACT, CONTACTTYPECODEID, POSITION, STARTDATE, ENDDATE, ISMATCHINGGIFTRELATIONSHIP, RELATIONSHIPSETID, COMMENTS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED from INSERTED if dbo.UFN_B2T_CONTEXTISSYNC() = 0 begin /*Update ISCONSTITUENT on the RELATIONSHIPCONSTITUENTID record based on Student Relationship Constituency Criteria*/ update dbo.CONSTITUENT set ISCONSTITUENT = 1, CHANGEDBYID = INSERTED.CHANGEDBYID, DATECHANGED = GetDate() from dbo.UFN_CONSTITUENT_STUDENTRELATIONCONSTITUENCIES() as RELATIONCONSTITUENCIES inner join INSERTED on RELATIONCONSTITUENCIES.RECIPROCALCONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID and RELATIONCONSTITUENCIES.CONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID and RELATIONCONSTITUENCIES.RECIPROCALTYPECODEID = INSERTED.RECIPROCALTYPECODEID and RELATIONCONSTITUENCIES.RELATIONSHIPTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID where RELATIONCONSTITUENCIES.CONSTITUENTID = CONSTITUENT.ID and CONSTITUENT.ISCONSTITUENT = 0 /*Update ISCONSTITUENT on the RECIPROCALCONSTITUENTID record based on Student Relationship Constituency Criteria*/ update dbo.CONSTITUENT set ISCONSTITUENT = 1, CHANGEDBYID = INSERTED.CHANGEDBYID, DATECHANGED = GetDate() from dbo.UFN_CONSTITUENT_STUDENTRELATIONCONSTITUENCIES() as RELATIONCONSTITUENCIES inner join INSERTED on RELATIONCONSTITUENCIES.RECIPROCALCONSTITUENTID = INSERTED.RELATIONSHIPCONSTITUENTID and RELATIONCONSTITUENCIES.CONSTITUENTID = INSERTED.RECIPROCALCONSTITUENTID and RELATIONCONSTITUENCIES.RECIPROCALTYPECODEID = INSERTED.RELATIONSHIPTYPECODEID and RELATIONCONSTITUENCIES.RELATIONSHIPTYPECODEID = INSERTED.RECIPROCALTYPECODEID where RELATIONCONSTITUENCIES.CONSTITUENTID = CONSTITUENT.ID and CONSTITUENT.ISCONSTITUENT = 0 end end |