Mifos Configuration Project Stories
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
- Lookup Value Issues
- 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.jsp
have 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