USP_REPORT_RECONCILEDEPOSITS_MAIN

Returns the data necessary for the Reconcile Deposits report.

Parameters

Parameter Parameter Type Mode Description
@DATETOUSE int IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@REVENUETRANSACTIONQUERY uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@REPORTUSERID nvarchar(128) IN
@INCLUDETRANSACTIONAMOUNT bit IN
@ALTREPORTUSERID nvarchar(128) IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_RECONCILEDEPOSITS_MAIN 
            (
                @DATETOUSE int = null,
                @STARTDATE datetime = null,
                @ENDDATE datetime = null,
                @REVENUETRANSACTIONQUERY uniqueidentifier = null,
                @CONSTITUENTID uniqueidentifier = null,
                @REPORTUSERID nvarchar(128) = null,
                @INCLUDETRANSACTIONAMOUNT bit = 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 = 
        'with RC as
        (
    select 
        R.ID,
        R.[BATCHNUMBER],
        C_NF.NAME,
        C.LOOKUPID,
        RP.PAYMENTMETHODCODE,
        RP.PAYMENTMETHOD,
        R.[AMOUNT],
        R.[DATE],
        RP.ID RPID,
        C.KEYNAME KN,
        C.FIRSTNAME FN,
        C.MIDDLENAME MN,
        R.TRANSACTIONAMOUNT TA,
        B.ISO4217 [BISO],
        B.CURRENCYSYMBOL [BCS],
        B.SYMBOLDISPLAYSETTINGCODE [BDC],
        B.DECIMALDIGITS [BDD],
        T.ISO4217 [TISO],
        T.CURRENCYSYMBOL [TCS],
        T.SYMBOLDISPLAYSETTINGCODE [TDS],
        T.DECIMALDIGITS [TDD]
    from dbo.REVENUE as R with (nolock)
    left join dbo.CONSTITUENT as C with (nolock) on C.ID = R.CONSTITUENTID
    inner join dbo.REVENUEPAYMENTMETHOD as RP with (nolock) on RP.REVENUEID = R.ID
    outer apply dbo.UFN_CURRENCY_GETPROPERTIES(R.BASECURRENCYID) B
    outer apply dbo.UFN_CURRENCY_GETPROPERTIES(R.TRANSACTIONCURRENCYID) T
    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 RP.PAYMENTMETHODCODE in (0, 1, 2, 3) --Limit to Cash, Check, Credit Card, and Direct Debit

      and R.TRANSACTIONTYPECODE = 0 --Limit to payments

      and ' + nchar(13);

if @DATETOUSE = 0
    set @SQLTOEXEC = @SQLTOEXEC + 
        ' R.DATE between @STARTDATE and @ENDDATE ' + nchar(13);
else
    set @SQLTOEXEC = @SQLTOEXEC + 
        ' R.POSTDATE between @STARTDATE and @ENDDATE ' + nchar(13);

if @CONSTITUENTID is not null
    set @SQLTOEXEC = @SQLTOEXEC + 'and R.CONSTITUENTID = @CONSTITUENTID' + nchar(13);

if @ISADMIN = 0 
begin 
    if @APPUSER_IN_NONRACROLE = 0
        set @SQLTOEXEC = @SQLTOEXEC + '
          and (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, C.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)' + nchar(13);

    set @SQLTOEXEC = @SQLTOEXEC + '
      and exists (select 1 from dbo.REVENUESPLIT where REVENUEID = R.ID 
            -- Check site security

            and exists
            (
                select HASPERMISSION
                from dbo.UFN_SITEID_MAPFROM_REVENUEID(R.ID) REVSITES
                cross apply dbo.UFN_REPORT_HASUSERSITEPERMISSION(@CURRENTAPPUSERID, ''9A014198-B7EB-4A06-8FDC-951207AE6D03'', REVSITES.SITEID)
            ))' + nchar(13);
end    

set @SQLTOEXEC = @SQLTOEXEC + ')' + nchar(13);


set @SQLTOEXEC = @SQLTOEXEC +',
    REFUNDS_CTE as (
    select
        [CREDIT].[ID] as [CREDITID],
        '''' as [BATCHNUMBER],
        [CREDITPAYMENT].[ID],
        [CREDITPAYMENT].[REVENUEID],
        [C_NF].[NAME],
        [C].[LOOKUPID],
        [CREDITPAYMENT].[PAYMENTMETHODCODE],
        [CREDITPAYMENT].[PAYMENTMETHOD],
        -1 * [CREDITPAYMENT].[AMOUNT] as [AMOUNT],
        [CREDIT].[DATEADDED] as [DATE],
        [C].[KEYNAME],
        [C].[FIRSTNAME],
        [C].[MIDDLENAME],
        [CREDITPAYMENT].[AMOUNT] [TA],
        [B].[ISO4217] [BISO],
        [B].[CURRENCYSYMBOL] [BCS],
        [B].[SYMBOLDISPLAYSETTINGCODE] [BDC],
        [B].[DECIMALDIGITS] [BDD],
        [T].[ISO4217] [TISO],
        [T].[CURRENCYSYMBOL] [TCS],
        [T].[SYMBOLDISPLAYSETTINGCODE] [TDS],
        [T].[DECIMALDIGITS] [TDD]
    from dbo.[CREDIT]
    inner join dbo.[CREDITPAYMENT] on [CREDIT].[ID] = [CREDITPAYMENT].[CREDITID]
    left join dbo.[CONSTITUENT] as [C] with (nolock) on C.[ID] = [CREDIT].[CONSTITUENTID]
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME([C].[ID]) [C_NF]
    left join dbo.[REVENUESPLIT] on [REVENUESPLIT].[ID] = [CREDITPAYMENT].[REVENUESPLITID]
    inner join dbo.[REVENUE] on ([REVENUE].[ID] = [CREDITPAYMENT].[REVENUEID] or [REVENUE].[ID] = [REVENUESPLIT].[REVENUEID])
    outer apply dbo.UFN_CURRENCY_GETPROPERTIES([REVENUE].[BASECURRENCYID]) B
    outer apply dbo.UFN_CURRENCY_GETPROPERTIES([REVENUE].[TRANSACTIONCURRENCYID]) T' + nchar(13);

if @DATETOUSE = 0
    set @SQLTOEXEC +=
        'where [CREDIT].[DATEADDED] between @STARTDATE and @ENDDATE ' + nchar(13);
else
    set @SQLTOEXEC +=
        '    left join dbo.[CREDITGLDISTRIBUTION] on [CREDITGLDISTRIBUTION].[CREDITPAYMENTID] = [CREDITPAYMENT].[ID]
            left join dbo.[GLTRANSACTION] on [CREDITGLDISTRIBUTION].[GLTRANSACTIONID] = [GLTRANSACTION].[ID]
            where [GLTRANSACTION].[POSTDATE] between @STARTDATE and @ENDDATE ' + nchar(13);

set @SQLTOEXEC += 
    'and [CREDITPAYMENT].[PAYMENTMETHODCODE] in (0, 1, 2, 3) --Limit to Cash, Check, Credit Card, and Direct Debit

    ' + nchar(13);

if @CONSTITUENTID is not null
    set @SQLTOEXEC += 'and [CREDIT].[CONSTITUENTID] = @CONSTITUENTID' + nchar(13);

if @APPUSER_IN_NONRACROLE = 0 and @ISADMIN = 0
    set @SQLTOEXEC += 'and (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, [CREDIT].[ID], @APPUSER_IN_NOSECGROUPROLE) = 1)' + nchar(13);

set @SQLTOEXEC +=
    'group by [CREDIT].[ID], [CREDITPAYMENT].[ID], [CREDITPAYMENT].[REVENUEID], [C_NF].[NAME], [C].[LOOKUPID], [CREDITPAYMENT].[PAYMENTMETHODCODE],
        [CREDITPAYMENT].[PAYMENTMETHOD], [CREDITPAYMENT].[AMOUNT], [CREDIT].[DATEADDED], [C].[KEYNAME], [C].[FIRSTNAME],
        [C].[MIDDLENAME], [B].[ISO4217], [B].[CURRENCYSYMBOL], [B].[SYMBOLDISPLAYSETTINGCODE], [B].[DECIMALDIGITS],
        [T].[ISO4217], [T].[CURRENCYSYMBOL], [T].[SYMBOLDISPLAYSETTINGCODE], [T].[DECIMALDIGITS]' + nchar(13);



set @SQLTOEXEC += ')' + nchar(13);


set @SQLTOEXEC = @SQLTOEXEC + 'select 
        ID,
        [BATCHNUMBER],
        NAME,
        LOOKUPID,
        PAYMENTMETHODCODE,
        PAYMENTMETHOD,
        [AMOUNT],
        CN CHECKNUMBER,
        CD CHECKDATE,
        CHN CARDHOLDERNAME,
        CCN CREDITCARDPARTIALNUMBER,
        CT CREDITTYPE,
        [DATE],
        TA TRANSACTIONAMOUNT,
        BISO BASEISOCURRENCYCODE,
        BCS BASECURRENCYSYMBOL,
        BDC BASECURRENCYSYMBOLDISPLAYSETTINGCODE,
        BDD BASEDECIMALDIGITS,
        TISO TRANSACTIONISOCURRENCYCODE,
        TCS TRANSACTIONCURRENCYSYMBOL,
        TDS TRANSACTIONCURRENCYSYMBOLDISPLAYSETTINGCODE,
        TDD TRANSACTIONDECIMALDIGITS
    from
    (
        select 
                RC.ID,
                RC.[BATCHNUMBER],
                RC.NAME,
                RC.LOOKUPID,
                RC.PAYMENTMETHODCODE,
                RC.PAYMENTMETHOD,
                [AMOUNT],
                [CHECK].CHECKNUMBER CN,
                [CHECK].CHECKDATE CD,
                '''' as CHN,
                '''' as CCN,
                '''' as CT,
                RC.[DATE],
                RC.KN, 
                RC.FN, 
                RC.MN,
                RC.TA,
                RC.BISO, 
                RC.BCS, 
                RC.BDC, 
                RC.BDD,
                RC.TISO,
                RC.TCS,
                RC.TDS,
                RC.TDD
            from RC
            inner join dbo.CHECKPAYMENTMETHODDETAIL as [CHECK] with (nolock) on [CHECK].ID = RC.RPID
            where PAYMENTMETHODCODE  = 1
            union all 
            select 
                    RC.ID,
                    RC.[BATCHNUMBER],
                    RC.NAME,
                    RC.LOOKUPID,
                    RC.PAYMENTMETHODCODE,
                    RC.PAYMENTMETHOD,
                    RC.[AMOUNT],
                    '''' as CN,
                    '''' as CD,
                    [CC].CARDHOLDERNAME CHN,
                    [CC].CREDITCARDPARTIALNUMBER CCN,
                    [CCTYPE].DESCRIPTION as CT,
                    RC.[DATE],
                    RC.KN, 
                    RC.FN, 
                    RC.MN,
                RC.TA,
                RC.BISO, 
                RC.BCS, 
                RC.BDC, 
                RC.BDD,
                RC.TISO,
                RC.TCS,
                RC.TDS,
                RC.TDD
                from RC
                inner join dbo.CREDITCARDPAYMENTMETHODDETAIL as [CC] with (nolock) on [CC].ID = RC.RPID
                left join dbo.CREDITTYPECODE as [CCTYPE] with (nolock) on [CCTYPE].ID = [CC].CREDITTYPECODEID
                where PAYMENTMETHODCODE  = 2
            union all
            select 
                    RC.ID,
                    RC.[BATCHNUMBER],
                    RC.NAME,
                    RC.LOOKUPID,
                    RC.PAYMENTMETHODCODE,
                    RC.PAYMENTMETHOD,
                    RC.[AMOUNT],
                    '''' as CN,
                    '''' as CD,
                    '''' as CHN,
                    '''' as CCN,
                    '''' as CT,
                    RC.[DATE],
                    RC.KN, 
                    RC.FN, 
                    RC.MN,
                RC.TA,
                RC.BISO, 
                RC.BCS, 
                RC.BDC, 
                RC.BDD,
                RC.TISO,
                RC.TCS,
                RC.TDS,
                RC.TDD
                from RC
                where PAYMENTMETHODCODE in (0, 3)

            union all
            select 
                [REFUNDS].[CREDITID],
                [REFUNDS].[BATCHNUMBER],
                [REFUNDS].[NAME],
                [REFUNDS].[LOOKUPID],
                [REFUNDS].[PAYMENTMETHODCODE],
                [REFUNDS].[PAYMENTMETHOD],
                [REFUNDS].[AMOUNT],
                [CHECK].CN,
                [CHECK].CD,
                [CC].CHN,
                [CC].CCN,
                [CC].CT,
                [REFUNDS].[DATE],
                [REFUNDS].[KEYNAME] as [KN],
                [REFUNDS].[FIRSTNAME] as [FN],
                [REFUNDS].[MIDDLENAME] as [MS],
                [REFUNDS].[TA],
                [REFUNDS].[BISO],
                [REFUNDS].[BCS],
                [REFUNDS].[BDC],
                [REFUNDS].[BDD],
                [REFUNDS].[TISO],
                [REFUNDS].[TCS],
                [REFUNDS].[TDS],
                [REFUNDS].[TDD]
            from [REFUNDS_CTE] [REFUNDS]
            outer apply (
                select 
                    [CHECK].CHECKNUMBER CN,
                    [CHECK].CHECKDATE CD
                from dbo.CREDITPAYMENTCHECKPAYMENTMETHODDETAIL [CHECK]
                where 
                    [CHECK].ID = [REFUNDS].ID and
                    [REFUNDS].[PAYMENTMETHODCODE] = 1
            ) [CHECK]
            outer apply (
                select
                    [CC].CARDHOLDERNAME CHN,
                    [CC].CREDITCARDPARTIALNUMBER CCN,
                    [CCTYPE].DESCRIPTION as CT
                from dbo.REVENUEPAYMENTMETHOD
                inner join dbo.CREDITCARDPAYMENTMETHODDETAIL as [CC] with (nolock) on [CC].ID = REVENUEPAYMENTMETHOD.ID
                left join dbo.CREDITTYPECODE as [CCTYPE] with (nolock) on [CCTYPE].ID = [CC].CREDITTYPECODEID
                where 
                    REVENUEPAYMENTMETHOD.REVENUEID = [REFUNDS].REVENUEID and
                    [REFUNDS].[PAYMENTMETHODCODE] = 2
            ) [CC]
        ) a
    order by KN, FN, MN, [DATE], AMOUNT';

exec sp_executesql @SQLTOEXEC
    N'@DATETOUSE int, @STARTDATE datetime, @ENDDATE datetime, @CONSTITUENTID uniqueidentifier, @APPUSER_IN_NONRACROLE bit, @APPUSER_IN_NOSECGROUPROLE bit, @CURRENTAPPUSERID uniqueidentifier',
    @DATETOUSE=@DATETOUSE, @STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @CONSTITUENTID=@CONSTITUENTID, @APPUSER_IN_NONRACROLE=@APPUSER_IN_NONRACROLE, @APPUSER_IN_NOSECGROUPROLE=@APPUSER_IN_NOSECGROUPROLE, @CURRENTAPPUSERID=@CURRENTAPPUSERID;