Annotation: transactions.get_exchange_rate

CREATE OR REPLACE FUNCTION transactions.get_exchange_rate(office_id integer, currency_code character varying)
RETURNS decimal_strict2

Information: transactions.get_exchange_rate

Schema transactions
Function Name get_exchange_rate
Arguments office_id integer, currency_code character varying
Owner postgres
Result Type decimal_strict2
Description

Implementation: transactions.get_exchange_rate

CREATE OR REPLACE FUNCTION transactions.get_exchange_rate(office_id integer, currency_code character varying)
 RETURNS decimal_strict2
 LANGUAGE plpgsql
AS $function$
    DECLARE _local_currency_code national character varying(12)= '';
    DECLARE _unit integer_strict2 = 0;
    DECLARE _exchange_rate decimal_strict2=0;
BEGIN
    SELECT office.offices.currency_code
    INTO _local_currency_code
    FROM office.offices
    WHERE office.offices.office_id=$1;

    IF(_local_currency_code = $2) THEN
        RETURN 1;
    END IF;

    SELECT unit, exchange_rate
    INTO _unit, _exchange_rate
    FROM core.exchange_rate_details
    INNER JOIN core.exchange_rates
    ON core.exchange_rate_details.exchange_rate_id = core.exchange_rates.exchange_rate_id
    WHERE core.exchange_rates.office_id=$1
    AND foreign_currency_code=$2;

    IF(_unit = 0) THEN
        RETURN 0;
    END IF;
    
    RETURN _exchange_rate/_unit;    
END
$function$