UFN_DESIGNATIONLEVELRECIPIENT_GETAMOUNTINCURRENCY

Returns the amount of the given designation level recipient in the given currency.

Return

Return Type
money

Parameters

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

Definition

Copy


          CREATE function dbo.UFN_DESIGNATIONLEVELRECIPIENT_GETAMOUNTINCURRENCY
          (
              @DESIGNATIONLEVELRECIPIENTID uniqueidentifier,
              @CURRENCYID uniqueidentifier
          )
          returns money
          as
          begin
          declare @AMOUNT money = 0;

          if (@CURRENCYID is null) or (@CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY())
          begin
              select
                  @AMOUNT = DESIGNATIONLEVELRECIPIENT.ORGANIZATIONAMOUNT
              from
                  dbo.DESIGNATIONLEVELRECIPIENT
              where
                  DESIGNATIONLEVELRECIPIENT.ID = @DESIGNATIONLEVELRECIPIENTID;
          end
          else
          begin
              declare @RECORDBASECURRENCYID uniqueidentifier;
              declare @RECORDDATE datetime;

              select
                  @RECORDBASECURRENCYID = DESIGNATIONLEVELRECIPIENT.BASECURRENCYID,
                  @RECORDDATE = DESIGNATIONLEVELRECIPIENT.DATEADDED
              from
                  dbo.DESIGNATIONLEVELRECIPIENT
              where
                  DESIGNATIONLEVELRECIPIENT.ID = @DESIGNATIONLEVELRECIPIENTID;

              if @CURRENCYID = @RECORDBASECURRENCYID
              begin
                  select
                      @AMOUNT = DESIGNATIONLEVELRECIPIENT.AMOUNT
                  from
                      dbo.DESIGNATIONLEVELRECIPIENT
                  where
                      DESIGNATIONLEVELRECIPIENT.ID = @DESIGNATIONLEVELRECIPIENTID;
              end
              else
              begin
                  declare @CURRENCYEXCHANGERATEID uniqueidentifier;

                  set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @CURRENCYID, @RECORDDATE, 1, null);
                  if (@CURRENCYEXCHANGERATEID is not null)
                  begin
                      select
                          @AMOUNT = dbo.UFN_CURRENCY_CONVERT(DESIGNATIONLEVELRECIPIENT.ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID)
                      from
                          dbo.DESIGNATIONLEVELRECIPIENT
                      where
                          DESIGNATIONLEVELRECIPIENT.ID = @DESIGNATIONLEVELRECIPIENTID;
                  end
                  else
                  begin
                      set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @RECORDDATE, 1, null);

                      select
                          @AMOUNT = dbo.UFN_CURRENCY_CONVERTINVERSE(DESIGNATIONLEVELRECIPIENT.ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID)
                      from
                          dbo.DESIGNATIONLEVELRECIPIENT
                      where
                          DESIGNATIONLEVELRECIPIENT.ID = @DESIGNATIONLEVELRECIPIENTID;
                  end
              end
          end    

          return @AMOUNT;
      end