Skip to content

Instantly share code, notes, and snippets.

@BLasan
Last active September 4, 2021 19:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BLasan/bd21154ab9cc69e996a9e5aa0395cc03 to your computer and use it in GitHub Desktop.
Save BLasan/bd21154ab9cc69e996a9e5aa0395cc03 to your computer and use it in GitHub Desktop.
GSOC 2021 Evaluation Phase - 1

GSoC Evaluation - Phase 1

apchelogo gsoc_logo mifos_logo



Improve Robustness of Mifos X and Apache Fineract by Fixing Issues/Feature Requests in Backlog

1.) Advanced Accounting for fees not working.

Problem

Advanced accounting rules for fees were not properly getting applied when creating the loan product. It did not properly map the GL accounts configured.

Solution

PR Link - apache/fineract#1745

2.) Client Familiy Details Edit not working from client view screen

Problem

After creating a client without configuring marital status, gender id and profession id, client family details editing not allows to do a successful edition.

Solution

PR Link - apache/fineract#1735

3.) Collateral Management Module

Idea

This feature can be divided into 3 main sub components.

  • Client Level
  • Loan Level
  • Product Level

Product Level Collateral Management

  • Under portfolio section we have introduced a separate module for managing collaterals.

  • This includes CREATE NEW, UPDATE EXISTING, VIEW INDIVIDUAL and VIEW ALL options regarding the collaterals.

  • Adding a collateral consists of following fields.

    i.) Collateral Product Name (Eg: Agriculture)
    ii.) Base Price (Eg: 1000000.00)
    iii.) Unit Type (Eg: acre)
    iv.) Percentage to Base (Eg: 40)
    v.) Currency Type (Eg: USD)

Validations (Product Level)

  • Cannot delete a collateral product which has already attached to a client or a loan.

Request JSON

{
    "name": "Aggriculture",
    "basePrice": 1000000.00,
    "unitType": "acre",
    "pctToBase": 40,
    "currency": "USD"
}

Client Level Collateral Management

  • For a given client, he/she should be able to add one or multiple collaterals in to their dashboards.

  • This consists of ADD NEW, UPDATE EXISTING, DELETE, VIEW INDIVIDUAL and VIEW ALL operations.

  • In a collateral view page, it will display the details of the collateral added as well as the last repayment (transaction) done by a particular loan which this collateral is attached to.

  • This collaterals can be attached to one or multiple loans under the same client.

  • When adding a new client collateral the following fields are mandatory to be filled.

    i.) Select collateral product from the drop down
    ii.) Quantity (Eg: 2 grams of gold)

Validations (Client Level)

  • Cannot delete a client level collateral which is attached to one or more loans.

  • Can edit the increase the quantity of the collaterals.

Request JSON

{
    "id": 1,
    "quantity": 10
}

Here, id represents the collateral product id.

Loan Level Collateral Module

  • Defined client collaterals should be able to attach to multiple loans which are related to him/her.

  • A user needs to select one or more collaterals from the client level collaterals he/she has attahced.

  • Currently collateral modification is allowed in loan modification process.

Validations (Loan Level)

  • Total collateral value should be greater than or equal to the principal amount of the loan.

  • This is a mandatory field in creating an individual loan.

  • Quantity of a collateral should be less than or equal to the existing quantity of the client level collateral.

Request JSON

{
    "clientCollateralId": 1,
    "quantity": 4
}

Solution

Fineract PR - apache/fineract#1770

Community App PR - openMF/community-app#3398

Recording - https://drive.google.com/file/d/1r8Dxbf7ebzk4k1NR4a-rObz6LLAY3qqZ/view?usp=sharing

More Details - https://cwiki.apache.org/confluence/display/FINERACT/Collateral+Module

4.) Undoing a Waive Charge

Idea

In client charge section, there's an option to undo a waived charge. Similarly there's need of implementing undoing a waived charge in loans. This is done by undoing a waived charge transaction under the transaction tab in the loan account.

Validations

  • Transaction should be a waived charge one.

  • This is mainly applicable for the charge type installment fees.

  • Waived charge amount should be added to the relevant charge (To be paid)

  • Update loan repayment schedule.

  • Reverse the transaction.

Request JSON

{
    "transactionId": 1
}

Tasks

  • Provided an option (button) to undo the waived charge transaction.

  • Added functions for reversing the transaction.

  • Added swagger annotations for the APIs.

  • Introduced new API for undoing a waived charge.

Solution

Community App PR - openMF/community-app#3399

Fineract PR - apache/fineract#1772

Recording - https://drive.google.com/file/d/1643Y1kXi-ivoQxTEnD5d7zN0VDnkiPfx/view?usp=sharing

5.) Repayment with Post Dated Checks.

Idea

There's a requirement to do the payments for the loans by attaching post dated checks. A client should be able to add checks to do the repayments.

Validations

  • Client should be able to disburse the loan with or without adding the post dated checks.

  • Post dated checks count should be equal to the number of installments (repayments) of the loan.

Request JSON (If adding post dated checks)

{
    "postDatedChecks": [{
        "name": "Bank Name",
        "amount": 20000.00,
        "accountNo": 900002300400,
        "installmentId": 1,
        "checkNo": 30040050030
    }]
}

Tasks

  • Implemented user interface for adding post dated checks.

  • Implemented API to do the repayment. (PUT method).

  • Option to view and update post dated checks.

  • Bounce Check option - Replace a bounced check with a new one

  • Repayment with Post Dated Checks

  • Added validations.

  • Added swagger annotations.

  • This contains the following fields to be filled when submitting.

    i.) Name (Eg: Bank Name)
    ii.) Amount (Eg: Installment Amount - 2000.00)
    iii.) Account No (Eg: Account No - 900002300400)
    iv.) Installment Id (Eg: Installment Id - 1)
    v.) Check No (Eg: Check No - 200300400)

Solutions

Fineract PR - openMF/community-app#3405

Community App PR - apache/fineract#1784

Recording - https://drive.google.com/file/d/1yP0pje9v6SOlUI4T_50-ZIhpKCp-i5CG/view?usp=sharing

6.) Transfer funds from savings to share account

Idea

Currently Mifos allows to transfer funds from savings to loan & savings accounts. Idea is to allow transferring funds from savings to share account in order to purchase shares.

Validations

  • Amount transferred from savings to share should be exactly the same to to the cost of purchasing shares.

Tasks

  • Implemented user interface to support transferring funds from savings to shares.

  • Implemented server functionalities to handle the transaction & purchasing shares.

Solutions

Community App PR - apache/fineract#1787

Fineract PR - openMF/community-app#3408

Recordings - https://drive.google.com/file/d/1sBTQhj9wO9XXZvsXtuwIH4Afc9aKi6qL/view?usp=sharing

Remaining Work

  • Write integration tests.

  • Refine validations of features.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment