USP_DATAFORMTEMPLATE_VIEW_DONORINFORMATIONDONORCHALLENGECLAIMDETAIL

Parameters

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

Definition

Copy

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

  declare @PURPOSEID uniqueidentifier = null;

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

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

  select @DATALOADED = 1
    ,@TOTALDONORCLAIMAMOUNT = FT.TRANSACTIONAMOUNT
    ,@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 = @DONORCLAIMID

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

  insert into @designationttable (
    ID
    ,USERID
    ,AMOUNT
    ,CURRENCYID
    ,THISPURPOSE
    )
  select [ID] = D.ID
    ,[USERID] = D.USERID
    ,[AMOUNT] = COMMITMENTLINEITEM.TRANSACTIONAMOUNT
    ,[CURRENCYID] = @TRANSACTIONCURRENCYID
    ,THISPURPOSE = case 
      when @PURPOSEID in (
          D.DESIGNATIONLEVEL1ID
          ,D.DESIGNATIONLEVEL2ID
          ,D.DESIGNATIONLEVEL3ID
          ,D.DESIGNATIONLEVEL4ID
          ,D.DESIGNATIONLEVEL5ID
          )
        then 1
      else 0
      end
  from dbo.FINANCIALTRANSACTION COMMITMENT with (nolock)
  inner join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTLINEITEM with (nolock) on COMMITMENT.ID = COMMITMENTLINEITEM.FINANCIALTRANSACTIONID
    and COMMITMENTLINEITEM.DELETEDON is null
    and COMMITMENT.DELETEDON is null
  inner join dbo.REVENUESPLIT_EXT COMMITMENTLINEITEMAPPINFO with (nolock) on COMMITMENTLINEITEM.ID = COMMITMENTLINEITEMAPPINFO.ID
  inner join dbo.DESIGNATION D with (nolock) on COMMITMENTLINEITEMAPPINFO.DESIGNATIONID = D.ID
  where COMMITMENT.ID = @DONORCLAIMID

  select @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>')

  select @PAYMENTSTOTAL = sum(ISP.AMOUNT)
  from dbo.FINANCIALTRANSACTION PAYMENT with (nolock)
  inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTLINEITEM with (nolock) on PAYMENT.ID = PAYMENTLINEITEM.FINANCIALTRANSACTIONID
    and PAYMENT.TYPECODE = 0
    and PAYMENT.DELETEDON is null
  inner join (
    select ISP.PAYMENTID
      ,ISP.PLEDGEID
      ,SUM(ISP.AMOUNT) AMOUNT
    from dbo.INSTALLMENTSPLITPAYMENT ISP with (nolock)
    where ISP.PLEDGEID = @DONORCLAIMID
    group by ISP.PLEDGEID
      ,ISP.PAYMENTID
    ) ISP on PAYMENTLINEITEM.ID = ISP.PAYMENTID
    and PAYMENTLINEITEM.DELETEDON is null
  inner join dbo.REVENUE_EXT PAYMENT_EXT with (nolock) on PAYMENT.ID = PAYMENT_EXT.ID
  inner join dbo.REVENUESPLIT_EXT PAYMENTAPPINFO with (nolock) on PAYMENTLINEITEM.ID = PAYMENTAPPINFO.ID
  inner join dbo.DESIGNATION D with (nolock) on PAYMENTAPPINFO.DESIGNATIONID = D.ID
  inner join dbo.FINANCIALTRANSACTION COMMITMENT with (nolock) on ISP.PLEDGEID = COMMITMENT.ID
    and COMMITMENT.DELETEDON is null
  inner join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTLINEITEM with (nolock) on COMMITMENT.ID = COMMITMENTLINEITEM.FINANCIALTRANSACTIONID
    and COMMITMENTLINEITEM.DELETEDON is null
  inner join dbo.REVENUESPLIT_EXT COMMITMENTLINEITEMAPPINFO with (nolock) on COMMITMENTLINEITEM.ID = COMMITMENTLINEITEMAPPINFO.ID
    and (
      PAYMENTLINEITEM.SOURCELINEITEMID = COMMITMENTLINEITEMAPPINFO.ID
      or (
        COMMITMENTLINEITEMAPPINFO.DESIGNATIONID = D.ID
        and PAYMENTLINEITEM.SOURCELINEITEMID is null
        )
      )
  where COMMITMENT.ID = @DONORCLAIMID
    and (
      D.DESIGNATIONLEVEL1ID = @PURPOSEID
      or D.DESIGNATIONLEVEL2ID = @PURPOSEID
      or D.DESIGNATIONLEVEL3ID = @PURPOSEID
      or D.DESIGNATIONLEVEL4ID = @PURPOSEID
      or D.DESIGNATIONLEVEL5ID = @PURPOSEID
      );

  with PAYMENTS_CTE
  as (
    select ISP.PAYMENTID
      ,ISP.PLEDGEID
      ,SUM(ISP.AMOUNT) AMOUNT
    from dbo.INSTALLMENTSPLITPAYMENT ISP with (nolock)
    where ISP.PLEDGEID = @DONORCLAIMID
    group by ISP.PLEDGEID
      ,ISP.PAYMENTID
    )
  select @PAYMENTS = (
      select top 6 [PAYMENTID] = PAYMENT.ID
        ,[DATE] = cast(PAYMENT.[DATE] as datetime)
        ,[GIVENANONYMOUSLY] = PAYMENT_EXT.GIVENANONYMOUSLY
        ,[AMOUNT] = SUM(ISP.AMOUNT)
        ,[DESIGNATION] = dbo.UDA_BUILDLIST(distinct D.USERID)
        ,[BASECURRENCYID] = null
        ,[TRANSACTIONCURRENCYID] = @TRANSACTIONCURRENCYID
      from dbo.FINANCIALTRANSACTION PAYMENT with (nolock)
      inner join dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTLINEITEM with (nolock) on PAYMENT.ID = PAYMENTLINEITEM.FINANCIALTRANSACTIONID
        and PAYMENT.TYPECODE = 0
        and PAYMENT.DELETEDON is null
      inner join PAYMENTS_CTE ISP on PAYMENTLINEITEM.ID = ISP.PAYMENTID
        and PAYMENTLINEITEM.DELETEDON is null
      inner join dbo.REVENUE_EXT PAYMENT_EXT with (nolock) on PAYMENT.ID = PAYMENT_EXT.ID
      inner join dbo.REVENUESPLIT_EXT PAYMENTAPPINFO with (nolock) on PAYMENTLINEITEM.ID = PAYMENTAPPINFO.ID
      inner join dbo.DESIGNATION D with (nolock) on PAYMENTAPPINFO.DESIGNATIONID = D.ID
      inner join dbo.FINANCIALTRANSACTION COMMITMENT with (nolock) on ISP.PLEDGEID = COMMITMENT.ID
        and COMMITMENT.DELETEDON is null
      inner join dbo.FINANCIALTRANSACTIONLINEITEM COMMITMENTLINEITEM with (nolock) on COMMITMENT.ID = COMMITMENTLINEITEM.FINANCIALTRANSACTIONID
        and COMMITMENTLINEITEM.DELETEDON is null
      inner join dbo.REVENUESPLIT_EXT COMMITMENTLINEITEMAPPINFO with (nolock) on COMMITMENTLINEITEM.ID = COMMITMENTLINEITEMAPPINFO.ID
        and (
          PAYMENTLINEITEM.SOURCELINEITEMID = COMMITMENTLINEITEMAPPINFO.ID
          or (
            COMMITMENTLINEITEMAPPINFO.DESIGNATIONID = D.ID
            and PAYMENTLINEITEM.SOURCELINEITEMID is null
            )
          )
      where COMMITMENT.ID = @DONORCLAIMID
        and (
          D.DESIGNATIONLEVEL1ID = @PURPOSEID
          or D.DESIGNATIONLEVEL2ID = @PURPOSEID
          or D.DESIGNATIONLEVEL3ID = @PURPOSEID
          or D.DESIGNATIONLEVEL4ID = @PURPOSEID
          or D.DESIGNATIONLEVEL5ID = @PURPOSEID
          )
      group by PAYMENT.ID
        ,cast(PAYMENT.[DATE] as datetime)
        ,PAYMENT_EXT.GIVENANONYMOUSLY
      order by [DATE] desc
        ,[AMOUNT] desc
      for xml raw('ITEM')
        ,type
        ,elements
        ,root('PAYMENTS')
        ,binary BASE64
      )

  set @PAYMENTS = isnull(@PAYMENTS, '<PAYMENTS></PAYMENTS>')

  return 0;
end