USP_DATAFORMTEMPLATE_VIEW_DONORINFORMATIONAUCTIONDONATIONDETAIL

Parameters

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

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_DONORINFORMATIONAUCTIONDONATIONDETAIL
(
  @ID nvarchar(73)
  ,@DATALOADED bit = 0 output
  ,@AUCTIONID uniqueidentifier = null output
  ,@GIVENANONYMOUSLY bit = null output
  ,@TOTALAUCTIONAMOUNT 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
  ,@WRITEOFFSTOTAL money = null output
  ,@WRITEOFFS xml = null output
  ,@TRANSACTIONCURRENCYID uniqueidentifier = null output
  )
as
begin
  set nocount on;
  set @DATALOADED = 0;

  declare @PURPOSEID uniqueidentifier = null;

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

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

  select @DATALOADED = 1
    ,@TOTALAUCTIONAMOUNT = FT.TRANSACTIONAMOUNT
    ,@BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID)
    ,@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
  left join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.ID = FT.PDACCOUNTSYSTEMID
  left join dbo.CURRENCYSET on CURRENCYSET.ID = PDACCOUNTSYSTEM.CURRENCYSETID
  where FT.ID = @AUCTIONID

  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
    ,D.USERID
    ,FTLI.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 FT
  inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.FINANCIALTRANSACTIONID = FT.ID
  inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = FTLI.ID
  inner join dbo.DESIGNATION D on D.ID = RSE.DESIGNATIONID
  where FT.ID = @AUCTIONID
    and FT.DELETEDON is null
    and FTLI.DELETEDON is null

  select @TOTALSPLITS = COUNT(distinct ID)
  from @designationttable

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

  set @WRITEOFFSTOTAL = (
      select sum(FTLI.TRANSACTIONAMOUNT) AMOUNT
      from dbo.FINANCIALTRANSACTION FT
      inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.FINANCIALTRANSACTIONID = FT.ID
      inner join dbo.REVENUESPLIT_EXT on FTLI.ID = REVENUESPLIT_EXT.ID
      inner join dbo.DESIGNATION on REVENUESPLIT_EXT.DESIGNATIONID = DESIGNATION.ID
      where FT.PARENTID = @AUCTIONID
        and FT.TYPECODE = 20 -- Write off
        and FT.DELETEDON is null
        and FTLI.DELETEDON is null
        and (
          DESIGNATION.DESIGNATIONLEVEL1ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL2ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL3ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL4ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL5ID = @PURPOSEID
          )
      )
  set @WRITEOFFS = (
      select top 6 FT.ID
        ,cast(FT.[DATE] as datetime) as date
        ,FTLI.TRANSACTIONAMOUNT AMOUNT
        ,DESIGNATION.USERID DESIGNATION
        ,isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID) BASECURRENCYID
        ,@TRANSACTIONCURRENCYID TRANSACTIONCURRENCYID
      from dbo.FINANCIALTRANSACTION FT
      inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.FINANCIALTRANSACTIONID = FT.ID
      inner join dbo.REVENUESPLIT_EXT on FTLI.ID = REVENUESPLIT_EXT.ID
      inner join dbo.DESIGNATION on REVENUESPLIT_EXT.DESIGNATIONID = DESIGNATION.ID
      left join dbo.REVENUE_EXT on FT.ID = REVENUE_EXT.ID
      left join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.ID = FT.PDACCOUNTSYSTEMID
      left join dbo.CURRENCYSET on CURRENCYSET.ID = PDACCOUNTSYSTEM.CURRENCYSETID
      where FT.PARENTID = @AUCTIONID
        and FT.TYPECODE = 20 -- Write off
        and FT.DELETEDON is null
        and FTLI.DELETEDON is null
        and (
          DESIGNATION.DESIGNATIONLEVEL1ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL2ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL3ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL4ID = @PURPOSEID
          or DESIGNATION.DESIGNATIONLEVEL5ID = @PURPOSEID
          )
      order by FT.[DATE] desc
      for xml raw('ITEM')
        ,type
        ,elements
        ,root('WRITEOFFS')
        ,binary BASE64
      )
  set @WRITEOFFS = isnull(@WRITEOFFS, '<WRITEOFFS></WRITEOFFS>')

  return 0;
end