UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDS

Returns the revenue split records associated with a designation level (for fundraising reporting).

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@DESIGNATIONLEVELID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@CAMPAIGNHIERARCHYPATH hierarchyid IN
@APPEALOPTION tinyint IN

Definition

Copy


            CREATE function dbo.UFN_DESIGNATIONLEVEL_REVENUESPLITRECORDS
            (
                @DESIGNATIONLEVELID uniqueidentifier,
                @STARTDATE datetime,
                @ENDDATE datetime,
                @CAMPAIGNHIERARCHYPATH hierarchyid,
                @APPEALOPTION tinyint
            )
            returns table
            as
            return(
                    select
                        REVENUESPLIT.ID as [REVENUESPLITID],
            case when @APPEALOPTION =1 then
              REVENUESPLITBUSINESSUNIT.AMOUNT
            else
                          REVENUESPLIT.AMOUNT 
            end as [REVENUESPLITAMOUNT],
                        REVENUE.ID as [REVENUEID],
                        DESIGNATION.ID as [DESIGNATIONID],
                        case 
                            when not @APPEALOPTION in (0, 1, 2) then null 
                            else 
                                case @APPEALOPTION 
                                    when 0 then APPEAL.ID
                                    when 1 then REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID
                                    when 2 then APPEAL.APPEALREPORT1CODEID
                                end
                        end as [APPEALID],
                        REVENUE.TRANSACTIONTYPECODE,
                        REVENUESPLIT.TYPECODE SPLITTYPECODE,
                        REVENUESPLIT.APPLICATIONCODE
                    from dbo.REVENUESPLIT with (nolock)
                    inner join dbo.REVENUE with (nolock) on REVENUE.ID = REVENUESPLIT.REVENUEID
                    inner join dbo.DESIGNATION with (nolock) on DESIGNATION.ID = REVENUESPLIT.DESIGNATIONID
          left join dbo.REVENUESPLITBUSINESSUNIT on REVENUESPLITBUSINESSUNIT.REVENUESPLITID= REVENUESPLIT.ID and @APPEALOPTION=1
                    left join dbo.REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID = REVENUESPLIT.ID
                    left join dbo.CAMPAIGN on CAMPAIGN.ID = REVENUESPLITCAMPAIGN.CAMPAIGNID 
                    left join dbo.APPEAL on APPEAL.ID = REVENUE.APPEALID
                    where    (@CAMPAIGNHIERARCHYPATH is null or (CAMPAIGN.HIERARCHYPATH.IsDescendantOf(@CAMPAIGNHIERARCHYPATH) = 1))
                        and (@STARTDATE is null or REVENUE.DATE >= @STARTDATE)
                        and (@ENDDATE is null or REVENUE.DATE <= @ENDDATE)
                        and (
                                @DESIGNATIONLEVELID is null or 
                                (
                                        DESIGNATION.DESIGNATIONLEVEL1ID = @DESIGNATIONLEVELID
                                    or    DESIGNATION.DESIGNATIONLEVEL2ID = @DESIGNATIONLEVELID
                                    or    DESIGNATION.DESIGNATIONLEVEL3ID = @DESIGNATIONLEVELID
                                    or    DESIGNATION.DESIGNATIONLEVEL4ID = @DESIGNATIONLEVELID
                                    or    DESIGNATION.DESIGNATIONLEVEL5ID = @DESIGNATIONLEVELID
                                )
                            )
                        and (
                                @APPEALOPTION is null or 
                                (
                                    ((@APPEALOPTION = 0 and APPEAL.ID is not null) or @APPEALOPTION <> 0) and 
                  ((@APPEALOPTION = 1 and REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID is not null) or @APPEALOPTION <> 1) and 
                                    ((@APPEALOPTION = 2 and APPEAL.APPEALREPORT1CODEID is not null) or @APPEALOPTION <> 2)
                                )
                            )
            )