UFN_REVENUEBATCH_PAYMENTSPLIT_CONVERTAMOUNTSINXML

Fills in multicurrency fields in the given splits XML.

Return

Return Type
xml

Parameters

Parameter Parameter Type Mode Description
@PAYMENTREVENUESPLITS xml IN
@BASECURRENCYID uniqueidentifier IN
@ORGANIZATIONEXCHANGERATEID uniqueidentifier IN
@TRANSACTIONCURRENCYID uniqueidentifier IN
@BASEEXCHANGERATEID uniqueidentifier IN

Definition

Copy


            create function dbo.UFN_REVENUEBATCH_PAYMENTSPLIT_CONVERTAMOUNTSINXML(
                @PAYMENTREVENUESPLITS xml,
                @BASECURRENCYID uniqueidentifier,
                @ORGANIZATIONEXCHANGERATEID uniqueidentifier,
                @TRANSACTIONCURRENCYID uniqueidentifier,
                @BASEEXCHANGERATEID uniqueidentifier
            )
            returns xml
            as
            begin
                --This function is a copy of UFN_REVENUESPLIT_CONVERTAMOUNTSINXML, but it returns all of the columns found in the 

                --@PAYMENTREVENUESPLITS variable in USP_REVENUEBATCHCOMMIT_SPLITSWITHCHILDREN_ADDFROMXML


                declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                declare @ORGANIZATIONAMOUNTORIGINCODE tinyint = 0;
                select @ORGANIZATIONAMOUNTORIGINCODE = coalesce(ORGANIZATIONAMOUNTORIGINCODE,0) from dbo.MULTICURRENCYCONFIGURATION;

                declare @SPLITS table
                (
                    ID uniqueidentifier,
                    APPLICATIONCODE tinyint,
                    TYPECODE tinyint,
                    AMOUNT money,
                    DESIGNATIONID uniqueidentifier,
                    CATEGORYCODEID uniqueidentifier,
                    OTHERTYPECODEID uniqueidentifier,
                    DECLINESGIFTAID bit,
                    OPPORTUNITYID uniqueidentifier,
                    ISGIFTAIDSPONSORSHIP bit,
                    CAMPAIGNS xml
                );
                insert into @SPLITS
                    select 
                        T.c.value('(ID)[1]','uniqueidentifier') ID,
                        T.c.value('(APPLICATIONCODE)[1]','tinyint') APPLICATIONCODE,
                        T.c.value('(TYPECODE)[1]','tinyint') TYPECODE,
                        T.c.value('(AMOUNT)[1]','money') AMOUNT,
                        T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID,
                        T.c.value('(CATEGORYCODEID)[1]','uniqueidentifier') CATEGORYCODEID,
                        T.c.value('(OTHERTYPECODEID)[1]','uniqueidentifier') OTHERTYPECODEID,
                        T.c.value('(DECLINESGIFTAID)[1]','bit') DECLINESGIFTAID,
                        coalesce(T.c.value('(OPPORTUNITYID)[1]','uniqueidentifier'), null) OPPORTUNITYID,
                        T.c.value('(ISGIFTAIDSPONSORSHIP)[1]','bit') ISGIFTAIDSPONSORSHIP,
                        case when T.c.exist('./CAMPAIGNS/ITEM') = 1 then T.c.query('(CAMPAIGNS/ITEM)') else null end as CAMPAIGNS
                    from @PAYMENTREVENUESPLITS.nodes('/SPLITS/ITEM') T(c)

                return (
                    select 
                        ID,
                        APPLICATIONCODE,
                        TYPECODE,
                        BASEAMOUNT AMOUNT,
                        DESIGNATIONID,
                        CATEGORYCODEID,
                        CAMPAIGNS,
                        OPPORTUNITYID,
                        OTHERTYPECODEID,
                        DECLINESGIFTAID,

                        ISGIFTAIDSPONSORSHIP,
                        @BASECURRENCYID BASECURRENCYID,
                        case
                            when @ORGANIZATIONAMOUNTORIGINCODE = 1
                                then case
                                    when @TRANSACTIONCURRENCYID <> @ORGANIZATIONCURRENCYID
                                        then dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(BASEAMOUNT, @ORGANIZATIONEXCHANGERATEID, AMOUNT)
                                    else AMOUNT
                                end
                            else
                                case
                                    when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
                                        then dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(BASEAMOUNT, @ORGANIZATIONEXCHANGERATEID, AMOUNT)
                                    else BASEAMOUNT
                                end
                        end ORGANIZATIONAMOUNT,
                        @ORGANIZATIONEXCHANGERATEID ORGANIZATIONEXCHANGERATEID,
                        AMOUNT TRANSACTIONAMOUNT,
                        @TRANSACTIONCURRENCYID TRANSACTIONCURRENCYID,
                        @BASEEXCHANGERATEID BASEEXCHANGERATEID
                    from(
                        select
                            ID,
                            APPLICATIONCODE,
                            TYPECODE,
                            AMOUNT,
                            DESIGNATIONID,
                            CATEGORYCODEID,
                            OTHERTYPECODEID,
                            DECLINESGIFTAID,
                            OPPORTUNITYID,
                            ISGIFTAIDSPONSORSHIP,
                            CAMPAIGNS,
                            case
                                when @TRANSACTIONCURRENCYID <> @BASECURRENCYID
                                    then dbo.UFN_CURRENCY_CONVERT(AMOUNT, @BASEEXCHANGERATEID)
                                else AMOUNT
                            end BASEAMOUNT
                        from @SPLITS
                    ) SPLITS
                    for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64
                )
            end