Calendar Concept and Spec
How Mifos handles calendar?
Mifos does not have Calendar, instead it has Meeting facilities.
Supported features by Meeting
- Allow to create recurring meeting with below rules
- Daily (any multiple of a day )
- On day of a week, Frequency is Weekly (any multiple of a week )
- On day of a Month, Frequency is Monthly (any multiple of a month )
- Supports to capture Meeting location
- Allow to create recurring meeting with below rules
Limitation of Meeting
- Can’t specify start time and end time of meeting
- Can’t create one time events
- Can’t attach event (meeting) to Branch/Group/Member (In Case of Center enabled )
- Centers can’t have more than one meeting schedule
- Meeting is always associated loan schedule or saving( Meeting for repayment or savings)
- Can’t create meeting for general purpose ( training , Internal audit etc )
- Can’t have reminders
- Can’t create a weekly meeting which occurs on every Monday and Saturday, similarly other patterns
How these new Calendar features address the limitations of Mifos meeting?
A calendar means a list of planned events attached to an entity in Mifos X, allows creating any number events for an entity (Member/SHG/Center/Branch). This can be used for reminders, generating collection sheet etc.
Non Goals
- All day events: Events lasting entire day(s). – Never supported
- Time zone sensitive ( always time are with respect to MFIs time zone) – Never supported
- Holidays (this will be supported in next release - John and Vishwas need to decide)
- Capturing attendance (this will be supported in next release - John and Vishwas need to decide)
- Validate busy/available before creating an event (Next release)
Key Functional Areas Impacted
- · New Loan Account Creation
- · Center/Group creation
Use Case 1: Adding Center meeting (During center creation)
In addition to the current parameters of Center / Group definition, the following changes are needed on New Center / Group creation:
- Ability to specify meeting name and description
- Ability to specify meeting type (Payments [this system defined type, used during loan creation / saving account / collection] / General meeting / Centre Audit [other types are admin defined])
- Meeting recurring details can be added.
Once Centre/Group is created with event details, this event can be used during child group creation or new loan account creation (within that Centre/Group). In next use case we will see in-detail.
Use Case 2: Creating New Loan (mapped to Centre/Group meeting)
In addition to the current parameters of loan application, the following changes are needed on new Loan creation:
1. Ability to specify meeting.
2. Loan term’s unit will be populated based on “meeting” selected. And it will become un-editable to user
3. Repaid every’s unit will be populated based on “meeting” selected. And it will become un-editable to user
4. Expected disbursement on will pre populated as next meeting date. But can be change to any future date.
5. First repayment on will pre populated as next meeting date. But can be changed to any future meeting date.
Technical Details (implementation approach )
Data Model
Calendar
# | Field | Description |
1 | Id | System generated |
5 | createDate | Event created date |
6 | Title | Name given to the event |
7 | description | Description |
8 | Location | Location of the event |
9 | startDate | Start date of the event |
10 | endDate | End date of the event |
11 | durationHour |
|
12 | durationMinute |
|
13 | type_ |
|
14 | Repeating | Yes/No |
15 | Recurrence | RRULE:FREQ=WEEKLY;UNTIL=20110701T160000Z RRULE:FREQ=DAILY;UNTIL=20000131T090000Z;BYMONTH=1 |
16 | remindBy | Email / SMS / System alert |
17 | firstReminder | reminder ( Number of minutes before event start time) |
18 | secondReminder | reminder ( Number of minutes before event start time) |
CalInstance
# | Field | Description |
1 | entityId | Member/Centre/SHG system id |
2 | entityTypeId | Id indicating entity is a Member/Centre/SHG |
3 | calId | Calendar Id |
Attendance
# | Field | Description |
1 | Id | Member/Centre/SHG system id |
2 | entityId | Member/Centre/SHG system id |
3 | entityTypeId | Id indicating entity is a Member/Centre/SHG |
4 | CalId |
|
5 | MeetingDate |
|
6 | Enum_attendance |
|
ER Diagram (Calendar)
External references