Target releaseRelease name or number
Epic Link to related JIRA epic or feature
Document status
Document ownerDayna Harp
DesignerLead designer
DevelopersLead developer
QALead tester

Overview

NOTE: THIS FUNCTIONAL SPEC IS IN PROGRESS AND IS NOT COMPLETE

Many customers work in different currencies, as the Mifos X platform evolves, more currencies will be exchanged per transaction.  Mifos X should have the ability to access an open source currency exchange platform that will provide the customers real time exchange values.  The customers will need the ability to charge a fee either as a percentage of transaction or flat fee for currency exchange.  The customers must be able to account for the exchange rates through the general ledger system.  The system must be able to generate a daily exchange settlement report, including exceptions.

 

Reference Materials:

 http://www.ifrs.org/documents/ias21.pdf

 https://openexchangerates.org/


We have customers who work in multiple currencies and need exchange capabilities within the Mifos X platform.

Teddhy Bamba of VIrtual-Reflex.com provided the following to handle currency exchange provision on Mifos X:

  1. Define base Currency. (this will help the system for currency exchange reference). 
    1. Ex : Roupi, dollars and Euro. If Roupi is define a base currency, Exchange will be done accordingly. So all Exchange transactions will done from a particular currency to base currency. EX: 1$ = 20R or 1Euro = 30R. 
  2. Set Exchange Rate.  Set Base rate; Selling rate and Purchase rate. - 
    1. Important :

      When setting Exchange rate for each currency (apart from base currency), we should input 3 rate values : Selling rate, Buying rate, intermediate rate. This because, when a customer wants Dollars instead of Roupi (selling  Rate(S.R) will be applied : most of time higher rate), But when customer has dollars and needs Roupi (buying rate (B.R)will be applied : most of time lower rate) and for Accounting calculation the system will use Intermediate rate. (I.R)

      So for each currency we need to have those 3 values.  Ex : Dollars :   S.R = 25 R , B.R = 20 and I.R = 15. This means : customer having 100 R and need Dollars will have 4 Dollars (100/S.R=100/25=4), customer having 10 dollars and need Roupi will have 200R (10*B.R=10*20=200).

  3. Accounting Process: 
    1. When making Exchange transaction here is the accounting schemas :

      As example above.

      customer needs to withdraw 10 Dollars in his Roupi Account. (so we are selling Dollars to the customer)

      Debit : customer account in roupi (withdrawal to be done by the cashier) = 250

      Credit : Exchange Account in roupi (to be posted by the system) = 250

      Debit : Exchange Account (to be posted by the system) = 250

      Credit : Calculated Exchange Account (to be posted by system) = 10

      Debit : Calculated Exchange Account (to be posted by system) = 10

      Credit : customer account in dollars (Deposit to be done by cashier) =10 (but Cashier should not type this amount manually system has to provide this calculated amount according to rate applied)

      In parallel, We will need to set the Exchange Gain Account in the Product Accounting Panel. Because the Exchange Gain should be posted this account (like fees are posted in appropriate account in current system). Exchange Gain is calculated by the system has defined in Point 2.

      Note : As you can see Cash is not impacted in the exchange processes. 

 

Background and strategic fit

 

 

Requirements/User Stories

#TitleUser StoryImportanceNotes
1Multi-currency reportingAs a financial analyst, I need to be able to display our operating currency (DOP) in another currency (USD) for monthly and quarterly reporting (gross portfolio, disbursements, savings balance, write-offs, principal repayments, income, etc.)Good to Have

Posted by Esperanza (Dominican Republic)

     

Business Rules

Any preconditions before a customer can use the new functionality

Any rules to be applied for a customer or user when using this functionality

Attributes

List of attributes to be captured for the new functionality

AttributeDescriptionNotes
   
   
   

Security and Permissions

List of security areas to be considered and permissions to be added/considered for a user/role to have access to this functionality 

Mifos Functionality Enhancements

New Screens

List of new screens required

Changes to Existing Screens

List of existing screens that need any kind of changes

Changes/Enhancements to Batch Jobs

Functional changes to Batch jobs that may be needed - along with suggested frequency at which it should be run for various scenarios

Changes/Enhancements to Accounting Entries

With sample accounting entries with dates

User interaction and design

Include any mockups, diagrams or visual designs relating to these requirements.

Exception Handling

List of error scenarios and the action - if message is to be displayed, then text of the message.

Reporting

List of changes/enhancements/new reports to support this functionality

APIs

From a functional perspective, list of new APIs needed.

From a functional perspective, list of existing APIs that need changes.

Notes

Points to be handled during upgrades

Any reference data that needs to be prepopulated or defaulted for customers/users

Questions

Below is a list of questions to be addressed as a result of this requirements document:

QuestionOutcome
(e.g. How we make users more aware of this feature?)Communicate the decision reached

Out of Scope