Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
49c3450
FINERACT-80: Include Group loans in resultset (#717)
thesmallstar Mar 2, 2020
867579d
FINERACT-557: Readme Improvement (#718)
thesmallstar Mar 2, 2020
d4002f2
FINERACT-802-restrict-client-to-have-single-self-service-user (#664)
awasum Mar 5, 2020
51f2361
Fix checkstyle problem in UserAdministrationTest
awasum Mar 5, 2020
a7ebef4
FINERACT-807
xurror Feb 14, 2020
753554e
Fix audit trails filter (FINERACT-808)
vorburger Mar 8, 2020
a34742b
Made SQL builder ColumnName regex more general
thesmallstar Mar 9, 2020
0c9273a
throw exception with details in InteropServiceImpl (FINERACT-860) (#728)
vorburger Mar 10, 2020
1b1e80b
Log errors from cron jobs individually and with cause (FINERACT-858)
vorburger Mar 8, 2020
93d1716
Added: SQL builder toString function
thesmallstar Mar 10, 2020
de329e2
FINERACT-83 Made interestIncome variable null-safe
thesmallstar Mar 10, 2020
f484f88
FINERACT-696
xurror Mar 2, 2020
a7d4c83
A new rates module was added to define new rates that can be used to …
Jul 30, 2018
c342f5b
FINERACT-737: Updated Api Docs to include loan charges paid by
May 27, 2019
e2f5c95
Fixing some code to be compatible with Spring update
angelboxes Jan 13, 2020
3a1a90d
Fineract-614: Renaming SQL file for a higher version number
angelboxes Jan 13, 2020
15a4a76
Fineract-614:
angelboxes Feb 5, 2020
8df44af
Fineract-614:
angelboxes Feb 5, 2020
b9b265b
Fineract-614
angelboxes Feb 26, 2020
b1eb62f
fix broken build due to small logging error detected by SpotBugs
vorburger Mar 13, 2020
3f11dc5
Fix: Duplicate migration version
thesmallstar Mar 15, 2020
ef5bba4
Minor Typo fix
percyashu Mar 17, 2020
2e620b4
FINERACT-823 Gradle modernizer fixing violations
percyashu Feb 29, 2020
3475c0c
FINERACT-796
xurror Mar 5, 2020
9979491
Fix wrong @OneToOne to @ManyToOne in AbstractAuditableCustom
vorburger Mar 23, 2020
5f2ba51
Minor clean ups in DataSource Connection Pool related code
vorburger Mar 28, 2020
53e8658
apply Hikari's recommended MySQL Configuration (FINERACT-796)
vorburger Mar 28, 2020
4ccbcba
add Eclipse Checkstyle plugin tip to README
vorburger Mar 28, 2020
402c41d
Add Jacoco to measure code coverage (FINERACT-725 / PR #742)
thesmallstar Apr 1, 2020
a0a82a0
add link to Release Process page on Wiki to README
vorburger Apr 6, 2020
110684b
Added: IntelliJ Checkstyle plugin tip to README
thesmallstar Apr 6, 2020
eb8a357
FINERACT-122 added clientId, officeId, and groupId.
nnatarajan Apr 6, 2020
d0c8c6a
FINERACT-538 populated updated and created address
nnatarajan Apr 6, 2020
ae41170
add missing doc to AbstractPersistableCustom & AbstractAuditableCustom
vorburger Mar 23, 2020
dccea1d
add @Transient to AbstractPersistableCustom isNew()
vorburger Mar 23, 2020
09d0cfa
Remove AbstractPersistableCustom's PK parameterization
vorburger Mar 23, 2020
beee2e5
Fixed: Checkstyle Violations
thesmallstar Apr 5, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .gitpod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ tasks:
# NB MySQL on GitPod.io is currently quite slow.
# similar to .travis.yml, but using authentication_string= instead of password= due to mysql major version difference
mysql -e "USE mysql;\nUPDATE user SET authentication_string=PASSWORD('mysql') WHERE user='root';\nFLUSH PRIVILEGES;\n"
./gradlew createDB -PdbName=mifosplatform-tenants
./gradlew createDB -PdbName=mifostenant-default
./gradlew createDB -PdbName=fineract_tenants
./gradlew createDB -PdbName=fineract_default
./gradlew build -x test
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ addons:

before_install:
- echo "USE mysql;\nUPDATE user SET password=PASSWORD('mysql') WHERE user='root';\nFLUSH PRIVILEGES;\n" | mysql -u root
- mysql -u root -pmysql -e 'CREATE DATABASE IF NOT EXISTS `mifosplatform-tenants`;'
- mysql -u root -pmysql -e 'CREATE DATABASE IF NOT EXISTS `mifostenant-default`;'
- mysql -u root -pmysql -e 'CREATE DATABASE IF NOT EXISTS `fineract_tenants`;'
- mysql -u root -pmysql -e 'CREATE DATABASE IF NOT EXISTS `fineract_default`;'
# Hardcoding the time zone is a temporary fix for https://issues.apache.org/jira/browse/FINERACT-723
- export TZ=Asia/Kolkata

Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,6 @@ COPY ./docker/server.xml /opt/bitnami/tomcat/conf
RUN chmod 664 /opt/bitnami/tomcat/conf/server.xml

WORKDIR /opt/bitnami/tomcat/lib
# org.drizzle.jdbc.DrizzleDriver is used in docker/server.xml for jdbc/mifosplatform-tenants DataSource
# org.drizzle.jdbc.DrizzleDriver is used in docker/server.xml for jdbc/fineract_tenants DataSource
# (But note that connections to individual tenant DBs may use another driver...)
RUN wget https://repo1.maven.org/maven2/org/drizzle/jdbc/drizzle-jdbc/1.4/drizzle-jdbc-1.4.jar
24 changes: 18 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Fineract is a mature platform with open APIs that provides a reliable, robust, a
[![Code Now! (Gitpod)](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/apache/fineract)
to start contributing to this project in the online web-based IDE GitPod.io right away!
(You may initially have to press F1 to Find Command and run "Java: Start Language Server".)
It's of course also possible to contribute with a "traditional" loca ldevelopment environment (see below).
It's of course also possible to contribute with a "traditional" local development environment (see below).

Community
=========
Expand Down Expand Up @@ -36,8 +36,8 @@ Instructions how to run for local development
============

Run the following commands:
1. `./gradlew createDB -PdbName=mifosplatform-tenants`
1. `./gradlew createDB -PdbName=mifostenant-default`
1. `./gradlew createDB -PdbName=fineract_tenants`
1. `./gradlew createDB -PdbName=fineract_default`
1. `./gradlew tomcatRunWAR`


Expand Down Expand Up @@ -71,8 +71,8 @@ Instructions to execute Integration tests
> Note that if this is the first time to access MySQL DB, then you may need to reset your password.

Run the following commands, very similarly to how [.travis.yml](.travis.yml) does:
1. `./gradlew createDB -PdbName=mifosplatform-tenants`
1. `./gradlew createDB -PdbName=mifostenant-default`
1. `./gradlew createDB -PdbName=fineract_tenants`
1. `./gradlew createDB -PdbName=fineract_default`
1. `./gradlew clean integrationTest`


Expand Down Expand Up @@ -110,10 +110,19 @@ and the `mysqlserver` environment variable is now no longer supported.)_
Checkstyle
============

This project enforces [its code conventions](fineract-provider/config/checkstyle/checkstyle.xml) using Checkstyle.
This project enforces its code conventions using [checkstyle.xml](fineract-provider/config/checkstyle/checkstyle.xml). It is configured to run automatically during the normal Gradle build, and fail if there are any style violations detected.
We recommend that you configure your favourite Java IDE to match those conventions. For Eclipse, you can
File > Import > General > Preferences our [config/fineractdev-eclipse-preferences.epf](config/fineractdev-eclipse-preferences.epf).
You could also use Checkstyle directly in your IDE (but you don't neccesarily have to, it may just be more convenient for you). For Eclipse, use https://checkstyle.org/eclipse-cs/ and load our checkstyle.xml into it, for IntelliJ you can use [CheckStyle-IDEA](https://plugins.jetbrains.com/plugin/1065-checkstyle-idea).

Code Coverage Reports
============

The project uses Jacoco to measure unit tests code coverage, to generate a report run the following command:

`./gradlew clean build jacocoTestReport`

Generated reports can be found in build/code-coverage directory.

Version
============
Expand Down Expand Up @@ -159,6 +168,7 @@ Please refer to <https://cwiki.apache.org/confluence/display/FINERACT/Fineract+1

Please see <https://cwiki.apache.org/confluence/display/FINERACT/How-to+articles> for technical details to get started.

Please visit <https://issues.apache.org/jira/projects/FINERACT/> to open or find issues.

Roadmap
============
Expand All @@ -181,6 +191,8 @@ documents the process through which you can become a committer in this project.
[Pull Request Size Limit](https://cwiki.apache.org/confluence/display/FINERACT/Pull+Request+Size+Limit)
documents that we cannot accept huge "code dump" Pull Requests, with some related suggestions.

[How to Release Apache Fineract](https://cwiki.apache.org/confluence/x/DRwIB) documents the process how we make the source code that is available here in this git repository into a binary release ZIP available on http://fineract.apache.org.


More Information
============
Expand Down
227 changes: 223 additions & 4 deletions api-docs/apiLive.htm
Original file line number Diff line number Diff line change
Expand Up @@ -2546,6 +2546,24 @@ <h2 class="flybar-button">Org</h2>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="#rates">Rates</a></td>
<td>rates</td>
<td><a href="#create_rate">Create Rate</a></td>
<td><a href="#rate_list">List Rates</a></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>rates/{rateId}</td>
<td></td>
<td><a href="#retrieve_rate">Retrieve Rate</a></td>
<td><a href="#update_rate">Update Rate</a></td>
<td></td>
<td></td>
</tr>
</table>
</div>
</div>
Expand Down Expand Up @@ -12142,7 +12160,17 @@ <h4>Retrieve a Transaction Details</h4>
"displayLabel": "US Dollar ($)"
},
"amount": 559.88,
"interestPortion": 559.88
"interestPortion": 559.88,
"loanChargePaidByList": [
{
"id": 29,
"amount": 138.700000,
"installmentNumber": 0,
"chargeId": 7,
"transactionId": 35,
"name": "Late Penalty Charge"
}
]
}
</code>
</div>
Expand Down Expand Up @@ -16174,7 +16202,7 @@ <h4>Create a Loan Product</h4>
numberOfRepaymentVariationsForBorrowerCycle,
interestRateVariationsForBorrowerCycle,
multiDisburseLoan,maxTrancheCount,
outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalcualtion
outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalcualtion, rates
</td>
</tr>
</table>
Expand Down Expand Up @@ -43279,7 +43307,198 @@ <h4>Update Tax Group</h4>
</div>
<!-- End of Tax Group -->

<!-- start of clients api docs -->
<!-- Start of Rates-->
<a id="rates" name="rates" class="old-syle-anchor">&nbsp;</a>
<div class="method-section">
<div class="method-description">
<h3>Rates</h3>
<p>This defines the Rates</p>
<table class=matrixHeading>
<tr class="matrixHeadingBG">
<td>
<div class="fineractHeading2">Field Descriptions</div>
</td>
</tr>
<tr class=alt>
<td>name</td>
</tr>
<tr>
<td class=fielddesc>Name of Rate
</td>
</tr>
<tr class=alt>
<td>productApply</td>
</tr>
<tr>
<td class=fielddesc>
Enum value that defines to which entity the rate will be applicable.
Available options are:
1=Loans

Once a rate definition is created, this attribute cannot be changed at any point
</td>
</tr>
<tr class=alt>
<td>Active</td>
</tr>
<tr>
<td class=fielddesc>
Flag indicating if the rate is currently active
</td>
</tr>
</table>
</div>
</div>
<a id="create_rate" name="create_rate"
class="old-syle-anchor">&nbsp;</a>
<div class="method-section">
<div class="method-description">
<h4>Create a new Rate</h4>
<p>Creates a new Rate</p>
<table class=matrixHeading>
<tr class="matrixHeadingBG">
<td>
<div class="fineractHeading2">Mandatory Fields</div>
</td>
</tr>
<tr class=alt>
<td>name</td>
</tr>
<tr class=alt>
<td>percentage</td>
</tr>
<tr class=alt>
<td>productApply</td>
</tr>
<tr class=alt>
<td>active</td>
</tr>
</table>
</div>
<div class="method-example">
<code class="method-declaration">
POST https://DomainName/api/v1/rates
</code>
<code class="method-request">
POST rates
Content-Type: application/json
Request Body:
{
"productApply":1,
"name":"Loan rate",
"percentage":"12",
"active":true,
"locale":"en"
}
</code>
<code class="method-response">
{
"resourceId": 1
}
</code>
</div>
</div>
<a id="rate_list" name="rate_list"
class="old-syle-anchor">&nbsp;</a>
<div class="method-section">
<div class="method-description">
<h4>List Rates</h4>
<p>List Rates</p>
</div>
<div class="method-example">
<code class="method-declaration">
GET https://DomainName/api/v1/rates
</code>
<code class="method-request">
GET rates
Content-Type: application/json
</code>
<code class="method-response">
[
{
"id":1,
"name":"Loan Rate",
"percentage":12.00,
"productApply":1,
"active":true
},
{
"id":2,
"name":"Public Rate",
"percentage":30.00,
"productApply":1,
"active":true
},
{
"id":3,
"name":"Private Rate",
"percentage":14.00,
"productApply":1,
"active":true
}
]
</code>
</div>
</div>
<a id="retrieve_rate" name="retrieve_rate"
class="old-syle-anchor">&nbsp;</a>
<div class="method-section">
<div class="method-description">
<h4>Retrieve a Rate</h4>
<p>Return the details of an existing Rate</p>
</div>
<div class="method-example">
<code class="method-declaration">
GET https://DomainName/api/v1/rates/{rateId}
</code>
<code class="method-request">
GET rates/1
Content-Type: application/json
</code>
<code class="method-response">
{
"id":1,
"name":"Loan Rate",
"percentage":12.00,
"productApply":1,
"active":true
}
</code>
</div>
</div>
<a id="update_rate" name="update_rate"
class="old-syle-anchor">&nbsp;</a>
<div class="method-section">
<div class="method-description">
<h4>Update a Rate</h4>
<p>Updates an existing Rate</p>
</div>
<div class="method-example">
<code class="method-declaration">
POST https://DomainName/api/v1/rates/{rateId}
</code>
<code class="method-request">
POST rates/3
Content-Type: application/json
Request Body:
{
"percentage":"17",
}
</code>
<code class="method-response">
{
"resourceId":3,
"changes":
{
"percentage":17
}
}
</code>
</div>
</div>
<!-- End of Rates -->

<!-- start of clients api docs -->
<a id="templates" name="clients" class="old-syle-anchor">&nbsp;</a>
<div class="method-section">
<div class="method-description">
Expand Down Expand Up @@ -46751,7 +46970,7 @@ <h4>Retrieve a Loan Transaction Details</h4>
},
"amount": 559.88,
"interestPortion": 559.88
}
}
</code>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ services:
depends_on:
- fineractmysql
environment:
- JAVA_OPTS=-Dfineract_tenants_url=jdbc:mysql:thin://fineractmysql:3306/mifosplatform-tenants -Dfineract_tenants_driver=org.drizzle.jdbc.DrizzleDriver -Dfineract_tenants_uid=root -Dfineract_tenants_pwd=skdcnwauicn2ucnaecasdsajdnizucawencascdca -Djava.awt.headless=true -XX:+UseG1GC -Dfile.encoding=UTF-8
- JAVA_OPTS=-Dfineract_tenants_url=jdbc:mysql:thin://fineractmysql:3306/fineract_tenants -Dfineract_tenants_driver=org.drizzle.jdbc.DrizzleDriver -Dfineract_tenants_uid=root -Dfineract_tenants_pwd=skdcnwauicn2ucnaecasdsajdnizucawencascdca -Djava.awt.headless=true -XX:+UseG1GC -Dfile.encoding=UTF-8
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractmysql
- FINERACT_DEFAULT_TENANTDB_PORT=3306
- FINERACT_DEFAULT_TENANTDB_UID=root
Expand Down
Loading