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