USP_DATALIST_BENEFITSLIST

Benefits List for registration / revenue/ constituent recognition.

Parameters

Parameter Parameter Type Mode Description
@DATEFROM datetime IN Date From
@DATETO datetime IN Date To
@GROUPBY int IN Group By
@CURRENCYCODE tinyint IN Currency
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_BENEFITSLIST(
    @DATEFROM datetime,
    @DATETO   datetime,
    @GROUPBY integer,
    @CURRENCYCODE tinyint
    @CURRENTAPPUSERID uniqueidentifier = null
    )
as
    set nocount on;
    declare @ISADMIN bit;
    declare @APPUSER_IN_NONRACROLE bit;
    declare @APPUSER_IN_NOSECGROUPROLE bit;
    declare @APPUSER_IN_NONSITEROLE bit;
    declare @APPUSER_IN_NOSITEROLE bit;

    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);
    set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
    set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);

    set @DATEFROM = dbo.UFN_DATE_GETEARLIESTTIME(@DATEFROM);
    set @DATETO = dbo.UFN_DATE_GETLATESTTIME(@DATETO);

    declare @SELECTEDCURRENCYID uniqueidentifier;
    if coalesce(@CURRENCYCODE, 1) = 1
    begin
        set @SELECTEDCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
    end

    set @CURRENCYCODE = coalesce(@CURRENCYCODE, 0);

    with BENEFITS_CTE as (
        select 
            NF.NAME as CONSTITUENTNAME,
            CONSTITUENT.ID as CONSTITUENTID,
            CONSTITUENT.KEYNAME as CONSTITUENTKEYNAME,
            BENEFIT.NAME as BENEFITNAME,
            BENEFIT.DESCRIPTION as BENEFITDESCRIPTION,
            BENEFIT.ID as BENEFITID,
            REVENUEBENEFIT.QUANTITY as QUANTITY,
            case  
                when (@CURRENCYCODE = 0 or REVENUEBENEFIT.ORGANIZATIONEXCHANGERATEID is null) then REVENUEBENEFIT.UNITVALUE 
                else dbo.UFN_CURRENCY_CONVERT(REVENUEBENEFIT.UNITVALUE, REVENUEBENEFIT.ORGANIZATIONEXCHANGERATEID)
            end as UNITVALUE,
            case
                when BENEFIT.USEPERCENT = 0 then
                    case
                        when (@CURRENCYCODE = 0 or REVENUEBENEFIT.ORGANIZATIONEXCHANGERATEID is null) then (REVENUEBENEFIT.QUANTITY*REVENUEBENEFIT.UNITVALUE) 
                        else (REVENUEBENEFIT.QUANTITY*dbo.UFN_CURRENCY_CONVERT(REVENUEBENEFIT.UNITVALUE, REVENUEBENEFIT.ORGANIZATIONEXCHANGERATEID))    
                    end
                when BENEFIT.USEPERCENT = 1 then --JamesWill WI174128 2011-11-18 Calculate a total for percent benefits.

                    case 
                        when (@CURRENCYCODE = 0 or REVENUEBENEFIT.ORGANIZATIONEXCHANGERATEID is null) then ((REVENUEBENEFIT.VALUEPERCENT/100) * REVENUEBENEFIT.PERCENTAPPLICABLEAMOUNT)
                        else ((REVENUEBENEFIT.VALUEPERCENT/100) * dbo.UFN_CURRENCY_CONVERT(REVENUEBENEFIT.PERCENTAPPLICABLEAMOUNT, REVENUEBENEFIT.ORGANIZATIONEXCHANGERATEID))
                    end
            end as TOTAL,
            cast(REVENUE.DATE as datetime) as DATE,
            CURRENCYPROPERTIES.CURRENCYSYMBOL,
            CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE,
            CURRENCYPROPERTIES.DECIMALDIGITS,
            CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
            REVENUEBENEFIT.BASECURRENCYID
        from
            dbo.REVENUEBENEFIT
            inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUEBENEFIT.REVENUEID = REVENUE.ID
            inner join dbo.CONSTITUENT on REVENUE.CONSTITUENTID = CONSTITUENT.ID
            inner join dbo.BENEFIT on REVENUEBENEFIT.BENEFITID = BENEFIT.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(coalesce(@SELECTEDCURRENCYID, REVENUEBENEFIT.BASECURRENCYID)) as CURRENCYPROPERTIES
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
        where
            REVENUE.DELETEDON is null
            and cast(REVENUE.DATE as datetime) >= @DATEFROM
            and cast(REVENUE.DATE as datetime) <= @DATETO
            and (@ISADMIN = 1 or 
                    (@APPUSER_IN_NONRACROLE = 1 or
                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                    and
                    (@APPUSER_IN_NONSITEROLE = 1 or
                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSITEROLE) = 1)
                )
        union

        select 
            NF.NAME as CONSTITUENTNAME,
            CONSTITUENT.ID as CONSTITUENTID,
            CONSTITUENT.KEYNAME as CONSTITUENTKEYNAME,
            BENEFIT.NAME as BENEFITNAME,
            BENEFIT.DESCRIPTION as BENEFITDESCRIPTION,
            BENEFIT.ID as BENEFITID,
            REGISTRANTBENEFIT.QUANTITY as QUANTITY,
            case
                when (@CURRENCYCODE = 0 or REGISTRANTBENEFIT.ORGANIZATIONEXCHANGERATEID is null) then REGISTRANTBENEFIT.UNITVALUE 
                else dbo.UFN_CURRENCY_CONVERT(REGISTRANTBENEFIT.UNITVALUE, REGISTRANTBENEFIT.ORGANIZATIONEXCHANGERATEID)
            end as UNITVALUE,
            case
                when (@CURRENCYCODE = 0 or REGISTRANTBENEFIT.ORGANIZATIONEXCHANGERATEID is null) then (REGISTRANTBENEFIT.QUANTITY*REGISTRANTBENEFIT.UNITVALUE) 
                else (REGISTRANTBENEFIT.QUANTITY*dbo.UFN_CURRENCY_CONVERT(REGISTRANTBENEFIT.UNITVALUE, REGISTRANTBENEFIT.ORGANIZATIONEXCHANGERATEID))    
            end as TOTAL,
            EVENT.STARTDATE as DATE,
            CURRENCYPROPERTIES.CURRENCYSYMBOL,
            CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE,
            CURRENCYPROPERTIES.DECIMALDIGITS,
            CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
            REGISTRANTBENEFIT.BASECURRENCYID
        from
            dbo.REGISTRANTBENEFIT
            inner join dbo.REGISTRANT on REGISTRANTBENEFIT.REGISTRANTID = REGISTRANT.ID
            inner join dbo.CONSTITUENT on REGISTRANT.CONSTITUENTID = CONSTITUENT.ID
            inner join dbo.[EVENT] on REGISTRANT.EVENTID = EVENT.ID
            inner join dbo.BENEFIT on REGISTRANTBENEFIT.BENEFITID = BENEFIT.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(coalesce(@SELECTEDCURRENCYID, REGISTRANTBENEFIT.BASECURRENCYID)) as CURRENCYPROPERTIES
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
        where
            EVENT.STARTDATE >= @DATEFROM
            and
            EVENT.STARTDATE <= @DATETO
            and (@ISADMIN = 1 or 
                    (@APPUSER_IN_NONRACROLE = 1 or
                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                    and
                    (@APPUSER_IN_NONSITEROLE = 1 or
                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSITEROLE) = 1)
                )
        union

        select 
            NF.NAME as CONSTITUENTNAME,
            CONSTITUENT.ID as CONSTITUENTID,
            CONSTITUENT.KEYNAME as CONSTITUENTKEYNAME,
            BENEFIT.NAME as BENEFITNAME,
            BENEFIT.DESCRIPTION as BENEFITDESCRIPTION,
            BENEFIT.ID as BENEFITID,
            CONSTITUENTRECOGNITIONBENEFIT.QUANTITY as QUANTITY,
            case
                when (@CURRENCYCODE = 0 or CONSTITUENTRECOGNITIONBENEFIT.ORGANIZATIONEXCHANGERATEID is null) then CONSTITUENTRECOGNITIONBENEFIT.UNITVALUE 
                else dbo.UFN_CURRENCY_CONVERT(CONSTITUENTRECOGNITIONBENEFIT.UNITVALUE, CONSTITUENTRECOGNITIONBENEFIT.ORGANIZATIONEXCHANGERATEID)
            end as UNITVALUE,
            case
                when (@CURRENCYCODE = 0 or CONSTITUENTRECOGNITIONBENEFIT.ORGANIZATIONEXCHANGERATEID is null) then (CONSTITUENTRECOGNITIONBENEFIT.QUANTITY*CONSTITUENTRECOGNITIONBENEFIT.UNITVALUE) 
                else (CONSTITUENTRECOGNITIONBENEFIT.QUANTITY*dbo.UFN_CURRENCY_CONVERT(CONSTITUENTRECOGNITIONBENEFIT.UNITVALUE, CONSTITUENTRECOGNITIONBENEFIT.ORGANIZATIONEXCHANGERATEID))    
            end as TOTAL,
            CONSTITUENTRECOGNITION.JOINDATE as DATE,
            CURRENCYPROPERTIES.CURRENCYSYMBOL,
            CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE,
            CURRENCYPROPERTIES.DECIMALDIGITS,
            CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
            CONSTITUENTRECOGNITIONBENEFIT.BASECURRENCYID
        from
            dbo.CONSTITUENTRECOGNITIONBENEFIT
            inner join dbo.BENEFIT on CONSTITUENTRECOGNITIONBENEFIT.BENEFITID = BENEFIT.ID
            inner join dbo.CONSTITUENTRECOGNITION on CONSTITUENTRECOGNITIONBENEFIT.CONSTITUENTRECOGNITIONID = CONSTITUENTRECOGNITION.ID
            inner join dbo.CONSTITUENT on CONSTITUENTRECOGNITION.CONSTITUENTID = CONSTITUENT.ID
            outer apply dbo.UFN_CURRENCY_GETPROPERTIES(coalesce(@SELECTEDCURRENCYID, CONSTITUENTRECOGNITIONBENEFIT.BASECURRENCYID)) as CURRENCYPROPERTIES
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
        where
            CONSTITUENTRECOGNITION.JOINDATE >= @DATEFROM
            and
            CONSTITUENTRECOGNITION.JOINDATE <= @DATETO
            and (@ISADMIN = 1 or 
                    (@APPUSER_IN_NONRACROLE = 1 or
                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                    and
                    (@APPUSER_IN_NONSITEROLE = 1 or
                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSITEROLE) = 1)
                )
    )
    select
        CONSTITUENTNAME,
        CONSTITUENTID,
        CONSTITUENTKEYNAME,
        BENEFITNAME,
        BENEFITDESCRIPTION,
        BENEFITID,
        sum(QUANTITY) as QUANTITY,
        UNITVALUE,
        sum(TOTAL) as TOTAL,
        DATE,
        CURRENCYSYMBOL,
        ISOCURRENCYCODE,
        DECIMALDIGITS,
        CURRENCYSYMBOLDISPLAYSETTINGCODE,
        BASECURRENCYID
    from BENEFITS_CTE
    group by
        CONSTITUENTNAME,
        CONSTITUENTID,
        CONSTITUENTKEYNAME,
        BENEFITNAME,
        BENEFITDESCRIPTION,
        BENEFITID,
        UNITVALUE,
        DATE,
        CURRENCYSYMBOL,
        ISOCURRENCYCODE,
        DECIMALDIGITS,
        CURRENCYSYMBOLDISPLAYSETTINGCODE,
        BASECURRENCYID