UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGESPLITGROSSAMOUNT_2

Calculate pledge split gross amount with currency

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@PLEDGESPLITID uniqueidentifier IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


      CREATE function dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGESPLITGROSSAMOUNT_2
            (
                @PLEDGESPLITID uniqueidentifier,
        @CURRENCYID uniqueidentifier
            )
            returns money
            with execute as caller
            as begin

      declare @PLEDGESPLITGROSSAMOUNT money

if @CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
      begin

                select
                    @PLEDGESPLITGROSSAMOUNT = FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT
          + coalesce(TAXCLAIM.BASETAXCLAIMAMOUNT + TAXCLAIM.TRANSITIONALTAXCLAIMAMOUNT, 0)
                from dbo.FINANCIALTRANSACTIONLINEITEM
                cross apply dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(@PLEDGESPLITID,2) as TAXCLAIM
                where FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID   
      end
      --else if @CURRENCYID = (select REVENUESPLIT.BASECURRENCYID from dbo.REVENUESPLIT where REVENUESPLIT.ID = @PLEDGESPLITID)

      else if @CURRENCYID = (select CURRENCYSET.BASECURRENCYID
        from dbo.FINANCIALTRANSACTIONLINEITEM inner join DBO.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
        inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
        inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
        where FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID)
      begin

        select
                    @PLEDGESPLITGROSSAMOUNT = FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT
          + coalesce(TAXCLAIM.BASETAXCLAIMAMOUNT + TAXCLAIM.TRANSITIONALTAXCLAIMAMOUNT, 0)
                  from dbo.FINANCIALTRANSACTIONLINEITEM
                  cross apply dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(@PLEDGESPLITID,0) as TAXCLAIM
                  where FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID
      end
      else if @CURRENCYID = (select FINANCIALTRANSACTION.TRANSACTIONCURRENCYID 
        from dbo.FINANCIALTRANSACTIONLINEITEM inner join FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
        where FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID)
      begin

            select
                      @PLEDGESPLITGROSSAMOUNT = FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT
            + coalesce(TAXCLAIM.BASETAXCLAIMAMOUNT + TAXCLAIM.TRANSITIONALTAXCLAIMAMOUNT, 0)
                    from dbo.FINANCIALTRANSACTIONLINEITEM
                    cross apply dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(@PLEDGESPLITID,1) as TAXCLAIM
                    where FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID


     end
     else
     begin
     select
                    @PLEDGESPLITGROSSAMOUNT = FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT
          + coalesce(TAXCLAIM.BASETAXCLAIMAMOUNT + TAXCLAIM.TRANSITIONALTAXCLAIMAMOUNT, 0)
                from dbo.FINANCIALTRANSACTIONLINEITEM
                cross apply dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(@PLEDGESPLITID,2) as TAXCLAIM
                where FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID

         declare @RECORDDATE date = (select FINANCIALTRANSACTION.DATE from dbo.FINANCIALTRANSACTIONLINEITEM 
                                  inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
                                  where FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID);


          declare @CURRENCYEXCHANGERATEID uniqueidentifier;
                  set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @CURRENCYID, @RECORDDATE, 1, null);
                  if (@CURRENCYEXCHANGERATEID is not null)
          begin
              set @PLEDGESPLITGROSSAMOUNT =  dbo.UFN_CURRENCY_CONVERT(@PLEDGESPLITGROSSAMOUNT, @CURRENCYEXCHANGERATEID)
          end
          else
                  begin
                    set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @RECORDDATE, 1, null);
                    set @PLEDGESPLITGROSSAMOUNT =  dbo.UFN_CURRENCY_CONVERTINVERSE(@PLEDGESPLITGROSSAMOUNT, @CURRENCYEXCHANGERATEID)
          end


     end
                return @PLEDGESPLITGROSSAMOUNT

    end