Go to primary content
Oracle® Retail POS Suite Implementation Guide, Volume 1 – Implementation Solutions
Release 14.1
E54475-02
  Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
 
Next
Next
 

8 Changing and Configuring Currencies

This chapter describes how to change currencies as well as configure new currencies.

Alternate Currencies

Point-of-Service is configured to support 50 alternate currency tenders. If more currencies need to be supported, make the following updates:

  1. Update the maxAlternateCurrencies property in the application.properties file.

  2. Add the buttons for the additional currencies in the foreigncurrency.xml file. The number of defined buttons must equal the total number of supported currencies.

Changing Currency

To switch to another base and alternate currency, perform the following steps:

  1. Set the base currency flag in the primary currency of the currency table. For example, if EUR is the base currency:

    update co_cny set FL_CNY_BASE='1' where DE_CNY='EUR'
    
  2. Remove the base currency flag from any other currencies in that table, for example:

    update co_cny set FL_CNY_BASE = '0' where DE_CNY <> 'EUR'
    
  3. Enforce ordering so that the primary currency is first and the alternate currency is second for the AI_CNY_PRI column in the currency table. Other rows should be ordered, but the specific order is not important. For example, if EUR is base currency and GBP is the alternate:

    update co_cny set AI_CNY_PRI=0 where DE_CNY='EUR' 
    update co_cny set AI_CNY_PRI=1 where DE_CNY='GBP' 
    update co_cny set AI_CNY_PRI=2 where DE_CNY='USD' 
    update co_cny set AI_CNY_PRI=3 where DE_CNY='CAD' 
    update co_cny set AI_CNY_PRI=4 where DE_CNY='MXN' 
    update co_cny set AI_CNY_PRI=5 where DE_CNY='JPY'
    
  4. Add the store safe tenders supported for the new base and alternate currencies. For example, if EUR is the new base currency, add money order tender support for EUR:

    insert into le_tnd_str_sf
    (ID_RPSTY_TND, TY_TND, TY_SB_TND, LU_CNY_ISSG_CY, TS_CRT_RCRD, TS_MDF_RCRD, ID_CNY_ICD )
    VALUES ('1','MNYO', ' ', 'EU', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 5);
    

    Remove the store safe tenders that are no longer supported for the old base/alternate currency. For example, if USD if the old base currency, remove money order tender support for USD:

    delete from le_tnd_str_sf where LU_CNY_ISSG_CY = 'US' and TY_TND = 'MNYO';
    
  5. Add exchange rate records for alternate and base currencies into the CO_RT_EXC table based on the new base currency. Delete all exchange rate records based on any previous base currency.

There are some application parameters that must be changed as well:

  • Tender Group:

    • CashAccepted: For example, if EUR is base and GBP is alternate, make sure that the CashAccepted parameter is changed so that EUR and GBP are selected.

    • TravelersChecksAccepted: For EUR as base and GBP as alternate, the values for the TravelersChecksAccepted parameter should be EURCHK and GBPCHK.

    • ChecksAccepted: For EUR as base and GBP as alternate, the values for the ChecksAccepted parameter should be EURCHK and GBPCHK.

    • GiftCertificateAccepted: Change the values to reflect all the currencies accepted (base and alternate). For example the values may be EUR and GBP, or EUR, GBP and USD.

    • StoreCreditAccepted: Change the values to reflect all the currencies accepted (base and alternate). For example the values may be EUR and GBP, or EUR, GBP and USD.

  • Reconciliation Group:

    • TendersToCountAtTillReconcile: For EUR as base and GBP as alternate, the values for the TendersToCountAtTillReconcile parameter should be:

      • Cash

      • Check

      • Credit

      • Debit

      • TravelCheck

      • GiftCert

      • Coupon

      • GiftCard

      • StoreCredit

      • MallCert

      • PurchaseOrder

      • MoneyOrder

      • GBPCash

      • GBPTravelCheck

      • GBPCheck

      • GBPGiftCert

      • GBPStoreCredit

Configuring a New Base Currency

Throughout this section, Krona is used as the example new base currency that is being configured. The Krona currency code is SEK, and the issuing country code is SE.

Currency SQL Configuration

The following SQL configurations for currency are available.

Currency Table CO_CNY

A new record describing the new currency information such as its currency code, issuing country code and so on, must be inserted into this table.

In the base currency flag column FL_CNY_BASE, the new currency must be set to 1 indicating that it is the base. The flag for other currencies must be set to 0, indicating that they are alternate currencies.


Note:

Point-of-Service supports base-plus-one alternate currency. The priority column AI_CNY_PRI must be set to 0 for the new base currency. It must be set to 1 for the supported alternate currency. For other alternate currencies, they must be ordered and greater than 1, but the specific order is not important.

Example 8-1 Add Krona as Base to Currency Table CO_CNY

INSERT INTO CO_CNY
(ID_CNY_ICD, LU_CNY_ISSG_CY, CD_CNY_ISO, DE_CNY, DE_CNY_ISSG_NAT, FL_CNY_BASE, QU_CNY_SCLE, AI_CNY_PRI)
VALUES (7,'SE', 'SEK', 'SEK', 'Sweden', '1', 2, 0);
 
UPDATE CO_CNY
SET FL_CNY_BASE = '0'
WHERE CD_CNY_ISO <> 'SEK';
 
UPDATE CO_CNY
SET AI_CNY_PRI = AI_CNY_PRI + 1
WHERE CD_CNY_ISO <> 'SEK'; 

Currency Denomination Table CO_CNY_DNM and I8 Table CO_CNY_DNM_I8

Denominations for the new base currency must be added to the CO_CNY_DNM and CO_CNY_DNM_I8 tables. For example:

Example 8-2 Add Krona Denominations to Denomination Table CO_CNY_DNM

INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 1, 'SE_50Ores', '0.50', 1);
 
INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 2, 'SE_1Kronas', '1.00', 2);
 
INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 3, 'SE_5Kronas', '5.00', 3);
 
INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 4, 'SE_10Kronas', '10.00', 4);
 
INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 5, 'SE_20Kronas', '20.00', 5);
 
INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 6, 'SE_50Kronas', '50.00', 6);
 
INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 7, 'SE_100Kronas', '100.00', 7);
 
INSERT INTO CO_CNY_DNM
(ID_CNY_ICD, ID_CNY_DNM, NM_DNM, VL_DNM, CD_DNM_DPLY_PRI)
VALUES (7, 8, 'SE_1000Kronas', '1000.00', 8);

Example 8-3 Add Krona Denominations to I8 Table CO_CNY_DNM_I8

INSERT INTO CO_CNY_DNM_I8
(ID_CNY_ICD, ID_CNY_DNM, LCL, NM_DNM)
VALUES (7, 2,'en','1 Kronas');
 
INSERT INTO CO_CNY_DNM_I8
(ID_CNY_ICD, ID_CNY_DNM, LCL, NM_DNM)
VALUES (7, 2,'fr','1 couronne');

Note:

For each denomination record in the CON_CNY_DNM table, there are I8 records in the CO_CNY_DNM_I8 table, one for each supported language.

Exchange Rate Table CO_RT_EXC

Add exchange rate records for alternate and base currencies into the CO_RT_EXC table based on the new base currency. Delete all exchange rate records based on any previous base currency. For example:

Example 8-4 Add Alternate Currency Exchange Rates to Krona

-- Delete all the existing records
Delete from CO_RT_EXC;
 
INSERT INTO CO_RT_EXC
(LL_CNY_EXC, DC_RT_EXC_EF, DC_RT_EXC_EP, ID_CNY_ICD, MO_RT_TO_BUY, MO_RT_TO_SL, MO_FE_SV_EXC)
VALUES(0.00, TO_DATE('1990-01-01', 'YYYY-MM-DD'), TO_DATE('2099-12-31', 'YYYY-MM-DD'), 1, 6.3337, 6.3362, 0.00);
 
INSERT INTO CO_RT_EXC
(LL_CNY_EXC, DC_RT_EXC_EF, DC_RT_EXC_EP, ID_CNY_ICD, MO_RT_TO_BUY, MO_RT_TO_SL, MO_FE_SV_EXC)
VALUES(0.00, TO_DATE('1990-01-01', 'YYYY-MM-DD'), TO_DATE('2099-12-31', 'YYYY-MM-DD'), 2, 6.2849, 6.2898, 0.00);
 
INSERT INTO CO_RT_EXC
(LL_CNY_EXC, DC_RT_EXC_EF, DC_RT_EXC_EP, ID_CNY_ICD, MO_RT_TO_BUY, MO_RT_TO_SL, MO_FE_SV_EXC)
VALUES(0.00, TO_DATE('1990-01-01', 'YYYY-MM-DD'), TO_DATE('2099-12-31', 'YYYY-MM-DD'), 3, 0.5799, 0.5816, 0.00);
 
INSERT INTO CO_RT_EXC
(LL_CNY_EXC, DC_RT_EXC_EF, DC_RT_EXC_EP, ID_CNY_ICD, MO_RT_TO_BUY, MO_RT_TO_SL, MO_FE_SV_EXC)
VALUES(0.00, TO_DATE('1990-01-01', 'YYYY-MM-DD'), TO_DATE('2099-12-31', 'YYYY-MM-DD'), 4, 12.434, 12.441, 0.00);
 
INSERT INTO CO_RT_EXC
(LL_CNY_EXC, DC_RT_EXC_EF, DC_RT_EXC_EP, ID_CNY_ICD, MO_RT_TO_BUY, MO_RT_TO_SL, MO_FE_SV_EXC)
VALUES(0.00, TO_DATE('1990-01-01', 'YYYY-MM-DD'), TO_DATE('2099-12-31', 'YYYY-MM-DD'), 5, 9.3739, 9.3796, 0.00);
 
INSERT INTO CO_RT_EXC
(LL_CNY_EXC, DC_RT_EXC_EF, DC_RT_EXC_EP, ID_CNY_ICD, MO_RT_TO_BUY, MO_RT_TO_SL, MO_FE_SV_EXC)
VALUES(0.00, TO_DATE('1990-01-01', 'YYYY-MM-DD'), TO_DATE('2099-12-31', 'YYYY-MM-DD'), 6, 0.05782, 0.05786, 0.00);
 
INSERT INTO CO_RT_EXC
(LL_CNY_EXC, DC_RT_EXC_EF, DC_RT_EXC_EP, ID_CNY_ICD, MO_RT_TO_BUY, MO_RT_TO_SL, MO_FE_SV_EXC)
VALUES(0.00, TO_DATE('1990-01-01', 'YYYY-MM-DD'), TO_DATE('2099-12-31', 'YYYY-MM-DD'), 7, 1.0, 1.0, 0.00);

Store Safe Tender Table LE_TND_STR_SF

Add the store safe tenders supported for the new base currency. For example:

Example 8-5 Add Store Safe Tenders for Krona

INSERT INTO LE_TND_STR_SF
    ( ID_RPSTY_TND, TY_TND, TY_SB_TND, LU_CNY_ISSG_CY, TS_CRT_RCRD, TS_MDF_RCRD, ID_CNY_ICD )
    VALUES('1','CASH', ' ', 'SE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 7);
INSERT INTO LE_TND_STR_SF
    ( ID_RPSTY_TND, TY_TND, TY_SB_TND, LU_CNY_ISSG_CY, TS_CRT_RCRD, TS_MDF_RCRD, ID_CNY_ICD )
    VALUES('1','CHCK', ' ', 'SE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 7);
INSERT INTO LE_TND_STR_SF
    ( ID_RPSTY_TND, TY_TND, TY_SB_TND, LU_CNY_ISSG_CY, TS_CRT_RCRD, TS_MDF_RCRD, ID_CNY_ICD )
    VALUES('1','TRAV', ' ', 'SE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 7);
 
-- MoneyOrderSafeTender
 
INSERT INTO LE_TND_STR_SF
(ID_RPSTY_TND, TY_TND, TY_SB_TND, LU_CNY_ISSG_CY, TS_CRT_RCRD, TS_MDF_RCRD, ID_CNY_ICD )
VALUES ('1','MNYO', ' ', 'SE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 7);

Money Order Tenders are only accepted for base currency, therefore before inserting records for the new base currency, delete any money order tenders for the other currencies:

DELETE * from LE_TND_STR_SF where ty_tnd='MNYO'

Parameter Configuration

The following tender parameters must be updated to include the new base currency:

  • StoreCreditsAccepted

  • ChecksAccepted

  • CashAccepted

  • GiftCertificatesAccepted

  • TravelersChecksAccepted

The reconciliation parameter TendersToCountAtTillReconcile parameter must include all the tenders to count for both base and alternate currencies during till reconciliation. For example:

Example 8-6 Parameters to Support Krona as the Base and USD as the Alternate Currency

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SOURCE PUBLIC "SOURCE"
"classpath://com/extendyourstore/foundation/tour/dtd/paramsourcescript.dtd">
<SOURCE name="register">
<GROUP hidden="N" name="Tender">
<PARAMETER final="N" hidden="N" name="StoreCreditsAccepted" type="LIST">
<VALIDATOR class="EnumeratedListValidator"
package="oracle.retail.stores.foundation.manager.parameter">
<PROPERTY propname="member" propvalue="None"/> 
<PROPERTY propname="member" propvalue="USD"/> 
<PROPERTY PROPNAME="MEMBER" PROPVALUE="SEK"/> 
<PROPERTY PROPNAME="MEMBER" PROPVALUE="EUR"/> 
</VALIDATOR>
<VALUE value="SEK"/>
<VALUE value="USD"/>
<VALUE value="EUR"/>
</PARAMETER>
<PARAMETER final="N" hidden="N" name="ChecksAccepted" type="LIST">
<VALIDATOR class="EnumeratedListValidator"
package="oracle.retail.stores.foundation.manager.parameter">
<PROPERTY propname="member" propvalue="None"/>
<PROPERTY propname="member" propvalue="USDCHK"/> 
<PROPERTY propname="member" propvalue="SEKCHK"/> 
<PROPERTY propname="member" propvalue="EURCHK"/> 
</VALIDATOR>
<VALUE value="SEKCHK"/>
<VALUE value="USDCHK"/>
</PARAMETER>
<PARAMETER final="N" hidden="N" name="CashAccepted" type="LIST">
<VALIDATOR class="EnumeratedListValidator"
package="oracle.retail.stores.foundation.manager.parameter">
<PROPERTY propname="member" propvalue="None"/>
<PROPERTY propname="member" propvalue="USD"/> 
<PROPERTY propname="member" propvalue="SEK"/> 
<PROPERTY propname="member" propvalue="EUR"/> 
</VALIDATOR>
<VALUE value="SEK"/>
<VALUE value="USD"/>
</PARAMETER>
<PARAMETER final="N" hidden="N" name="GiftCertificatesAccepted" type="LIST">
<VALIDATOR class="EnumeratedListValidator"
package="oracle.retail.stores.foundation.manager.parameter">
<PROPERTY propname="member" propvalue="None"/>
<PROPERTY propname="member" propvalue="USD"/>
<PROPERTY propname="member" propvalue="SEK"/>
<PROPERTY propname="member" propvalue="EUR"/>
</VALIDATOR>
<VALUE value="SEK"/>
</PARAMETER>
<PARAMETER final="N" hidden="N" name="TravelersChecksAccepted" type="LIST">
<VALIDATOR class="EnumeratedListValidator"
package="oracle.retail.stores.foundation.manager.parameter">
<PROPERTY propname="member" propvalue="None"/>
<PROPERTY propname="member" propvalue="USDCHK"/>
<PROPERTY propname="member" propvalue="SEKCHK"/>
<PROPERTY propname="member" propvalue="EURCHK"/>
</VALIDATOR>
<VALUE value="SEKCHK"/>
<VALUE value="USDCHK"/>
Configuring a New Base Currency
Appendix: Changing and Configuring a New Base Currency D-7
</PARAMETER>
</GROUP>
<GROUP hidden="N" name="Reconciliation">
<PARAMETER final="N" hidden="N" name="TendersToCountAtTillReconcile" type="LIST">
<VALIDATOR class="EnumeratedListValidator"
package="oracle.retail.stores.foundation.manager.parameter">
<PROPERTY propname="member" propvalue="Cash"/>
<PROPERTY propname="member" propvalue="Check"/>
<PROPERTY propname="member" propvalue="ECheck"/>
<PROPERTY propname="member" propvalue="Credit"/>
<PROPERTY propname="member" propvalue="Debit"/>
<PROPERTY propname="member" propvalue="TravelCheck"/>
<PROPERTY propname="member" propvalue="GiftCert"/>
<PROPERTY propname="member" propvalue="Coupon"/>
<PROPERTY propname="member" propvalue="GiftCard"/>
<PROPERTY propname="member" propvalue="StoreCredit"/>
<PROPERTY propname="member" propvalue="MallCert"/>
<PROPERTY propname="member" propvalue="PurchaseOrder"/>
<PROPERTY propname="member" propvalue="MoneyOrder"/>
<PROPERTY propname="member" propvalue="USDCash"/>
<PROPERTY propname="member" propvalue="USDTravelCheck"/>
<PROPERTY propname="member" propvalue="USDCheck"/>
<PROPERTY propname="member" propvalue="USDGiftCert"/>
<PROPERTY propname="member" propvalue="USDStoreCredit"/>
</VALIDATOR>
<VALUE value="Cash"/>
<VALUE value="Check"/>
<VALUE value="ECheck"/>
<VALUE value="Credit"/>
<VALUE value="Debit"/>
<VALUE value="TravelCheck"/>
<VALUE value="GiftCert"/>
<VALUE value="Coupon"/>
<VALUE value="GiftCard"/>
<VALUE value="StoreCredit"/>
<VALUE value="MallCert"/>
<VALUE value="PurchaseOrder"/>
<VALUE value="MoneyOrder"/>
<VALUE value="USDCash"/>
<VALUE value="USDTravelCheck"/>
<VALUE value="USDCheck"/>
<VALUE value="USDGiftCert"/>
<VALUE value="USDStoreCredit"/>
</PARAMETER>
</GROUP>
</SOURCE>

Resource Bundle Configuration

New resource bundle keys that describe the new currency, including its issuing country, must be added to the following Point-of-Service resource bundles:

  • commonText

  • ejournalText

  • tillText

  • dailyOperationsText

  • parameterText

Example 8-7 New commonText Resource Bundle Keys

#
# Supported Nationalities
Common.SE_Nationality=Swedish
 
#
# Supported Currencies
Common.SEK=Swedish Krona
 
#
# Supported Checks
Common.SEKCHK=Swedish Krona

#
#  Tender Types
#
Common.SEKCash=SEK Cash
Common.SEKCheck=SEK Check
Common.SEKTravCheck=SEK Trav. Check

Example 8-8 New ejournalText Resource Bundle Keys

JournalEntry.SEK=SEK

Example 8-9 tillText Resource Bundle Keys

SelectTenderSpec.SelectSEK=SEK
 
Add example for dailyOperations Resource Bundle Keys: 
 
FinancialTotalsSummaryEntrySpec.CURRCODE_SE=SEK
 
Add example for parameterText Resource Bundle Keys:
Common.SEKCash=SEK Cash
Common.SEK TravelCheck=SEK  Traveler's Check
Common.SEK Check=SEK  Check
Common.SEK GiftCert=SEK  Gift Certificate
Common.SEK StoreCredit=SEK  Store Credit
Common.SEKGiftCard=SEK Gift Card