h4. The proposed technical design for mandatory savings. The scaled down version of recurring deposit (RD) is used with following enhancements to implement mandatory savings. * The withdrawal from mandatory savings account is allowed. * All mandatory savings should deposit for a fixed term. * Provide a rollover facility to continue with new deposit term period for same the account after account maturity. * Generate deposit schedule (similar to loan repayment schedule) for complete period. * Allow to attach a Calendar to define the recurring deposit frequency. The calendar can be inherited from center/group to which client belongs to or copy from product with option to modify the frequency.
Following are the data base changes proposed for implementing mandatory savings on top of RD .
# Add following fields to m_savings_product #* Capture savings type Volunteer/ Mandatory (Volunteer = 1, Mandatory=2): savings_type is_mandatory TINYINT(1) NOT NULL DEFAULT ' 1 0 ' #* Mandatory recommended Deposit Amount: mandatory_recommended_deposit_amount DECIMAL(19,6) NULL DEFAULT NULL #* Allow RD accounts to withdraw the amount. allow_withdrawal TINYINT(1) NOT NULL DEFAULT '1'
# Add following fields to m_savings_account (inherit from savings product if not provided) #* Capture savings type Volunteer/ Mandatory (Volunteer = 1, Mandatory=2): savings_type is_mandatory TINYINT(1) NOT NULL DEFAULT ' 1 0 ' #* Mandatory recommended Deposit Amount: mandatory_recommended_deposit_amount DECIMAL(19,6) NULL DEFAULT NULL # Create a new table m_mandatory_savings_overdue _*total_overdue_amount*_: ??The total overdue amount to be payable towards mandatory savings account.?? _*no_of_overdue_installments*_: ??The total number of installments which are not paid towards mandatory savings account.?? {noformat} CREATE TABLE `m_mandatory_savings_overdue` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `savings_account_id` BIGINT(20) NOT NULL, `total_overdue_amount` DECIMAL(19,6) NULL DEFAULT NULL, `no_of_overdue_installments` INT(11) NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `FKMSO00000000000001` (`savings_account_id`), CONSTRAINT `FKMSO00000000000001` FOREIGN KEY (`savings_account_id`) REFERENCES `m_savings_account` (`id`) ) {noformat}
# Create a new table m_mandatory_savings_overdue_history m_mandatory_savings_schedule _* overdue_amount deposit_amount *_: ??The recommended mandatory deposit amount which is overdue .?? _* due_date duedate *_: ??The date on which the recommended mandatory deposit amount is due and not to be deposited?? _*installment*_: ??The deposit installment?? _*deposit_amount_completed_derived*_: ??The deposit amount derived?? _*total_paid_in_advance_derived*_: ??The deposit amount paid in advance derived ?? _*total_paid_late_derived*_: ??The deposit amount paid late derived?? {noformat} CREATE TABLE ` m_mandatory_savings_overdue_history m_mandatory_savings_schedule ` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, ` savings_overdue_id savings_account_id ` BIGINT(20) NOT NULL , `fromdate` DATE NULL DEFAULT '0' NULL , ` overdue_amount duedate ` DATE NOT NULL, `installment` SMALLINT(5) NOT NULL, `deposit_amount` DECIMAL(19,6) NULL DEFAULT NULL, `deposit_amount_completed_derived` DECIMAL(19,6) NULL DEFAULT NULL, `total_paid_in_advance_derived` DECIMAL(19,6) NULL DEFAULT NULL, `total_paid_late_derived` DECIMAL(19,6) NULL DEFAULT NULL, `completed_derived` BIT(1) NOT NULL, ` due_date obligations_met_on_date ` DATE NOT NULL DEFAULT NULL , `createdby_id` BIGINT(20) NULL DEFAULT NULL, `created_date` DATETIME NULL DEFAULT NULL, `lastmodified_date` DATETIME NULL DEFAULT NULL, `lastmodifiedby_id` BIGINT(20) NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX ` FKMSOH0000000000001 FKMSS0000000001 ` (` savings_overdue_id savings_id `), CONSTRAINT ` FKMSOH0000000000001 FKMSS0000000001 ` FOREIGN KEY (` savings_overdue_id savings_id `) REFERENCES ` m_mandatory_savings_overdue m_savings_account ` (`id`) ) COLLATE='utf8_general_ci'; {noformat}
- Right now the mandatory savings are supported only for clients who are part of group/center to follow the meeting frequency for collecting mandatory savings. -
- Link the savings account with Calendar instance of group/center to which client belongs to. A batch job should calculate the overdue amount based on inherited calendar frequency to maintain an overdue details. -
- The collection sheet should display the overdue amount/due amount for a meeting but allow to deposit any amount (less/more than actual due amount). -
|