USP_PROSPECT_ADD

A common stored proc for saving the prospect add forms

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@PROSPECTID uniqueidentifier IN
@PROSPECTMANAGERFUNDRAISERID uniqueidentifier IN
@PROSPECTPLAN_PROSPECTPLANTYPECODEID uniqueidentifier IN
@PROSPECTPLAN_PLANOUTLINEID uniqueidentifier IN
@PROSPECTPLAN_PRIMARYMANAGERFUNDRAISERID uniqueidentifier IN
@PROSPECTPLAN_SECONDARYMANAGERFUNDRAISERID uniqueidentifier IN
@SECONDARYFUNDRAISERS xml IN
@PROSPECTPLAN_NAME nvarchar(100) IN
@PROSPECTPLAN_PARTICIPANTS xml IN
@SITES xml IN
@PROSPECTTEAM xml IN
@PROSPECTPLAN_PRIMARYMANAGERDATEFROM datetime IN
@PROSPECTPLAN_SECONDARYMANAGERDATEFROM datetime IN
@PROSPECTMANAGERSTARTDATE datetime IN
@PROSPECTPLAN_NARRATIVE nvarchar(1000) IN
@PROSPECTPLAN_BASEDATE date IN
@OVERRIDEEXISTINGPROSPECTMANAGER bit IN
@PROSPECTPLANID uniqueidentifier IN
@PROSPECTPLAN_BASECURRENCYID uniqueidentifier IN
@PROSPECTPLAN_STARTDATE datetime IN

Definition

Copy


                    CREATE procedure dbo.USP_PROSPECT_ADD (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @PROSPECTID uniqueidentifier,
                        @PROSPECTMANAGERFUNDRAISERID uniqueidentifier = null,
                        @PROSPECTPLAN_PROSPECTPLANTYPECODEID uniqueidentifier = null,
                        @PROSPECTPLAN_PLANOUTLINEID uniqueidentifier = null,
                        @PROSPECTPLAN_PRIMARYMANAGERFUNDRAISERID uniqueidentifier = null,
                        @PROSPECTPLAN_SECONDARYMANAGERFUNDRAISERID uniqueidentifier = null,
                        @SECONDARYFUNDRAISERS xml = null,
                        @PROSPECTPLAN_NAME nvarchar(100) = '',
                        @PROSPECTPLAN_PARTICIPANTS xml = null,
                        @SITES xml = null,
                        @PROSPECTTEAM xml = null,
                        @PROSPECTPLAN_PRIMARYMANAGERDATEFROM datetime = null,
                        @PROSPECTPLAN_SECONDARYMANAGERDATEFROM datetime = null,
                        @PROSPECTMANAGERSTARTDATE datetime = null,
                        @PROSPECTPLAN_NARRATIVE nvarchar(1000) = '',
                        @PROSPECTPLAN_BASEDATE date = null,
                        @OVERRIDEEXISTINGPROSPECTMANAGER bit = 1,
                        @PROSPECTPLANID uniqueidentifier = null,
                        @PROSPECTPLAN_BASECURRENCYID uniqueidentifier = null,
                        @PROSPECTPLAN_STARTDATE datetime = null
                    )
                    as begin
                        set nocount on;

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

                        declare @CURRENTDATEEARLIESTTIME datetime;
                        set @CURRENTDATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE);

                        set @ID = @PROSPECTID;

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

                        if @PROSPECTPLAN_BASEDATE is null
                            set @PROSPECTPLAN_BASEDATE = @CURRENTDATEEARLIESTTIME;

                        declare @PROSPECT_STARTDATE date;
                        if @PROSPECTPLAN_BASEDATE > @CURRENTDATEEARLIESTTIME
                            set @PROSPECT_STARTDATE = @CURRENTDATEEARLIESTTIME;
                        else
                            set @PROSPECT_STARTDATE = @PROSPECTPLAN_BASEDATE;

                        begin try

                            if (exists(select 1 from dbo.PROSPECT where ID=@ID)) begin
                                update dbo.PROSPECT set
                                    PROSPECTMANAGERFUNDRAISERID = @PROSPECTMANAGERFUNDRAISERID,
                                    PROSPECTMANAGERSTARTDATE = case when @PROSPECTMANAGERFUNDRAISERID is not null then @PROSPECTMANAGERSTARTDATE else null end,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where
                                    ID = @ID
                                    and PROSPECTMANAGERFUNDRAISERID != @PROSPECTMANAGERFUNDRAISERID
                                    and @OVERRIDEEXISTINGPROSPECTMANAGER = 1;
                            end else begin 
                                insert into dbo.PROSPECT (
                                    ID,
                                    PROSPECTMANAGERFUNDRAISERID,
                                    PROSPECTMANAGERSTARTDATE,
                                    ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                                ) values (
                                    @ID,
                                    @PROSPECTMANAGERFUNDRAISERID,
                                    case when @PROSPECTMANAGERFUNDRAISERID is not null then @PROSPECTMANAGERSTARTDATE else null end,
                                    @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                                );
                            end

                            exec dbo.USP_PROSPECTASSIGNEDALERT_SEND null, @ID;

                            declare @contextCache varbinary(128);
                            /* cache current context information */
                            set @contextCache = CONTEXT_INFO();
                            /* set CONTEXT_INFO to @CHANGEAGENTID */
                            if not @CHANGEAGENTID is null
                                set CONTEXT_INFO @CHANGEAGENTID;

                            delete
                                dbo.PROSPECTDATERANGE
                            where
                                CONSTITUENTID = @ID and
                                DATEFROM > @PROSPECT_STARTDATE;

                            /* reset CONTEXT_INFO to previous value */
                            if not @contextCache is null
                                set CONTEXT_INFO @contextCache;

                            declare @PROSPECTDATERANGEID uniqueidentifier;

                            select @PROSPECTDATERANGEID = ID
                            from dbo.PROSPECTDATERANGE
                            where CONSTITUENTID = @ID
                            and (DATEFROM <= @PROSPECT_STARTDATE or DATEFROM is null)
                            and (DATETO is null or DATETO >= @PROSPECT_STARTDATE)

                            if @PROSPECTDATERANGEID is not null
                                update dbo.PROSPECTDATERANGE
                                set DATETO = null,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where ID = @PROSPECTDATERANGEID
                                and DATETO is not null;
                            else
                                insert into dbo.PROSPECTDATERANGE
                                (
                                    CONSTITUENTID,
                                    DATEFROM,
                                    DATETO,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values
                                (
                                    @ID,
                                    @PROSPECT_STARTDATE,
                                    null,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );

                            /*Start Plan */

                            if @PROSPECTPLAN_NAME is not null and rtrim(ltrim(@PROSPECTPLAN_NAME)) <> ''
                            begin
                                if @PROSPECTPLANID is null
                                    set @PROSPECTPLANID = newid();

                                insert into dbo.PROSPECTPLAN (
                                    ID,
                                    PROSPECTID,
                                    PROSPECTPLANTYPECODEID,
                                    PRIMARYMANAGERFUNDRAISERID,
                                    PRIMARYMANAGERSTARTDATE,
                                    SECONDARYMANAGERFUNDRAISERID,
                                    SECONDARYMANAGERSTARTDATE,
                                    NAME,
                                    NARRATIVE,
                                    BASECURRENCYID,
                                    STARTDATE,
                                    ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
                                ) values (
                                    @PROSPECTPLANID,
                                    @ID,
                                    @PROSPECTPLAN_PROSPECTPLANTYPECODEID,
                                    @PROSPECTPLAN_PRIMARYMANAGERFUNDRAISERID,
                                    @PROSPECTPLAN_PRIMARYMANAGERDATEFROM,
                                    @PROSPECTPLAN_SECONDARYMANAGERFUNDRAISERID,
                                    @PROSPECTPLAN_SECONDARYMANAGERDATEFROM,
                                    @PROSPECTPLAN_NAME,
                                    @PROSPECTPLAN_NARRATIVE,
                                    @PROSPECTPLAN_BASECURRENCYID,
                                    @PROSPECTPLAN_STARTDATE,
                                    @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                                );                                

                                exec dbo.USP_PROSPECTPLAN_GETSITES_ADDFROMXML @PROSPECTPLANID, @SITES, @CHANGEAGENTID, @CURRENTDATE;

                                exec dbo.USP_PROSPECTPLANASSIGNEDALERT_SEND null, null, @PROSPECTPLANID;

                                exec dbo.USP_PROSPECTPLAN_SECONDARYFUNDRAISERS_ADDFROMXML @PROSPECTPLANID, @SECONDARYFUNDRAISERS, @CHANGEAGENTID, @CURRENTDATE;

                                declare @STEPS xml;
                                set @STEPS = dbo.UFN_PLANOUTLINE_STEPSFORPROSPECTEDIT_TOITEMLISTXML(@PROSPECTPLAN_PLANOUTLINEID, @PROSPECTPLANID, @PROSPECTPLAN_BASEDATE);

                                exec dbo.USP_PROSPECTPLAN_STEPSWITHOUTSTATUS_ADDFROMXML @PROSPECTPLANID, @STEPS, @CHANGEAGENTID, @CURRENTDATE;

                                exec dbo.USP_PROSPECTPLAN_PARTICIPANTS_ADDFROMXML @PROSPECTPLANID, @PROSPECTPLAN_PARTICIPANTS, @CHANGEAGENTID, @CURRENTDATE;

                            end

                            /*End Plan */

                             if @PROSPECTTEAM is not null 
                                exec dbo.USP_PROSPECTTEAM_UPDATEFROMXML @PROSPECTID, @PROSPECTTEAM, @CHANGEAGENTID, @CURRENTDATE;

                        end try

                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0
                    end