UFN_MEMBERSHIPLEVELTERM_GETAMOUNTINCURRENCY

Returns the amount of the given membership level term in the given currency.

Return

Return Type
money

Parameters

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

Definition

Copy


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

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

        select
            @RECORDBASECURRENCYID = MEMBERSHIPLEVELTERM.BASECURRENCYID,
            @RECORDDATE = MEMBERSHIPLEVELTERM.DATEADDED
        from
            dbo.MEMBERSHIPLEVELTERM
        where
            MEMBERSHIPLEVELTERM.ID = @MEMBERSHIPLEVELTERMID;

        if @CURRENCYID = @RECORDBASECURRENCYID
        begin
            select
                @AMOUNT = MEMBERSHIPLEVELTERM.AMOUNT
            from
                dbo.MEMBERSHIPLEVELTERM
            where
                MEMBERSHIPLEVELTERM.ID = @MEMBERSHIPLEVELTERMID;
        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(MEMBERSHIPLEVELTERM.ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID)
                from
                    dbo.MEMBERSHIPLEVELTERM
                where
                    MEMBERSHIPLEVELTERM.ID = @MEMBERSHIPLEVELTERMID;
            end
            else
            begin
                set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @RECORDDATE, 1, null);

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

    return @AMOUNT;
end