USP_DONOR_INFO_HELPER_BUILDTRANSQL

Parameters

Parameter Parameter Type Mode Description
@TRANTYPECODE tinyint IN
@FILTERCRITERIA nvarchar(1000) IN
@SQL nvarchar(max) INOUT

Definition

Copy


CREATE procedure [dbo].[USP_DONOR_INFO_HELPER_BUILDTRANSQL] (
  @TRANTYPECODE tinyint
  ,@FILTERCRITERIA nvarchar(1000)
  ,@SQL nvarchar(max) output
  )
  with execute as owner
as
set nocount on;

set @SQL = '';

declare @APPLICATIONFILTER nvarchar(100) = ''
  ,@TRANFILTER nvarchar(50) = ''

set @TRANFILTER = 'COMMITMENT.TYPECODE=' + cast(@TRANTYPECODE as nvarchar(4))
set @APPLICATIONFILTER = case @TRANTYPECODE
    when (0) --payments

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE in (0,1,4,9,10,11,15,16,18)'
    when (1) --pledges

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 2'
    when (2) --recurring gift

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE in (3, 5)'
    when (3) --matching gift claim

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 7'
    when (4) --planned gift

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 6'
        --when (5)

        --  then N'Order'

    when (6) --grant award

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 8'
    when (7) --auction donation

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 12'
    when (8) --donor challenge claim

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 13'
        --when (28)

        --  then N'Computer check'

    when (9) --pending gift

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 17'
        --when (10)

        --  then N'Deposit'

        --when (11)

        --  then N'Adjustment deposit'

        --when (12)

        --  then N'Adjustment payment'

        --when (13)

        --  then N'Adjustment transfer out'

        --when (14)

        --  then N'Adjustment transfer in'

    when (15) --membership installment plan

      then 'SPLITAPPLICATIONINFO.APPLICATIONCODE = 19'
        --when (20)

        --  then N'Write off'

        --when (21)

        --  then N'Sold stock'

        --when (22)

        --  then N'Sold property'

        --when (23)

        --  then N'Refund'

        --when (24)

        --  then N'Deposit Correction Short'

        --when (25)

        --  then N'Deposit Correction Over'

        --when (26)

        --  then N'Payout'

        --when (27)

        --  then N'Sold Gift In Kind'

        --when (99)

        --  then N'Deleted Revenue'

    end

--payments that meet criteria 

set @SQL += 
  'insert into #TMP_DATA_DONOR_INFO
    select SOURCELINEITEM.FINANCIALTRANSACTIONID ID
      ,PAYMENTSPLIT.ID FTLID
      ,PAYMENT.CONSTITUENTID
      ,PAYMENT.[DATE]
      ,SPLITAPPLICATIONINFO.DESIGNATIONID
      ,0 [BASEAMOUNT]
      ,PAYMENTSPLIT.BASEAMOUNT [TOTALPAID]
      ,1 [NUMPAYMENTS]
      ,PAYMENT.[DATE] [LASTPAYMENTDATE]
      ,null [WRITEOFFS]
      ,SOURCELINEITEM.ID [SOURCEFTLID]
      ,PAYMENT.ID [PAYMENTID]
      ,null
    from 
      dbo.FINANCIALTRANSACTION PAYMENT 
      inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTSPLIT on PAYMENT.ID=PAYMENTSPLIT.FINANCIALTRANSACTIONID
      inner join dbo.REVENUESPLIT_EXT SPLITAPPLICATIONINFO on PAYMENTSPLIT.ID = SPLITAPPLICATIONINFO.ID
      inner join #TMP_DONOR_INFO_FILTEREDIDS DESIGNATION on SPLITAPPLICATIONINFO.DESIGNATIONID = DESIGNATION.ID and DESIGNATION.RECORDTYPE=0
      inner join dbo.FINANCIALTRANSACTIONLINEITEM SOURCELINEITEM on PAYMENTSPLIT.SOURCELINEITEMID = SOURCELINEITEM.ID
    where  (
        PAYMENT.DELETEDON is null
        and PAYMENTSPLIT.DELETEDON is null
        )
      and (PAYMENT.[DATE] between @FROM2 and @TO2)
      and PAYMENT.TYPECODE=0 AND ' + @APPLICATIONFILTER 
set @SQL += replace(replace(@FILTERCRITERIA,'#CONSTITUENTID','PAYMENT.CONSTITUENTID'),'#SPLITID','PAYMENTSPLIT.ID')

--writeoffs that meet criteria 

set @SQL += 
  '; insert into #TMP_DATA_DONOR_INFO
    select COMMITMENT.ID ID
      ,WRITEOFFSPLIT.ID FTLID
      ,COMMITMENT.CONSTITUENTID
      ,WRITEOFF.[DATE] --REVISIT question whether this should be getting the breakdown from the installmentsplits... 

      ,SPLITAPPLICATIONINFO.DESIGNATIONID
      ,0 [BASEAMOUNT]
      ,0 [TOTALPAID]
      ,null [NUMPAYMENTS]
      ,null [LASTPAYMENTDATE]
      ,WRITEOFFSPLIT.BASEAMOUNT [WRITEOFFS]
      ,COMMITMENTSPLIT.ID [SOURCEFTLID]
      --,WRITEOFFSPLIT.FINANCIALTRANSACTIONID [PAYMENTID]

      ,null [PAYMENTID]
      ,null
    from 
      dbo.FINANCIALTRANSACTION WRITEOFF 
      inner join dbo.FINANCIALTRANSACTIONLINEITEM WRITEOFFSPLIT on WRITEOFF.ID=WRITEOFFSPLIT.FINANCIALTRANSACTIONID
      inner join dbo.REVENUESPLIT_EXT SPLITAPPLICATIONINFO on WRITEOFFSPLIT.ID = SPLITAPPLICATIONINFO.ID
      inner join #TMP_DONOR_INFO_FILTEREDIDS DESIGNATION on SPLITAPPLICATIONINFO.DESIGNATIONID = DESIGNATION.ID and DESIGNATION.RECORDTYPE=0      
      inner join dbo.FINANCIALTRANSACTION COMMITMENT on WRITEOFF.PARENTID=COMMITMENT.ID and COMMITMENT.TYPECODE=' + cast(@TRANTYPECODE as nvarchar(4)) + '
      left join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTSPLIT on WRITEOFFSPLIT.SOURCELINEITEMID = COMMITMENTSPLIT.ID
    where  (
        WRITEOFF.DELETEDON is null
        and WRITEOFFSPLIT.DELETEDON is null
        and COMMITMENT.DELETEDON is null
        )
      and (WRITEOFF.[DATE] between @FROM2 and @TO2)
      and WRITEOFF.TYPECODE=20'
set @SQL += replace(replace(@FILTERCRITERIA,'#CONSTITUENTID','COMMITMENT.CONSTITUENTID'),'#SPLITID','WRITEOFFSPLIT.ID')

--parents of the payments added above

set @SQL += '; insert into #TMP_DATA_DONOR_INFO
    select COMMITMENT.ID
      ,COMMITMENTSPLIT.ID FTLID
      ,COMMITMENT.CONSTITUENTID
      ,COMMITMENT.[DATE]
      ,SPLITAPPLICATIONINFO.DESIGNATIONID
      ,COMMITMENTSPLIT.BASEAMOUNT
      ,0 [TOTALPAID]
      ,0 [NUMPAYMENTS]
      ,null [LASTPAYMENTDATE]
      ,null [WRITEOFFS]
      ,NULL
      ,null
      ,SPLITAPPLICATIONINFO.APPLICATION
    from 
      dbo.FINANCIALTRANSACTION COMMITMENT 
      inner join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTSPLIT on COMMITMENT.ID=COMMITMENTSPLIT.FINANCIALTRANSACTIONID
      inner join dbo.REVENUESPLIT_EXT SPLITAPPLICATIONINFO on COMMITMENTSPLIT.ID=SPLITAPPLICATIONINFO.ID 
    where ' + @TRANFILTER + '
      and COMMITMENTSPLIT.DELETEDON is null and COMMITMENT.DELETEDON is null
      and exists(select top 1 1 from #TMP_DATA_DONOR_INFO T where T.SOURCEFTLID = COMMITMENTSPLIT.ID)'

--Get parents that meet criteria, that were not already added above

set @SQL += '; insert into #TMP_DATA_DONOR_INFO
    select COMMITMENT.ID
      ,COMMITMENTSPLIT.ID FTLID
      ,COMMITMENT.CONSTITUENTID
      ,COMMITMENT.[DATE]
      ,SPLITAPPLICATIONINFO.DESIGNATIONID
      ,COMMITMENTSPLIT.BASEAMOUNT
      ,0 [TOTALPAID]
      ,0 [NUMPAYMENTS]
      ,null [LASTPAYMENTDATE]
      ,null [WRITEOFFS]
      ,null
      ,null
      ,SPLITAPPLICATIONINFO.APPLICATION
    from 
      dbo.FINANCIALTRANSACTION COMMITMENT 
      inner join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTSPLIT on COMMITMENT.ID=COMMITMENTSPLIT.FINANCIALTRANSACTIONID
      inner join dbo.REVENUESPLIT_EXT SPLITAPPLICATIONINFO on COMMITMENTSPLIT.ID = SPLITAPPLICATIONINFO.ID
      inner join #TMP_DONOR_INFO_FILTEREDIDS DESIGNATION on SPLITAPPLICATIONINFO.DESIGNATIONID = DESIGNATION.ID and DESIGNATION.RECORDTYPE=0
    where (
        COMMITMENT.DELETEDON is null
        and COMMITMENTSPLIT.DELETEDON is null
        )
      and (COMMITMENT.[DATE] between @FROM2 and @TO2)
      and ' + @TRANFILTER + ' and not exists(select top 1 1 from #TMP_DATA_DONOR_INFO T where T.FTLID=COMMITMENTSPLIT.ID) '
set @SQL += replace(replace(@FILTERCRITERIA,'#CONSTITUENTID','COMMITMENT.CONSTITUENTID'),'#SPLITID','COMMITMENTSPLIT.ID')