Skip to Main Content
Return to Navigation

Understanding Currencies and Market Rates

PeopleSoft applications offer a core set of objects (fields, tables, work records, pages, and PeopleCode functions), as well as a recommended set of standard techniques and formulas to support a common approach to converting currency throughout PeopleSoft applications and to define and store market rates. Market rate is a generic term for a currency exchange rate, an interest rate, or a future rate.

This section provides overviews of:

Understanding Currency and Market Rate Tables

The following tables store currency and market rate data:

  • CURRENCY_CD_TBL

    Stores currency code data.

  • CURR_QUOTE_PNL

    Stores currency quotation method data.

  • RT_INDEX_TBL

    Stores market rate index data.

  • RT_TYPE_TBL

    Stores rate type data.

  • RT_RATE_TBL

    Stores market rate data.

Understanding Triangulation

Triangulation is the process by which a conversion between two currencies takes place by way of a third reference currency. This process may be used in hyperinflationary environments, where all conversions to the local currency are done by way of a stronger, more stable currency. This process may also be used when a country is undergoing a currency revaluation.

To support triangulation, the PeopleSoft system provides a means to define that you want a currency pair to triangulate through a fixed reference currency. The actual conversion process is done in a two-step procedure in which the from-currency amount is first converted to the reference currency and then to the destination currency, using the appropriate exchange rates. Supporting triangulation also affects the user interface, as there are now two or possibly three exchange rates that are relevant to the conversion. When viewing a triangulated conversion at a detailed level, users access three visual rates:

  • A rate for converting the from-currency to the reference currency.

  • A rate for converting the reference currency to the to-currency.

  • A cross rate indicating the rate that would be required to convert the from-currency directly into the to-currency.

The cross rate in a triangulated conversion is not typically maintained directly. The system enables you to maintain those non-triangulated rates that are components of the triangulated rate, then run a process to generate the triangulated exchange rate. However, you can override the cross rate, which causes one of the other exchange rate values to be recalculated to synchronize it with the overridden cross rate.

For example, suppose an implementation was using triangulation to convert from USD to FRF. You would directly maintain the visual rate from the USD to euros (1.25 in the example table) and rate from euros to FRF (6.8 in the example table). You could then run the EOP_RATECALC application engine process to derive the triangulated rate for converting from USD to FRF. The results are shown in the following table:

Currency Pair

Quote Method

Quote Units

Primary Visual Rate

RATE_MULT

RATE_DIV

USD to Euro

Indirect

1

1.25

1

1.25

Euro to FRF

Direct

1

6.8

6.8

1

USD to FRF

Direct/Triangulate/Euro

1

5.44

6.8

1.25

When performing the actual conversion, applications interpret the visual rates into RATE_MULT and RATE_DIV values based on the quotation method for the exchange, then use the RATE_MULT and RATE_DIV values stored in the Market Rates Data table in the currency conversion formula, either by accessing the values directly or by calling the ConvertCurrency PeopleCode function.

Note: For information on how a specific application supports maintenance of triangulated exchange rates, see the documentation for that application.

Understanding Conversion Factor Fields and the Visual Rate

Support for both direct and indirect currency quotations creates a potential for complex currency conversion formulas in applications. To avoid excess conditional logic in the conversion formula, the PeopleSoft system provides two fields to store the conversion factor, RATE_MULT and RATE_DIV. The rate that you enter is called the visual rate. This visual rate is generally stored in either RATE_MULT or RATE_DIV, based on the quote method. The quote units are stored in whichever field does not contain the visual rate. As a result, the formula for currency conversion remains consistent:

(from-currency / RATE_DIV) × RATE_MULT = to-currency

This formula is also used for currency conversion in PeopleCode programs for online processing, as well as in SQR and COBOL processes.

The following table shows a few basic examples of how visual rates are transformed into RATE_MULT and RATE_DIV, according to the quote method and quote units for the currency pair:

Currency Pair

Quote Method

Quote Units

Primary Visual Rate

RATE_MULT

RATE_DIV

USD to GBP

Indirect

1

1.6

1

1.6

GBP to USD

Direct

1

1.6

1.6

1

DEM to CHF

Indirect

100

119.335

100

119.335

CHF to DEM

Direct

100

119.335

119.335

100

USD to Euro

Indirect

1

1.25

1

1.25

Euro to FRF

Direct

1

6.8

6.8

1

USD to FRF

Direct/Triangulate/Euro

1

5.44

6.8

1.25

FRF to Euro

Indirect

1

6.8

1

6.8

Euro to USD

Direct

1

1.25

1.25

1

FRF to USD

Indirect/Triangulate/Euro

1

5.44

1.25

6.8

In all cases, the visual rate for a currency pair remains the same, regardless of the direction. This is consistent with business standards. For a direct quoted rate, you multiply by the visual rate; therefore the visual rate goes into RATE_MULT and 1 (or the quote units) goes into RATE_DIV. For an indirect quoted rate, you divide by the visual rate; therefore the visual rate goes into RATE_DIV and 1 (or the quote units) goes into RATE_MULT.

The following examples show indirect quotation, direct quotation with quote units, and triangulation:

100 USD to GBP (indirect) = (100 USD / 1.6) × 1 = 62.50 GBP

1000 CHF to DEM (direct with units) = (1000 CHF / 100) × 119.335 = 1193.35 DEM

100 USD to FRF (triangulate) = (100 USD / 1.25) × 6.8 = 544 FRF

Understanding Application-Specific Requirements for Currency Conversion

Each application that shows a visual rate on a page must have an application-specific work record to hold the visual rate and the associated PeopleCode; this can be an existing work record. The suggested name for the field is VISUAL_RATE. The work record should also have a field to store the original rate for purposes of tolerance checking.

The application also typically provides an application-specific table to store RATE_MULT and RATE_DIV values that are stored on the database.

Application-specific PeopleCode needs to format work record fields and call the common functions in various circumstances, such as RowInit or FieldChange on the currency or visual rate.

See Also