Mifos Configuration Project Stories
- 1 Mifos Configuration Project Stories
- 1.1 Project Velocity
- 1.2 Lookup Values (Customizable Value Lists) UI
- 1.2.1 Description
- 1.2.2 Estimate
- 1.2.3 Actual
- 1.2.4 Tests
- 1.2.5 Developer Notes
- 1.3 Custom Fields UI (View Fields)
- 1.3.1 Description
- 1.3.2 Estimate
- 1.3.3 Actual
- 1.3.4 Developer Notes
- 1.4 Custom Fields UI (Add/Edit Fields)
- 1.4.1 Description
- 1.4.2 Estimate
- 1.4.3 Tests
- 1.4.4 Developer Notes
- 1.5 Accepted Payment Types UI
- 1.5.1 Description
- 1.5.2 Estimate
- 1.5.3 Tests
- 1.5.4 Developer Notes
- 1.6 Move General Ledger code definitions to a separate config file
- 1.6.1 Description
- 1.6.2 Estimate
- 1.6.3 Tests
- 1.6.4 Developer Notes
- 1.7 Initial Investigation of Work Required for Localization
- 1.7.1 Description
- 1.7.2 Estimate
- 1.8 Move Accounting Rules to a separate config file
- 1.8.1 Description
- 1.8.2 Estimate
- 1.8.3 Tests
- 1.8.4 Developer Notes
- 1.9 Move Localization data to a separate config file
- 1.9.1 Description
- 1.9.2 Estimate
- 1.9.3 Tests
- 1.9.4 Developer Notes
- 1.10 Move Fiscal Year (Calendar?) Configuration data to a separate config file
- 1.10.1 Estimate
- 1.10.2 Tests
- 1.10.3 Developer Notes
- 1.11 Client Rules
- 1.11.1 Description
- 1.11.2 Estimate
- 1.11.3 Tests
- 1.11.4 Developer Notes
- 1.12 Process Flow/Optional States
- 1.12.1 Description
- 1.12.2 Estimate
- 1.12.3 Tests
- 1.12.4 Developer Notes
- 1.13 Collection Sheet Data configuration
- 1.13.1 Description
- 1.13.2 Estimate
- 1.13.3 Tests
- 1.13.4 Developer Notes
- 1.14 Misc Config
- 1.14.1 Description
- 1.14.2 Estimate
- 1.14.3 Tests
- 1.14.4 Developer Notes
- 1.15 Lateness/Dormancy
- 1.15.1 Description
- 1.15.2 Estimate
- 1.15.3 Tests
- 1.15.4 Developer Notes
- 1.16 View Organizational Settings UI
- 1.16.1 Description
- 1.16.2 Estimate
- 1.16.3 Tests
- 1.16.4 Developer Notes
Mifos Configuration Project Stories
Project Velocity
csv-table:::header: "Iteration","Week Ending","Velocity","Total Points","Remaining Points","Avg. Velocity"
:widths: 10, 10, 10, 12, 15, 15
1,06/15/07,0,0,73.5,0 2,06/29/07,0,0,73.5,0 3,07/13/07,15,15,58.5,5 4,07/27/07,7,22,51.5,5.5 5,08/12/07,10,32,41.5,6.4 6,08/26/07,0,32,41.5,5.33 7,09/09/07,8,40,33.5,5.71 8,09/23/07,7,47,26.5,5.88 9,10/07/07,4,51,22.5,5.67 10,10/21/07,4,55,18.5,5.5
This project is now using a 2 week iteration schedule. We track the number of story points completed per iteration (velocity), cumulative (total) points, and average number of points completed per iteration (average velocity).
Lookup Values (Customizable Value Lists) UI
Description
Implement UI according to mockup.
Estimate
Estimate 2: 12 points + 3 points for updated UIEstimate 1: 12 points
Actual
20 days
Tests
list values from database display correctly on page load
label values from database display correctly on page load
edited list value is updated in database
added list value is added to database
Developer Notes
To Do _ add support for creating and updating lookup value classes _ define CustomValueListsActionTest _ define CustomValueListsActionForm _ define CustomValueListsAction _ define CustomValueLists.jsp _ set up permissions
web page count: 1
Related code: *
LabelConfigurationAction,LabelConfigurationActionForm,LabelConfigurationActionTest,
/mifos/src/org/mifos/doc-root/application/configuration/jsp/definelabels.jsphave similar simple page flow.
loan product creation has similar list box controls
(/mifos/src/org/mifos/doc-root/application/productdefinition/jsp/CreateLoanProduct.jsp)
Custom Fields UI (View Fields)
Description
Implement UI according to mockup and specs to allow the viewing of existing custom fields.
Estimate
7 points
Actual
15 days
Developer Notes
web page count: 2
related classes: _ CustomFieldDefinitionEntity, CustomFieldType, CustomFieldView _ AccountCustomFieldEntity(used for AccountBO, LoanBO, SavingsBO) * CustomerCustomFieldEntity (used for CenterBO, ClientBO, GroupBO)
Custom Fields UI (Add/Edit Fields)
Description
Implement UI according to mockup and specs to allow adding and editing fields
Estimate
8 points
Tests
Developer Notes
web page count: 2
related classes: _ CustomFieldDefinitionEntity, CustomFieldType, CustomFieldView _ AccountCustomFieldEntity(used for AccountBO, LoanBO, SavingsBO) * CustomerCustomFieldEntity (used for CenterBO, ClientBO, GroupBO)
Accepted Payment Types UI
Description
Implement UI according to mockup.
Estimate
Estimate 3: 10 points (+3 to account for implementing additional backend functionality)Estimate 2: 7 pointsEstimate 1: 5 points
Tests
Developer Notes
PaymentTypeEntity -> PaymentTypes enum conversion
Move General Ledger code definitions to a separate config file
Description
Move general ledger code definitions to an external file using a format that makes the structure clear.
Estimate
5 points
Tests
Developer Notes
Implementation Candidate * XML for config file\
<ChartOfAccounts> <GeneralLedgerAccount code="10000" name="ASSETS"> <GeneralLedgerAccount code="11000" name="Cash and Bank Balances"> <GeneralLedgerAccount code="11100" name="Petty Cash Accounts"/> </GeneralLedgerAccount> </GeneralLedgerAccount> <GeneralLedgerAccount code="20000" name="LIABILITIES"> <GeneralLedgerAccount code="22000" name="Interest Payable"/> </GeneralLedgerAccount> </ChartOfAccounts>Apache Commons Configuration for reading the config file _ FinancialRules.java has hardcoded dependencies on the current chart of accounts _ the getCategoryAssociatedToAction implements a mapping from Financial action (FinancialActionConstants, financial_action table) and credit/debit to GL Account. * we need to include this mapping if a custom chart of accounts will be defined
<FinancialActionToGLAccountMapping> <Debits> <FinancialActionMapping> <FinancialAction>InterestPosting</FinancialAction> <GLAccount>BankAccountOne</GLAccount> </FinancialActionMapping> </Debits> <Credits> <FinancialActionMapping> <FinancialAction>InterestPosting</FinancialAction> <GLAccount>InterestIncomeLoans</GLAccount> </FinancialActionMapping> </Credits> </FinancialActionToGLAccountMapping> OR <FinancialActionToGLAccountMapping> <Debits> <FinancialActionMapping action="InterestPosting" glAccount="BankAccountOne"/> <FinancialActionMapping action="FeePosting" glCode="11000"/> </Debits> <Credits> <FinancialActionMapping action="InterestPosting" glAccount="InterestIncomeLoans"/> <FinancialActionMapping action="FeePosting" glCode="21000"/> </Credits> </FinancialActionToGLAccountMapping>TODO _ settle on XML file format _ consider issues of updates to default data, and adding new codes _ implement XML dump of general ledger data _ implement tests for load, dump roundtrip * implement XML load
Initial Investigation of Work Required for Localization
Description
Begin looking at what modifications will need to be made Mifos in order to fully support localization.
Estimate
2 points
Move Accounting Rules to a separate config file
Description
Accounting rules are:
Number of digits after decimal and whether to round up or round down will be specified for each currency in the database.
Amount to be rounded to. Default- 0.01
Rounding rule- The rounding rules supported by the system will be "Round up" and "Round- down". Default- Round up.
Number of interest days in a year- Can be 360 or 365. This is used only for interest calculation and should not be modified once set. _ Note: This is not applicable for meetings, as meeting calendar always has 365 days in a year. _ Also, this is not applicable for fees and penalties calculation and repayment schedule generation.
Estimate
5 points
Tests
Developer Notes
To Do
create AccountingRules config object?
do we need a MifosCurrency class? Why not use the java Currency class + rules?
noOfInterestDays defined in ConfigEntity.hbm.xml for ConfigEntity. noOfInterestDays appears to be defined per office, but there is only a single office defined in the SYSTEM_CONFIGURATION table. The only values allowed are 360 or 365. There doesn't seem to be a check to enforce this right now.
Move Localization data to a separate config file
Description
Provide the following 3 properties to determine the default localization for a given installation of Mifos:
Country (specified by ISO 3166-1 alpha-2 code-- a 2 letter code) * http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
Language (specified by ISO 639-1 Code-- a 2 letter code) * http://www.loc.gov/standards/iso639-2/php/English_list.php
Currency (specified by ISO 4217 code-- a 3 letter code) * http://en.wikipedia.org/wiki/ISO_4217
These will be defined in the standard "default" configuration file and can be overridden in the "custom" configuration file. Country and Language will together specify the Locale. Date format will be implied by the Locale.
Estimate
4 points
Tests
Developer Notes
country * eliminate CountryEntity and use ISO 3166 codes instead
currency * consider adding an ISO_4217_CODE to MifosCurrency (or change the usage of the currency name to be the currency code?)
time zone??? does anything need to be done with this or is it just taken from the System?
language * can we eliminate LanguageEntity and use ISO 639 codes instead?
date format ???
org.mifos.framework.components.configuration.business.Configuration is currently the main repository for configuration data.
Move Fiscal Year (Calendar?) Configuration data to a separate config file
Description -----------
data consists of: _ Start of week: Monday _ Default working days: 5 _ Working days: Monday Tuesday, Wednesday _ Meeting in case of a holiday - ??? Specifies when a meeting will take place if a holiday falls on the meeting day. * Allow calendar definition for next year - ??? The number of days after which the calendar definition for the next year can be specified.
Estimate
4 points
Tests
Developer Notes
To Do _ create a FiscalCalendarRules object _ move config from WeekDaysEntity to new object for use with WeekDay enum * add localized text retrieval for WeekDay and eliminate WeekDaysEntity
Client Rules
Description
Whether "Center" hierarchy is present in the system. By default- center hierarchy should exist.
Whether Groups are allowed to apply for loans- If this value is set to NO, groups will not be allowed to open loan accounts. Once the value is set to Yes, it should not be changed to NO as there could be group loans existing in the system. By default- group loans should be allowed.
Whether Clients can exist outside group. By default, this should be set to yes. Once the value is set to YES, it cannot be changed to NO, as there could be clients outside a group existing in the system.
Estimate
3 points
Tests
Developer Notes
To Do
some info defined by CustomerConfig
Process Flow/Optional States
Description
Clients and accounts have some optional states, which can be hidden and excluded from the state flows. If omitted, these optional states will not be visible in the UI. Once an optional state is included, it should not be removed as some records could be in that state.
The optional states are: _ Pending Approval (Clients) _ Pending Approval (Groups) _ Pending Approval (Loan accounts) _ Disbursed to Loan Officer (Loan accounts) * Pending Approval (Savings Accounts)
Estimate
3 points
Tests
Developer Notes
To Do
AccountConfig has isPendingApprovalStateDefinedForLoan and related metzods
CustomerConfig has isPendingApprovalStateDefinedForClient and related methods
Config data seems spread out in various places and it takes some effort to find where a give value is stored-- think about how to consolidate and centralize configuration.
Collection Sheet Data configuration
Description
Move collection sheet configuration data to an external configuration file.
Estimate
.5 points
Tests
Developer Notes
Misc Config
Description
Move the following configuration items to an external configuration file:
Sequence of Names
Session time out rule
Allow back dated payments
Estimate
1.5 points
Tests
Developer Notes
confirmed office hierarchy is handled separately
Lateness/Dormancy
Description
Move the following configuration items to an external configuration file:
Specify the number of days of non-payment after which status of loan account is changed to "Active in bad standing" by the system. Default- 30 days. This field should not be left blank.
Estimate
2.5 points
Tests
Developer Notes
verify that this is the only item included
is this the same or different from "grace period for penalty" on the loan definition web page-- answer: it is supposed to be different
LoanPrdPersistence.retrieveLatenessForPrd() * mifos/src/org/mifos/application/productdefinition/business/ProductTypeEntity.hbm.xml defines latenessDays and query productdefinition.GetLatenessDaysForLoans that is used to get the value
ProductTypeEntity is where this data lives and it is set in latest-data.sql in table PRD_TYPE
ProductType is the enum replacement for ProductTypeEntity
View Organizational Settings UI
Description
Implement UI according to mockup.
Estimate
3 points