USP_MERGETASK_CONSTITUENTREVENUE

Parameters

Parameter Parameter Type Mode Description
@SOURCEID uniqueidentifier IN
@TARGETID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


        CREATE procedure dbo.USP_MERGETASK_CONSTITUENTREVENUE
        (
          @SOURCEID uniqueidentifier,
          @TARGETID uniqueidentifier,
          @CHANGEAGENTID uniqueidentifier
        )
        as
          set nocount on;

          declare @NOW as datetime = getdate();

          update dbo.FINANCIALTRANSACTION
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where CONSTITUENTID = @SOURCEID;

          update dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where CONSTITUENTID = @SOURCEID;

          update dbo.REVENUERECOGNITION
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where CONSTITUENTID = @SOURCEID;

          update dbo.RECOGNITIONCREDIT
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where CONSTITUENTID = @SOURCEID;

          update dbo.REVENUESOLICITOR
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where CONSTITUENTID = @SOURCEID;

          /* WI 347665:  Remove the duplicate revenue letter rows from the revenue letter table where there exists two 
             revenue letters that only differ by acknowledgee. */
          declare @REVENUELETTERDUPLICATES table (
            [REVENUELETTERID] uniqueidentifier primary key
          );

          /* Insert revenue letter ids with the source constituent as an acknowledgee that have duplicate letters 
             added to the revenue (differing only by acknowledgee) */
          insert into @REVENUELETTERDUPLICATES (REVENUELETTERID)
            select ID
            from dbo.REVENUELETTER
          where 
            (REVENUELETTER.ACKNOWLEDGEEID = @SOURCEID or REVENUELETTER.ACKNOWLEDGEEID = @TARGETID)
            and exists (select top 1 1 
                        from dbo.REVENUELETTER as INNERREVENUELETTER
                        where             
                          INNERREVENUELETTER.REVENUEID = REVENUELETTER.REVENUEID
                          and INNERREVENUELETTER.LETTERCODEID = REVENUELETTER.LETTERCODEID
                          and INNERREVENUELETTER.OUTOFDATE = 0
                        group by
                          REVENUEID,
                          LETTERCODEID,
                          MKTPACKAGEID
                        having count(*) > 1);

          /* Cache current context information for deleting */
          declare @CONTEXTCACHE varbinary(128);
          set @CONTEXTCACHE = CONTEXT_INFO();

          if @CHANGEAGENTID is not null
            set CONTEXT_INFO @CHANGEAGENTID;

          /* First remove record of non acknowledged source revenue letter - if duplicates still exist */
          delete from dbo.REVENUELETTER
          where
            ID in (select REVENUELETTERID from @REVENUELETTERDUPLICATES)
            and (REVENUELETTER.ACKNOWLEDGEEID = @SOURCEID and REVENUELETTER.ACKNOWLEDGEDATE is null);

          /* Next remove record of non acknowledged target revenue letter - if duplicates still exist */
          if exists(select top 1 1 
                    from dbo.REVENUELETTER
                    where REVENUELETTER.OUTOFDATE = 0 and REVENUELETTER.ID in (select REVENUELETTERID from @REVENUELETTERDUPLICATES)
                    group by REVENUEID, LETTERCODEID, MKTPACKAGEID
                    having count(*) > 1)
            begin
              delete from dbo.REVENUELETTER
              where
                ID in (select REVENUELETTERID from @REVENUELETTERDUPLICATES)
                and (REVENUELETTER.ACKNOWLEDGEEID = @TARGETID and REVENUELETTER.ACKNOWLEDGEDATE is null);
            end

          /* Next, if both revenue letters were acknowledged remove source record - if duplicates still exist */
          if exists(select top 1 1 
                    from dbo.REVENUELETTER
                    where REVENUELETTER.OUTOFDATE = 0 and  REVENUELETTER.ID in (select REVENUELETTERID from @REVENUELETTERDUPLICATES)
                    group by REVENUEID, LETTERCODEID, MKTPACKAGEID
                    having count(*) > 1)
            begin
              delete from dbo.REVENUELETTER
              where
                ID in (select REVENUELETTERID from @REVENUELETTERDUPLICATES)
                and (REVENUELETTER.ACKNOWLEDGEEID = @SOURCEID);
            end

          /* Reset CONTEXT_INFO to previous value */
          if not @CONTEXTCACHE is null
            set CONTEXT_INFO @CONTEXTCACHE;

          update dbo.REVENUELETTER
          set ACKNOWLEDGEEID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where ACKNOWLEDGEEID = @SOURCEID;

          --Merge origination information

          declare @SOURCEORIGINATIONINFOSOURCEID uniqueidentifier = null;
          declare @SOURCEORIGINATIONREVENUEID uniqueidentifier = null;
          declare @SOURCEORIGINCODE tinyint = null;

          select 
            @SOURCEORIGINATIONREVENUEID = REVENUEID,
            @SOURCEORIGINATIONINFOSOURCEID = INFOSOURCECODEID,
            @SOURCEORIGINCODE = ORIGINCODE
          from 
            dbo.CONSTITUENTORIGINATION 
          where 
            ID = @SOURCEID

          if @SOURCEORIGINATIONREVENUEID is not null
          begin
            declare @TARGETORIGINATIONSOURCEID uniqueidentifier = null;
            declare @TARGETORIGINATIONREVENUEID uniqueidentifier = null;
            declare @TARGETORIGINCODE tinyint = null;
            declare @TARGETHASDATA bit = 0;

            select 
              @TARGETHASDATA = 1,
              @TARGETORIGINATIONSOURCEID = INFOSOURCECODEID,
              @TARGETORIGINATIONREVENUEID = REVENUEID,
              @TARGETORIGINCODE = ORIGINCODE
            from 
              dbo.CONSTITUENTORIGINATION 
            where 
              ID = @TARGETID

            if (@TARGETORIGINATIONSOURCEID is null) and (@TARGETORIGINATIONREVENUEID is null) and (@TARGETORIGINCODE is null or @TARGETORIGINCODE = 0)
            begin
              delete from dbo.CONSTITUENTORIGINATION where ID = @SOURCEID

              if @TARGETHASDATA = 1
                update dbo.CONSTITUENTORIGINATION set 
                  INFOSOURCECODEID = @SOURCEORIGINATIONINFOSOURCEID,
                  REVENUEID = @SOURCEORIGINATIONREVENUEID,
                  ORIGINCODE = coalesce(@SOURCEORIGINCODE,0),
                  CHANGEDBYID = @CHANGEAGENTID,
                  DATECHANGED = @NOW
                where ID = @TARGETID
              else
                insert into dbo.CONSTITUENTORIGINATION(ID, INFOSOURCECODEID, REVENUEID, ORIGINCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                values(@TARGETID, @SOURCEORIGINATIONINFOSOURCEID, @SOURCEORIGINATIONREVENUEID, coalesce(@SOURCEORIGINCODE,0), @CHANGEAGENTID, @CHANGEAGENTID, getdate(), getdate())
            end
          end

          -- Merge revenue batch records

          update dbo.BATCHREVENUE
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUE
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where 
            BATCHREVENUE.CONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUE
          set MGMATCHINGCONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUE
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where 
            BATCHREVENUE.MGMATCHINGCONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUERECOGNITION
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUERECOGNITION
          inner join dbo.BATCHREVENUE on BATCHREVENUERECOGNITION.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where 
            BATCHREVENUERECOGNITION.CONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUESOLICITOR
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUESOLICITOR
          inner join dbo.BATCHREVENUE on BATCHREVENUESOLICITOR.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where 
            BATCHREVENUESOLICITOR.CONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUEENHANCEDMATCHINGGIFTS
          set MATCHINGCONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUEENHANCEDMATCHINGGIFTS
          inner join dbo.BATCHREVENUE on BATCHREVENUEENHANCEDMATCHINGGIFTS.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where 
            BATCHREVENUEENHANCEDMATCHINGGIFTS.MATCHINGCONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUEENHANCEDMATCHINGGIFTS
          set ORGANIZATIONID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUEENHANCEDMATCHINGGIFTS
          inner join dbo.BATCHREVENUE on BATCHREVENUEENHANCEDMATCHINGGIFTS.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where 
            BATCHREVENUEENHANCEDMATCHINGGIFTS.ORGANIZATIONID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUEAPPLICATIONPLEDGE
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUEAPPLICATIONPLEDGE
          inner join dbo.BATCHREVENUEAPPLICATION on BATCHREVENUEAPPLICATIONPLEDGE.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEAPPLICATIONPLEDGEID
          inner join dbo.BATCHREVENUE on BATCHREVENUEAPPLICATION.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where
            BATCHREVENUEAPPLICATIONPLEDGE.CONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUEAPPLICATIONMEMBERSHIP
          set GIVENBYID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUEAPPLICATIONMEMBERSHIP
          inner join dbo.BATCHREVENUEAPPLICATION on BATCHREVENUEAPPLICATIONMEMBERSHIP.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEAPPLICATIONMEMBERSHIPID
          inner join dbo.BATCHREVENUE on BATCHREVENUEAPPLICATION.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where
            BATCHREVENUEAPPLICATIONMEMBERSHIP.GIVENBYID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUEAPPLICATIONMEMBERSHIPMEMBER
          set 
            CONSTITUENTID = @TARGETID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @NOW
          from dbo.BATCHREVENUEAPPLICATIONMEMBERSHIPMEMBER
          inner join dbo.BATCHREVENUEAPPLICATIONMEMBERSHIP on BATCHREVENUEAPPLICATIONMEMBERSHIPMEMBER.BATCHREVENUEAPPLICATIONMEMBERSHIPID = BATCHREVENUEAPPLICATIONMEMBERSHIP.ID
          inner join dbo.BATCHREVENUEAPPLICATION on BATCHREVENUEAPPLICATIONMEMBERSHIP.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEAPPLICATIONMEMBERSHIPID
          inner join dbo.BATCHREVENUE on BATCHREVENUEAPPLICATION.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where
            BATCHREVENUEAPPLICATIONMEMBERSHIPMEMBER.CONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUELETTER
          set
            ACKNOWLEDGEEID = @TARGETID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @NOW
          from dbo.BATCHREVENUELETTER
          inner join dbo.BATCHREVENUE on BATCHREVENUELETTER.BATCHREVENUEID = BATCHREVENUE.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where
            BATCHREVENUELETTER.ACKNOWLEDGEEID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          -- Throw an error if updating BATCHREVENUEREGISTRANT will violate CK_BATCHREVENUEREGISTRANT_VALIDCONSTITUENTID (which .

          -- Throwing an explicit error so the batch number can be outputted.

          declare @DUPLICATEREGISTRANTBATCHNUMBER nvarchar(100);
          select top 1 
            @DUPLICATEREGISTRANTBATCHNUMBER = BATCHNUMBER
          from dbo.BATCH
          inner join dbo.BATCHREVENUEREGISTRANT on BATCH.ID = BATCHREVENUEREGISTRANT.BATCHID
          where
            BATCH.STATUSCODE in (0, 1, 3) and -- Uncommitted, Committed,Committing

            BATCHREVENUEREGISTRANT.CONSTITUENTID = @SOURCEID and
            dbo.UFN_REVENUEBATCHREGISTRANT_GETREGISTRATIONCOUNTFORCONSTITUENTID(BATCHREVENUEREGISTRANT.EVENTID, @TARGETID, BATCHREVENUEREGISTRANT.BATCHID) > 0;

          if @DUPLICATEREGISTRANTBATCHNUMBER is not null
          begin
            declare @DUPLICATEREGISTRANTERRORMESSAGE nvarchar(500);
            set @DUPLICATEREGISTRANTERRORMESSAGE = 'These constituents were not merged because the source constituent has an event registration in batch ''' + @DUPLICATEREGISTRANTBATCHNUMBER + ''' for an event that the target constituent already has an event registration for.  As a result, the event registration cannot be copied from the source to the target.  To resolve this, the batch row with the source''s event registration application needs to be removed from the batch.';
            raiserror(@DUPLICATEREGISTRANTERRORMESSAGE, 13, 1);
          end

          update dbo.BATCHREVENUEREGISTRANT
          set 
            CONSTITUENTID = @TARGETID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @NOW
          from dbo.BATCHREVENUEREGISTRANT
          inner join dbo.BATCH on BATCHREVENUEREGISTRANT.BATCHID = BATCH.ID
          where
            BATCHREVENUEREGISTRANT.CONSTITUENTID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing


          update dbo.BATCHREVENUEREGISTRANTPACKAGE
          set 
            CONSTITUENTID = @TARGETID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @NOW
          where
            BATCHREVENUEREGISTRANTPACKAGE.CONSTITUENTID = @SOURCEID and
            exists
            (
              select BATCHREVENUEREGISTRANTREGISTRATIONMAP.REGISTRANTPACKAGEID
              from dbo.BATCHREVENUEREGISTRANTREGISTRATIONMAP
              inner join dbo.BATCHREVENUEREGISTRANTREGISTRATION on BATCHREVENUEREGISTRANTREGISTRATIONMAP.REGISTRANTREGISTRATIONID = BATCHREVENUEREGISTRANTREGISTRATION.ID
              inner join dbo.BATCHREVENUEREGISTRANT on BATCHREVENUEREGISTRANTREGISTRATION.REGISTRANTID = BATCHREVENUEREGISTRANT.ID
              inner join dbo.BATCH on BATCHREVENUEREGISTRANT.BATCHID = BATCH.ID
              where
                BATCH.STATUSCODE in (0, 1, 3)  -- Uncommitted, Committed, Committing

            );

          update dbo.BATCHREVENUEREGISTRANTPACKAGE
          set 
            GUESTOFCONSTITUENTID = @TARGETID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @NOW
          where
            BATCHREVENUEREGISTRANTPACKAGE.GUESTOFCONSTITUENTID = @SOURCEID and
            exists
            (
              select BATCHREVENUEREGISTRANTREGISTRATIONMAP.REGISTRANTPACKAGEID
              from dbo.BATCHREVENUEREGISTRANTREGISTRATIONMAP
              inner join dbo.BATCHREVENUEREGISTRANTREGISTRATION on BATCHREVENUEREGISTRANTREGISTRATIONMAP.REGISTRANTREGISTRATIONID = BATCHREVENUEREGISTRANTREGISTRATION.ID
              inner join dbo.BATCHREVENUEREGISTRANT on BATCHREVENUEREGISTRANTREGISTRATION.REGISTRANTID = BATCHREVENUEREGISTRANT.ID
              inner join dbo.BATCHREVENUEAPPLICATION on BATCHREVENUEREGISTRANT.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEREGISTRANTID
              inner join dbo.BATCHREVENUE on BATCHREVENUEAPPLICATION.BATCHREVENUEID = BATCHREVENUE.ID
              inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
              where
                BATCH.STATUSCODE in (0, 1, 3) -- Uncommitted, Committed, Committing

            );

          -- Merge constituents referenced by revenue batch constituents

          with CTE_VALIDBATCHREVENUECONSTITUENT as
          (
            select
              BATCHREVENUECONSTITUENT.ID
            from dbo.BATCHREVENUECONSTITUENT
            inner join dbo.BATCHREVENUE on BATCHREVENUE.CONSTITUENTID = BATCHREVENUECONSTITUENT.ID
            inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
            where
              BATCH.STATUSCODE in (0, 1, 3)  -- Uncommitted, Committed, Committing                    

          )                    
          update dbo.BATCHREVENUECONSTITUENT
          set EXISTINGCONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where 
            BATCHREVENUECONSTITUENT.ID in
            (
              select ID
              from CTE_VALIDBATCHREVENUECONSTITUENT

              union all

              select
                BATCHREVENUECONSTITUENTGROUPMEMBER.MEMBERID
              from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
              inner join CTE_VALIDBATCHREVENUECONSTITUENT on BATCHREVENUECONSTITUENTGROUPMEMBER.GROUPID = CTE_VALIDBATCHREVENUECONSTITUENT.ID

              union all

              select
                BATCHREVENUECONSTITUENTGROUPMEMBER.GROUPID
              from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
              inner join CTE_VALIDBATCHREVENUECONSTITUENT on BATCHREVENUECONSTITUENTGROUPMEMBER.MEMBERID = CTE_VALIDBATCHREVENUECONSTITUENT.ID

              union all

              select
                BATCHREVENUECONSTITUENTRELATION.RELATIONID
              from dbo.BATCHREVENUECONSTITUENTRELATION
              inner join CTE_VALIDBATCHREVENUECONSTITUENT on BATCHREVENUECONSTITUENTRELATION.CONSTITUENTID = CTE_VALIDBATCHREVENUECONSTITUENT.ID
            ) and
            BATCHREVENUECONSTITUENT.EXISTINGCONSTITUENTID = @SOURCEID;

          -- PARENTCORPID can only be set for using the add org form.  That doesn't allow relationships or group members so the advanced logic

          -- used in the above query to update BATCHREVENUECONSTITUENT isn't needed.

          update dbo.BATCHREVENUECONSTITUENT set
            PARENTCORPID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          from dbo.BATCHREVENUECONSTITUENT
          inner join dbo.BATCHREVENUE on BATCHREVENUE.CONSTITUENTID = BATCHREVENUECONSTITUENT.ID
          inner join dbo.BATCH on BATCHREVENUE.BATCHID = BATCH.ID
          where
            BATCHREVENUECONSTITUENT.PARENTCORPID = @SOURCEID and
            BATCH.STATUSCODE in (0, 1, 3);  -- Uncommitted, Committed, Committing                    



          -- Recurring gift amendments

          if @CHANGEAGENTID is not null
            set CONTEXT_INFO @CHANGEAGENTID;

          -- Remove constituent change amendments where the merge will result in there no longer being a change.

          delete from dbo.RECURRINGGIFTAMENDMENT
          where (CONSTITUENTID = @SOURCEID and PREVIOUSCONSTITUENTID = @TARGETID)
          or (PREVIOUSCONSTITUENTID = @SOURCEID and CONSTITUENTID = @TARGETID);

          if not @CONTEXTCACHE is null
            set CONTEXT_INFO @CONTEXTCACHE;

          update dbo.RECURRINGGIFTAMENDMENT
          set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where CONSTITUENTID = @SOURCEID;

          update dbo.RECURRINGGIFTAMENDMENT
          set PREVIOUSCONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @NOW
          where PREVIOUSCONSTITUENTID = @SOURCEID;

          return 0;