USP_REPORT_RECEIPT_MAIN

Returns the data necessary for the miscellaneous payment report.

Parameters

Parameter Parameter Type Mode Description
@DATETOUSE int IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@MISCELLANEOUSPAYMENTQUERY uniqueidentifier IN
@ID uniqueidentifier IN
@REPORTUSERID nvarchar(128) IN
@CURRENCYCODE smallint IN
@ALTREPORTUSERID nvarchar(128) IN

Definition

Copy


CREATE procedure dbo.USP_REPORT_RECEIPT_MAIN 
      (
        @DATETOUSE int = null,
        @STARTDATE datetime = null,
        @ENDDATE datetime = null,
        @MISCELLANEOUSPAYMENTQUERY uniqueidentifier = null,
        @ID uniqueidentifier = null,
        @REPORTUSERID nvarchar(128) = null,
        @CURRENCYCODE smallint = null,
        @ALTREPORTUSERID nvarchar(128) = null
      )
      with execute as owner
      as
          set nocount on;
          /*I couldn't get it to group over the subselect amount column, which was returning duplicate data. So I am now inserting into a temp table and
            group over the results from that temp table (which doesn't require the use of a subselect) */

          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 @MISCELLANEOUSPAYMENTQUERY is not null begin
              if not exists(select ID from dbo.IDSETREGISTER where ID = @MISCELLANEOUSPAYMENTQUERY) raiserror('ID set does not exist in the database.', 15, 1);
              select @DBOBJECTNAME = DBOBJECTNAME, @DBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @MISCELLANEOUSPAYMENTQUERY;
              if @DBOBJECTTYPE = 1 set @DBOBJECTNAME = @DBOBJECTNAME + '()';
              else if @DBOBJECTTYPE = 2 set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @MISCELLANEOUSPAYMENTQUERY) + ''')';
          end

        set @SQLTOEXEC = 
            'select 
            REVENUE.ID,
            REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
            REVENUEPAYMENTMETHOD.PAYMENTMETHOD,
            case @CURRENCYCODE when 0 then REVENUE.BASEAMOUNT when 2 then REVENUE.TRANSACTIONAMOUNT else REVENUE.ORGAMOUNT end as AMOUNT,
            cast(REVENUE.DATE as datetime) as [DATE],
            isnull(REVENUEREFERENCE.REFERENCE, '''')  as [PAYMENTSOURCE],
            CURRENCYPROPERTIES.ID as CURRENCYID,
            CURRENCYPROPERTIES.ISO4217 as CURRENCYISO,
            CURRENCYPROPERTIES.DECIMALDIGITS as CURRENCYDECIMALDIGITS,
            CURRENCYPROPERTIES.CURRENCYSYMBOL as CURRENCYSYMBOL,
            CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE
            from dbo.REVENUESPLIT_EXT as REVENUESPLIT
            inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on REVENUESPLIT.ID = FTLI.ID
            inner join dbo.FINANCIALTRANSACTION as REVENUE on REVENUE.ID = FTLI.FINANCIALTRANSACTIONID
            inner join dbo.REVENUE_EXT as REVENUEREFERENCE on REVENUEREFERENCE.ID = REVENUE.ID             
            inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
      inner join dbo.PDACCOUNTSYSTEMFORREVENUE on REVENUE.ID = PDACCOUNTSYSTEMFORREVENUE.ID
            inner join dbo.UFN_PDACCOUNTSYSTEM_GETSYSTEMIDSFORUSER(@CURRENTAPPUSERID) PDACCOUNTSYSTEMIDSFORUSER on PDACCOUNTSYSTEMFORREVENUE.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMIDSFORUSER.ID
            inner join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.ID = PDACCOUNTSYSTEMIDSFORUSER.ID ';

        if @CURRENCYCODE = 0 --Base

            set @SQLTOEXEC = @SQLTOEXEC + '
                inner join  dbo.CURRENCYSET on CURRENCYSET.ID = PDACCOUNTSYSTEM.CURRENCYSETID
                inner join dbo.CURRENCY as CURRENCYPROPERTIES on CURRENCYSET.BASECURRENCYID = CURRENCYPROPERTIES.ID ';
        else if @CURRENCYCODE = 1 --Org

            set @SQLTOEXEC = @SQLTOEXEC + '
                cross apply (select ID,ISO4217,DECIMALDIGITS,CURRENCYSYMBOL,SYMBOLDISPLAYSETTINGCODE from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1) as CURRENCYPROPERTIES ';
        else --Tran

            set @SQLTOEXEC = @SQLTOEXEC + '
                inner join dbo.CURRENCY as CURRENCYPROPERTIES on REVENUE.TRANSACTIONCURRENCYID = CURRENCYPROPERTIES.ID ';

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

        set @SQLTOEXEC = @SQLTOEXEC + '
            where REVENUESPLIT.APPLICATIONCODE=11 and REVENUESPLIT.TYPECODE=8 ';
        if (@DATETOUSE = 0 or @DATETOUSE is null)
        begin
            if not @STARTDATE is null
                set @SQLTOEXEC = @SQLTOEXEC + '
                    and cast(REVENUE.DATE as datetime) >= @STARTDATE ';
            if not @ENDDATE is null
                set @SQLTOEXEC = @SQLTOEXEC + '
                    and cast(REVENUE.DATE as datetime) <= @ENDDATE ';
        end
        else
        begin
            if not @STARTDATE is null
                set @SQLTOEXEC = @SQLTOEXEC + '
                    and cast(REVENUE.POSTDATE as datetime) >= @STARTDATE ';
            if not @ENDDATE is null
                set @SQLTOEXEC = @SQLTOEXEC + '
                    and cast(REVENUE.POSTDATE as datetime) <= @ENDDATE ';
        end

        if not @ID is null
            set @SQLTOEXEC = @SQLTOEXEC + '
                and (REVENUE.ID = @ID) ';

        set @SQLTOEXEC = @SQLTOEXEC + '
            and (@ISADMIN = 1 or @APPUSER_IN_NONRACROLE = 1) 
            order by DATE desc';

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