USP_REPORT_TOTALREVENUE_PREVIOUSLYUNEARNED

Parameters

Parameter Parameter Type Mode Description
@FROMDATE date IN
@TODATE date IN
@INCLUDETAXES bit IN
@CURRENTAPPUSERID uniqueidentifier IN
@APPUSERID uniqueidentifier IN
@APPUSERQUERYID uniqueidentifier IN
@SHOWUNEARNEDTOEARNED bit IN

Definition

Copy

create procedure dbo.USP_REPORT_TOTALREVENUE_PREVIOUSLYUNEARNED
(
    @FROMDATE date = null,
    @TODATE date = null,
    @INCLUDETAXES bit = null,
    @CURRENTAPPUSERID uniqueidentifier = null,
    @APPUSERID uniqueidentifier = null,
    @APPUSERQUERYID uniqueidentifier = null,
    @SHOWUNEARNEDTOEARNED bit = null
)
as
    set nocount on;

    if isnull(@SHOWUNEARNEDTOEARNED, 0) = 0
        return;

    declare @USERGRANTEDTRANSACTIONPAGE bit = 0,
            @USERGRANTEDORDERPAGE bit = 0,
            @USERGRANTEDRESERVATIONPAGE bit = 0,
            @USERGRANTEDCONSTITUENTPAGE bit = 0;

    if dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
    begin
        select
            @USERGRANTEDTRANSACTIONPAGE = 1,
            @USERGRANTEDORDERPAGE = 1,
            @USERGRANTEDRESERVATIONPAGE = 1,
            @USERGRANTEDCONSTITUENTPAGE = 1;
    end
    else
    begin
        select
            @USERGRANTEDTRANSACTIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'D00E6C42-2434-4D85-8A04-2323CA6BB2E7'),
            @USERGRANTEDORDERPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '9C4D9D19-BB7E-4656-9B78-7EE1930C009A'),
            @USERGRANTEDRESERVATIONPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, 'C8E970CA-858A-4066-AD34-DC049A2A2DE7'),
            @USERGRANTEDCONSTITUENTPAGE = [dbo].[UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE](@CURRENTAPPUSERID, '0C836902-A398-47a0-91EB-8B66E434148E');
    end;

    declare @APPUSERQUERYRESULTS dbo.UDT_GENERICID;

    if @APPUSERQUERYID is not null
    begin
        insert into @APPUSERQUERYRESULTS (ID)
        select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@APPUSERQUERYID)
    end;

    with RESINFO as (
        select
            RESERVATION.ID,
            dbo.UDA_BUILDLIST(GT.DESCRIPTION) GROUPTYPE,
            RESERVATION.NAME RESERVATIONNAME
        from dbo.RESERVATION
            left join dbo.ITINERARY on ITINERARY.RESERVATIONID = RESERVATION.ID
            left join dbo.GROUPSALESGROUPTYPECODE GT on GT.ID = ITINERARY.GROUPSALESGROUPTYPECODEID
        group by RESERVATION.ID, RESERVATION.ARRIVALDATE, RESERVATION.NAME
    )
    select ORDERREVENUE.ID ORDERREVENUEID,
        case
            when ORDERLI_EXT.TYPECODE = 20 then ORDERLI.POSTDATE
            else cast(ORDERREVENUE.DATE as datetime)
        end ORDERDATE,
        cast(SOP.PAYMENTDATEWITHTIMEOFFSET as date) PAYMENTDATE,
        C.NAME CONSTITUENTNAME,
        ORDERREVENUE_EXT.REFERENCE,
        REVENUEPAYMENTMETHOD.PAYMENTMETHOD,
        PAYMENTLI.BASEAMOUNT AMOUNT,
        RESINFO.GROUPTYPE,
        RESINFO.RESERVATIONNAME,
        ORDERLI_EXT.APPLICATIONCODE,
        ORDERLI_EXT.TYPECODE REVENUETYPECODE,
        PROGRAM.NAME PROGRAMNAME,
        TAX.NAME TAXNAME,
        FEE.NAME FEENAME,
        EVENTLOCATION.NAME LOCATIONNAME,
        [RESOURCE].NAME RESOURCENAME,
        VOLUNTEERTYPE.NAME STAFFRESOURCENAME,
        case when @USERGRANTEDCONSTITUENTPAGE = 1 then 'http://www.blackbaud.com/CONSTITUENTID?CONSTITUENTID=' + CONVERT(nvarchar(36), C.ID) else null end as CONSTITUENTLINK,
        case when @USERGRANTEDORDERPAGE = 1 then 'http://www.blackbaud.com/SALESORDERID?SALESORDERID=' + CONVERT(nvarchar(36), SO.ID) else null end as ORDERLINK,
        case when @USERGRANTEDTRANSACTIONPAGE = 1 then 'http://www.blackbaud.com/REVENUEID?REVENUEID=' + CONVERT(nvarchar(36), PAYMENT.ID) else null end as PAYMENTLINK,
        case when @USERGRANTEDRESERVATIONPAGE = 1 then 'http://www.blackbaud.com/GROUPSALESORDERID?GROUPSALESORDERID=' + CONVERT(nvarchar(36), SO.ID) else null end as RESERVATIONLINK,
        case when C.ISORGANIZATION = 1 then
            case C.KEYNAMEPREFIX
                when '' then C.KEYNAME
                else C.KEYNAME + ', ' + C.KEYNAMEPREFIX
            end
        else dbo.UFN_NAMEFORMAT_08(C.ID, C.KEYNAME, C.FIRSTNAME, C.MIDDLENAME, null, null, null, null, null, null, null)
        end as SORTCONSTITUENTNAME
    from dbo.FINANCIALTRANSACTION ORDERREVENUE
    inner join dbo.REVENUE_EXT ORDERREVENUE_EXT on ORDERREVENUE.ID = ORDERREVENUE_EXT.ID
    inner join dbo.SALESORDER SO on SO.REVENUEID = ORDERREVENUE.ID
    inner join RESINFO on RESINFO.ID = SO.ID
    inner join dbo.SALESORDERPAYMENT SOP on SOP.SALESORDERID = SO.ID
    inner join dbo.FINANCIALTRANSACTION PAYMENT on PAYMENT.ID = SOP.PAYMENTID
    inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = PAYMENT.ID
    inner join dbo.CONSTITUENT C on C.ID = SO.CONSTITUENTID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM ORDERLI on ORDERLI.FINANCIALTRANSACTIONID = ORDERREVENUE.ID
    inner join dbo.REVENUESPLIT_EXT ORDERLI_EXT on ORDERLI_EXT.ID = ORDERLI.ID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTLI on (PAYMENTLI.FINANCIALTRANSACTIONID = PAYMENT.ID and PAYMENTLI.SOURCELINEITEMID = ORDERLI.ID and PAYMENTLI.VISIBLE = 0)
    left join dbo.REVENUESPLITORDER RSO on RSO.ID = ORDERLI.ID
    left join dbo.PROGRAM on RSO.PROGRAMID = PROGRAM.ID
    left join dbo.TAX on RSO.TAXID = TAX.ID
    left join dbo.FEE on RSO.FEEID = FEE.ID
    left join dbo.VOLUNTEERTYPE on RSO.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
    left join dbo.EVENTLOCATION on RSO.EVENTLOCATIONID = EVENTLOCATION.ID
    left join dbo.[RESOURCE] on RSO.RESOURCEID = [RESOURCE].ID
    where ORDERREVENUE.TYPECODE = 5
        and SO.SALESMETHODTYPECODE = 3
        and (@INCLUDETAXES = 1 or ORDERLI_EXT.TYPECODE <> 7)
        and (
            (ORDERLI_EXT.TYPECODE = 20 and ORDERLI.POSTDATE between @FROMDATE and @TODATE)
            or (ORDERLI_EXT.TYPECODE <> 20 and ORDERREVENUE.CALCULATEDDATE between @FROMDATE and @TODATE)        -- Earned date was during time period

        )
        and PAYMENT.CALCULATEDDATE < @FROMDATE         -- Payment was made earlier (as unearned)

        and (@APPUSERID is null or SO.APPUSERID = @APPUSERID)
        and (@APPUSERQUERYID is null or SO.APPUSERID in (select ID from @APPUSERQUERYRESULTS));


    return 0;