Foreign Currency Transactions: Difference between revisions

From OpenPetra Wiki
Jump to navigation Jump to search
Line 31: Line 31:


The internal currency exchange rate 1.3752 is the value for the other direction because I've changed the money in England. So the correct value is 0.727167.
The internal currency exchange rate 1.3752 is the value for the other direction because I've changed the money in England. So the correct value is 0.727167.
Let us start only by the exchange itself - no exchange fees are accounted - will result in the following data base entries.
[[File:Example-database-1.JPG]]
In this cases it is important to store the value of a_transaction_amount_n in the precision defined by the currency. This is done automatically. In case of switzerland the smalles coin is CHF 0.05 and so you cannot get only a multiple of it. No internal roundings are necessary.
Requirement: '''Do not round transaction amount values in any way'''
The next step is to calculate the accouting value base on the exchange rate and in our case this is the value of EUR 30.0068622476. Using the correct mathematical rounding rules I should have to pay EUR 30.01 for the GBP 21.82. 
Now GBP 21.82 is somewhere in a petty cash and EUR 30.01 is the value which is used by the accounting system to rate this money in base currency value. So the value of € 0.01 has to be additionaly accounted. The question is how to round the value of a_amount_in_base_currency_n. The answer is:
Requirement: '''Do not round base amount values in any way'''
Reason: Let us assume, that this is not the only change at this da. Three persons have changed their money and three persons means three cost centres.
a) Edith - c6000 - EUR 30,-
b) Charly - c6001 - EUR 30,-
b) Mary - c6002 - EUR 30,-
The sum is GBP 65.46 and the "reverse base currency value is EUR 90.02.
If you have to produce a detailed report, then you have to produce the output ...
{|
|-
| Person || Cost Centre || Foreign currency  || Base currency
|-
| Edith || c6000 || 21.82 || 30.01
|-
| Charly || c6001 || 21.82 || 30.01
|-
| Mary || c6002 || 21.82 || 30.01
|-
| All || . || 65.46 || 90.02
|}

Revision as of 13:38, 28 February 2011

Transactions between base currency account and base currency account are as trivial as transactions between foreign currency accounts of the same currency. The most complex process is how to move above the border.

If we change the currency exchnage rate not for a transaction but an existing account, we have a Revaluation.

An Example Transaction

Voucher-currency-exchange.jpg

The best way is to get a look onto a voucher I've got by changing some money. I beg your pardon for the bad quality but is was meant to be for private use only. That was no business money.

This voucher tells us: I have changed € 30.00 into £ 21.82. The exchange rate was 1.3752 and there was a fee of £ 2.50. I'm comming form Germany and so let us assume that the base currency of my accounting system is Euro.

In order to run this accounting problem properly open petra provides an account named "Internal Transfer" and the account number is 9800.

Let us assume that we have two accounts

  1. 6000 Petty Cash Euro
  2. 6001 Petty Cash British Pound

Then we have to create a batch containing a journal in EUR and a journal in GBP. Then we have to account:

  1. 6000 Petty Cash € - Credit: € 30.00
  2. 9800 Internal Transfer € - Debit: € 30.00

This moves the € 30.00 to the Transfer-Account and then

  1. 9800 Internal Transfer € - Credit: £ 21.82
  2. 6001 Petty Cash £ - Debit: £ 21.82

moves the "pound" to the £ Petty Chash Account.

The internal currency exchange rate 1.3752 is the value for the other direction because I've changed the money in England. So the correct value is 0.727167.

Let us start only by the exchange itself - no exchange fees are accounted - will result in the following data base entries.

Example-database-1.JPG

In this cases it is important to store the value of a_transaction_amount_n in the precision defined by the currency. This is done automatically. In case of switzerland the smalles coin is CHF 0.05 and so you cannot get only a multiple of it. No internal roundings are necessary.

Requirement: Do not round transaction amount values in any way

The next step is to calculate the accouting value base on the exchange rate and in our case this is the value of EUR 30.0068622476. Using the correct mathematical rounding rules I should have to pay EUR 30.01 for the GBP 21.82.

Now GBP 21.82 is somewhere in a petty cash and EUR 30.01 is the value which is used by the accounting system to rate this money in base currency value. So the value of € 0.01 has to be additionaly accounted. The question is how to round the value of a_amount_in_base_currency_n. The answer is:

Requirement: Do not round base amount values in any way

Reason: Let us assume, that this is not the only change at this da. Three persons have changed their money and three persons means three cost centres.

a) Edith - c6000 - EUR 30,- b) Charly - c6001 - EUR 30,- b) Mary - c6002 - EUR 30,-

The sum is GBP 65.46 and the "reverse base currency value is EUR 90.02.

If you have to produce a detailed report, then you have to produce the output ...

Person Cost Centre Foreign currency Base currency
Edith c6000 21.82 30.01
Charly c6001 21.82 30.01
Mary c6002 21.82 30.01
All . 65.46 90.02