USP_WPPHILANTHROPICGIFT_ADD_BULK

Parameters

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

Definition

Copy


        create procedure dbo.[USP_WPPHILANTHROPICGIFT_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]
                    ,[SOURCE]
                    ,[WEALTHID]
                    ,[ORIGINALID]
                    ,[FULLHASH]
                    ,[PARTIALHASH]
                    ,[MC]
                    ,[RECURSIVEMATCH]
                    ,[CDATE]
                    ,[CVALUE]
                    ,[ORGANIZATION]
                    ,[LOCATION]
                    ,[GIFTYEAR]
                    ,[GIFTRANGE]
                    ,[TYPE]
                    ,[CATEGORY]
                    ,[LO]
                    ,[HI]
                    ,[NAME]
                    ,[ORGANIZATIONWEBADDRESS]
                    ,[SOURCEMATERIAL]
                    ,[GIFTYEARHI]
                    ,[GIFTYEARLO]
                    ,[EIN]
                    ,[CNOTES]
                    ,[MATCHHASH]
                    ,[PHILANTHROPICGIFTID]
                    ,[HOUSEHOLDID]
                    ,[TASCORE]
                    ,[MATCHADDRESS]
                    ,[MATCHCITY]
                    ,[MATCHSTATE]
                    ,[MATCHZIP]
                    ,[CATEGORYLIST] order by [ID]
                    )
              from dbo.[#BULK_WPPHILANTHROPICGIFT]
            )
            delete from DUPECTE where RN > 1;

            if exists (select WEALTHID, MATCHHASH from dbo.[#BULK_WPPHILANTHROPICGIFT] group by WEALTHID, MATCHHASH having count(*) > 1)
            begin
                declare @ID uniqueidentifier;
                declare @SOURCE nvarchar(100);
                declare @WEALTHID uniqueidentifier;
                declare @ORIGINALID int;
                declare @FULLHASH nvarchar(32);
                declare @PARTIALHASH nvarchar(32);
                declare @MC nvarchar(3);
                declare @RECURSIVEMATCH bit;
                declare @CDATE datetime;
                declare @CVALUE money;
                declare @ORGANIZATION nvarchar(200);
                declare @LOCATION nvarchar(100);
                declare @GIFTYEAR smallint;
                declare @GIFTRANGE nvarchar(50);
                declare @TYPE nvarchar(75);
                declare @CATEGORY nvarchar(500);
                declare @LO money;
                declare @HI money;
                declare @NAME nvarchar(200);
                declare @ORGANIZATIONWEBADDRESS nvarchar(2000);
                declare @SOURCEMATERIAL nvarchar(2000);
                declare @GIFTYEARHI smallint;
                declare @GIFTYEARLO smallint;
                declare @EIN nvarchar(50);
                declare @CNOTES nvarchar(1024);
                declare @MATCHHASH nvarchar(32);
                declare @PHILANTHROPICGIFTID int;
                declare @HOUSEHOLDID nvarchar(30);
                declare @TASCORE int;
                declare @MATCHADDRESS nvarchar(100);
                declare @MATCHCITY nvarchar(20);
                declare @MATCHSTATE nvarchar(2);
                declare @MATCHZIP nvarchar(5);
                declare @CATEGORYLIST xml;
                --@WMID int = 0,

                --@REVISION int = 0,

                --@NEWROW bit = 0,

                --@TYPECODE int = 0,


                declare cur cursor local fast_forward for
                select T.[ID],T.[SOURCE],T.[WEALTHID],T.[ORIGINALID],T.[FULLHASH],T.[PARTIALHASH],T.[MC],T.[RECURSIVEMATCH],T.[CDATE],T.[CVALUE],T.[ORGANIZATION],T.[LOCATION],T.[GIFTYEAR],T.[GIFTRANGE],T.[TYPE],T.[CATEGORY],T.[LO],T.[HI],T.[NAME],T.[ORGANIZATIONWEBADDRESS],T.[SOURCEMATERIAL],T.[GIFTYEARHI],T.[GIFTYEARLO],T.[EIN],T.[CNOTES],T.[MATCHHASH],T.[PHILANTHROPICGIFTID],T.[HOUSEHOLDID],T.[TASCORE],T.[MATCHADDRESS],T.[MATCHCITY],T.[MATCHSTATE],T.[MATCHZIP],T.[CATEGORYLIST]
                from
                    dbo.[#BULK_WPPHILANTHROPICGIFT] T
                inner join
                    (select TS.WEALTHID,TS.MATCHHASH from dbo.[#BULK_WPPHILANTHROPICGIFT] TS group by TS.WEALTHID,TS.MATCHHASH having count(*) > 1) D
                on
                    D.WEALTHID = T.WEALTHID and D.MATCHHASH = T.MATCHHASH
                order by T.ROWNUM;

                open cur;
                fetch next from cur into @ID,@SOURCE,@WEALTHID,@ORIGINALID,@FULLHASH,@PARTIALHASH,@MC,@RECURSIVEMATCH,@CDATE,@CVALUE,@ORGANIZATION,@LOCATION,@GIFTYEAR,@GIFTRANGE,@TYPE,@CATEGORY,@LO,@HI,@NAME,@ORGANIZATIONWEBADDRESS,@SOURCEMATERIAL,@GIFTYEARHI,@GIFTYEARLO,@EIN,@CNOTES,@MATCHHASH,@PHILANTHROPICGIFTID,@HOUSEHOLDID,@TASCORE,@MATCHADDRESS,@MATCHCITY,@MATCHSTATE,@MATCHZIP,@CATEGORYLIST;

                while @@FETCH_STATUS = 0
                begin
                    exec dbo.USP_WPPHILANTHROPICGIFT_ADD
                        @ID=@ID,
                        @SOURCE=@SOURCE,
                        @WEALTHID=@WEALTHID,
                        @ORIGINALID=@ORIGINALID,
                        @FULLHASH=@FULLHASH,
                        @PARTIALHASH=@PARTIALHASH,
                        @MC=@MC,
                        @RECURSIVEMATCH=@RECURSIVEMATCH,
                        @CDATE=@CDATE,
                        @CVALUE=@CVALUE,
                        @ORGANIZATION=@ORGANIZATION,
                        @LOCATION=@LOCATION,
                        @GIFTYEAR=@GIFTYEAR,
                        @GIFTRANGE=@GIFTRANGE,
                        @TYPE=@TYPE,
                        @CATEGORY=@CATEGORY,
                        @LO=@LO,
                        @HI=@HI,
                        @NAME=@NAME,
                        @ORGANIZATIONWEBADDRESS=@ORGANIZATIONWEBADDRESS,
                        @SOURCEMATERIAL=@SOURCEMATERIAL,
                        @GIFTYEARHI=@GIFTYEARHI,
                        @GIFTYEARLO=@GIFTYEARLO,
                        @EIN=@EIN,
                        @CNOTES=@CNOTES,
                        @MATCHHASH=@MATCHHASH,
                        @PHILANTHROPICGIFTID=@PHILANTHROPICGIFTID,
                        @HOUSEHOLDID=@HOUSEHOLDID,
                        @TASCORE=@TASCORE,
                        @MATCHADDRESS=@MATCHADDRESS,
                        @MATCHCITY=@MATCHCITY,
                        @MATCHSTATE=@MATCHSTATE,
                        @MATCHZIP=@MATCHZIP,
                        @CATEGORYLIST=@CATEGORYLIST,
                        @CHANGEAGENTID=@CHANGEAGENTID,
                        @CURRENTAPPUSERID=@CURRENTAPPUSERID;

                    fetch next from cur into @ID,@SOURCE,@WEALTHID,@ORIGINALID,@FULLHASH,@PARTIALHASH,@MC,@RECURSIVEMATCH,@CDATE,@CVALUE,@ORGANIZATION,@LOCATION,@GIFTYEAR,@GIFTRANGE,@TYPE,@CATEGORY,@LO,@HI,@NAME,@ORGANIZATIONWEBADDRESS,@SOURCEMATERIAL,@GIFTYEARHI,@GIFTYEARLO,@EIN,@CNOTES,@MATCHHASH,@PHILANTHROPICGIFTID,@HOUSEHOLDID,@TASCORE,@MATCHADDRESS,@MATCHCITY,@MATCHSTATE,@MATCHZIP,@CATEGORYLIST;
                end

                close cur;
                deallocate cur;

                delete T
                from
                    dbo.[#BULK_WPPHILANTHROPICGIFT] T
                inner join
                    (select TS.WEALTHID,TS.MATCHHASH from dbo.[#BULK_WPPHILANTHROPICGIFT] TS group by TS.WEALTHID,TS.MATCHHASH having count(*) > 1) D
                on
                    D.WEALTHID = T.WEALTHID and D.MATCHHASH = T.MATCHHASH;
            end

            if @CURRENTAPPUSERID is not null
            begin
                update T set
                    REJECTED = case coalesce(CR.CONFIDENCE,MC.DEFAULTCONFIDENCE) when 5 then 0 when 0 then 1 end,
                    DATEREJECTED = case coalesce(CR.CONFIDENCE,MC.DEFAULTCONFIDENCE) when 5 then NULL when 0 then @CURRENTDATE end,
                    REJECTEDBYAPPUSERID = case coalesce(CR.CONFIDENCE,MC.DEFAULTCONFIDENCE) when 5 then NULL when 0 then @CURRENTAPPUSERID end,
                    CONFIRMED = case coalesce(CR.CONFIDENCE,MC.DEFAULTCONFIDENCE) when 5 then 1 when 0 then 0 end,
                    DATECONFIRMED = case coalesce(CR.CONFIDENCE,MC.DEFAULTCONFIDENCE) when 5 then @CURRENTDATE when 0 then NULL end,
                    CONFIRMEDBYAPPUSERID = case coalesce(CR.CONFIDENCE,MC.DEFAULTCONFIDENCE) when 5 then @CURRENTAPPUSERID when 0 then NULL end
                from
                    dbo.[#BULK_WPPHILANTHROPICGIFT] T
                inner join
                    dbo.MATCHCODE MC
                on
                    MC.MATCHCODE = T.MC
                left outer join
                    dbo.WEALTHSOURCE WS
                on
                    WS.[SOURCE] = T.[SOURCE]
                left outer join 
                    dbo.CONFIDENCERATING CR
                on
                    CR.MATCHCODEID = MC.ID and
                    CR.WEALTHSOURCEID = WS.ID
                where
                    coalesce(CR.CONFIDENCE,MC.DEFAULTCONFIDENCE) in (0,5);
            end

            update PG set
                MATCHADDRESS = coalesce(T.MATCHADDRESS, ''),
                MATCHCITY = coalesce(T.MATCHCITY, ''),
                MATCHSTATE = coalesce(T.MATCHSTATE, ''),
                MATCHZIP = coalesce(T.MATCHZIP, ''),
                HOUSEHOLDID = coalesce(T.HOUSEHOLDID, ''),
                TASCORE = coalesce(T.TASCORE, 0),
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE
            from
                dbo.[#BULK_WPPHILANTHROPICGIFT] T
            inner join
                dbo.WPPHILANTHROPICGIFT PG
            on
                PG.WEALTHID = T.WEALTHID and
                PG.MATCHHASH = T.MATCHHASH
            where
                not exists(select PGS.* from dbo.WPPHILANTHROPICGIFT PGS where PGS.WEALTHID = T.WEALTHID and PGS.FULLHASH = T.FULLHASH) and
                PG.MATCHADDRESS = '' and
                PG.MATCHCITY = '' and 
                PG.MATCHSTATE = '' and 
                PG.MATCHZIP = '' and
                (len(coalesce(T.MATCHADDRESS, '')) > 0 or len(coalesce(T.MATCHCITY, '')) > 0 or len(coalesce(T.MATCHSTATE, '')) > 0 or len(coalesce(T.MATCHZIP, '')) > 0);

            update PG set
                MC = T.MC,
                FULLHASH = T.FULLHASH,
                RECURSIVEMATCH = T.RECURSIVEMATCH,
                PHILANTHROPICGIFTID = T.PHILANTHROPICGIFTID,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CURRENTDATE,
                CONFIRMED = case when T.CONFIRMED = 1 and PG.CONFIRMED = 0 and PG.REJECTED = 0 then 1 else PG.CONFIRMED end,
                CONFIRMEDBYAPPUSERID = case when T.CONFIRMED = 1 and PG.CONFIRMED = 0 and PG.REJECTED = 0 then T.CONFIRMEDBYAPPUSERID else PG.CONFIRMEDBYAPPUSERID end,
                DATECONFIRMED = case when T.CONFIRMED = 1 and PG.CONFIRMED = 0 and PG.REJECTED = 0 then T.DATECONFIRMED else PG.DATECONFIRMED end
            from
                dbo.[#BULK_WPPHILANTHROPICGIFT] T
            inner join
                dbo.WPPHILANTHROPICGIFT PG
            on
                PG.WEALTHID = T.WEALTHID and
                PG.MATCHHASH = T.MATCHHASH
            where
                not exists(select PGS.* from dbo.WPPHILANTHROPICGIFT PGS where PGS.WEALTHID = T.WEALTHID and PGS.FULLHASH = T.FULLHASH);

            declare @tblNewRecs table (ROWNUM int not null primary key);

            insert into @tblNewRecs
            select
                T.ROWNUM
            from
                dbo.[#BULK_WPPHILANTHROPICGIFT] T
            where
                not exists (select * from dbo.WPPHILANTHROPICGIFT PG where PG.WEALTHID = T.WEALTHID and PG.MATCHHASH = T.MATCHHASH);

            insert into dbo.WPPHILANTHROPICGIFT
            (
                WEALTHID,
                [SOURCE],
                WMID,
                REVISION,
                ORIGINALID,
                NEWROW,
                CDATE,
                CVALUE,
                CNOTES,
                FULLHASH,
                PARTIALHASH,
                MC,
                ORGANIZATION,
                LOCATION,
                GIFTYEAR,
                GIFTRANGE,
                [TYPE],
                CATEGORY,
                LO,
                HI,
                NAME,
                ORGANIZATIONWEBADDRESS,
                SOURCEMATERIAL,
                GIFTYEARHI,
                GIFTYEARLO,
                TYPECODE,
                EIN,
                MATCHHASH,
                PHILANTHROPICGIFTID,
                CHANGEDBYID,
                ADDEDBYID,
                DATEADDED,
                DATECHANGED,
                CONFIRMED,
                CONFIRMEDBYAPPUSERID,
                DATECONFIRMED,
                REJECTED,
                REJECTEDBYAPPUSERID,
                DATEREJECTED,
                RECURSIVEMATCH,
                HOUSEHOLDID,
                TASCORE,
                MATCHADDRESS,
                MATCHCITY,
                MATCHSTATE,
                MATCHZIP
            )
            select
                T.WEALTHID,
                coalesce(T.[SOURCE], ''),
                0,
                0,
                coalesce(T.ORIGINALID, 0),
                0,
                T.CDATE,
                coalesce(T.CVALUE, 0),
                coalesce(T.CNOTES, ''),
                coalesce(T.FULLHASH, ''),
                coalesce(T.PARTIALHASH, ''),
                coalesce(T.MC, ''),
                coalesce(T.ORGANIZATION, ''),
                coalesce(T.LOCATION, ''),
                coalesce(T.GIFTYEAR, 0),
                coalesce(T.GIFTRANGE, ''),
                coalesce(T.[TYPE], ''),
                coalesce(T.CATEGORY, ''),
                coalesce(T.LO, 0),
                coalesce(T.HI, 0),
                coalesce(T.NAME, ''),
                coalesce(T.ORGANIZATIONWEBADDRESS, ''),
                coalesce(T.SOURCEMATERIAL, ''),
                coalesce(T.GIFTYEARHI, 0),
                coalesce(T.GIFTYEARLO, 0),
                0,
                coalesce(T.EIN, ''),
                coalesce(T.MATCHHASH, ''),
                coalesce(T.PHILANTHROPICGIFTID, 0),
                @CHANGEAGENTID,
                @CHANGEAGENTID,
                @CURRENTDATE,
                @CURRENTDATE,
                T.CONFIRMED,
                T.CONFIRMEDBYAPPUSERID,
                T.DATECONFIRMED,
                T.REJECTED,
                T.REJECTEDBYAPPUSERID,
                T.DATEREJECTED,
                T.RECURSIVEMATCH,
                coalesce(T.HOUSEHOLDID, ''),
                coalesce(T.TASCORE, 0),
                coalesce(T.MATCHADDRESS, ''),
                coalesce(T.MATCHCITY, ''),
                coalesce(T.MATCHSTATE, ''),
                coalesce(T.MATCHZIP, '')
            from
                dbo.[#BULK_WPPHILANTHROPICGIFT] T
            inner join
                @tblNewRecs NR
            on
                NR.ROWNUM = T.ROWNUM;

            insert into dbo.WPPHILANTHROPICGIFTCATEGORY
            (
                WPPHILANTHROPICGIFTID,
                PHILANTHROPICGIFTCATEGORYID,
                SEQUENCE,
                ADDEDBYID,
                CHANGEDBYID,
                DATEADDED,
                DATECHANGED
            )
            select
                PG.ID,
                C.PHILANTHROPICGIFTCATEGORYID,
                C.SEQUENCE,
                @CHANGEAGENTID,
                @CHANGEAGENTID,
                @CURRENTDATE,
                @CURRENTDATE
            from
                dbo.[#BULK_WPPHILANTHROPICGIFT] T
            inner join
                @tblNewRecs NR
            on
                NR.ROWNUM = T.ROWNUM
            inner join
                dbo.WPPHILANTHROPICGIFT PG
            on
                PG.WEALTHID = T.WEALTHID and
                PG.MATCHHASH = T.MATCHHASH
            cross apply
                dbo.UFN_WPPHILANTHROPICGIFT_CATEGORIES_FROMITEMLISTXML(T.CATEGORYLIST) C
            where
                T.CATEGORYLIST is not null;
        end try
        begin catch
            exec dbo.USP_RAISE_ERROR;
        end catch

        return 0;
        end