USP_WPRELATIONSHIP_NPA_IND_ADD_BULK

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


        create procedure dbo.[USP_WPRELATIONSHIP_NPA_IND_ADD_BULK] (
            @CHANGEAGENTID uniqueidentifier = null,
            @CURRENTAPPUSERID uniqueidentifier = null
        ) as
        begin
        set nocount on;

        if @CHANGEAGENTID is null  
            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

        declare @CURRENTDATE datetime;    
        set @CURRENTDATE = getdate();

        begin try
            ;with DUPECTE as (
                select RN = row_number() over(partition by
                     [ID]
                    ,[CONSTITUENTID]
                    ,[EIN]
                    ,[FIRSTNAME]
                    ,[MIDDLE]
                    ,[LASTNAME]
                    ,[SUFFIX]
                    ,[TITLE]
                    ,[CITY]
                    ,[STATE]
                    ,[ZIP]
                    ,[LASTDATE]
                    ,[YROBSERVE]
                    ,[SPOUSEFLAG]
                    ,[MATCHPROSPECT]
                    ,[MATCHPRIMARYBUSINESS]
                    ,[EXECCOUNT] order by ID
                    )
              from dbo.[#BULK_WPRELATIONSHIP_NPA_IND]
            )
            delete from DUPECTE where RN > 1;

            update T set
                EXECCOUNT = EC.EXECCOUNT
            from
                dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
            inner join (
                select
                    TEIN.EIN,
                    TEIN.EXECCOUNT
                from
                    dbo.[#BULK_WPRELATIONSHIP_NPA_IND] TEIN
                where
                    TEIN.ROWNUM = (select max(TS.ROWNUM) from dbo.[#BULK_WPRELATIONSHIP_NPA_IND] TS where TS.EIN=TEIN.EIN)) EC
            on
                EC.EIN=T.EIN
            where
                T.EXECCOUNT <> EC.EXECCOUNT;

            if exists (select EIN,FIRSTNAME,LASTNAME,MIDDLE,SUFFIX from dbo.[#BULK_WPRELATIONSHIP_NPA_IND] group by EIN,FIRSTNAME,LASTNAME,MIDDLE,SUFFIX having count(*) > 1)
            begin
                declare @ID uniqueidentifier;
                declare @CONSTITUENTID uniqueidentifier;
                declare @EIN nvarchar(30);
                declare @FIRSTNAME nvarchar(50);
                declare @MIDDLE nvarchar(50);
                declare @LASTNAME nvarchar(100);
                declare @SUFFIX nvarchar(50);
                declare @TITLE nvarchar(100);
                declare @CITY nvarchar(50);
                declare @STATE nvarchar(2);
                declare @ZIP nvarchar(10);
                declare @LASTDATE datetime;
                declare @YROBSERVE nvarchar(100);
                declare @SPOUSEFLAG bit;
                declare @MATCHPROSPECT bit;
                declare @MATCHPRIMARYBUSINESS bit;
                declare @EXECCOUNT int;

                declare cur cursor local fast_forward for
                select T.[ID],T.[CONSTITUENTID],T.[EIN],T.[FIRSTNAME],T.[MIDDLE],T.[LASTNAME],T.[SUFFIX],T.[TITLE],T.[CITY],T.[STATE],T.[ZIP],T.[LASTDATE],T.[YROBSERVE],T.[SPOUSEFLAG],T.[MATCHPROSPECT],T.[MATCHPRIMARYBUSINESS],T.[EXECCOUNT]
                from
                    dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
                inner join
                    (select TS.EIN,TS.FIRSTNAME,TS.LASTNAME,TS.MIDDLE,TS.SUFFIX from dbo.[#BULK_WPRELATIONSHIP_NPA_IND] TS group by TS.EIN,TS.FIRSTNAME,TS.LASTNAME,TS.MIDDLE,TS.SUFFIX having count(*) > 1) D
                on
                    D.EIN = T.EIN and D.FIRSTNAME = T.FIRSTNAME and D.LASTNAME = T.LASTNAME and D.MIDDLE = T.MIDDLE and D.SUFFIX = T.SUFFIX
                order by T.ROWNUM;

                open cur;
                fetch next from cur into @ID,@CONSTITUENTID,@EIN,@FIRSTNAME,@MIDDLE,@LASTNAME,@SUFFIX,@TITLE,@CITY,@STATE,@ZIP,@LASTDATE,@YROBSERVE,@SPOUSEFLAG,@MATCHPROSPECT,@MATCHPRIMARYBUSINESS,@EXECCOUNT;

                while @@FETCH_STATUS = 0
                begin
                    exec dbo.USP_WPRELATIONSHIP_NPA_IND_ADD
                        @ID=@ID,
                        @CHANGEAGENTID=@CHANGEAGENTID,
                        @CONSTITUENTID=@CONSTITUENTID,
                        @LASTNAME=@LASTNAME,
                        @FIRSTNAME=@FIRSTNAME,
                        @MIDDLE=@MIDDLE,
                        @SUFFIX=@SUFFIX,
                        @TITLE=@TITLE,
                        @CITY=@CITY,
                        @STATE=@STATE,
                        @ZIP=@ZIP,
                        @LASTDATE=@LASTDATE,
                        @YROBSERVE=@YROBSERVE,
                        @EIN=@EIN,
                        @SPOUSEFLAG=@SPOUSEFLAG,
                        @MATCHPROSPECT=@MATCHPROSPECT,
                        @MATCHPRIMARYBUSINESS=@MATCHPRIMARYBUSINESS,
                        @EXECCOUNT=@EXECCOUNT;

                    fetch next from cur into @ID,@CONSTITUENTID,@EIN,@FIRSTNAME,@MIDDLE,@LASTNAME,@SUFFIX,@TITLE,@CITY,@STATE,@ZIP,@LASTDATE,@YROBSERVE,@SPOUSEFLAG,@MATCHPROSPECT,@MATCHPRIMARYBUSINESS,@EXECCOUNT;
                end

                close cur;
                deallocate cur;

                delete T
                from
                    dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
                inner join
                    (select TS.EIN,TS.FIRSTNAME,TS.LASTNAME,TS.MIDDLE,TS.SUFFIX from dbo.[#BULK_WPRELATIONSHIP_NPA_IND] TS group by TS.EIN,TS.FIRSTNAME,TS.LASTNAME,TS.MIDDLE,TS.SUFFIX having count(*) > 1) D
                on
                    D.EIN = T.EIN and D.FIRSTNAME = T.FIRSTNAME and D.LASTNAME = T.LASTNAME and D.MIDDLE = T.MIDDLE and D.SUFFIX = T.SUFFIX;
            end

            update RNPA set
                EXECCOUNT = T.EXECCOUNT,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
                dbo.WPRELATIONSHIP_NPA RNPA
            inner join
                (select distinct TS.EIN, TS.EXECCOUNT from dbo.[#BULK_WPRELATIONSHIP_NPA_IND] TS) T
            on
                RNPA.EIN = T.EIN and
                RNPA.EXECCOUNT <> T.EXECCOUNT;

            insert into dbo.WPRELATIONSHIP_NPA
                (
                EIN,
                EXECCOUNT,
                CHANGEDBYID,
                ADDEDBYID,
                DATEADDED,
                DATECHANGED
                )
            select distinct
                T.EIN,
                T.EXECCOUNT,
                @CHANGEAGENTID,
                @CHANGEAGENTID,
                @CURRENTDATE,
                @CURRENTDATE
            from
                dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
            where
                not exists (select * from dbo.WPRELATIONSHIP_NPA RNPA where RNPA.EIN = T.EIN);

            update T set
                SPOUSEID = R.RECIPROCALCONSTITUENTID
            from
                dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
            inner join
                dbo.RELATIONSHIP R
            on
                R.RELATIONSHIPCONSTITUENTID = T.CONSTITUENTID and
                R.ISSPOUSE = 1
            where
                T.SPOUSEFLAG = '1';

            update RNPA set
                CONSTITUENTID = R.RECIPROCALCONSTITUENTID,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
                dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
            inner join
                dbo.WPRELATIONSHIP_NPA RNPA
            on
                RNPA.EIN = T.EIN and
                RNPA.CONSTITUENTID is null
            inner join
                dbo.RELATIONSHIP R
            on
                R.RELATIONSHIPCONSTITUENTID = coalesce(T.SPOUSEID, T.CONSTITUENTID) and
                R.ISPRIMARYBUSINESS = 1
            where
                T.MATCHPRIMARYBUSINESS = '1';

            update RNPAI set
                CONSTITUENTID = case when T.MATCHPROSPECT = '1' then coalesce(RNPAI.CONSTITUENTID, T.SPOUSEID, T.CONSTITUENTID) else RNPAI.CONSTITUENTID end,
                LASTNAME = T.LASTNAME,
                FIRSTNAME = T.FIRSTNAME,
                MIDDLE = T.MIDDLE,
                SUFFIX = T.SUFFIX,
                TITLE = left(T.TITLE, 100),
                CITY = T.CITY,
                [STATE] = T.[STATE],
                ZIP = T.ZIP,
                LASTDATE = T.LASTDATE,
                YROBSERVE = T.YROBSERVE,
                SPOUSEFLAG = T.SPOUSEFLAG,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
                dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
            inner join
                dbo.WPRELATIONSHIP_NPA RNPA
            on
                RNPA.EIN = T.EIN
            inner join
                dbo.WPRELATIONSHIP_NPA_IND RNPAI
            on
                RNPAI.WPRELATIONSHIP_NPA_ID = RNPA.ID and
                RNPAI.FIRSTNAME = T.FIRSTNAME and
                RNPAI.LASTNAME = T.LASTNAME and
                RNPAI.MIDDLE = T.MIDDLE and
                RNPAI.SUFFIX = T.SUFFIX
            where
                (T.MATCHPROSPECT = '1' and
                RNPAI.CONSTITUENTID is null and
                (T.CONSTITUENTID is not null or T.SPOUSEID is not null)) or
                (RNPAI.TITLE <> left(T.TITLE, 100)) or
                (RNPAI.CITY <> T.CITY) or
                (RNPAI.[STATE] <> T.[STATE]) or
                (RNPAI.ZIP <> T.ZIP) or
                (RNPAI.LASTDATE <> T.LASTDATE and (RNPAI.LASTDATE is not null or T.LASTDATE is not null)) or
                (RNPAI.YROBSERVE <> T.YROBSERVE) or
                (RNPAI.SPOUSEFLAG <> T.SPOUSEFLAG);

            insert into dbo.WPRELATIONSHIP_NPA_IND
            (
                CONSTITUENTID,
                LASTNAME,
                FIRSTNAME,
                MIDDLE,
                SUFFIX,
                TITLE,
                CITY,
                [STATE],
                ZIP,
                LASTDATE,
                YROBSERVE,
                WPRELATIONSHIP_NPA_ID,
                SPOUSEFLAG,
                ADDEDBYID,
                CHANGEDBYID,
                DATEADDED,
                DATECHANGED
            )
            select
                case when T.MATCHPROSPECT = '1' then coalesce(T.SPOUSEID, T.CONSTITUENTID) else null end,
                T.LASTNAME,
                T.FIRSTNAME,
                T.MIDDLE,
                T.SUFFIX,
                left(T.TITLE, 100),
                T.CITY,
                T.[STATE],
                T.ZIP,
                T.LASTDATE,
                T.YROBSERVE,
                RNPA.ID,
                T.SPOUSEFLAG,
                @CHANGEAGENTID,
                @CHANGEAGENTID,
                @CURRENTDATE,
                @CURRENTDATE
            from
                dbo.[#BULK_WPRELATIONSHIP_NPA_IND] T
            inner join
                dbo.WPRELATIONSHIP_NPA RNPA
            on
                RNPA.EIN = T.EIN
            where not exists (
                                select * from
                                    dbo.WPRELATIONSHIP_NPA_IND RNPAI
                                where
                                    RNPAI.WPRELATIONSHIP_NPA_ID = RNPA.ID and
                                    RNPAI.FIRSTNAME = T.FIRSTNAME and
                                    RNPAI.LASTNAME = T.LASTNAME and
                                    RNPAI.MIDDLE = T.MIDDLE and
                                    RNPAI.SUFFIX = T.SUFFIX);
        end try
        begin catch
            exec dbo.USP_RAISE_ERROR;
        end catch

        return 0;
        end