USP_REVENUEBATCH_SPLITSWITHCHILDREN_UPDATEFROMXML

Add revenue batch splits that contain campaigns.

Parameters

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

Definition

Copy


            CREATE procedure dbo.USP_REVENUEBATCH_SPLITSWITHCHILDREN_UPDATEFROMXML
            (
                @BATCHREVENUEID uniqueidentifier,
                @SPLITS 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()

            -- Default in ID, APPLICATIONCODE, and TYPECODE if they aren't set

            set @SPLITS = (    select
                                case when ID = '00000000-0000-0000-0000-000000000000' then newid() else coalesce(ID, newid()) end ID,
                                DESIGNATIONID,
                                AMOUNT,
                                SEQUENCE,
                                coalesce(APPLICATIONCODE, 0) as APPLICATIONCODE, -- Default to donation

                                coalesce(TYPECODE, 0) as TYPECODE, -- Default to gift

                                -- Have to perform the query so that the xml generated by this query isn't <CAMPAIGNS><CAMPAIGNS><ITEM>...

                                -- which would then break UFN_REVENUEBATCH_SPLITSWITHCHILDREN_FROMITEMLISTXML the next time it's called

                                case when CAMPAIGNS is null then null else CAMPAIGNS.query('(CAMPAIGNS/ITEM)') end as CAMPAIGNS,
                                DIDCAMPAIGNSDEFAULT,
                                coalesce(DECLINESGIFTAID, 0) as DECLINESGIFTAID,
                coalesce(ISGIFTAIDSPONSORSHIP, 0) as ISGIFTAIDSPONSORSHIP,
                REVENUESPLITID
                            from dbo.UFN_REVENUEBATCH_SPLITSWITHCHILDREN_FROMITEMLISTXML(@SPLITS)
                            where DESIGNATIONID is not null
                            for xml raw('ITEM'),type,elements,root('SPLITS'),binary base64)

            exec dbo.USP_REVENUEBATCH_GETSPLITS_UPDATEFROMXML @BATCHREVENUEID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE

            -- Add campaigns

            declare @BATCHREVENUESPLITID 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_SPLITSWITHCHILDREN_FROMITEMLISTXML(@SPLITS)

            open CAMPAIGNCURSOR

            fetch next from CAMPAIGNCURSOR into @BATCHREVENUESPLITID, @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_GETSPLITCAMPAIGNS_FROMITEMLISTXML(@CAMPAIGNS)
                                    where CAMPAIGNID is not null
                                    for xml raw('ITEM'),type,elements,root('CAMPAIGNS'),binary base64)
                end

                exec dbo.USP_REVENUEBATCH_GETSPLITCAMPAIGNS_UPDATEFROMXML @BATCHREVENUESPLITID, @CAMPAIGNS, @CHANGEAGENTID;

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

            close CAMPAIGNCURSOR
            deallocate CAMPAIGNCURSOR