Clean up whitespace issues, only (FINERACT-1188)

This commit is contained in:
Michael Vorburger
2020-10-10 11:33:09 +02:00
parent d98b23a86d
commit 504eeed431
28 changed files with 178 additions and 180 deletions
+1 -1
View File
@@ -5,4 +5,4 @@
"**/.settings": true, "**/.settings": true,
"**/.factorypath": true "**/.factorypath": true
} }
} }
+1 -1
View File
@@ -13,4 +13,4 @@ software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the KIND, either express or implied. See the License for the
specific language governing permissions and limitations specific language governing permissions and limitations
under the License. under the License.
+14 -14
View File
@@ -1,4 +1,4 @@
Apache Fineract: A Platform for Microfinance [![Build Status](https://travis-ci.org/apache/fineract.svg?branch=develop)](https://travis-ci.org/apache/fineract) [![Docker Hub](https://img.shields.io/docker/pulls/apache/fineract.svg?logo=Docker)](https://hub.docker.com/r/apache/fineract) [![Docker Build](https://img.shields.io/docker/cloud/build/apache/fineract.svg?logo=Docker)](https://hub.docker.com/r/apache/fineract/builds) Apache Fineract: A Platform for Microfinance [![Build Status](https://travis-ci.org/apache/fineract.svg?branch=develop)](https://travis-ci.org/apache/fineract) [![Docker Hub](https://img.shields.io/docker/pulls/apache/fineract.svg?logo=Docker)](https://hub.docker.com/r/apache/fineract) [![Docker Build](https://img.shields.io/docker/cloud/build/apache/fineract.svg?logo=Docker)](https://hub.docker.com/r/apache/fineract/builds)
============ ============
Fineract is a mature platform with open APIs that provides a reliable, robust, and affordable core banking solution for financial institutions offering services to the world’s 2 billion underbanked and unbanked. Fineract is a mature platform with open APIs that provides a reliable, robust, and affordable core banking solution for financial institutions offering services to the world’s 2 billion underbanked and unbanked.
@@ -59,7 +59,7 @@ The tenants database connection details are configured [via environment variable
Instructions to build a WAR file Instructions to build a WAR file
============ ============
1. Clone the repository or download and extract the archive file to your local directory. 1. Clone the repository or download and extract the archive file to your local directory.
2. Run `./gradlew clean bootWar` to build a traditional WAR file which will be created at `build/libs` directory. 2. Run `./gradlew clean bootWar` to build a traditional WAR file which will be created at `build/libs` directory.
3. Deploy this WAR to your Tomcat v9 Servlet Container. 3. Deploy this WAR to your Tomcat v9 Servlet Container.
We recommend using the JAR instead of the WAR file deployment, because it's much easier. We recommend using the JAR instead of the WAR file deployment, because it's much easier.
@@ -80,19 +80,19 @@ Run the following commands, very similarly to how [.travis.yml](.travis.yml) doe
Instructions to run and debug in Eclipse IDE Instructions to run and debug in Eclipse IDE
============ ============
It is possible to run Fineract in Eclipse IDE and also to debug Fineract using Eclipse's debugging facilities. It is possible to run Fineract in Eclipse IDE and also to debug Fineract using Eclipse's debugging facilities.
To do this, you need to create the Eclipse project files and import the project into an Eclipse workspace: To do this, you need to create the Eclipse project files and import the project into an Eclipse workspace:
1. Create Eclipse project files into the Fineract project by running `./gradlew cleanEclipse eclipse` 1. Create Eclipse project files into the Fineract project by running `./gradlew cleanEclipse eclipse`
2. Import the fineract-provider project into your Eclipse workspace (File->Import->General->Existing Projects into Workspace, choose root directory fineract/fineract-provider) 2. Import the fineract-provider project into your Eclipse workspace (File->Import->General->Existing Projects into Workspace, choose root directory fineract/fineract-provider)
3. Do a clean build of the project in Eclipse (Project->Clean...) 3. Do a clean build of the project in Eclipse (Project->Clean...)
3. Run / debug Fineract by right clicking on org.apache.fineract.ServerApplication class and choosing Run As / Debug As -> Java Application. All normal Eclipse debugging features (breakpoints, watchpoints etc) should work as expected. 3. Run / debug Fineract by right clicking on org.apache.fineract.ServerApplication class and choosing Run As / Debug As -> Java Application. All normal Eclipse debugging features (breakpoints, watchpoints etc) should work as expected.
If you change the project settings (dependencies etc) in Gradle, you should redo step 1 and refresh the project in Eclipse. If you change the project settings (dependencies etc) in Gradle, you should redo step 1 and refresh the project in Eclipse.
You can also use Eclipse Junit support to run tests in Eclipse (Run As->Junit Test) You can also use Eclipse Junit support to run tests in Eclipse (Run As->Junit Test)
Finally, modifying source code in Eclipse automatically triggers hot code replace to a running instance, allowing you to immediately test your changes Finally, modifying source code in Eclipse automatically triggers hot code replace to a running instance, allowing you to immediately test your changes
Instructions to run using Docker and docker-compose Instructions to run using Docker and docker-compose
@@ -206,7 +206,7 @@ Instructions to run Apache RAT (Release Audit Tool)
Checkstyle and Spotless Checkstyle and Spotless
============ ============
This project enforces its code conventions using [checkstyle.xml](fineract-provider/config/checkstyle/checkstyle.xml) through Checkstyle and [fineract-formatting-preferences.xml](config/fineract-formatting-preferences.xml) through Spotless. They are configured to run automatically during the normal Gradle build, and fail if there are any violations detected. You can run the following command to automatically fix spotless violations: This project enforces its code conventions using [checkstyle.xml](fineract-provider/config/checkstyle/checkstyle.xml) through Checkstyle and [fineract-formatting-preferences.xml](config/fineract-formatting-preferences.xml) through Spotless. They are configured to run automatically during the normal Gradle build, and fail if there are any violations detected. You can run the following command to automatically fix spotless violations:
`./gradlew spotlessApply` `./gradlew spotlessApply`
@@ -216,8 +216,8 @@ You can also check for Spotless violations (only; but normally don't have to, be
`./gradlew spotlessCheck` `./gradlew spotlessCheck`
We recommend that you configure your favourite Java IDE to match those conventions. For Eclipse, you can go to We recommend that you configure your favourite Java IDE to match those conventions. For Eclipse, you can go to
Window > Java > Code Style and import our [config/fineractdev-formatter.xml](config/fineractdev-formatter.xml) under formatter section and [config/fineractdev-cleanup.xml](config/fineractdev-cleanup.xml) under Clean up section. The same fineractdev-formatter.xml configuration file (that can be used in Eclipse IDE) is also used by Spotless to both check for violations and autoformat code on the CLI. Window > Java > Code Style and import our [config/fineractdev-formatter.xml](config/fineractdev-formatter.xml) under formatter section and [config/fineractdev-cleanup.xml](config/fineractdev-cleanup.xml) under Clean up section. The same fineractdev-formatter.xml configuration file (that can be used in Eclipse IDE) is also used by Spotless to both check for violations and autoformat code on the CLI.
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). 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).
@@ -278,7 +278,7 @@ Online Demos
* [fineract.dev](https://www.fineract.dev) always runs the latest version of this code * [fineract.dev](https://www.fineract.dev) always runs the latest version of this code
* [demo.mifos.io](https://demo.mifos.io) A demo account is provided for users to experience the functionality of the Community App. Users can use "mifos" for USERNAME and "password" for PASSWORD (without quotation marks). * [demo.mifos.io](https://demo.mifos.io) A demo account is provided for users to experience the functionality of the Community App. Users can use "mifos" for USERNAME and "password" for PASSWORD (without quotation marks).
* [Swagger-UI Demo video](https://www.youtube.com/watch?v=FlVd-0YAo6c) This is a demo video for Swagger-UI documentation, more information [here](https://github.com/apache/fineract#swagger-ui-documentation). * [Swagger-UI Demo video](https://www.youtube.com/watch?v=FlVd-0YAo6c) This is a demo video for Swagger-UI documentation, more information [here](https://github.com/apache/fineract#swagger-ui-documentation).
@@ -298,10 +298,10 @@ Video Demonstration
Apache Fineract / Mifos X Demo (November 2016) - <https://www.youtube.com/watch?v=h61g9TptMBo> Apache Fineract / Mifos X Demo (November 2016) - <https://www.youtube.com/watch?v=h61g9TptMBo>
Swagger-UI Documentation Swagger-UI Documentation
============ ============
We use Swagger-UI to generate and maintain our API documentation, you can see the demo video [here](https://www.youtube.com/watch?v=FlVd-0YAo6c) or a live version We use Swagger-UI to generate and maintain our API documentation, you can see the demo video [here](https://www.youtube.com/watch?v=FlVd-0YAo6c) or a live version
[here](https://demo.fineract.dev/fineract-provider/swagger-ui/index.html). If you interested to know more about Swagger-UI you can check their [website](https://swagger.io/). [here](https://demo.fineract.dev/fineract-provider/swagger-ui/index.html). If you interested to know more about Swagger-UI you can check their [website](https://swagger.io/).
Governance and Policies Governance and Policies
@@ -393,15 +393,15 @@ IMPORTANT: Do not set your GPG secrets in one of the project gradle.properties a
The release command would look then look like this: The release command would look then look like this:
``` ```
./gradlew -Pfineract.release clean build ./gradlew -Pfineract.release clean build
``` ```
2. Another way to provide these parameters are via project parameters on the command line. A release command would then look like this: 2. Another way to provide these parameters are via project parameters on the command line. A release command would then look like this:
``` ```
./gradlew -Pfineract.release -Psigning.gnupg.keyName=7890ABCD -Psigning.gnupg.passphrase=secret clean build ./gradlew -Pfineract.release -Psigning.gnupg.keyName=7890ABCD -Psigning.gnupg.passphrase=secret clean build
``` ```
NOTE: Let's assume your GPG key ID would be "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCD" then you have to use the last 8 characters (i. e. "7890ABCD") for the signing plugin property "signing.gnupg.keyName". NOTE: Let's assume your GPG key ID would be "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCD" then you have to use the last 8 characters (i. e. "7890ABCD") for the signing plugin property "signing.gnupg.keyName".
Above tasks will create the following files in folder build/distributions: Above tasks will create the following files in folder build/distributions:
+2 -2
View File
@@ -38,7 +38,7 @@ services:
build: build:
context: . context: .
target: fineract target: fineract
ports: ports:
- 8443:8443 - 8443:8443
depends_on: depends_on:
- fineractmysql - fineractmysql
@@ -49,7 +49,7 @@ services:
- fineract_tenants_driver=org.drizzle.jdbc.DrizzleDriver - fineract_tenants_driver=org.drizzle.jdbc.DrizzleDriver
- fineract_tenants_url=jdbc:mysql:thin://fineractmysql:3306/fineract_tenants - fineract_tenants_url=jdbc:mysql:thin://fineractmysql:3306/fineract_tenants
- fineract_tenants_uid=root - fineract_tenants_uid=root
- fineract_tenants_pwd=skdcnwauicn2ucnaecasdsajdnizucawencascdca - fineract_tenants_pwd=skdcnwauicn2ucnaecasdsajdnizucawencascdca
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractmysql - FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractmysql
- FINERACT_DEFAULT_TENANTDB_PORT=3306 - FINERACT_DEFAULT_TENANTDB_PORT=3306
- FINERACT_DEFAULT_TENANTDB_UID=root - FINERACT_DEFAULT_TENANTDB_UID=root
+2 -2
View File
@@ -70,7 +70,7 @@
Either JSSE or OpenSSL style configuration may be used regardless of Either JSSE or OpenSSL style configuration may be used regardless of
the SSLImplementation selected. JSSE style configuration is used below. the SSLImplementation selected. JSSE style configuration is used below.
--> -->
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" <Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200" scheme="https" port="8443" maxThreads="200" scheme="https"
secure="true" SSLEnabled="true" secure="true" SSLEnabled="true"
keystoreFile="/opt/bitnami/tomcat/tomcat.keystore" keystoreFile="/opt/bitnami/tomcat/tomcat.keystore"
@@ -83,7 +83,7 @@
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"> maxThreads="150" SSLEnabled="true">
<SSLHostConfig> <SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks" <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" /> type="RSA" />
</SSLHostConfig> </SSLHostConfig>
</Connector> </Connector>
+2 -2
View File
@@ -29,10 +29,10 @@ Swagger Codegen provides several options to customize the generated code. [Here]
- Open the [config.json.template](https://github.com/apache/fineract/blob/develop/fineract-provider/config/swagger/config.json.template) file - Open the [config.json.template](https://github.com/apache/fineract/blob/develop/fineract-provider/config/swagger/config.json.template) file
- Customize options - Customize options
- Build the project again as mentioned in **Generate API Client Code** section - Build the project again as mentioned in **Generate API Client Code** section
## Customize using Mustache Templates ## Customize using Mustache Templates
Swagger Codegen uses Mustache Templates for generating the client library. For additional customizations you can add/edit custom templates inside the `fineract-provider/config/swagger/templates` folder. Swagger Codegen uses Mustache Templates for generating the client library. For additional customizations you can add/edit custom templates inside the `fineract-provider/config/swagger/templates` folder.
Make sure you are following the supported templates. Otherwise, the generated code will not build correctly. Make sure you are following the supported templates. Otherwise, the generated code will not build correctly.
@@ -57,4 +57,3 @@
"note": "From Mats", // optional, String(1..128) "note": "From Mats", // optional, String(1..128)
"expiration": "2017-11-15T22:17:28.985-01:00" // optional, ISO 8601 "expiration": "2017-11-15T22:17:28.985-01:00" // optional, ISO 8601
} }
@@ -1,19 +1,19 @@
0.1.2 / 2013-04-08 0.1.2 / 2013-04-08
================== ==================
* optimized scroll function. fixes #15 * optimized scroll function. fixes #15
* migrated to grunt for building * migrated to grunt for building
* fixed tabs on docs/index * fixed tabs on docs/index
0.1.1 / 2012-10-05 0.1.1 / 2012-10-05
================== ==================
* updated example * updated example
* code cleanup, fixed onHighlight, removed console.log * code cleanup, fixed onHighlight, removed console.log
* Add headerText and itemClass options * Add headerText and itemClass options
0.1.0 / 2012-07-05 0.1.0 / 2012-07-05
================== ==================
* added smoosh to Makefile * added smoosh to Makefile
@@ -24,7 +24,7 @@
* adds another option to customize the header link text * adds another option to customize the header link text
* updated site * updated site
0.0.3 / 2012-04-06 0.0.3 / 2012-04-06
================== ==================
* fixed smooth scrolling in firefox * fixed smooth scrolling in firefox
@@ -37,7 +37,7 @@
* updated site * updated site
* 0.0.2 - updated docs * 0.0.2 - updated docs
0.0.1 / 2012-02-25 0.0.1 / 2012-02-25
================== ==================
* updated docs/site * updated docs/site
@@ -1,5 +1,5 @@
#TOC #TOC
[TOC](http://projects.jga.me/toc/) is a jQuery plugin for automatically generating a table of contents. [TOC](http://projects.jga.me/toc/) is a jQuery plugin for automatically generating a table of contents.
For more information, check out the [documentation](http://projects.jga.me/toc/). For more information, check out the [documentation](http://projects.jga.me/toc/).
@@ -17,75 +17,75 @@ TOC is a jQuery plugin that will automatically generate a table of contents for
##Usage ##Usage
`javascript `javascript
$('#toc').toc(); $('#toc').toc();
###Options ###Options
Defaults shown below Defaults shown below
`javascript `javascript
$('#toc').toc({ $('#toc').toc({
'selectors': 'h1,h2,h3', //elements to use as headings 'selectors': 'h1,h2,h3', //elements to use as headings
'container': 'body', //element to find all selectors in 'container': 'body', //element to find all selectors in
'smoothScrolling': true, //enable or disable smooth scrolling on click 'smoothScrolling': true, //enable or disable smooth scrolling on click
'prefix': 'toc', //prefix for anchor tags and class names 'prefix': 'toc', //prefix for anchor tags and class names
'onHighlight': function(el) {}, //called when a new section is highlighted 'onHighlight': function(el) {}, //called when a new section is highlighted
'highlightOnScroll': true, //add class to heading that is currently in focus 'highlightOnScroll': true, //add class to heading that is currently in focus
'highlightOffset': 100, //offset to trigger the next headline 'highlightOffset': 100, //offset to trigger the next headline
'anchorName': function(i, heading, prefix) { //custom function for anchor name 'anchorName': function(i, heading, prefix) { //custom function for anchor name
return prefix+i; return prefix+i;
}, },
'headerText': function(i, heading, $heading) { //custom function building the header-item text 'headerText': function(i, heading, $heading) { //custom function building the header-item text
return $heading.text(); return $heading.text();
}, },
'itemClass': function(i, heading, $heading, prefix) { // custom function for item class 'itemClass': function(i, heading, $heading, prefix) { // custom function for item class
return $heading[0].tagName.toLowerCase(); return $heading[0].tagName.toLowerCase();
} }
}); });
##Example CSS ##Example CSS
`css `css
#toc { #toc {
top: 0px; top: 0px;
left: 0px; left: 0px;
height: 100%; height: 100%;
position: fixed; position: fixed;
background: #333; background: #333;
box-shadow: inset -5px 0 5px 0px #000; box-shadow: inset -5px 0 5px 0px #000;
width: 150px; width: 150px;
padding-top: 20px; padding-top: 20px;
color: #fff; color: #fff;
} }
#toc ul { #toc ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
list-style: none; list-style: none;
} }
#toc li { #toc li {
padding: 5px 10px; padding: 5px 10px;
} }
#toc a { #toc a {
color: #fff; color: #fff;
text-decoration: none; text-decoration: none;
display: block; display: block;
} }
#toc .toc-h2 { #toc .toc-h2 {
padding-left: 10px; padding-left: 10px;
} }
#toc .toc-h3 { #toc .toc-h3 {
padding-left: 20px; padding-left: 20px;
} }
#toc .toc-active { #toc .toc-active {
background: #336699; background: #336699;
box-shadow: inset -5px 0px 10px -5px #000; box-shadow: inset -5px 0px 10px -5px #000;
} }
##History ##History
@@ -1 +1 @@
<mxGraphModel dx="800" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" style="default-style2"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="47" value="Mifos X Platform &amp; API" style="verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;fillColor=#CCCCCC" parent="1" vertex="1"><mxGeometry x="120" y="60" width="590" height="440" as="geometry"/></mxCell><mxCell id="93" value="Oracle Mysql RDMS" style="shape=cylinder;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="730" y="59.5" width="60" height="450.5" as="geometry"/></mxCell><mxCell id="95" value="Command" style="shape=message;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="20" y="370" width="60" height="40" as="geometry"/></mxCell><mxCell id="96" value="Query" style="shape=message;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="20" y="140" width="60" height="40" as="geometry"/></mxCell><mxCell id="97" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="80" y="384" as="sourcePoint"/><mxPoint x="120" y="384" as="targetPoint"/></mxGeometry></mxCell><mxCell id="98" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="80" y="150" as="sourcePoint"/><mxPoint x="120" y="150" as="targetPoint"/></mxGeometry></mxCell><mxCell id="99" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="120" y="400" as="sourcePoint"/><mxPoint x="80" y="400" as="targetPoint"/></mxGeometry></mxCell><mxCell id="100" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="120" y="170" as="sourcePoint"/><mxPoint x="80" y="170" as="targetPoint"/></mxGeometry></mxCell><mxCell id="106" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;" vertex="1" parent="1"><mxGeometry x="134" y="280" width="546" height="205" as="geometry"/></mxCell><mxCell id="109" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF;rotation=-90" vertex="1" parent="1"><mxGeometry x="100" y="390" width="124" height="30" as="geometry"/></mxCell><mxCell id="108" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;" vertex="1" parent="1"><mxGeometry x="130" y="92.5" width="550" height="175" as="geometry"/></mxCell><mxCell id="52" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF;rotation=-90" parent="1" vertex="1"><mxGeometry x="100" y="165" width="124" height="30" as="geometry"/></mxCell><mxCell id="112" value="1. Check Permissions" style="" vertex="1" parent="1"><mxGeometry x="210" y="120" width="170" height="30" as="geometry"/></mxCell><mxCell id="113" value="2. Fetch Data (SQL Query)" style="" vertex="1" parent="1"><mxGeometry x="240" y="165" width="170" height="30" as="geometry"/></mxCell><mxCell id="114" value="3. Covert To JSON response" style="" vertex="1" parent="1"><mxGeometry x="210" y="205" width="183" height="30" as="geometry"/></mxCell><mxCell id="115" value="1. Check Permissions" style="" vertex="1" parent="1"><mxGeometry x="200" y="310" width="170" height="30" as="geometry"/></mxCell><mxCell id="116" value="2. Locate Command Handler" style="" vertex="1" parent="1"><mxGeometry x="216.5" y="352.5" width="170" height="30" as="geometry"/></mxCell><mxCell id="117" value="3. Command Handler&#xa;Uses Domain Services&#xa;Model + ORM to perist changes&#xa;All changes passed back" style="" vertex="1" parent="1"><mxGeometry x="410" y="345" width="250" height="125" as="geometry"/></mxCell><mxCell id="118" value="4.Updated with &#xa;changes for Audit" style="" vertex="1" parent="1"><mxGeometry x="200" y="405" width="170" height="30" as="geometry"/></mxCell><mxCell id="119" value="5. Covert To JSON response" style="" vertex="1" parent="1"><mxGeometry x="200" y="440" width="183" height="30" as="geometry"/></mxCell></root></mxGraphModel> <mxGraphModel dx="800" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" style="default-style2"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="47" value="Mifos X Platform &amp; API" style="verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;fillColor=#CCCCCC" parent="1" vertex="1"><mxGeometry x="120" y="60" width="590" height="440" as="geometry"/></mxCell><mxCell id="93" value="Oracle Mysql RDMS" style="shape=cylinder;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="730" y="59.5" width="60" height="450.5" as="geometry"/></mxCell><mxCell id="95" value="Command" style="shape=message;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="20" y="370" width="60" height="40" as="geometry"/></mxCell><mxCell id="96" value="Query" style="shape=message;whiteSpace=wrap" parent="1" vertex="1"><mxGeometry x="20" y="140" width="60" height="40" as="geometry"/></mxCell><mxCell id="97" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="80" y="384" as="sourcePoint"/><mxPoint x="120" y="384" as="targetPoint"/></mxGeometry></mxCell><mxCell id="98" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="80" y="150" as="sourcePoint"/><mxPoint x="120" y="150" as="targetPoint"/></mxGeometry></mxCell><mxCell id="99" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="120" y="400" as="sourcePoint"/><mxPoint x="80" y="400" as="targetPoint"/></mxGeometry></mxCell><mxCell id="100" value="" style="edgeStyle=none;exitX=1;exitY=0.5" parent="1" edge="1"><mxGeometry width="100" height="100" relative="1" as="geometry"><mxPoint x="120" y="170" as="sourcePoint"/><mxPoint x="80" y="170" as="targetPoint"/></mxGeometry></mxCell><mxCell id="106" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;" vertex="1" parent="1"><mxGeometry x="134" y="280" width="546" height="205" as="geometry"/></mxCell><mxCell id="109" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF;rotation=-90" vertex="1" parent="1"><mxGeometry x="100" y="390" width="124" height="30" as="geometry"/></mxCell><mxCell id="108" value="" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;" vertex="1" parent="1"><mxGeometry x="130" y="92.5" width="550" height="175" as="geometry"/></mxCell><mxCell id="52" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF;rotation=-90" parent="1" vertex="1"><mxGeometry x="100" y="165" width="124" height="30" as="geometry"/></mxCell><mxCell id="112" value="1. Check Permissions" style="" vertex="1" parent="1"><mxGeometry x="210" y="120" width="170" height="30" as="geometry"/></mxCell><mxCell id="113" value="2. Fetch Data (SQL Query)" style="" vertex="1" parent="1"><mxGeometry x="240" y="165" width="170" height="30" as="geometry"/></mxCell><mxCell id="114" value="3. Covert To JSON response" style="" vertex="1" parent="1"><mxGeometry x="210" y="205" width="183" height="30" as="geometry"/></mxCell><mxCell id="115" value="1. Check Permissions" style="" vertex="1" parent="1"><mxGeometry x="200" y="310" width="170" height="30" as="geometry"/></mxCell><mxCell id="116" value="2. Locate Command Handler" style="" vertex="1" parent="1"><mxGeometry x="216.5" y="352.5" width="170" height="30" as="geometry"/></mxCell><mxCell id="117" value="3. Command Handler&#xa;Uses Domain Services&#xa;Model + ORM to perist changes&#xa;All changes passed back" style="" vertex="1" parent="1"><mxGeometry x="410" y="345" width="250" height="125" as="geometry"/></mxCell><mxCell id="118" value="4.Updated with &#xa;changes for Audit" style="" vertex="1" parent="1"><mxGeometry x="200" y="405" width="170" height="30" as="geometry"/></mxCell><mxCell id="119" value="5. Covert To JSON response" style="" vertex="1" parent="1"><mxGeometry x="200" y="440" width="183" height="30" as="geometry"/></mxCell></root></mxGraphModel>
@@ -1 +1 @@
<mxGraphModel dx="800" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" style="default-style2"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="47" value="Mifos X Platform &amp; API" style="verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;fillColor=#CCCCCC" vertex="1" parent="1"><mxGeometry x="30" y="59.5" width="780" height="260.5" as="geometry"/></mxCell><mxCell id="48" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="118.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="49" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="46" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="50" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="757.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="51" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="675" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="52" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF" vertex="1" parent="1"><mxGeometry x="46" y="99.5" width="744" height="30" as="geometry"/></mxCell><mxCell id="77" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="191" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="78" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="252.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="79" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="382.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="80" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="487.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="86" value="Infrastructure" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="46" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="87" value="User Administration" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="46" y="230" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="88" value="Organisation Modelling" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="231" y="230" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="89" value="Product Configuration" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="231" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="90" value="Client Data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="440" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="91" value="Portfolio Management" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="624.25" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="92" value="GL Account Management" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="523.5" y="230" width="151.5" height="70" as="geometry"/></mxCell></root></mxGraphModel> <mxGraphModel dx="800" dy="800" grid="1" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" style="default-style2"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="47" value="Mifos X Platform &amp; API" style="verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;fillColor=#CCCCCC" vertex="1" parent="1"><mxGeometry x="30" y="59.5" width="780" height="260.5" as="geometry"/></mxCell><mxCell id="48" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="118.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="49" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="46" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="50" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="757.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="51" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="675" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="52" value="HTTPS API" style="rounded=1;whiteSpace=wrap;fillColor=#007FFF" vertex="1" parent="1"><mxGeometry x="46" y="99.5" width="744" height="30" as="geometry"/></mxCell><mxCell id="77" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="191" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="78" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="252.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="79" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="382.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="80" value="" style="shape=lollipop;direction=south;rotation=-90" vertex="1" parent="1"><mxGeometry x="487.5" y="22" width="25" height="42" as="geometry"/></mxCell><mxCell id="86" value="Infrastructure" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="46" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="87" value="User Administration" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="46" y="230" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="88" value="Organisation Modelling" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="231" y="230" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="89" value="Product Configuration" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="231" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="90" value="Client Data" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="440" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="91" value="Portfolio Management" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="624.25" y="150" width="151.5" height="70" as="geometry"/></mxCell><mxCell id="92" value="GL Account Management" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;rotation=0" vertex="1" parent="1"><mxGeometry x="523.5" y="230" width="151.5" height="70" as="geometry"/></mxCell></root></mxGraphModel>
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -22,4 +22,4 @@ CREATE DATABASE IF NOT EXISTS `fineract_tenants`;
CREATE DATABASE IF NOT EXISTS `fineract_default`; CREATE DATABASE IF NOT EXISTS `fineract_default`;
# create root user and grant rights # create root user and grant rights
GRANT ALL ON *.* TO 'root'@'%'; GRANT ALL ON *.* TO 'root'@'%';
@@ -116,7 +116,7 @@ CREATE TABLE `tenants` (
LOCK TABLES `tenants` WRITE; LOCK TABLES `tenants` WRITE;
/*!40000 ALTER TABLE `tenants` DISABLE KEYS */; /*!40000 ALTER TABLE `tenants` DISABLE KEYS */;
INSERT INTO `tenants` VALUES INSERT INTO `tenants` VALUES
(1,'default','default','fineract_default','Asia/Kolkata',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1,5,30000,1,60,1,50,1,40,20,10,60,34000,60000); (1,'default','default','fineract_default','Asia/Kolkata',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1,5,30000,1,60,1,50,1,40,20,10,60,34000,60000);
/*!40000 ALTER TABLE `tenants` ENABLE KEYS */; /*!40000 ALTER TABLE `tenants` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@@ -6,4 +6,4 @@ This demo database contains:
- DDL of latest schema - DDL of latest schema
- Minimum reference data required for deployment of platform - Minimum reference data required for deployment of platform
- Customisatons for CEDA on m_code/m_code_value tables, extra datatables for client and loan data capture - Customisatons for CEDA on m_code/m_code_value tables, extra datatables for client and loan data capture
- Extra reports over and beyond core reports customisation for CEDA operations - Extra reports over and beyond core reports customisation for CEDA operations
@@ -264,7 +264,7 @@ from x_registered_table r;
-- ==== Chart of Accounts ===== -- ==== Chart of Accounts =====
truncate `acc_gl_account`; truncate `acc_gl_account`;
INSERT INTO `acc_gl_account` VALUES INSERT INTO `acc_gl_account` VALUES
(1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL), (1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),
(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL), (2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),
(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL), (3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),
@@ -360,4 +360,4 @@ INSERT INTO `acc_gl_account` VALUES
(94,'Modem',NULL,'42902',0,1,1,5,NULL), (94,'Modem',NULL,'42902',0,1,1,5,NULL),
(95,'Meals',NULL,'42903',0,1,1,5,NULL), (95,'Meals',NULL,'42903',0,1,1,5,NULL),
(96,'Transportation',NULL,'42904',0,1,1,5,NULL), (96,'Transportation',NULL,'42904',0,1,1,5,NULL),
(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL); (97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
@@ -46,7 +46,7 @@ INSERT INTO `m_appuser`
`nonexpired_credentials`, `nonexpired_credentials`,
`enabled`) `enabled`)
VALUES VALUES
(0, 1, 'keithwoodlock', 'Keith', 'Woodlock', (0, 1, 'keithwoodlock', 'Keith', 'Woodlock',
'4f607e9b6cffbe7d3db92d4bfa3391c7aa751727b4ea29d08fddf9dd72e6e7e3', 'keithwoodlock@gmail.com', 0, 1, 1, 1, 1); '4f607e9b6cffbe7d3db92d4bfa3391c7aa751727b4ea29d08fddf9dd72e6e7e3', 'keithwoodlock@gmail.com', 0, 1, 1, 1, 1);
INSERT INTO `m_appuser_role` INSERT INTO `m_appuser_role`
@@ -61,7 +61,7 @@ INSERT INTO `m_office`
`external_id`, `external_id`,
`name`, `name`,
`opening_date`) `opening_date`)
VALUES VALUES
(1, '.2.', 2, 'Uganda (Kampala)', '2009-01-01'); (1, '.2.', 2, 'Uganda (Kampala)', '2009-01-01');
@@ -114,10 +114,10 @@ INSERT INTO `m_product_loan`
`accounting_type`, `accounting_type`,
`loan_transaction_strategy_id`) `loan_transaction_strategy_id`)
VALUES VALUES
('UGX', 2, 1000000.000000, 0, 1000000000000.000000, null , 'Kampala Product (with cash accounting)', ('UGX', 2, 1000000.000000, 0, 1000000000000.000000, null , 'Kampala Product (with cash accounting)',
'Typical Kampala loan product with cash accounting enabled for testing.', null , 'Typical Kampala loan product with cash accounting enabled for testing.', null ,
24.000000, 3, 24.000000, 1, 1, 1, 2, 12, 1, 2, 2); 24.000000, 3, 24.000000, 1, 1, 1, 2, 12, 1, 2, 2);
-- mapping of that loan product to GL Accounts -- mapping of that loan product to GL Accounts
INSERT INTO `acc_product_mapping` INSERT INTO `acc_product_mapping`
VALUES (1,4,1,1,1),(2,8,1,1,2),(3,34,1,1,3),(4,37,1,1,4),(5,35,1,1,5),(6,97,1,1,6); VALUES (1,4,1,1,1),(2,8,1,1,2),(3,34,1,1,3),(4,37,1,1,4),(5,35,1,1,5),(6,97,1,1,6);
@@ -12,4 +12,4 @@ This demo database contains:
- Its mandatory to have at least one role when creating new users so we have one role created by default called 'Super user' which has the special permission 'Full Authorisation'. Any user with this role can do anything in the system. - Its mandatory to have at least one role when creating new users so we have one role created by default called 'Super user' which has the special permission 'Full Authorisation'. Any user with this role can do anything in the system.
- Its required to have at least one application user setup so remaining setup can be done through ui so we have on application user created by default with username 'quipo' with a password of 'quipo'. Application users must be associated with an office and a role so this user is associated with 'Latam HO' and 'Super user' role allowing this user to do any operation in any office(branch). - Its required to have at least one application user setup so remaining setup can be done through ui so we have on application user created by default with username 'quipo' with a password of 'quipo'. Application users must be associated with an office and a role so this user is associated with 'Latam HO' and 'Super user' role allowing this user to do any operation in any office(branch).
Minimum amount of data to support api-docs interaction. Minimum amount of data to support api-docs interaction.
@@ -44,8 +44,8 @@ join m_code_value mv on mv.code_id = mc.id
where mc.`code_name` = "YesNo"; where mc.`code_name` = "YesNo";
INSERT INTO `m_code` INSERT INTO `m_code`
(`code_name`, `is_system_defined`) (`code_name`, `is_system_defined`)
VALUES VALUES
('Education',1); ('Education',1);
INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`) INSERT INTO `m_code_value`(`code_id`,`code_value`,`order_position`)
@@ -141,7 +141,7 @@ from x_registered_table r;
-- ==== Chart of Accounts ===== -- ==== Chart of Accounts =====
truncate `acc_gl_account`; truncate `acc_gl_account`;
INSERT INTO `acc_gl_account` VALUES INSERT INTO `acc_gl_account` VALUES
(1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL), (1,'Petty Cash Balances',NULL,'11100',0,1,2,1,NULL),
(2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL), (2,'Cash in Valut 1',NULL,'11101',0,1,1,1,NULL),
(3,'Bank Balances',NULL,'11200',0,1,2,1,NULL), (3,'Bank Balances',NULL,'11200',0,1,2,1,NULL),
@@ -237,4 +237,4 @@ INSERT INTO `acc_gl_account` VALUES
(94,'Modem',NULL,'42902',0,1,1,5,NULL), (94,'Modem',NULL,'42902',0,1,1,5,NULL),
(95,'Meals',NULL,'42903',0,1,1,5,NULL), (95,'Meals',NULL,'42903',0,1,1,5,NULL),
(96,'Transportation',NULL,'42904',0,1,1,5,NULL), (96,'Transportation',NULL,'42904',0,1,1,5,NULL),
(97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL); (97,'Miscellaneous',NULL,'42905',0,1,1,5,NULL);
@@ -55,4 +55,4 @@ CREATE TABLE `risk_analysis` (
`fi_repayment_capacity` decimal(19,6) DEFAULT NULL, `fi_repayment_capacity` decimal(19,6) DEFAULT NULL,
PRIMARY KEY (`client_id`), PRIMARY KEY (`client_id`),
CONSTRAINT `FK_risk_analysis_1` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`) CONSTRAINT `FK_risk_analysis_1` FOREIGN KEY (`client_id`) REFERENCES `m_client` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
@@ -13,4 +13,4 @@ This demo database contains:
- Configuration - Configuration
- No 'additional data' through the 'datatables' approach is setup - No 'additional data' through the 'datatables' approach is setup
- One 'code' is setup called 'Client Identifier' with default values of {'Passport number'} - (required for Client Identity Document functionalty) - One 'code' is setup called 'Client Identifier' with default values of {'Passport number'} - (required for Client Identity Document functionalty)
- Enable/Disable configuration has one entry named 'maker-checker' to allow people to enable disable this feature at global level. It is off or disabled by default. - Enable/Disable configuration has one entry named 'maker-checker' to allow people to enable disable this feature at global level. It is off or disabled by default.
@@ -65,4 +65,4 @@ INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_
INSERT INTO `mifostenant-latam`.`m_code` (`code_name`, `is_system_defined`) VALUES ('Education', 1); INSERT INTO `mifostenant-latam`.`m_code` (`code_name`, `is_system_defined`) VALUES ('Education', 1);
INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'Primary', 1); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'Secondary', 2); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'University', 3); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'Primary', 1); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'Secondary', 2); INSERT INTO `mifostenant-latam`.`m_code_value` (`code_id`, `code_value`, `order_position`) VALUES (3, 'University', 3);
@@ -613,27 +613,27 @@ CREATE TABLE `m_loan_arrears_aging` (
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
CREATE TABLE `m_guarantor` ( CREATE TABLE `m_guarantor` (
`id` BIGINT NOT NULL AUTO_INCREMENT, `id` BIGINT NOT NULL AUTO_INCREMENT,
`loan_id` BIGINT NOT NULL, `loan_id` BIGINT NOT NULL,
`client_reln_cv_id` INT DEFAULT NULL, `client_reln_cv_id` INT DEFAULT NULL,
`type_enum` SMALLINT NOT NULL, `type_enum` SMALLINT NOT NULL,
`entity_id` BIGINT NULL DEFAULT NULL, `entity_id` BIGINT NULL DEFAULT NULL,
`firstname` VARCHAR(50) NULL DEFAULT NULL, `firstname` VARCHAR(50) NULL DEFAULT NULL,
`lastname` VARCHAR(50) NULL DEFAULT NULL, `lastname` VARCHAR(50) NULL DEFAULT NULL,
`dob` DATE NULL DEFAULT NULL, `dob` DATE NULL DEFAULT NULL,
`address_line_1` VARCHAR(500) NULL DEFAULT NULL, `address_line_1` VARCHAR(500) NULL DEFAULT NULL,
`address_line_2` VARCHAR(500) NULL DEFAULT NULL, `address_line_2` VARCHAR(500) NULL DEFAULT NULL,
`city` VARCHAR(50) NULL DEFAULT NULL, `city` VARCHAR(50) NULL DEFAULT NULL,
`state` VARCHAR(50) NULL DEFAULT NULL, `state` VARCHAR(50) NULL DEFAULT NULL,
`country` VARCHAR(50) NULL DEFAULT NULL, `country` VARCHAR(50) NULL DEFAULT NULL,
`zip` VARCHAR(20) NULL DEFAULT NULL, `zip` VARCHAR(20) NULL DEFAULT NULL,
`house_phone_number` VARCHAR(20) NULL DEFAULT NULL, `house_phone_number` VARCHAR(20) NULL DEFAULT NULL,
`mobile_number` VARCHAR(20) NULL DEFAULT NULL, `mobile_number` VARCHAR(20) NULL DEFAULT NULL,
`comment` VARCHAR(500) NULL DEFAULT NULL, `comment` VARCHAR(500) NULL DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
INDEX `FK_m_guarantor_m_loan` (`loan_id`), INDEX `FK_m_guarantor_m_loan` (`loan_id`),
CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`) CONSTRAINT `FK_m_guarantor_m_code_value` FOREIGN KEY (`client_reln_cv_id`) REFERENCES `m_code_value` (`id`)
CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`) CONSTRAINT `FK_m_guarantor_m_loan` FOREIGN KEY (`loan_id`) REFERENCES `m_loan` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
CREATE TABLE `m_loan_charge` ( CREATE TABLE `m_loan_charge` (
@@ -963,4 +963,4 @@ CREATE TABLE `stretchy_report_parameter` (
PRIMARY KEY (`report_id`,`parameter_id`), PRIMARY KEY (`report_id`,`parameter_id`),
UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`) UNIQUE KEY `report_id_name_UNIQUE` (`report_id`,`report_parameter_name`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
-- =========== end of reporting related tables ============ -- =========== end of reporting related tables ============
@@ -29,11 +29,11 @@ VALUES
INSERT INTO `c_configuration` INSERT INTO `c_configuration`
(`name`, `enabled`) (`name`, `enabled`)
VALUES VALUES
('maker-checker', 0); ('maker-checker', 0);
INSERT INTO `r_enum_value` INSERT INTO `r_enum_value`
VALUES VALUES
('amortization_method_enum',0,'Equal principle payments','Equal principle payments'), ('amortization_method_enum',0,'Equal principle payments','Equal principle payments'),
('amortization_method_enum',1,'Equal installments','Equal installments'), ('amortization_method_enum',1,'Equal installments','Equal installments'),
('interest_calculated_in_period_enum',0,'Daily','Daily'), ('interest_calculated_in_period_enum',0,'Daily','Daily'),
@@ -67,42 +67,42 @@ VALUES
('term_period_frequency_enum',2,'Months','Months'), ('term_period_frequency_enum',2,'Months','Months'),
('term_period_frequency_enum',3,'Years','Years'); ('term_period_frequency_enum',3,'Years','Years');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '1', 'Disbursement', 'Disbursement'); VALUES ('transaction_type_enum', '1', 'Disbursement', 'Disbursement');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '2', 'Repayment', 'Repayment'); VALUES ('transaction_type_enum', '2', 'Repayment', 'Repayment');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '3', 'Contra', 'Contra'); VALUES ('transaction_type_enum', '3', 'Contra', 'Contra');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '4', 'Waive Interest', 'Waive Interest'); VALUES ('transaction_type_enum', '4', 'Waive Interest', 'Waive Interest');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '5', 'Repayment At Disbursement', 'Repayment At Disbursement'); VALUES ('transaction_type_enum', '5', 'Repayment At Disbursement', 'Repayment At Disbursement');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '6', 'Write-Off', 'Write-Off'); VALUES ('transaction_type_enum', '6', 'Write-Off', 'Write-Off');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '7', 'Marked for Rescheduling', 'Marked for Rescheduling'); VALUES ('transaction_type_enum', '7', 'Marked for Rescheduling', 'Marked for Rescheduling');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '8', 'Recovery Repayment', 'Recovery Repayment'); VALUES ('transaction_type_enum', '8', 'Recovery Repayment', 'Recovery Repayment');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '9', 'Waive Charges', 'Waive Charges'); VALUES ('transaction_type_enum', '9', 'Waive Charges', 'Waive Charges');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '10', 'Apply Charges', 'Apply Charges'); VALUES ('transaction_type_enum', '10', 'Apply Charges', 'Apply Charges');
INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) INSERT INTO `r_enum_value` (`enum_name`, `enum_id`, `enum_message_property`, `enum_value`)
VALUES ('transaction_type_enum', '11', 'Apply Interest', 'Apply Interest'); VALUES ('transaction_type_enum', '11', 'Apply Interest', 'Apply Interest');
INSERT INTO `m_currency` INSERT INTO `m_currency`
(`id`,`code`,`decimal_places`,`display_symbol`,`name`, `internationalized_name_code`) (`id`,`code`,`decimal_places`,`display_symbol`,`name`, `internationalized_name_code`)
VALUES VALUES
(1,'AED',2,NULL,'UAE Dirham','currency.AED'), (1,'AED',2,NULL,'UAE Dirham','currency.AED'),
(2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'), (2,'AFN',2,NULL,'Afghanistan Afghani','currency.AFN'),
(3,'ALL',2,NULL,'Albanian Lek','currency.ALL'), (3,'ALL',2,NULL,'Albanian Lek','currency.ALL'),
@@ -268,24 +268,24 @@ VALUES
(163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD'); (163,'ZWD',2,NULL,'Zimbabwe Dollar','currency.ZWD');
-- ======== end of currencies == -- ======== end of currencies ==
INSERT INTO `m_organisation_currency` (`id`, `code`, `decimal_places`, `name`, `display_symbol`, `internationalized_name_code`) INSERT INTO `m_organisation_currency` (`id`, `code`, `decimal_places`, `name`, `display_symbol`, `internationalized_name_code`)
VALUES (21,'USD',2,'US Dollar','$','currency.USD'); VALUES (21,'USD',2,'US Dollar','$','currency.USD');
INSERT INTO `m_office` (`id`, `parent_id`, `hierarchy`, `external_id`, `name`, `opening_date`) INSERT INTO `m_office` (`id`, `parent_id`, `hierarchy`, `external_id`, `name`, `opening_date`)
VALUES VALUES
(1,NULL,'.','1','Head Office','2009-01-01'); (1,NULL,'.','1','Head Office','2009-01-01');
INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `recursable`, `can_have_clients`) INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `recursable`, `can_have_clients`)
VALUES (1, NULL, 1, 'Center', 1, 0); VALUES (1, NULL, 1, 'Center', 1, 0);
INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `recursable`, `can_have_clients`) INSERT INTO `m_group_level` (`id`, `parent_id`, `super_parent`, `level_name`, `recursable`, `can_have_clients`)
VALUES (2, 1, 0, 'Group', 0, 1); VALUES (2, 1, 0, 'Group', 0, 1);
-- create single code and code value for client identifiers -- create single code and code value for client identifiers
INSERT INTO `m_code` INSERT INTO `m_code`
(`code_name`, `is_system_defined`) (`code_name`, `is_system_defined`)
VALUES VALUES
('Customer Identifier',1), ('Customer Identifier',1),
('LoanCollateral',1), ('LoanCollateral',1),
('LoanPurpose',1), ('LoanPurpose',1),
@@ -314,27 +314,27 @@ from m_code mc
where mc.`code_name` = "Customer Identifier"; where mc.`code_name` = "Customer Identifier";
-- Adding a few Default Guarantor Relationships -- Adding a few Default Guarantor Relationships
insert into m_code_value (code_id,code_value,order_position) insert into m_code_value (code_id,code_value,order_position)
select id,"Spouse",0 select id,"Spouse",0
from m_code from m_code
where m_code.code_name="GuarantorRelationship"; where m_code.code_name="GuarantorRelationship";
insert into m_code_value (code_id,code_value,order_position) insert into m_code_value (code_id,code_value,order_position)
select id,"Parent",0 select id,"Parent",0
from m_code from m_code
where m_code.code_name="GuarantorRelationship"; where m_code.code_name="GuarantorRelationship";
insert into m_code_value (code_id,code_value,order_position) insert into m_code_value (code_id,code_value,order_position)
select id,"Sibling",0 select id,"Sibling",0
from m_code from m_code
where m_code.code_name="GuarantorRelationship"; where m_code.code_name="GuarantorRelationship";
insert into m_code_value (code_id,code_value,order_position) insert into m_code_value (code_id,code_value,order_position)
select id,"Business Associate",0 select id,"Business Associate",0
from m_code from m_code
where m_code.code_name="GuarantorRelationship"; where m_code.code_name="GuarantorRelationship";
insert into m_code_value (code_id,code_value,order_position) insert into m_code_value (code_id,code_value,order_position)
select id,"Other",0 select id,"Other",0
from m_code from m_code
where m_code.code_name="GuarantorRelationship"; where m_code.code_name="GuarantorRelationship";
@@ -33,7 +33,7 @@ If you had other roles set up with specific permissions you will have to set up
-- truncate `x_registered_table`; -- truncate `x_registered_table`;
INSERT INTO `m_permission` INSERT INTO `m_permission`
(`grouping`,`code`,`entity_name`,`action_name`,`can_maker_checker`) VALUES (`grouping`,`code`,`entity_name`,`action_name`,`can_maker_checker`) VALUES
('special','ALL_FUNCTIONS',NULL,NULL,0), ('special','ALL_FUNCTIONS',NULL,NULL,0),
('special','ALL_FUNCTIONS_READ',NULL,NULL,0), ('special','ALL_FUNCTIONS_READ',NULL,NULL,0),
('special', 'CHECKER_SUPER_USER', NULL, NULL, '0'), ('special', 'CHECKER_SUPER_USER', NULL, NULL, '0'),
@@ -296,19 +296,19 @@ INSERT INTO `m_permission`
('transaction_savings', 'CALCULATEINTEREST_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'CALCULATEINTEREST', '0'); ('transaction_savings', 'CALCULATEINTEREST_SAVINGSACCOUNT_CHECKER', 'SAVINGSACCOUNT', 'CALCULATEINTEREST', '0');
-- == accounting related permissions -- == accounting related permissions
INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES INSERT INTO `m_permission` (`grouping`, `code`, `entity_name`, `action_name`, `can_maker_checker`) VALUES
('accounting', 'CREATE_GLACCOUNT', 'GLACCOUNT', 'CREATE', 1), ('accounting', 'CREATE_GLACCOUNT', 'GLACCOUNT', 'CREATE', 1),
('accounting', 'UPDATE_GLACCOUNT', 'GLACCOUNT', 'UPDATE', 1), ('accounting', 'UPDATE_GLACCOUNT', 'GLACCOUNT', 'UPDATE', 1),
('accounting', 'DELETE_GLACCOUNT', 'GLACCOUNT', 'DELETE', 1), ('accounting', 'DELETE_GLACCOUNT', 'GLACCOUNT', 'DELETE', 1),
('accounting', 'CREATE_GLCLOSURE', 'GLCLOSURE', 'CREATE', 1), ('accounting', 'CREATE_GLCLOSURE', 'GLCLOSURE', 'CREATE', 1),
('accounting', 'UPDATE_GLCLOSURE', 'GLCLOSURE', 'UPDATE', 1), ('accounting', 'UPDATE_GLCLOSURE', 'GLCLOSURE', 'UPDATE', 1),
('accounting', 'DELETE_GLCLOSURE', 'GLCLOSURE', 'DELETE', 1), ('accounting', 'DELETE_GLCLOSURE', 'GLCLOSURE', 'DELETE', 1),
('accounting', 'CREATE_JOURNALENTRY', 'JOURNALENTRY', 'CREATE', 1), ('accounting', 'CREATE_JOURNALENTRY', 'JOURNALENTRY', 'CREATE', 1),
('accounting', 'REVERSE_JOURNALENTRY', 'JOURNALENTRY', 'REVERSE', 1); ('accounting', 'REVERSE_JOURNALENTRY', 'JOURNALENTRY', 'REVERSE', 1);
INSERT INTO `m_role` (`id`, `name`, `description`) INSERT INTO `m_role` (`id`, `name`, `description`)
VALUES VALUES
(1,'Super user','This role provides all application permissions.'); (1,'Super user','This role provides all application permissions.');
/* role 1 is super user, give it ALL_FUNCTIONS */ /* role 1 is super user, give it ALL_FUNCTIONS */
@@ -317,9 +317,9 @@ select 1, id
from m_permission from m_permission
where code = 'ALL_FUNCTIONS'; where code = 'ALL_FUNCTIONS';
INSERT INTO `m_appuser` (`id`, `office_id`, `username`, `firstname`, `lastname`, `password`, `email`, INSERT INTO `m_appuser` (`id`, `office_id`, `username`, `firstname`, `lastname`, `password`, `email`,
`firsttime_login_remaining`, `nonexpired`, `nonlocked`, `nonexpired_credentials`, `enabled`) `firsttime_login_remaining`, `nonexpired`, `nonlocked`, `nonexpired_credentials`, `enabled`)
VALUES VALUES
(1,1,'mifos','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','',''); (1,1,'mifos','App','Administrator','5787039480429368bf94732aacc771cd0a3ea02bcf504ffe1185ab94213bc63a','demomfi@mifos.org','\0','','','','');
@@ -350,4 +350,4 @@ from x_registered_table r;
/* regardless of inserted permission settings above, no permissions (transactions) are preselected as being part of the maker-checker process /* regardless of inserted permission settings above, no permissions (transactions) are preselected as being part of the maker-checker process
so, just set the flag to false... the end-user can decide which permissions should be maker-checkerable so, just set the flag to false... the end-user can decide which permissions should be maker-checkerable
*/ */
update m_permission set can_maker_checker = false; update m_permission set can_maker_checker = false;
@@ -28,4 +28,3 @@ INSERT INTO `stretchy_report_parameter` VALUES (1,5,NULL),(2,5,NULL),(2,6,NULL),
insert into m_permission(grouping, `code`, entity_name, action_name, can_maker_checker) insert into m_permission(grouping, `code`, entity_name, action_name, can_maker_checker)
select 'report', concat('READ_', r.report_name), r.report_name, 'READ', false select 'report', concat('READ_', r.report_name), r.report_name, 'READ', false
from stretchy_report r; from stretchy_report r;
+1 -1
View File
@@ -30,4 +30,4 @@ data:
CREATE DATABASE IF NOT EXISTS `fineract_default`; CREATE DATABASE IF NOT EXISTS `fineract_default`;
# create root user and grant rights # create root user and grant rights
GRANT ALL ON *.* TO 'root'@'%'; GRANT ALL ON *.* TO 'root'@'%';