USP_REPORT_RECONCILEDEPOSITS_MAIN_WITHIDSET

Alternate version of USP_REPORT_RECONCILEDEPOSITS_MAIN which allows for the inclusion of an ID set.

Parameters

Parameter Parameter Type Mode Description
@IDSETID uniqueidentifier IN
@REVENUEDATE datetime IN
@POSTDATE datetime IN

Definition

Copy
/*
Generated by Blackbaud Application Framework
Date: 12/17/2008 2:13:29 AM
Assembly Version: Blackbaud.AppFx.Platform.SqlClr, Version=1.7.1271.0, Culture=neutral, PublicKeyToken=null
*/
create procedure dbo.USP_REPORT_RECONCILEDEPOSITS_MAIN_WITHIDSET (@IDSETID uniqueidentifier = null, @REVENUEDATE datetime, @POSTDATE datetime)
with execute as owner
as
  set nocount on;

  declare @r int;

  if @IDSETID is null
    begin
      exec @r = dbo.[USP_REPORT_RECONCILEDEPOSITS_MAIN] @REVENUEDATE, @POSTDATE;
    end
  else
    begin
      if not exists(select [ID] from dbo.[IDSETREGISTER] where [ID] = @IDSETID)
        raiserror('ID set does not exist in the database.', 15, 1);

      declare @DBOBJECTNAME nvarchar(max);
      declare @DBOBJECTTYPE smallint;
      declare @SQLTOEXEC nvarchar(max);

      select
        @DBOBJECTNAME = [DBOBJECTNAME],
        @DBOBJECTTYPE = [OBJECTTYPE]
      from dbo.[IDSETREGISTER]
      where [ID] = @IDSETID;

      if left(@DBOBJECTNAME, 1) <> '['
        set @DBOBJECTNAME = '[' + @DBOBJECTNAME + ']';

      if @DBOBJECTTYPE = 1
        begin
          set @DBOBJECTNAME = @DBOBJECTNAME + '(';
          set @DBOBJECTNAME = @DBOBJECTNAME + ')';
        end
      else
        begin
          if @DBOBJECTTYPE = 2
            set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @IDSETID) + ''')';
        end

      set @SQLTOEXEC = N'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 @RESULTS table
            (
                TRANSACTIONID uniqueidentifier, BATCHNUMBER nvarchar(100), CONSTITUENTNAME varchar(300), CONSTITUENTLOOKUPID nvarchar(100), PAYMENTMETHODCODE tinyint, 
                PAYMENTMETHOD nvarchar(100), AMOUNT money, CHECKNUMBER nvarchar(20), CHECKDATE char(8), 
                CARDHOLDERNAME nvarchar(100), CREDITCARDPARTIALNUMBER nvarchar(10), CREDITTYPE nvarchar(100), DATE datetime,
                CONSTITUENTKEYNAME nvarchar(100), CONSTITUENTFIRSTNAME nvarchar(100), CONSTITUENTMIDDLENAME nvarchar(100)
            );

            exec dbo.USP_GET_KEY_ACCESS;

            insert into @RESULTS
                select 
                    [TOPREVENUE].TRANSACTIONID,
                    (select top 1 BATCHNUMBER from dbo.REVENUE where TRANSACTIONID = [TOPREVENUE].TRANSACTIONID) as [BATCHNUMBER],
                    CONSTITUENT.NAME,
                    CONSTITUENT.LOOKUPID,
                    (select top 1 PAYMENTMETHODCODE from dbo.REVENUE where TRANSACTIONID = [TOPREVENUE].TRANSACTIONID) as [PAYMENTMETHODCODE],
                    (select top 1 PAYMENTMETHOD from dbo.REVENUE where TRANSACTIONID = [TOPREVENUE].TRANSACTIONID) as [PAYMENTMETHOD],
                    (select sum(R.AMOUNT) from dbo.REVENUE R where R.TRANSACTIONID = [TOPREVENUE].TRANSACTIONID) as [AMOUNT],
                    [CHECK].CHECKNUMBER,
                    [CHECK].CHECKDATE,
                    [CC].CARDHOLDERNAME,
                    coalesce(convert(nvarchar(10), DecryptByKey([CC].CREDITCARDPARTIALNUMBER)), ''''),
                    [CCTYPE].DESCRIPTION as [CREDITTYPE],
                    (select top 1 DATE from dbo.REVENUE where TRANSACTIONID = [TOPREVENUE].TRANSACTIONID) as [DATE],
                    CONSTITUENT.KEYNAME,
                    CONSTITUENT.FIRSTNAME,
                    CONSTITUENT.MIDDLENAME
                from dbo.REVENUE as [TOPREVENUE]
                 inner join dbo.' + @DBOBJECTNAME + ' as [IDSET_181b45a6_8771_428d_82d7_0b999d41bdc2] on [TOPREVENUE].[TRANSACTIONID] = [IDSET_181b45a6_8771_428d_82d7_0b999d41bdc2].[ID] 
                inner join dbo.CONSTITUENT on CONSTITUENT.ID = [TOPREVENUE].CONSTITUENTID
                left join dbo.CHECKPAYMENTMETHODDETAIL as [CHECK] on [CHECK].ID = [TOPREVENUE].ID
                left join dbo.CREDITCARDPAYMENTMETHODDETAIL as [CC] on [CC].ID = [TOPREVENUE].ID
                left join dbo.CREDITTYPECODE as [CCTYPE] on [CCTYPE].ID = [CC].CREDITTYPECODEID
                where PAYMENTMETHODCODE in (0, 1, 2, 3) --Limit to Cash, Check, Credit Card, and Direct Debit

                      and [TOPREVENUE].TYPECODE in (0, 4, 5, 6, 8) --Limit to payments

                      and (dbo.UFN_DATE_GETEARLIESTTIME([TOPREVENUE].DATE) = dbo.UFN_DATE_GETEARLIESTTIME(@REVENUEDATE) or @REVENUEDATE is null)
                      and (dbo.UFN_DATE_GETEARLIESTTIME([TOPREVENUE].POSTDATE) = dbo.UFN_DATE_GETEARLIESTTIME(@POSTDATE) or @POSTDATE is null)
            close symmetric key sym_BBInfinity;

            select 
                TRANSACTIONID as [ID], 
                BATCHNUMBER, 
                CONSTITUENTNAME as [NAME], 
                CONSTITUENTLOOKUPID as [LOOKUPID], 
                PAYMENTMETHODCODE, 
                PAYMENTMETHOD, 
                AMOUNT,
                CHECKNUMBER, 
                CHECKDATE, 
                CARDHOLDERNAME, 
                CREDITCARDPARTIALNUMBER, 
                CREDITTYPE, 
                DATE
            from @RESULTS as [RESULTS]
            group by TRANSACTIONID, BATCHNUMBER, CONSTITUENTNAME, CONSTITUENTLOOKUPID, PAYMENTMETHODCODE, PAYMENTMETHOD, CHECKNUMBER, CHECKDATE, 
                     CARDHOLDERNAME, CREDITCARDPARTIALNUMBER, CREDITTYPE, DATE, CONSTITUENTKEYNAME, CONSTITUENTFIRSTNAME, CONSTITUENTMIDDLENAME, DATE, AMOUNT
            order by CONSTITUENTKEYNAME, CONSTITUENTFIRSTNAME, CONSTITUENTMIDDLENAME, DATE, AMOUNT';

      exec @r = sp_executesql @SQLTOEXEC, N'@REVENUEDATE datetime, @POSTDATE datetime', @REVENUEDATE = @REVENUEDATE, @POSTDATE = @POSTDATE;
    end

  return @r;