USP_BBAMODELINGANDPROPENSITYFILEIMPORT

This procedure is used by the Target Analytics Modeling and Propensity File Import Record Operation for saving the information from a Target Analytics Modeling and Propensity Import File to the database.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier INOUT
@BBAID nvarchar(100) IN
@ANNUALGIFTLIKELIHOOD int IN
@ANNUITYLIKELIHOOD int IN
@BEQUESTLIKELIHOOD int IN
@CRTLIKELIHOOD int IN
@MAJORGIVINGLIKELIHOOD int IN
@MEMBERSHIPLIKELIHOOD int IN
@ONLINEGIVINGLIKELIHOOD int IN
@PATIENTRESPONSELIKELIHOOD int IN
@PLANNEDGIFTLIKELIHOOD int IN
@SUGGESTEDMEMBERSHIPLEVELSCORE int IN
@NCOAMOVEDINDICATOR bit IN
@TARGETGIFTRANGESCORE int IN
@WPSCREENINGINDICATOR nvarchar(1) IN
@WEALTHESTIMATORRATINGSCORE int IN
@CHANGEAGENTID uniqueidentifier IN
@RUNWEALTHPOINT bit IN
@RESEARCHGROUPNAME nvarchar(100) IN
@RESEARCHGROUPDESCRIPTION nvarchar(255) IN
@CURRENTAPPUSERID uniqueidentifier IN
@CREATEAUXILIARYRESEARCHGROUPS bit IN
@AUXILIARYRESEARCHGROUPSIZE int IN
@ANALYTICSPROJECTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_BBAMODELINGANDPROPENSITYFILEIMPORT (
                @CONSTITUENTID uniqueidentifier output,
                @BBAID nvarchar(100),
                @ANNUALGIFTLIKELIHOOD int = 0,
                @ANNUITYLIKELIHOOD int = 0,
                @BEQUESTLIKELIHOOD int = 0,
                @CRTLIKELIHOOD int = 0,
                @MAJORGIVINGLIKELIHOOD int = 0,
                @MEMBERSHIPLIKELIHOOD int = 0,
                @ONLINEGIVINGLIKELIHOOD int = 0,
                @PATIENTRESPONSELIKELIHOOD int = 0,
                @PLANNEDGIFTLIKELIHOOD int = 0,
                @SUGGESTEDMEMBERSHIPLEVELSCORE int = 0,
                @NCOAMOVEDINDICATOR bit = 0,
                @TARGETGIFTRANGESCORE int = 0,
                @WPSCREENINGINDICATOR nvarchar(1) = '',
                @WEALTHESTIMATORRATINGSCORE int = 0,
                @CHANGEAGENTID uniqueidentifier,
                @RUNWEALTHPOINT bit = 0,
                @RESEARCHGROUPNAME nvarchar(100) = '',
                @RESEARCHGROUPDESCRIPTION nvarchar(255) = '',
                @CURRENTAPPUSERID uniqueidentifier = null,
                @CREATEAUXILIARYRESEARCHGROUPS bit = 0,
                @AUXILIARYRESEARCHGROUPSIZE int = 0,
                @ANALYTICSPROJECTID uniqueidentifier = null
            ) as
                set nocount on;

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

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

                begin try
                    select
                        @CONSTITUENTID = C.ID
                    from
                        dbo.CONSTITUENT C
                    left join
                        dbo.TAIMPORTIDMAP
                    on
                        TAIMPORTIDMAP.ID = C.ID
                    where
                        TAIMPORTIDMAP.LOOKUPID = @BBAID;

                    if @CONSTITUENTID is not null begin
                        declare @SUGGESTEDMEMBERSHIPLEVELID uniqueidentifier;
                        select top 1 @SUGGESTEDMEMBERSHIPLEVELID = ID from dbo.SUGGESTEDMEMBERSHIPLEVEL where SCORE = @SUGGESTEDMEMBERSHIPLEVELSCORE;
                        if @SUGGESTEDMEMBERSHIPLEVELID is null and @SUGGESTEDMEMBERSHIPLEVELSCORE > 0 begin
                            raiserror('This suggested membership level score does not exist in the database.',11,1);
                            return 1;
                        end

                        declare @TARGETGIFTRANGEID uniqueidentifier;
                        select top 1 @TARGETGIFTRANGEID = ID from dbo.TARGETGIFTRANGE where SCORE = @TARGETGIFTRANGESCORE;
                        if @TARGETGIFTRANGEID is null and @TARGETGIFTRANGESCORE > 0 begin
                            raiserror('This target gift range score does not exist in the database.',11,1);
                            return 1;
                        end

                        declare @WEALTHESTIMATORRATINGID uniqueidentifier;
                        select top 1 @WEALTHESTIMATORRATINGID = ID from dbo.WEALTHESTIMATORRATING where SCORE = @WEALTHESTIMATORRATINGSCORE;
                        if @WEALTHESTIMATORRATINGID is null and @WEALTHESTIMATORRATINGSCORE > 0 begin
                            raiserror('This wealth estimator rating score does not exist in the database.',11,1);
                            return 1;
                        end

                        if exists (select ID from dbo.MODELINGANDPROPENSITY where ID = @CONSTITUENTID) begin

                            declare @EXISTINGANNUALGIFTLIKELIHOOD smallint;
                            declare @EXISTINGANNUITYLIKELIHOOD smallint;
                            declare @EXISTINGBEQUESTLIKELIHOOD smallint;
                            declare @EXISTINGCRTLIKELIHOOD smallint;
                            declare @EXISTINGMAJORGIVINGLIKELIHOOD smallint;
                            declare @EXISTINGMEMBERSHIPLIKELIHOOD smallint;
                            declare @EXISTINGONLINEGIVINGLIKELIHOOD smallint;
                            declare @EXISTINGPATIENTRESPONSELIKELIHOOD smallint;
                            declare @EXISTINGPLANNEDGIFTLIKELIHOOD smallint;
                            declare @EXISTINGSUGGESTEDMEMBERSHIPLEVELID uniqueidentifier;
                            declare @EXISTINGTARGETGIFTRANGEID uniqueidentifier;

                            select
                                @EXISTINGANNUALGIFTLIKELIHOOD = ANNUALGIFTLIKELIHOOD,
                                @EXISTINGANNUITYLIKELIHOOD = ANNUITYLIKELIHOOD,
                                @EXISTINGBEQUESTLIKELIHOOD = BEQUESTLIKELIHOOD,
                                @EXISTINGCRTLIKELIHOOD = CRTLIKELIHOOD,
                                @EXISTINGMAJORGIVINGLIKELIHOOD = MAJORGIVINGLIKELIHOOD,
                                @EXISTINGMEMBERSHIPLIKELIHOOD = MEMBERSHIPLIKELIHOOD,
                                @EXISTINGONLINEGIVINGLIKELIHOOD = ONLINEGIVINGLIKELIHOOD,
                                @EXISTINGPATIENTRESPONSELIKELIHOOD = PATIENTRESPONSELIKELIHOOD,
                                @EXISTINGPLANNEDGIFTLIKELIHOOD = PLANNEDGIFTLIKELIHOOD,
                                @EXISTINGSUGGESTEDMEMBERSHIPLEVELID = SUGGESTEDMEMBERSHIPLEVELID,
                                @EXISTINGTARGETGIFTRANGEID = TARGETGIFTRANGEID
                            from
                                dbo.MODELINGANDPROPENSITY
                            where
                                ID = @CONSTITUENTID;

                            if @ANALYTICSPROJECTID is null and (
                                    @ANNUALGIFTLIKELIHOOD <> coalesce(@EXISTINGANNUALGIFTLIKELIHOOD, -1) and @ANNUALGIFTLIKELIHOOD <> -1
                                    or @ANNUITYLIKELIHOOD <> coalesce(@EXISTINGANNUITYLIKELIHOOD, -1) and @ANNUITYLIKELIHOOD <> -1
                                    or @BEQUESTLIKELIHOOD  <> coalesce(@EXISTINGBEQUESTLIKELIHOOD, -1) and @BEQUESTLIKELIHOOD <> -1
                                    or @CRTLIKELIHOOD <> coalesce(@EXISTINGCRTLIKELIHOOD, -1) and @CRTLIKELIHOOD <> -1
                                    or @MAJORGIVINGLIKELIHOOD <> coalesce(@EXISTINGMAJORGIVINGLIKELIHOOD, -1) and @MAJORGIVINGLIKELIHOOD <> -1
                                    or @MEMBERSHIPLIKELIHOOD <> coalesce(@EXISTINGMEMBERSHIPLIKELIHOOD, -1) and @MEMBERSHIPLIKELIHOOD <> -1
                                    or @ONLINEGIVINGLIKELIHOOD <> coalesce(@EXISTINGONLINEGIVINGLIKELIHOOD, -1) and @ONLINEGIVINGLIKELIHOOD <> -1
                                    or @PATIENTRESPONSELIKELIHOOD <> coalesce(@EXISTINGPATIENTRESPONSELIKELIHOOD, -1) and @PATIENTRESPONSELIKELIHOOD <> -1
                                    or @PLANNEDGIFTLIKELIHOOD <> coalesce(@EXISTINGPLANNEDGIFTLIKELIHOOD, -1) and @PLANNEDGIFTLIKELIHOOD <> -1
                                    or @SUGGESTEDMEMBERSHIPLEVELID <> @EXISTINGSUGGESTEDMEMBERSHIPLEVELID or @EXISTINGSUGGESTEDMEMBERSHIPLEVELID is null and @SUGGESTEDMEMBERSHIPLEVELID is not null
                                    or @TARGETGIFTRANGEID <> @EXISTINGTARGETGIFTRANGEID or @EXISTINGTARGETGIFTRANGEID is null and @TARGETGIFTRANGEID is not null
                                )
                                raiserror('BBERR_ANALYTICSPROJECTMISSING',13,2);

                            update
                                dbo.MODELINGANDPROPENSITY
                            set
                                ANNUALGIFTLIKELIHOOD = coalesce(nullif(@ANNUALGIFTLIKELIHOOD, -1), ANNUALGIFTLIKELIHOOD, -1),
                                ANNUITYLIKELIHOOD = coalesce(nullif(@ANNUITYLIKELIHOOD, -1), ANNUITYLIKELIHOOD, -1),
                                BEQUESTLIKELIHOOD = coalesce(nullif(@BEQUESTLIKELIHOOD, -1), BEQUESTLIKELIHOOD, -1),
                                CRTLIKELIHOOD = coalesce(nullif(@CRTLIKELIHOOD, -1), CRTLIKELIHOOD, -1),
                                MAJORGIVINGLIKELIHOOD = coalesce(nullif(@MAJORGIVINGLIKELIHOOD, -1), MAJORGIVINGLIKELIHOOD, -1),
                                MEMBERSHIPLIKELIHOOD = coalesce(nullif(@MEMBERSHIPLIKELIHOOD, -1), MEMBERSHIPLIKELIHOOD, -1),
                                ONLINEGIVINGLIKELIHOOD = coalesce(nullif(@ONLINEGIVINGLIKELIHOOD, -1), ONLINEGIVINGLIKELIHOOD, -1),
                                PATIENTRESPONSELIKELIHOOD = coalesce(nullif(@PATIENTRESPONSELIKELIHOOD, -1), PATIENTRESPONSELIKELIHOOD, -1),
                                PLANNEDGIFTLIKELIHOOD = coalesce(nullif(@PLANNEDGIFTLIKELIHOOD, -1), PLANNEDGIFTLIKELIHOOD, -1),
                                SUGGESTEDMEMBERSHIPLEVELID = coalesce(@SUGGESTEDMEMBERSHIPLEVELID, SUGGESTEDMEMBERSHIPLEVELID),
                                NCOAMOVEDINDICATOR = coalesce(@NCOAMOVEDINDICATOR, NCOAMOVEDINDICATOR, 0),
                                TARGETGIFTRANGEID = coalesce(@TARGETGIFTRANGEID, TARGETGIFTRANGEID),
                                WPSCREENINGINDICATOR = coalesce(nullif(@WPSCREENINGINDICATOR, ''), WPSCREENINGINDICATOR, ''),
                                WEALTHESTIMATORRATINGID = coalesce(@WEALTHESTIMATORRATINGID, WEALTHESTIMATORRATINGID),
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            from
                                dbo.MODELINGANDPROPENSITY
                            where
                                ID = @CONSTITUENTID and 
                                (@ANNUALGIFTLIKELIHOOD <> -1
                                or @ANNUITYLIKELIHOOD <> -1
                                or @BEQUESTLIKELIHOOD <> -1
                                or @CRTLIKELIHOOD <> -1
                                or @MAJORGIVINGLIKELIHOOD <> -1
                                or @MEMBERSHIPLIKELIHOOD <> -1
                                or @ONLINEGIVINGLIKELIHOOD <> -1
                                or @PATIENTRESPONSELIKELIHOOD <> -1
                                or @PLANNEDGIFTLIKELIHOOD <> -1
                                or @SUGGESTEDMEMBERSHIPLEVELID is not null
                                or @NCOAMOVEDINDICATOR is not null
                                or @TARGETGIFTRANGEID is not null 
                                or ISNULL(@WPSCREENINGINDICATOR,'') <> ''
                                or @WEALTHESTIMATORRATINGID is not null); 
                        end
                        else begin

                            if @ANALYTICSPROJECTID is null and (
                                    @ANNUALGIFTLIKELIHOOD <> -1
                                    or @ANNUITYLIKELIHOOD <> -1
                                    or @BEQUESTLIKELIHOOD <> -1
                                    or @CRTLIKELIHOOD <> -1
                                    or @MAJORGIVINGLIKELIHOOD <> -1
                                    or @MEMBERSHIPLIKELIHOOD <> -1
                                    or @ONLINEGIVINGLIKELIHOOD <> -1
                                    or @PATIENTRESPONSELIKELIHOOD <> -1
                                    or @PLANNEDGIFTLIKELIHOOD <> -1
                                    or @SUGGESTEDMEMBERSHIPLEVELID is not null
                                    or @TARGETGIFTRANGEID is not null
                                )
                                raiserror('BBERR_ANALYTICSPROJECTMISSING',13,2);

                            insert into dbo.MODELINGANDPROPENSITY (
                                ID,
                                ANNUALGIFTLIKELIHOOD,
                                ANNUITYLIKELIHOOD,
                                BEQUESTLIKELIHOOD,
                                CRTLIKELIHOOD,
                                MAJORGIVINGLIKELIHOOD,
                                MEMBERSHIPLIKELIHOOD,
                                ONLINEGIVINGLIKELIHOOD,
                                PATIENTRESPONSELIKELIHOOD,
                                PLANNEDGIFTLIKELIHOOD,
                                SUGGESTEDMEMBERSHIPLEVELID,
                                NCOAMOVEDINDICATOR,
                                TARGETGIFTRANGEID,
                                WPSCREENINGINDICATOR,
                                WEALTHESTIMATORRATINGID,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )
                            values (
                                @CONSTITUENTID,
                                @ANNUALGIFTLIKELIHOOD,
                                @ANNUITYLIKELIHOOD,
                                @BEQUESTLIKELIHOOD,
                                @CRTLIKELIHOOD,
                                @MAJORGIVINGLIKELIHOOD,
                                @MEMBERSHIPLIKELIHOOD,
                                @ONLINEGIVINGLIKELIHOOD,
                                @PATIENTRESPONSELIKELIHOOD,
                                @PLANNEDGIFTLIKELIHOOD,
                                @SUGGESTEDMEMBERSHIPLEVELID,
                                coalesce(@NCOAMOVEDINDICATOR, 0),
                                @TARGETGIFTRANGEID,
                                @WPSCREENINGINDICATOR,
                                @WEALTHESTIMATORRATINGID,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            );
                        end

                        exec dbo.USP_MODELINGANDPROPENSITYDELIVERY_SYNCHRONIZE @CONSTITUENTID, @ANALYTICSPROJECTID,
                                @ANNUALGIFTLIKELIHOOD, @ANNUITYLIKELIHOOD,
                                @BEQUESTLIKELIHOOD, @CRTLIKELIHOOD,
                                @MAJORGIVINGLIKELIHOOD, @MEMBERSHIPLIKELIHOOD,
                                @ONLINEGIVINGLIKELIHOOD, @PATIENTRESPONSELIKELIHOOD,
                                @PLANNEDGIFTLIKELIHOOD, @SUGGESTEDMEMBERSHIPLEVELID,
                                @NCOAMOVEDINDICATOR, @TARGETGIFTRANGEID,
                                @WEALTHESTIMATORRATINGID;
                                --@WPSCREENINGINDICATOR is no longer used


                        if @RUNWEALTHPOINT = 1 begin
                            declare @RESEARCHGROUPID uniqueidentifier;
                            set @RESEARCHGROUPID = null;

                            set @CURRENTDATE = getdate();

                            select
                                @RESEARCHGROUPID = RESEARCHGROUP.ID
                            from
                                dbo.RESEARCHGROUP
                            where
                                RESEARCHGROUP.NAME = @RESEARCHGROUPNAME;

                            if @RESEARCHGROUPID is null begin
                                set @RESEARCHGROUPID = newid();

                                insert into dbo.RESEARCHGROUP(
                                    ID,
                                    NAME,
                                    DESCRIPTION,
                                    OWNERID,
                                    OTHERSCANMODIFY,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values (
                                    @RESEARCHGROUPID,
                                    @RESEARCHGROUPNAME,
                                    @RESEARCHGROUPDESCRIPTION,
                                    @CURRENTAPPUSERID,
                                    0,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );
                            end

                            if not exists (select RESEARCHGROUPMEMBER.ID from dbo.RESEARCHGROUPMEMBER where RESEARCHGROUPMEMBER.RESEARCHGROUPID = @RESEARCHGROUPID and RESEARCHGROUPMEMBER.CONSTITUENTID = @CONSTITUENTID) begin
                                insert into dbo.RESEARCHGROUPMEMBER (
                                    RESEARCHGROUPID,
                                    CONSTITUENTID,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values (
                                    @RESEARCHGROUPID,
                                    @CONSTITUENTID,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );

                                exec dbo.USP_RESEARCHGROUP_INCREMENTNUMMEMBERS @RESEARCHGROUPID, 1, @CHANGEAGENTID;
                            end

                            if @CREATEAUXILIARYRESEARCHGROUPS = 1 and @AUXILIARYRESEARCHGROUPSIZE > 0 begin
                                declare @AUXILIARYRESEARCHGROUPID uniqueidentifier

                                select
                                    @AUXILIARYRESEARCHGROUPID = RESEARCHGROUP.ID
                                from
                                    dbo.RESEARCHGROUP
                                left join dbo.RESEARCHGROUPMEMBER on 
                                    RESEARCHGROUP.ID = RESEARCHGROUPMEMBER.RESEARCHGROUPID
                                where 
                                    NAME like @RESEARCHGROUPNAME+ '%' and
                                    RESEARCHGROUP.ID <> @RESEARCHGROUPID 
                                group by
                                    RESEARCHGROUP.ID
                                having
                                    COUNT(RESEARCHGROUPMEMBER.ID)< @AUXILIARYRESEARCHGROUPSIZE

                                if @AUXILIARYRESEARCHGROUPID is null begin

                                    declare @AUXILIARYRESEARCHGROUPNAME nvarchar(100); 
                                    select 
                                        @AUXILIARYRESEARCHGROUPNAME = @RESEARCHGROUPNAME +' '+ cast(COUNT(ID)as nvarchar(10))
                                    from
                                        dbo.RESEARCHGROUP    
                                    where 
                                        NAME like @RESEARCHGROUPNAME+ '%' 

                                    set @AUXILIARYRESEARCHGROUPID = newid();
                                    insert into dbo.RESEARCHGROUP(
                                        ID,
                                        NAME,
                                        DESCRIPTION,
                                        OWNERID,
                                        OTHERSCANMODIFY,
                                        ADDEDBYID,
                                        CHANGEDBYID,
                                        DATEADDED,
                                        DATECHANGED
                                    )
                                    values (
                                        @AUXILIARYRESEARCHGROUPID,
                                        @AUXILIARYRESEARCHGROUPNAME,
                                        @RESEARCHGROUPDESCRIPTION,
                                        @CURRENTAPPUSERID,
                                        0,
                                        @CHANGEAGENTID,
                                        @CHANGEAGENTID,
                                        @CURRENTDATE,
                                        @CURRENTDATE
                                    );
                                end    

                                if not exists (select RESEARCHGROUPMEMBER.ID from dbo.RESEARCHGROUPMEMBER where RESEARCHGROUPMEMBER.RESEARCHGROUPID = @AUXILIARYRESEARCHGROUPID and RESEARCHGROUPMEMBER.CONSTITUENTID = @CONSTITUENTID) begin
                                    insert into dbo.RESEARCHGROUPMEMBER (
                                        RESEARCHGROUPID,
                                        CONSTITUENTID,
                                        ADDEDBYID,
                                        CHANGEDBYID,
                                        DATEADDED,
                                        DATECHANGED
                                    )
                                    values (
                                        @AUXILIARYRESEARCHGROUPID,
                                        @CONSTITUENTID,
                                        @CHANGEAGENTID,
                                        @CHANGEAGENTID,
                                        @CURRENTDATE,
                                        @CURRENTDATE
                                    );

                                    exec dbo.USP_RESEARCHGROUP_INCREMENTNUMMEMBERS @AUXILIARYRESEARCHGROUPID, 1, @CHANGEAGENTID;
                                end                        
                            end
                        end            
                    end
                    else begin
                        raiserror('The ImportID does not match a constituent in the database.',11,1);
                        return 1;
                    end
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;