USP_DATAFORMTEMPLATE_VIEW_DONORINFORMATIONPAYMENTDETAIL

Parameters

Parameter Parameter Type Mode Description
@ID nvarchar(73) IN
@DATALOADED bit INOUT
@PAYMENTID uniqueidentifier INOUT
@GIVENANONYMOUSLY bit INOUT
@AMOUNT money INOUT
@BASECURRENCYID uniqueidentifier INOUT
@TRANSACTIONTYPE nvarchar(100) INOUT
@TOTALSPLITS int INOUT
@TOTALAPPLIEDTOTHISPURPOSE money INOUT
@THISPURPOSESPLITS xml INOUT
@TOTALAPPLIEDTOOTHERPURPOSES money INOUT
@OTHERPURPOSESPLITS xml INOUT
@TRANSACTIONCURRENCYID uniqueidentifier INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_DONORINFORMATIONPAYMENTDETAIL (
  @ID nvarchar(73)
  ,@DATALOADED bit = 0 output
  ,@PAYMENTID uniqueidentifier = null output
  ,@GIVENANONYMOUSLY bit = null output
  ,@AMOUNT money = null output
  ,@BASECURRENCYID uniqueidentifier = null output
  ,@TRANSACTIONTYPE nvarchar(100) = null output
  ,@TOTALSPLITS int = null output
  ,@TOTALAPPLIEDTOTHISPURPOSE money = null output
  ,@THISPURPOSESPLITS xml = null output
  ,@TOTALAPPLIEDTOOTHERPURPOSES money = null output
  ,@OTHERPURPOSESPLITS xml = null output
  ,@TRANSACTIONCURRENCYID uniqueidentifier = null output
  )
as
begin
  set nocount on;
  set @DATALOADED = 0;

  declare @PURPOSEID uniqueidentifier = null;

  select @PAYMENTID = cast(substring(@ID, 0, 37) as uniqueidentifier)

  select @PURPOSEID = cast(substring(@ID, 38, 36) as uniqueidentifier)

  select @DATALOADED = 1
    ,@BASECURRENCYID = null
    ,@TRANSACTIONTYPE = FT.TYPE
    ,@GIVENANONYMOUSLY = REVENUE_EXT.GIVENANONYMOUSLY
    ,@TRANSACTIONCURRENCYID = FT.TRANSACTIONCURRENCYID
  from dbo.FINANCIALTRANSACTION FT
  inner join dbo.REVENUE_EXT on FT.ID = REVENUE_EXT.ID
  where FT.ID = @PAYMENTID

  declare @designationttable table (
    ID uniqueidentifier
    ,USERID nvarchar(512)
    ,AMOUNT money
    ,CURRENCYID uniqueidentifier
    ,THISPURPOSE bit
    );

  insert into @designationttable (
    ID
    ,USERID
    ,AMOUNT
    ,CURRENCYID
    ,THISPURPOSE
    )
  select D.ID
    ,[USERID] = D.USERID
    ,PAYMENTLINEITEM.TRANSACTIONAMOUNT
    ,@TRANSACTIONCURRENCYID
    ,THISPURPOSE = case 
      when @PURPOSEID in (
          D.DESIGNATIONLEVEL1ID
          ,D.DESIGNATIONLEVEL2ID
          ,D.DESIGNATIONLEVEL3ID
          ,D.DESIGNATIONLEVEL4ID
          ,D.DESIGNATIONLEVEL5ID
          )
        then 1
      else 0
      end
  from dbo.FINANCIALTRANSACTION PAYMENT with (nolock)
  inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTLINEITEM with (nolock) on PAYMENT.ID = PAYMENTLINEITEM.FINANCIALTRANSACTIONID
    and PAYMENT.DELETEDON is null
    and PAYMENTLINEITEM.DELETEDON is null
    and PAYMENT.TYPECODE = 0
  inner join dbo.REVENUESPLIT_EXT PAYMENTAPPLICATION with (nolock) on PAYMENTLINEITEM.ID = PAYMENTAPPLICATION.ID
  inner join dbo.DESIGNATION D with (nolock) on PAYMENTAPPLICATION.DESIGNATIONID = D.ID
  where PAYMENT.ID = @PAYMENTID
    and (
      PAYMENTAPPLICATION.APPLICATIONCODE in (
        0
        ,1
        ,4
        ,9
        ,10
        ,11
        ,12
        ,15
        ,16
        ,18
        )
      or (
        PAYMENTAPPLICATION.APPLICATIONCODE = 7
        and not exists (
          select 1
          from dbo.INSTALLMENTSPLITPAYMENT
          where PAYMENTID = PAYMENTLINEITEM.ID
          )
        )
      )

  select @AMOUNT = sum(AMOUNT)
    ,@TOTALSPLITS = COUNT(distinct ID) 
    ,@TOTALAPPLIEDTOTHISPURPOSE = sum(case 
        when THISPURPOSE = 1
          then AMOUNT
        else 0
        end)
    ,@TOTALAPPLIEDTOOTHERPURPOSES = sum(case 
        when THISPURPOSE = 0
          then AMOUNT
        else 0
        end)
  from @designationttable;

  set @THISPURPOSESPLITS = (
      select top 6 [ID] = D.ID
        ,[AMOUNT] = SUM(D.AMOUNT)
        ,[DESIGNATION] = D.USERID
        ,[TRANSACTIONCURRENCYID] = @TRANSACTIONCURRENCYID
      from @designationttable D
      where THISPURPOSE = 1
      group by D.ID
        ,D.USERID
      order by [AMOUNT] desc
        ,D.USERID
      for xml raw('ITEM')
        ,type
        ,elements
        ,root('THISPURPOSESPLITS')
        ,binary BASE64
      )
  set @THISPURPOSESPLITS = isnull(@THISPURPOSESPLITS, '<THISPURPOSESPLITS></THISPURPOSESPLITS>')
  set @OTHERPURPOSESPLITS = (
      select top 6 [ID] = D.ID
        ,[AMOUNT] = SUM(D.AMOUNT)
        ,[DESIGNATION] = D.USERID
        ,[TRANSACTIONCURRENCYID] = @TRANSACTIONCURRENCYID
      from @designationttable D
      where THISPURPOSE = 0
      group by D.ID
        ,D.USERID
      order by [AMOUNT] desc
        ,D.USERID
      for xml raw('ITEM')
        ,type
        ,elements
        ,root('OTHERPURPOSESPLITS')
        ,binary BASE64
      )
  set @OTHERPURPOSESPLITS = isnull(@OTHERPURPOSESPLITS, '<OTHERPURPOSESPLITS></OTHERPURPOSESPLITS>');

  return 0;
end