USP_REPORT_REVENUERECOGNITIONCREDIT

Returns all revenue entries along with their recognition credits

Parameters

Parameter Parameter Type Mode Description
@DATETYPE tinyint IN
@DATERANGEDISPLAY nvarchar(100) IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@REVENUETRANSACTIONQUERY uniqueidentifier IN
@APPEALID uniqueidentifier IN
@DESIGNATIONID uniqueidentifier IN
@REVENUETRANSACTIONID uniqueidentifier IN
@REVENUERECOGNITIONTYPECODEID uniqueidentifier IN
@REPORTUSERID nvarchar(128) IN
@CAMPAIGNID uniqueidentifier IN
@CURRENCYCODE tinyint IN
@ALTREPORTUSERID nvarchar(128) IN

Definition

Copy


                CREATE procedure dbo.USP_REPORT_REVENUERECOGNITIONCREDIT
                (
                    @DATETYPE tinyint = null,
                    @DATERANGEDISPLAY nvarchar(100) = '',
                    @STARTDATE datetime = null
                    @ENDDATE datetime = null,
                    @REVENUETRANSACTIONQUERY uniqueidentifier = null,
                    @APPEALID uniqueidentifier = null,
                    @DESIGNATIONID uniqueidentifier = null,
                    @REVENUETRANSACTIONID uniqueidentifier = null,
                    @REVENUERECOGNITIONTYPECODEID uniqueidentifier = null,
                    @REPORTUSERID nvarchar(128) = null,
                    @CAMPAIGNID uniqueidentifier = null,
                    @CURRENCYCODE tinyint = null,
                    @ALTREPORTUSERID nvarchar(128) = null
                )
                with execute as owner
                as
                set nocount on;

                declare @CURRENTAPPUSERID uniqueidentifier;
                declare @ISADMIN bit;
                declare @APPUSER_IN_NONRACROLE bit;
                declare @APPUSER_IN_NOSECGROUPROLE bit;

                set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
                set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
                set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
                set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);

                declare @SQLTOEXEC nvarchar(max);

                declare @DBOBJECTNAME nvarchar(128);
                declare @DBOBJECTTYPE smallint;

                if @REVENUETRANSACTIONQUERY is not null begin
                    if not exists(select ID from dbo.IDSETREGISTER where ID = @REVENUETRANSACTIONQUERY) raiserror('ID set does not exist in the database.', 15, 1);
                    select @DBOBJECTNAME = DBOBJECTNAME, @DBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @REVENUETRANSACTIONQUERY;
                    if @DBOBJECTTYPE = 1 set @DBOBJECTNAME = @DBOBJECTNAME + '()';
                    else if @DBOBJECTTYPE = 2 set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @REVENUETRANSACTIONQUERY) + ''')';
                end

                set @SQLTOEXEC = 
                    '
                    declare @CAMPAIGNHIERARCHYPATH hierarchyid
                    select @CAMPAIGNHIERARCHYPATH=HIERARCHYPATH
                    from CAMPAIGN
                    where ID=@CAMPAIGNID;

                    select
                        ''http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID='' + CONVERT(nvarchar(36), C.ID) as CONSTITUENTID,
                        ''http://www.blackbaud.com/REVENUETRANSACTIONID?REVENUETRANSACTIONID='' + CONVERT(nvarchar(36), R.ID) as REVENUETRANSACTIONID,
                        R.ID,
                        C_NF.NAME as CONSTITUENTNAME,
                        C.KEYNAME as CONSTITUENTKEYNAME,
                        C.FIRSTNAME as CONSTITUENTFIRSTNAME,
                        R.DATE,
                        R.TRANSACTIONTYPE as TYPE,
                        case @CURRENCYCODE when 0 then R.AMOUNT else R.ORGANIZATIONAMOUNT end as REVENUEAMOUNT,
                        RECOGNITIONS.NAME as RECOGNITIONCONSTITUENTNAME,
                        RECOGNITIONS.KEYNAME as RECOGNITIONCONSTITUENTKEYNAME,
                        RECOGNITIONS.FIRSTNAME as RECOGNITIONCONSTITUENTFIRSTNAME,
                        RECOGNITIONS.DESCRIPTION as RECOGNITIONTYPE,
                        RECOGNITIONS.EFFECTIVEDATE,
                        case @CURRENCYCODE when 0 then RECOGNITIONS.AMOUNT else RECOGNITIONS.ORGANIZATIONAMOUNT end as RECOGNITIONAMOUNT,
                        RECOGNITIONCURRENCYPROPERTIES.ISO4217 [RECOGNITIONISOCURRENCYCODE],
                        RECOGNITIONCURRENCYPROPERTIES.CURRENCYSYMBOL [RECOGNITIONCURRENCYSYMBOL],
                        RECOGNITIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [RECOGNITIONCURRENCYSYMBOLDISPLAYSETTINGCODE],
                        RECOGNITIONCURRENCYPROPERTIES.DECIMALDIGITS [RECOGNITIONDECIMALDIGITS],
                        REVENUECURRENCYPROPERTIES.ISO4217 [REVENUEISOCURRENCYCODE],
                        REVENUECURRENCYPROPERTIES.CURRENCYSYMBOL [REVENUECURRENCYSYMBOL],
                        REVENUECURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [REVENUECURRENCYSYMBOLDISPLAYSETTINGCODE],
                        REVENUECURRENCYPROPERTIES.DECIMALDIGITS [REVENUEDECIMALDIGITS]
                    from dbo.REVENUE R with (nolock)
                        inner join dbo.CONSTITUENT C with (nolock) on R.CONSTITUENTID = C.ID
                        inner join REVENUESPLIT on REVENUESPLIT.REVENUEID = R.ID
                        left join REVENUESPLITCAMPAIGN on REVENUESPLITCAMPAIGN.REVENUESPLITID=REVENUESPLIT.ID
                        left join CAMPAIGN on CAMPAIGN.ID=REVENUESPLITCAMPAIGN.CAMPAIGNID
                        left join
                            (
                                select
                                    RR.ID,
                                    RR.REVENUESPLITID,
                                    RRC_NF.NAME,
                                    RRC.KEYNAME,
                                    RRC.FIRSTNAME,
                                    RRTC.DESCRIPTION,
                                    RR.EFFECTIVEDATE,
                                    RR.AMOUNT,
                                    RR.ORGANIZATIONAMOUNT,
                                    RR.BASECURRENCYID
                                from dbo.REVENUERECOGNITION RR
                                    inner join dbo.CONSTITUENT RRC with (nolock) on RR.CONSTITUENTID = RRC.ID
                                    left join dbo.REVENUERECOGNITIONTYPECODE RRTC on RR.REVENUERECOGNITIONTYPECODEID = RRTC.ID
                                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(RRC.ID) RRC_NF
                                where (@REVENUERECOGNITIONTYPECODEID is null or RR.REVENUERECOGNITIONTYPECODEID = @REVENUERECOGNITIONTYPECODEID)
                            ) as RECOGNITIONS on RECOGNITIONS.REVENUESPLITID = REVENUESPLIT.ID
                        outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then RECOGNITIONS.BASECURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) RECOGNITIONCURRENCYPROPERTIES
                        outer apply dbo.UFN_CURRENCY_GETPROPERTIES(case @CURRENCYCODE when 0 then R.BASECURRENCYID else dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY() end) REVENUECURRENCYPROPERTIES
                        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) C_NF
                ' + nchar(13)

                if @REVENUETRANSACTIONQUERY is not null
                    set @SQLTOEXEC = @SQLTOEXEC + 'inner join dbo.' + @DBOBJECTNAME + ' as SELECTION on R.[ID] = SELECTION.[ID]' + nchar(13);

                set @SQLTOEXEC = @SQLTOEXEC + 
                    'where 
                        -- (Gift, Pledge, Matching Gift Claim, Planned Gift, Order, Grant award, Donor challenge), (Pledge Payment, Recurring Gift Payment, Matching Gift Payment, Grant award payment, and Donor challenge payment)

                        (R.TRANSACTIONTYPECODE in (1,3,4,5,6,7,8) or (R.TRANSACTIONTYPECODE = 0 and (REVENUESPLIT.APPLICATIONCODE in (0,2,3,7,8,12,13) or (REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0))))
                        and (@STARTDATE is null or R.DATE >= dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE))
                        and (@ENDDATE is null or R.DATE <= dbo.UFN_DATE_GETLATESTTIME(@ENDDATE))
                        and (@APPEALID is null or R.APPEALID = @APPEALID)
                        and (@REVENUETRANSACTIONID is null or R.ID = @REVENUETRANSACTIONID)                        
                        --and not (R.AMOUNT = 0 and R.TRANSACTIONAMOUNT > 0)

                        and (@ISADMIN = 1 or
                                @APPUSER_IN_NONRACROLE = 1 or
                                dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, C.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                        and exists(
                                select ID
                                from dbo.REVENUESPLIT
                                where REVENUEID=R.ID
                            and exists
                            (
                                select HASPERMISSION
                                from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID) REVSITES
                                cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, ''000390A2-007A-441f-A7F5-C9CE92B5648B'', REVSITES.SITEID)
                            ))
                        and (@DESIGNATIONID is null or REVENUESPLIT.DESIGNATIONID = @DESIGNATIONID)
                        and (@CAMPAIGNID is null or CAMPAIGN.HIERARCHYPATH.IsDescendantOf(@CAMPAIGNHIERARCHYPATH)=1)
                    ' + nchar(13)

                set @SQLTOEXEC = @SQLTOEXEC + 
                    'group by C.ID, R.ID, C_NF.NAME, C.KEYNAME, C.FIRSTNAME, R.DATE, R.TRANSACTIONTYPE, R.AMOUNT, R.ORGANIZATIONAMOUNT, RECOGNITIONS.NAME, RECOGNITIONS.KEYNAME, RECOGNITIONS.FIRSTNAME, RECOGNITIONS.DESCRIPTION, RECOGNITIONS.EFFECTIVEDATE, RECOGNITIONS.AMOUNT, RECOGNITIONS.ORGANIZATIONAMOUNT, RECOGNITIONS.ID, RECOGNITIONCURRENCYPROPERTIES.ISO4217, RECOGNITIONCURRENCYPROPERTIES.CURRENCYSYMBOL,    RECOGNITIONCURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE,    RECOGNITIONCURRENCYPROPERTIES.DECIMALDIGITS, REVENUECURRENCYPROPERTIES.ISO4217, REVENUECURRENCYPROPERTIES.CURRENCYSYMBOL, REVENUECURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE, REVENUECURRENCYPROPERTIES.DECIMALDIGITS
                    order by C.KEYNAME, C.FIRSTNAME, R.DATE, R.TRANSACTIONTYPE, REVENUEAMOUNT, RECOGNITIONS.KEYNAME, RECOGNITIONS.FIRSTNAME, RECOGNITIONS.DESCRIPTION, RECOGNITIONS.EFFECTIVEDATE, RECOGNITIONAMOUNT;';

                exec sp_executesql @SQLTOEXEC
                        N'@STARTDATE datetime, @ENDDATE datetime, @APPEALID uniqueidentifier, @DESIGNATIONID uniqueidentifier, @REVENUETRANSACTIONID uniqueidentifier, @REVENUERECOGNITIONTYPECODEID uniqueidentifier, @ISADMIN bit, @APPUSER_IN_NONRACROLE bit, @APPUSER_IN_NOSECGROUPROLE bit, @CURRENTAPPUSERID uniqueidentifier, @CAMPAIGNID uniqueidentifier, @CURRENCYCODE tinyint',
                        @STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @APPEALID=@APPEALID, @DESIGNATIONID=@DESIGNATIONID, @REVENUETRANSACTIONID=@REVENUETRANSACTIONID,
                        @REVENUERECOGNITIONTYPECODEID=@REVENUERECOGNITIONTYPECODEID, @ISADMIN=@ISADMIN, @APPUSER_IN_NONRACROLE=@APPUSER_IN_NONRACROLE, @APPUSER_IN_NOSECGROUPROLE=@APPUSER_IN_NOSECGROUPROLE, @CURRENTAPPUSERID=@CURRENTAPPUSERID, @CAMPAIGNID=@CAMPAIGNID, @CURRENCYCODE=@CURRENCYCODE;