USP_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_UPDATEFROMXML

Add enhanced revenue batch matching gifts with splits.

Parameters

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

Definition

Copy


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

    set @MATCHINGGIFTS = (        
        select
            case when ID = '00000000-0000-0000-0000-000000000000' then newid() else coalesce(ID, newid()) end ID,
            MATCHINGCONSTITUENTID,
            ORGANIZATIONID,
            RELATIONSHIPID,
            MATCHINGGIFTCONDITIONID,            
            coalesce(AMOUNT, 0) AMOUNT,
            DATE,
            COULDNOTDEFAULTMATCHINGGIFT,
            SINGLEDESIGNATIONID,
            case when SPLITS is null then null else SPLITS.query('(SPLITS/ITEM)') end as SPLITS,
            REVENUEMATCHINGGIFTID,
            coalesce(TRANSACTIONCURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) TRANSACTIONCURRENCYID,
            BASEEXCHANGERATEID,
            coalesce(EXCHANGERATE, 0) EXCHANGERATE,
            coalesce(APPLYBYPERCENT,0) APPLYBYPERCENT,
      OPPORTUNITYID,
      coalesce(RESETSOLICITORCREDITS, 0) RESETSOLICITORCREDITS
        from 
            dbo.UFN_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_FROMITEMLISTXML(@MATCHINGGIFTS)
        for xml raw('ITEM'),type,elements,root('MATCHINGGIFTS'),binary base64
    )

    exec dbo.USP_REVENUEBATCH_GETENHANCEDMATCHINGGIFTS_2_UPDATEFROMXML @BATCHREVENUEID, @MATCHINGGIFTS, @CHANGEAGENTID, @CHANGEDATE;

    -- Add splits

    declare @BATCHREVENUEENHANCEDMATCHINGGIFTID uniqueidentifier, @SINGLEDESIGNATIONID uniqueidentifier, @SPLITS xml, @AMOUNT money;
    declare SPLITCURSOR cursor local fast_forward for 
        select 
            ID,
            AMOUNT,
            SINGLEDESIGNATIONID,
            SPLITS
      --REVENUEMATCHINGGIFTID

        from dbo.UFN_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_FROMITEMLISTXML(@MATCHINGGIFTS);

    open SPLITCURSOR;

    fetch next from SPLITCURSOR into @BATCHREVENUEENHANCEDMATCHINGGIFTID, @AMOUNT, @SINGLEDESIGNATIONID, @SPLITS;

    while @@FETCH_STATUS = 0
    begin

        if @SPLITS is null and @SINGLEDESIGNATIONID is not null            
            set @SPLITS =
                    select
                        null as ID,
                        @SINGLEDESIGNATIONID as DESIGNATIONID,
                        @AMOUNT as AMOUNT,
                        1 as SEQUENCE
                    for xml raw('ITEM'),type,elements,root('SPLITS'),binary base64
                )            

        if @SPLITS is not null
            exec dbo.USP_REVENUEBATCH_GETENHANCEDMATCHINGGIFTSPLITS_UPDATEFROMXML @BATCHREVENUEENHANCEDMATCHINGGIFTID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;            
        else
            delete from dbo.BATCHREVENUEENHANCEDMATCHINGGIFTSPLIT where BATCHREVENUEENHANCEDMATCHINGGIFTID = @BATCHREVENUEENHANCEDMATCHINGGIFTID;

        fetch next from SPLITCURSOR into @BATCHREVENUEENHANCEDMATCHINGGIFTID, @AMOUNT, @SINGLEDESIGNATIONID, @SPLITS;

    end

    close SPLITCURSOR;
    deallocate SPLITCURSOR;