USP_REVENUEBATCH_ADDITIONALAPPLICATIONWITHCHILDREN_UPDATEFROMXML

Add an additional application that contain campaigns.

Parameters

Parameter Parameter Type Mode Description
@BATCHREVENUEID uniqueidentifier IN
@ADDITIONALAPPLICATIONSSTREAM xml IN
@DATE datetime IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_REVENUEBATCH_ADDITIONALAPPLICATIONWITHCHILDREN_UPDATEFROMXML
            (
                @BATCHREVENUEID uniqueidentifier,
                @ADDITIONALAPPLICATIONSSTREAM xml,
                @DATE datetime,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null
            )

            as

            set nocount on;

            if @CHANGEAGENTID is null
                exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

            if @CHANGEDATE is null 
                set @CHANGEDATE = getdate()

            declare @ADDITIONALAPPLICATIONS table
            (
                ID uniqueidentifier,
                TYPECODE tinyint,
                APPLIED money,
                DESIGNATIONID uniqueidentifier, 
                OTHERTYPECODEID uniqueidentifier,
                DECLINESGIFTAID bit,
                ISGIFTAIDSPONSORSHIP bit,
                OPPORTUNITYID uniqueidentifier,
                SPONSORSHIPID uniqueidentifier,
                CATEGORYCODEID uniqueidentifier,
                DIDCAMPAIGNSDEFAULT bit,
                CAMPAIGNS xml,
                REVENUESPLITID uniqueidentifier
            );

            insert into @ADDITIONALAPPLICATIONS(ID, TYPECODE, APPLIED, DESIGNATIONID, OTHERTYPECODEID, DECLINESGIFTAID, ISGIFTAIDSPONSORSHIP, OPPORTUNITYID, SPONSORSHIPID, CATEGORYCODEID, DIDCAMPAIGNSDEFAULT, CAMPAIGNS, REVENUESPLITID)
                select
                    case when ID = '00000000-0000-0000-0000-000000000000' then newid() else coalesce(ID, newid()) end ID,
                    TYPECODE,
                    APPLIED,
                    DESIGNATIONID, 
                    OTHERTYPECODEID,
                    DECLINESGIFTAID,
                    coalesce(ISGIFTAIDSPONSORSHIP, 0),
                    OPPORTUNITYID,
                    SPONSORSHIPID,
                    CATEGORYCODEID,
                    DIDCAMPAIGNSDEFAULT,
                    cast((select T.c.query('CAMPAIGNS/ITEM') from CAMPAIGNS.nodes('/') T(c)) as xml) as CAMPAIGNS,
          REVENUESPLITID
                from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS_FROMITEMLISTXML(@ADDITIONALAPPLICATIONSSTREAM);

            if exists (select 1 from @ADDITIONALAPPLICATIONS where DESIGNATIONID is null)    
                raiserror('Please enter at least one designation.', 13, 1);

            set @ADDITIONALAPPLICATIONSSTREAM =
                (
                    select ID, TYPECODE, APPLIED, DESIGNATIONID, OTHERTYPECODEID, DECLINESGIFTAID, ISGIFTAIDSPONSORSHIP, OPPORTUNITYID, SPONSORSHIPID, CATEGORYCODEID, DIDCAMPAIGNSDEFAULT, CAMPAIGNS, REVENUESPLITID
                    from @ADDITIONALAPPLICATIONS
                    for xml raw('ITEM'),type,elements,root('ADDITIONALAPPLICATIONSSTREAM'),binary base64
                );

            exec dbo.USP_REVENUEBATCH_GETADDITIONALAPPLICATIONS_UPDATEFROMXML @BATCHREVENUEID, @ADDITIONALAPPLICATIONSSTREAM, @CHANGEAGENTID, @CHANGEDATE;

            -- Add campaigns

            declare @BATCHREVENUEADDITIONALAPPLICATIONID uniqueidentifier, @CAMPAIGNS xml, @DIDCAMPAIGNSDEFAULT bit, @DESIGNATIONID uniqueidentifier
            declare CAMPAIGNCURSOR cursor local fast_forward for 
            select
                ID,
                CAMPAIGNS,
                coalesce(DIDCAMPAIGNSDEFAULT, 0),
                DESIGNATIONID
            from
            dbo.UFN_REVENUEBATCH_ADDITIONALAPPLICATIONWITHCHILDREN_FROMITEMLISTXML(@ADDITIONALAPPLICATIONSSTREAM)

            open CAMPAIGNCURSOR

            fetch next from CAMPAIGNCURSOR into @BATCHREVENUEADDITIONALAPPLICATIONID, @CAMPAIGNS, @DIDCAMPAIGNSDEFAULT, @DESIGNATIONID

            while @@FETCH_STATUS = 0
            begin

                -- Default the campaigns for the designation

                if @DIDCAMPAIGNSDEFAULT = 0
                begin
                    set @CAMPAIGNS = (  select distinct
                                            CAMPAIGNID,
                                            CAMPAIGNSUBPRIORITYID
                                        from dbo.UFN_DESIGNATION_GETCAMPAIGNSTODEFAULT(@DESIGNATIONID, @DATE)
                                        for xml raw('ITEM'),type,elements,root('CAMPAIGNS'),binary base64)
                end
      else
                begin
                  set @CAMPAIGNS = (select
                                      ID,
                                      CAMPAIGNID,
                                      CAMPAIGNSUBPRIORITYID,
                                      REVENUESPLITCAMPAIGNID
                                    from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONCAMPAIGNS_FROMITEMLISTXML(@CAMPAIGNS)
                                    where CAMPAIGNID is not null
                                    for xml raw('ITEM'),type,elements,root('CAMPAIGNS'),binary base64)
                end

                exec dbo.USP_REVENUEBATCH_GETADDITIONALAPPLICATIONCAMPAIGNS_UPDATEFROMXML @BATCHREVENUEADDITIONALAPPLICATIONID, @CAMPAIGNS, @CHANGEAGENTID;

                fetch next from CAMPAIGNCURSOR into @BATCHREVENUEADDITIONALAPPLICATIONID, @CAMPAIGNS, @DIDCAMPAIGNSDEFAULT, @DESIGNATIONID
            end

            close CAMPAIGNCURSOR
            deallocate CAMPAIGNCURSOR