UFN_CAMPAIGNSUBPRIORITY_GETTOTALBALANCEINCURRENCY

Returns the total balance for a given campaign sub priority converting amounts to the specified currency.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@CAMPAIGNSUBPRIORITYID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


            create function dbo.UFN_CAMPAIGNSUBPRIORITY_GETTOTALBALANCEINCURRENCY
            (
                @CAMPAIGNSUBPRIORITYID uniqueidentifier,
                @STARTDATE datetime = null,
                @ENDDATE datetime = null,
                @CURRENCYID uniqueidentifier = null
            )
            returns money
            as
            begin
                declare @RESULT money;

                with CAMPAIGNSUBPRIORITY_CTE as (
                    select distinct
                        REVENUESPLIT.REVENUEID
                    from
                        dbo.REVENUESPLIT
                    inner join dbo.REVENUE with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID 
                    inner join dbo.REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID = REVENUESPLIT.ID
                    where
                        REVENUESPLITCAMPAIGN.CAMPAIGNSUBPRIORITYID = @CAMPAIGNSUBPRIORITYID
                        and REVENUE.TRANSACTIONTYPECODE in (1, 6)
                        and (REVENUE.DATE >= @STARTDATE or @STARTDATE is null)
                        and (REVENUE.DATE <= @ENDDATE or @ENDDATE is null))
                select
                    @RESULT = coalesce(sum(dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(REVENUESPLIT.ID, @CURRENCYID)), 0)
                    -
                    (
                        coalesce(( --Subtract Writeoffs of the above pledges

                                    select
                                        SUM(dbo.UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY(WRITEOFFSPLIT.ID, @CURRENCYID))
                                    from
                                        dbo.WRITEOFFSPLIT
                                    inner join dbo.WRITEOFF on WRITEOFF.ID = WRITEOFFSPLIT.WRITEOFFID
                                    inner join dbo.REVENUE with (nolock) on REVENUE.ID = WRITEOFF.REVENUEID 
                                    inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
                                    inner join CAMPAIGNSUBPRIORITY_CTE on CAMPAIGNSUBPRIORITY_CTE.REVENUEID = REVENUESPLIT.REVENUEID
                        ), 0)
                    )
                from
                    dbo.REVENUESPLIT
                inner join CAMPAIGNSUBPRIORITY_CTE on CAMPAIGNSUBPRIORITY_CTE.REVENUEID = REVENUESPLIT.REVENUEID;

                return @RESULT;
            end