USP_DATAFORMTEMPLATE_EDIT_PROSPECTSEGMENTATION

The save procedure used by the edit dataform template "Prospect Segmentation Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@OTHERSCANMODIFY bit IN Others can modify
@RESEARCHGROUPID uniqueidentifier IN Research group
@IDSETREGISTERID uniqueidentifier IN Selection
@PRIMARYVARIABLE tinyint IN Select score/rating
@SECONDARYVARIABLE1 tinyint IN Select score/rating
@SECONDARYVARIABLE2 tinyint IN Secondary variable 2
@PRIMARYSECTIONS xml IN
@SECONDARYSECTIONS1 xml IN
@SECONDARYSECTIONS2 xml IN

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PROSPECTSEGMENTATION (
                        @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null,
                @CURRENTAPPUSERID uniqueidentifier,
                @NAME nvarchar(100),
                @DESCRIPTION nvarchar(255),
                        @OTHERSCANMODIFY bit
                        @RESEARCHGROUPID uniqueidentifier,
                @IDSETREGISTERID uniqueidentifier,
                        @PRIMARYVARIABLE tinyint,
                        @SECONDARYVARIABLE1 tinyint,
                        @SECONDARYVARIABLE2 tinyint,
                        @PRIMARYSECTIONS xml,
                        @SECONDARYSECTIONS1 xml,
                        @SECONDARYSECTIONS2 xml    
                    ) as
                        set nocount on;

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

                        declare
                            @InfoMsg nvarchar(100),
                            @ErrorMessage nvarchar(1000),
                            @ErrorSeverity int,
                            @ErrorState int;

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

                        declare @USERCANMODIFY bit;
                        set @USERCANMODIFY = 0;

                        select
                            @USERCANMODIFY = 1
                        from
                            dbo.PROSPECTSEGMENTATION PS
                        left join
                            dbo.APPUSER AU on AU.ID = PS.OWNERID
                        where
                            PS.ID = @ID and
                            (PS.OTHERSCANMODIFY = 1 or
                             PS.OWNERID = @CURRENTAPPUSERID or
                             PS.OWNERID is null or
                             dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1);

                        begin try
                            if @USERCANMODIFY = 1 
                            begin

                 --Validate the Section Counts
                declare @PRIMARYSECTIONSCOUNT int;
                declare @SECONDARYSECTIONS1COUNT int;
                declare @SECONDARYSECTIONS2COUNT int;

                select
                  @PRIMARYSECTIONSCOUNT = COUNT(T.c.value('(SEQUENCE)[1]','int'))
                from 
                  @PRIMARYSECTIONS.nodes('/PRIMARYSECTIONS/ITEM') T(c)

                select
                  @SECONDARYSECTIONS1COUNT = COUNT(T.c.value('(SEQUENCE)[1]','int'))
                from 
                  @SECONDARYSECTIONS1.nodes('/SECONDARYSECTIONS1/ITEM') T(c)

                 select
                  @SECONDARYSECTIONS2COUNT = COUNT(T.c.value('(SEQUENCE)[1]','int'))
                from 
                  @SECONDARYSECTIONS2.nodes('/SECONDARYSECTIONS2/ITEM') T(c)  


                if @PRIMARYSECTIONSCOUNT < 1
                  raiserror ('ERR_PRIMARYSECTIONS_EMPTY',13,1);

                if @SECONDARYSECTIONS1COUNT < 1 
                  raiserror ('ERR_SECONDARYSECTIONS1_EMPTY',13,1);

                if @SECONDARYSECTIONS2COUNT < 1 and @SECONDARYVARIABLE2 > 0
                  raiserror ('ERR_SECONDARYSECTIONS2_EMPTY',13,1);

                if @SECONDARYSECTIONS1COUNT < @SECONDARYSECTIONS2COUNT 
                  raiserror ('ERR_SECONDARYSECTIONS2_TOOMANY',13,1); 

                --Clear out any existing segment members
                  exec dbo.USP_PROSPECTSEGMENTATION_PROSPECTS_CLEAR @ID, @CHANGEAGENTID;

                                --Update Primary Variable
                                declare @PRIMARYVARIABLEID uniqueidentifier        

                                select
                                    @PRIMARYVARIABLEID = ID
                                from
                                    PROSPECTSEGMENTATIONVARIABLE
                                where
                                    PROSPECTSEGMENTATIONID = @ID and
                  ISPRIMARY = 1

                                update 
                                    dbo.PROSPECTSEGMENTATIONVARIABLE
                                set
                                    TYPECODE =        @PRIMARYVARIABLE,
                                    CHANGEDBYID =    @CHANGEAGENTID,
                                    DATECHANGED =    @CURRENTDATE
                                where
                                     ID = @PRIMARYVARIABLEID

                                set @PRIMARYSECTIONS =
                (select
                                    T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
                                    T.c.value('(SEQUENCE)[1]','int') AS 'SEQUENCE',
                                    T.c.value('(LABEL)[1]','nvarchar(20)') AS 'LABEL',
                                    isnull(T.c.value('(RANGELOW)[1]','int'),-1) AS 'RANGELOW',
                                    isnull(T.c.value('(RANGEHIGH)[1]','int'), -1) AS 'RANGEHIGH',
                                    T.c.value('(ESTIMATEDWEALTHLOWID)[1]','uniqueidentifier') AS 'ESTIMATEDWEALTHLOWID',
                                    T.c.value('(ESTIMATEDWEALTHHIGHID)[1]','uniqueidentifier') AS 'ESTIMATEDWEALTHHIGHID',                                        
                                    T.c.value('(MAJORGIVINGCAPACITYLOWID)[1]','uniqueidentifier') AS 'MAJORGIVINGCAPACITYLOWID',
                                    T.c.value('(MAJORGIVINGCAPACITYHIGHID)[1]','uniqueidentifier') AS 'MAJORGIVINGCAPACITYHIGHID',
                                    T.c.value('(TARGETGIFTRANGELOWID)[1]','uniqueidentifier') AS 'TARGETGIFTRANGELOWID',
                                    T.c.value('(TARGETGIFTRANGEHIGHID)[1]','uniqueidentifier') AS 'TARGETGIFTRANGEHIGHID',                                        
                                    T.c.value('(WEALTHESTIMATORRATINGLOWID)[1]','uniqueidentifier') AS 'WEALTHESTIMATORRATINGLOWID',
                                    T.c.value('(WEALTHESTIMATORRATINGHIGHID)[1]','uniqueidentifier') AS 'WEALTHESTIMATORRATINGHIGHID'
                                from
                  @PRIMARYSECTIONS.nodes('/PRIMARYSECTIONS/ITEM') T(c)
                for 
                  xml raw('ITEM'),type,elements,root('PRIMARYSECTIONS'),BINARY BASE64
                                )

                                begin try
                                    exec dbo.USP_PROSPECTSEGMENTATION_SECTIONS_PRIMARY_UPDATEFROMXML @PRIMARYVARIABLEID,
                                                                                                                               @PRIMARYSECTIONS,
                                                                                                                               @CHANGEAGENTID;
                                end try
                                begin catch
                                    set @InfoMsg='BBERR_ORIGINAL_ERROR:50001';
                                        raiserror (@InfoMsg,1,11);

                                        select
                                            @ErrorMessage = ERROR_MESSAGE(),
                                            @ErrorSeverity = ERROR_SEVERITY(),
                                            @ErrorState = ERROR_STATE();

                                        raiserror(@ErrorMessage,@ErrorSeverity,@ErrorState);
                                        return 1;
                                end catch

                                --Update Secondary Variable
                                declare @SECONDARYVARIABLEID uniqueidentifier            

                                select
                                    @SECONDARYVARIABLEID = ID
                                from
                                    PROSPECTSEGMENTATIONVARIABLE
                                where
                                    PROSPECTSEGMENTATIONID = @ID and
                  ISPRIMARY = 0

                                update 
                                    dbo.PROSPECTSEGMENTATIONVARIABLE
                                set
                                    TYPECODE =        @SECONDARYVARIABLE1,
                  TYPE2CODE =   @SECONDARYVARIABLE2,
                                    CHANGEDBYID =    @CHANGEAGENTID,
                                    DATECHANGED =    @CURRENTDATE
                                where
                                    ID = @SECONDARYVARIABLEID

                declare @SECONDARYSECTIONS xml  

                                set @SECONDARYSECTIONS = 
                (select
                              T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
                                  T.c.value('(SEQUENCE)[1]','int') AS 'SEQUENCE',

                                  T.c.value('(LABEL)[1]','nvarchar(20)') AS 'LABEL',
                                  isnull(T.c.value('(RANGELOW)[1]','int'),-1) AS 'RANGELOW',
                                  isnull(T.c.value('(RANGEHIGH)[1]','int'), -1) AS 'RANGEHIGH',
                                  T.c.value('(ESTIMATEDWEALTHLOWID)[1]','uniqueidentifier') AS 'ESTIMATEDWEALTHLOWID',
                                  T.c.value('(ESTIMATEDWEALTHHIGHID)[1]','uniqueidentifier') AS 'ESTIMATEDWEALTHHIGHID',                                        
                                  T.c.value('(MAJORGIVINGCAPACITYLOWID)[1]','uniqueidentifier') AS 'MAJORGIVINGCAPACITYLOWID',
                                  T.c.value('(MAJORGIVINGCAPACITYHIGHID)[1]','uniqueidentifier') AS 'MAJORGIVINGCAPACITYHIGHID',
                                  T.c.value('(TARGETGIFTRANGELOWID)[1]','uniqueidentifier') AS 'TARGETGIFTRANGELOWID',
                                  T.c.value('(TARGETGIFTRANGEHIGHID)[1]','uniqueidentifier') AS 'TARGETGIFTRANGEHIGHID',                                        
                                  T.c.value('(WEALTHESTIMATORRATINGLOWID)[1]','uniqueidentifier') AS 'WEALTHESTIMATORRATINGLOWID',
                                  T.c.value('(WEALTHESTIMATORRATINGHIGHID)[1]','uniqueidentifier') AS 'WEALTHESTIMATORRATINGHIGHID',

                                  isnull(T2.c.value('(LABEL)[1]','nvarchar(20)'),'') AS 'LABEL2',
                                  isnull(T2.c.value('(RANGELOW)[1]','int'),-1) AS 'RANGE2LOW',
                                  isnull(T2.c.value('(RANGEHIGH)[1]','int'), -1) AS 'RANGE2HIGH',
                                  T2.c.value('(ESTIMATEDWEALTHLOWID)[1]','uniqueidentifier') AS 'ESTIMATEDWEALTH2LOWID',
                                  T2.c.value('(ESTIMATEDWEALTHHIGHID)[1]','uniqueidentifier') AS 'ESTIMATEDWEALTH2HIGHID',                                        
                                  T2.c.value('(MAJORGIVINGCAPACITYLOWID)[1]','uniqueidentifier') AS 'MAJORGIVINGCAPACITY2LOWID',
                                  T2.c.value('(MAJORGIVINGCAPACITYHIGHID)[1]','uniqueidentifier') AS 'MAJORGIVINGCAPACITY2HIGHID',
                                  T2.c.value('(TARGETGIFTRANGELOWID)[1]','uniqueidentifier') AS 'TARGETGIFTRANGE2LOWID',
                                  T2.c.value('(TARGETGIFTRANGEHIGHID)[1]','uniqueidentifier') AS 'TARGETGIFTRANGE2HIGHID',                                        
                                  T2.c.value('(WEALTHESTIMATORRATINGLOWID)[1]','uniqueidentifier') AS 'WEALTHESTIMATORRATING2LOWID',
                                  T2.c.value('(WEALTHESTIMATORRATINGHIGHID)[1]','uniqueidentifier') AS 'WEALTHESTIMATORRATING2HIGHID'

                              from 
                  @SECONDARYSECTIONS1.nodes('/SECONDARYSECTIONS1/ITEM') T(c)
                left join
                    @SECONDARYSECTIONS2.nodes('/SECONDARYSECTIONS2/ITEM') T2(c)
                on 
                  T.c.value('(SEQUENCE)[1]','int') =     T2.c.value('(SEQUENCE)[1]','int')
                for 
                  xml raw('ITEM'),type,elements,root('SECONDARYSECTIONS'),BINARY BASE64                    
                              )

                                begin try                                                                                             
                                    exec dbo.USP_PROSPECTSEGMENTATION_SECTIONS_SECONDARY_UPDATEFROMXML @SECONDARYVARIABLEID,
                                                                                                                                 @SECONDARYSECTIONS,
                                                                                                                                 @CHANGEAGENTID;    
                                end try
                                begin catch
                                    set @InfoMsg='BBERR_ORIGINAL_ERROR:50002';
                                        raiserror (@InfoMsg,1,11);

                                        select
                                            @ErrorMessage = ERROR_MESSAGE(),
                                            @ErrorSeverity = ERROR_SEVERITY(),
                                            @ErrorState = ERROR_STATE();

                                        raiserror(@ErrorMessage,@ErrorSeverity,@ErrorState);
                                        return 1;
                                end catch

                                update
                                    dbo.PROSPECTSEGMENTATION
                                set
                                    NAME =                            @NAME,
                                    DESCRIPTION =                  @DESCRIPTION,
                                    OTHERSCANMODIFY =            @OTHERSCANMODIFY,                               
                                    RESEARCHGROUPID =            @RESEARCHGROUPID,
                                    IDSETREGISTERID =            @IDSETREGISTERID,                           
                                    CHANGEDBYID =                  @CHANGEAGENTID,
                                    DATECHANGED =                  @CURRENTDATE
                                where
                                    ID = @ID;

              end
                            else begin
                                raiserror ('ERR_PROSPECTSEGMENTATION_CANNOTMODIFY',13,1);
                            return 0;
                            end
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;