USP_REVENUEBATCH_GETADDITIONALAPPLICATIONS_UPDATEFROMXML

Stored procedure for updating the enhanced revenue batch/update batch additional applications.

Parameters

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

Definition

Copy


CREATE PROCEDURE dbo.USP_REVENUEBATCH_GETADDITIONALAPPLICATIONS_UPDATEFROMXML
(
@BATCHREVENUEID uniqueidentifier,
@XML xml,
@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()

-- build a temporary table containing the values from the XML

declare @TempTbl table (
   [APPLIED] money,
   [DECLINESGIFTAID] bit,
   [DESIGNATIONID] uniqueidentifier,
   [ID] uniqueidentifier,
   [ISGIFTAIDSPONSORSHIP] bit,
   [OPPORTUNITYID] uniqueidentifier,
   [OTHERTYPECODEID] uniqueidentifier,
   [SPONSORSHIPID] uniqueidentifier,
   [TYPECODE] tinyint,
   [REVENUESPLITID] uniqueidentifier,
   [CATEGORYCODEID] uniqueidentifier)

insert into @TempTbl select 
    [APPLIED],
    [DECLINESGIFTAID],
    [DESIGNATIONID],
    [ID],
    [ISGIFTAIDSPONSORSHIP],
    [OPPORTUNITYID],
    [OTHERTYPECODEID],
    [SPONSORSHIPID],
    [TYPECODE],
    [REVENUESPLITID],
    [CATEGORYCODEID]
from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS_FROMITEMLISTXML(@XML)

update @TempTbl set ID = newid() where (ID is null) or (ID = '00000000-0000-0000-0000-000000000000');

if @@Error <> 0
    return 1;

declare @contextCache varbinary(128);
declare @e int;

-- cache current context information 

set @contextCache = CONTEXT_INFO();

-- set CONTEXT_INFO to @CHANGEAGENTID 

if not @CHANGEAGENTID is null
    set CONTEXT_INFO @CHANGEAGENTID;

-- delete any items that no longer exist in the XML table

delete from dbo.[BATCHREVENUEADDITIONALAPPLICATIONS] where [BATCHREVENUEADDITIONALAPPLICATIONS].ID in 
    (select ID from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS
    (
        @BATCHREVENUEID
    )
    EXCEPT select ID from @TempTbl)    

select @e=@@error;

-- reset CONTEXT_INFO to previous value 

if not @contextCache is null
    set CONTEXT_INFO @contextCache;

if @e <> 0
    return 2;

-- update the items that exist in the XML table and the db

update [BATCHREVENUEADDITIONALAPPLICATIONS]
        set [BATCHREVENUEADDITIONALAPPLICATIONS].[APPLIED]=temp.[APPLIED],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[DECLINESGIFTAID]=temp.[DECLINESGIFTAID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[DESIGNATIONID]=temp.[DESIGNATIONID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[ID]=temp.[ID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[ISGIFTAIDSPONSORSHIP]=temp.[ISGIFTAIDSPONSORSHIP],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[OPPORTUNITYID]=temp.[OPPORTUNITYID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[OTHERTYPECODEID]=temp.[OTHERTYPECODEID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[SPONSORSHIPID]=temp.[SPONSORSHIPID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[TYPECODE]=temp.[TYPECODE],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[REVENUESPLITID]=temp.[REVENUESPLITID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].[GLREVENUECATEGORYMAPPINGID]=temp.[CATEGORYCODEID],
        [BATCHREVENUEADDITIONALAPPLICATIONS].CHANGEDBYID = @CHANGEAGENTID,
        [BATCHREVENUEADDITIONALAPPLICATIONS].DATECHANGED = @CHANGEDATE

    from dbo.[BATCHREVENUEADDITIONALAPPLICATIONS] inner join @TempTbl as [temp] on [BATCHREVENUEADDITIONALAPPLICATIONS].ID = [temp].ID
    where ([BATCHREVENUEADDITIONALAPPLICATIONS].[APPLIED]<>temp.[APPLIED]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[APPLIED] is null and temp.[APPLIED] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[APPLIED] is not null and temp.[APPLIED] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[DECLINESGIFTAID]<>temp.[DECLINESGIFTAID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[DECLINESGIFTAID] is null and temp.[DECLINESGIFTAID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[DECLINESGIFTAID] is not null and temp.[DECLINESGIFTAID] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[DESIGNATIONID]<>temp.[DESIGNATIONID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[DESIGNATIONID] is null and temp.[DESIGNATIONID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[DESIGNATIONID] is not null and temp.[DESIGNATIONID] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[ID]<>temp.[ID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[ID] is null and temp.[ID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[ID] is not null and temp.[ID] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[ISGIFTAIDSPONSORSHIP]<>temp.[ISGIFTAIDSPONSORSHIP]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[ISGIFTAIDSPONSORSHIP] is null and temp.[ISGIFTAIDSPONSORSHIP] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[ISGIFTAIDSPONSORSHIP] is not null and temp.[ISGIFTAIDSPONSORSHIP] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[OPPORTUNITYID]<>temp.[OPPORTUNITYID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[OPPORTUNITYID] is null and temp.[OPPORTUNITYID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[OPPORTUNITYID] is not null and temp.[OPPORTUNITYID] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[OTHERTYPECODEID]<>temp.[OTHERTYPECODEID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[OTHERTYPECODEID] is null and temp.[OTHERTYPECODEID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[OTHERTYPECODEID] is not null and temp.[OTHERTYPECODEID] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[SPONSORSHIPID]<>temp.[SPONSORSHIPID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[SPONSORSHIPID] is null and temp.[SPONSORSHIPID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[SPONSORSHIPID] is not null and temp.[SPONSORSHIPID] is null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[TYPECODE]<>temp.[TYPECODE]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[TYPECODE] is null and temp.[TYPECODE] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[TYPECODE] is not null and temp.[TYPECODE] is null) or
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[REVENUESPLITID]<>temp.[REVENUESPLITID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[REVENUESPLITID] is null and temp.[REVENUESPLITID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[REVENUESPLITID] is not null and temp.[REVENUESPLITID] is null) or
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[GLREVENUECATEGORYMAPPINGID] <> temp.[CATEGORYCODEID]) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[GLREVENUECATEGORYMAPPINGID] is null and temp.[CATEGORYCODEID] is not null) or 
        ([BATCHREVENUEADDITIONALAPPLICATIONS].[GLREVENUECATEGORYMAPPINGID] is not null and temp.[CATEGORYCODEID] is null

if @@Error <> 0
    return 3;    

-- insert new items

insert into [BATCHREVENUEADDITIONALAPPLICATIONS] 
    ([BATCHREVENUEID], 
    [APPLIED],
    [DECLINESGIFTAID],
    [DESIGNATIONID],
    [ID],
    [ISGIFTAIDSPONSORSHIP],
    [OPPORTUNITYID],
    [OTHERTYPECODEID],
    [SPONSORSHIPID],
    [TYPECODE],        
    [REVENUESPLITID],
    [GLREVENUECATEGORYMAPPINGID],
    ADDEDBYID, 
    CHANGEDBYID, 
    DATEADDED, 
    DATECHANGED)
select @BATCHREVENUEID
    [APPLIED],
    [DECLINESGIFTAID],
    [DESIGNATIONID],
    [ID],
    [ISGIFTAIDSPONSORSHIP],
    [OPPORTUNITYID],
    [OTHERTYPECODEID],
    [SPONSORSHIPID],
    [TYPECODE], 
    [REVENUESPLITID],
    [CATEGORYCODEID],
    @CHANGEAGENTID
    @CHANGEAGENTID
    @CHANGEDATE
    @CHANGEDATE
from @TempTbl as [temp]
where not exists (select ID from dbo.[BATCHREVENUEADDITIONALAPPLICATIONS] as data where data.ID = [temp].ID)

if @@Error <> 0
    return 4;

return 0;