Question regarding extra installments with interest only components
Hello everyone, I've got some questions regarding the field recalculatedInterestComponent that can be found on the m_loan_repayment_schedule table. As far as I can see this field it is marked as 1 for extra installments with interest only or penalty charges components that are created when a loan late and after its maturity date. Anyone can confirm if these are the only cases where this field can be true? We need to do a report and want to avoid counting any extra installments that weren't created when a loan was disbursed. Also, there is another question regarding interest only components for loans with interest recalculation enabled, the installments are being created only when there is a late payment after the loan maturity date, but that causes the amount given by the template in the prepay loan option to be incorrect. Also there are instances when the extra installment created by the calculate loan penalty charges is deleted when this process is called somewhere else. I've made a change to avoid this behavior in one of our test environments but I just want to know why this should only be calculated when there are still no late payments? just to be sure I'm not making a mistake. Thanks for your attention, any reponse would be valuable. Regards, Angel
Behavior of extra installments for loan penalties charged after loan end date
Hi everyone. For some time I've been making some test for loan accounts with penalty charges but didn't notice until recently the behavior I'm about to describe: I create a loan with this parameters: Principal amount: 6000 Loan term: 1 Number of repayments: 1 Repay every: month Nominal interest: 20 Interest method: Declining balance Amortization: Equal installments Interest calculation period: Daily Repayment strategy: default Recalculate interest: enabled Advance payment adjustment type: Reduce number of installments Interest recalculation compounding on: None Days in year: 360 Days in month: 30 Frequency for recalculate outstanding principal: same Charges: Overdue fee 50% of amount Overdue fee 70% of interest The essential part in this configuration is the penalty charges and interest recalculation enabled. I disburse a new loan account on 05/December/2019 so the loan account is overdue. This is the original schedule [cid:image003.jpg@01D5CF86.789C3C90] Next, I run the job to Apply penalty to overdue loan and a new installment is created with the penalties amount. [cid:image006.jpg@01D5CF86.789C3C90] This extra installment is created exclusively by the penalties job. However there are some instances when it disappears, like after I make a repayment [cid:image009.jpg@01D5CF86.789C3C90] [cid:image011.jpg@01D5CF86.789C3C90] It also disappears when a transaction is undone and apparently when a scheduled job (which I haven't been able to identify) is run, when this happens the charges after end date are deactived and new ones need to be created when the Loan penalty job is run again. This only happens to loan accounts with interest recalculation enabled as they are able of regenerate their schedule. Is there an extra configuration not listed here that could help me avoid this behavior? If not, I'm trying to replicate the creation of the additional installment when the loan schedule is being generated. Regards.
RE: Running IntegrationTest using different locale values
Hi Vishwas Thanks for providing a detailed answer about this issue, now I know the reason why theintegration tests were failing on my machine. Regards, Angel From: Vishwas Babu Sent: sábado, 22 de junio de 2019 01:07 To: Dev Subject: Re: Running IntegrationTest using different locale values Hi Angel, >>Recently I’ve been running the integrationTest gradle task and noticed that >>some tests were failing for me, however it seems that they work perfectly for >>other people This could be caused by 1) Integration tests fail when the default tenant has a different time-zone than the system(s) running the application and database servers - Additional details and suggested fixes at https://issues.apache.org/jira/browse/FINERACT-723 2) Integration test cases fail when run on the 1st of a month - https://issues.apache.org/jira/browse/FINERACT-722 To ensure Integration tests are stable on Travis, we hardcode the system timezone to Asia/Kolkata (which is the same timezone of the default tenant) and set the system date to the 23rd of Feb 2019. Regards, Vishwas On Wed, Jun 19, 2019 at 11:22 AM Angel Cajas mailto:angel.ca...@bowpi.com>> wrote: Hi developers, Recently I’ve been running the integrationTest gradle task and noticed that some tests were failing for me, however it seems that they work perfectly for other people. I noticed that most of those test failed because of the date format being used: “dd “ and because there seems to be some locale differences between my computer and the ones being used in Fineract responses which causes some tests to fail. Adding a locale parameter to the some StringFormat objects helped me to reduce the number of test but that only make me question if are there some computer settings that I should have to run integration test these integration tests? I would really appreciate you answers Regards, Angel
Running IntegrationTest using different locale values
Hi developers, Recently I've been running the integrationTest gradle task and noticed that some tests were failing for me, however it seems that they work perfectly for other people. I noticed that most of those test failed because of the date format being used: "dd " and because there seems to be some locale differences between my computer and the ones being used in Fineract responses which causes some tests to fail. Adding a locale parameter to the some StringFormat objects helped me to reduce the number of test but that only make me question if are there some computer settings that I should have to run integration test these integration tests? I would really appreciate you answers Regards, Angel
Issue on early repayment of loans with interest recalculation enabled
Hi devs, I'm doing some test with some products and I'm bringing this issue. I don't know if this is the right way it should work but for me I doesn't seem like it is. When I make a repayment equal or greater than the installment amount before the last installment date, the principal amount for the installment is greater and It just seems like I still have some outstanding amount left to pay for the installment. I'm attaching some pictures for you to see this issue. This is my loan product configuration for interest recalculation [cid:image004.jpg@01D519FA.B97775F0] This is my original schedule, notice how I only have to pay 581.75 for the first installment, [cid:image006.jpg@01D519FA.B97775F0] I make a repayment of the total installment amount one day earlier than expected payment day [cid:image008.jpg@01D519FA.B97775F0] And lastly notice how even tough I already paid the total amount for the installment, I still continue to have some outstanding amount and this continues with every early repayment I make which causes my account to be in arrears unless I make the repayment on the expected payment date as I still have some outstanding amount from that installment. [cid:image012.jpg@01D519FA.B97775F0] I think this is wrong because if I make an early repayment with an amount equal or greater than the payment amount I shouldn't have any outstanding amount left. I will appreciate your feedback on if this is how early repayments are expected to work with interest recalculation enabled. Thanks for your attention. Regards, Angel
RE: Upgrade Apache Tomcat Version for Fineract
Hi again. Continuing with this issue I described yesterday, apparently different versions of tomcat-embed libraries are packaged in the jar because of this line in the dev-dependencies file : providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") The version isn’t provided for the spring-boot-starter-tomcat libraries so since it isn’t specified and it is using the same version from the spring-boot-gradle-plugin which hasn’t been upgraded and continues to be the 1.1.6.RELEASE version. Like I said before this may not be a major issue but this can be fixed either by specifying the spring-boot-starter-tomcat version in the dev dependencies or bumping the spring-boot-gradle-plugin version to 1.2.8. You tell If we should any of this changes it’s necessary. Thank you all for your attention From: Angel Cajas Sent: lunes, 27 de mayo de 2019 16:05 To: dev@fineract.apache.org Subject: RE: Upgrade Apache Tomcat Version for Fineract Hi, I run the tomcatRunWar task and is running Ok. Also I checked the generated files and the version packaged inside them it’s the right one 8.0.30 compatible with the current Spring version. However when I run the build task with this command: -Penv=dev clean build dist It seems that is packaging 8.0.3 and 7.0.55 versions of tomcat-embed libraries in the jar and war files as seen in this picture. [cid:image001.png@01D51541.5303E780] This only happens when the files are built with env parameter as dev. It may not be a big issue since apparently I’m the only one running the build task with this parameter. I will continue checking this issue and I’ll let you know if I find something else. Thanks for your attention From: Awasum Yannick mailto:awa...@apache.org>> Sent: lunes, 27 de mayo de 2019 14:04 To: Dev mailto:dev@fineract.apache.org>> Subject: Re: Upgrade Apache Tomcat Version for Fineract Hi, Does tomcatRunWar task not work with the current code base? If this is the case, then create an issue, send a PR and we will review together. Thanks On Mon, May 27, 2019, 16:59 Angel Cajas mailto:angel.ca...@bowpi.com>> wrote: Hello devs, I’ve been testing some features recently and tried to deploy Fineract using the embedded Tomcat server that it’s used while building the project with dev environment. However the next error was thrown when I tried to start the app with embedded Tomcat server: Caused by: java.lang.IllegalStateException: Expected method not found: java.lang .NoSuchMethodException It seems that Spring and Spring Boot versions were upgraded some months ago and that change also required the upgrade of Tomcat from version 7.0.54 to version 8.0.30 in the project dependencies. I changed the version and it worked for me, however I would like to know your opinions and if this change and if this has also happened to you while trying to start Fineract with the embedded server. Thanks for you attention Regards, Angel.
RE: Upgrade Apache Tomcat Version for Fineract
Hi, I run the tomcatRunWar task and is running Ok. Also I checked the generated files and the version packaged inside them it’s the right one 8.0.30 compatible with the current Spring version. However when I run the build task with this command: -Penv=dev clean build dist It seems that is packaging 8.0.3 and 7.0.55 versions of tomcat-embed libraries in the jar and war files as seen in this picture. [cid:image001.png@01D514A5.E4A11920] This only happens when the files are built with env parameter as dev. It may not be a big issue since apparently I’m the only one running the build task with this parameter. I will continue checking this issue and I’ll let you know if I find something else. Thanks for your attention From: Awasum Yannick Sent: lunes, 27 de mayo de 2019 14:04 To: Dev Subject: Re: Upgrade Apache Tomcat Version for Fineract Hi, Does tomcatRunWar task not work with the current code base? If this is the case, then create an issue, send a PR and we will review together. Thanks On Mon, May 27, 2019, 16:59 Angel Cajas mailto:angel.ca...@bowpi.com>> wrote: Hello devs, I’ve been testing some features recently and tried to deploy Fineract using the embedded Tomcat server that it’s used while building the project with dev environment. However the next error was thrown when I tried to start the app with embedded Tomcat server: Caused by: java.lang.IllegalStateException: Expected method not found: java.lang .NoSuchMethodException It seems that Spring and Spring Boot versions were upgraded some months ago and that change also required the upgrade of Tomcat from version 7.0.54 to version 8.0.30 in the project dependencies. I changed the version and it worked for me, however I would like to know your opinions and if this change and if this has also happened to you while trying to start Fineract with the embedded server. Thanks for you attention Regards, Angel.
RE: Client retrieval endpoint fix
Hi Awasum. Thanks for your response, I will create the issue and ask for your review after fixing it. From: Awasum Yannick Sent: miércoles, 22 de mayo de 2019 12:30 To: Dev Subject: Re: Client retrieval endpoint fix Hi Angel, Create an issue ASAP. If you are convinced its a problem, create an issue and fix it. If it turns out to be a false alarm, you can always close the issue again. Thanks for investigating. On Wed, May 22, 2019 at 4:52 PM Angel Cajas mailto:angel.ca...@bowpi.com>> wrote: Hi everyone. Recently I’ve been testing the client retrieval endpoint sending a GET request to the path “/fineract-provider/api/v1/clients” and noticed that when you provide extra parameters to the search like firstName or lastName the result is empty. Should I create an issue in Jira by myself and fix it? Or is someone in charge of reviewing the problem described before creating the issue? Regards, Angel
RE: [ANNOUNCE] Welcome Courage Angeh to the Apache Fineract PMC
Congratulations Courage!!! From: Awasum Yannick Sent: miércoles, 22 de mayo de 2019 12:43 To: Dev Subject: [ANNOUNCE] Welcome Courage Angeh to the Apache Fineract PMC Hi All, I am delighted to announce that Courage Angeh has been voted in as a new PMC Member at Apache Fineract. Courage has been a valuable member of our community for over 2 years now and in that time she has shown great leadership skills. She developed an In-App Notifications for Fineract 1.x as part of GSoC 2017. She containerized Fineract CN and is currently leading efforts towards enabling a production deployment in a Cloud Environment. Courage has been consistently active in helping to onboard new devs on our project. She is also a mentor for GSoC 2019 at Fineract and Outreachy via Mifos. Those are some remarkable accomplishments for our project. Please join me in Congratulating Courage for her contributions to the Fineract Community. Thanks. Awasum Yannick
Client retrieval endpoint fix
Hi everyone. Recently I've been testing the client retrieval endpoint sending a GET request to the path "/fineract-provider/api/v1/clients" and noticed that when you provide extra parameters to the search like firstName or lastName the result is empty. Should I create an issue in Jira by myself and fix it? Or is someone in charge of reviewing the problem described before creating the issue? Regards, Angel
RE: Unable to add or reverse or modify older transactions
Hi Parth, I may not be an expert in Fineract but from what I’ve seen and tested with the code in the develop branch you can actually reverse and add transactions made before the last one but that would depend on your loan product configuration. If you enabled the loan interest recalculation that is not allowed or if you are trying to reverse a transaction made before a loan interest waiver transaction. What configuration are you using in your loan products? Speaking of Loan Interest recalculation, I think this is not possible since a new payment or reversion done in a previous date than the last one would most likely require to recalculate interests and regenerate the repayment schedule for every following transaction because the interest portion of the following installments would certainly change. Schedule regeneration and interest recalculation are run when you add a new payment but this is done before or after the payments are processed. Like I said I’m not an expert so maybe someone else could give you a better explanation. Regards, Angel Cajas From: Parth Mangroliya Sent: jueves, 9 de mayo de 2019 12:10 To: dev@fineract.apache.org Subject: Unable to add or reverse or modify older transactions Hello , According to current fineract functiionality, user can not add or reverse a loan transaction made before last transaction for that loan. To put this in other words, system only allows adding or reversing chronologically latest transaction. I am unable to think the use cases for this restriction as I thought that system should allow adding older transactions as system is already recalculating repayment schedule from that transaction date. Can anyone help me understand this ? Thanks in advance -- Regards, Parth Mangroliya
RE: Rates module
Hello Ed, Thanks for taking some time to see this topic. We have received your comments and we will start to work on the requested changes as soon as possible. Angel -Original Message- From: Ed Cable Sent: lunes, 30 de julio de 2018 6:51 p. m. To: Dev ; Shruthi M R Cc: Adriana Pinto Subject: Re: Rates module Hello Angel, Thank you for raising this on the list again. I had been meaning to reach out to you and your team to ensure we get your contributions into one of the forthcoming releases. I've cc'd Shruthi who can take the lead on reviewing but invite all community members (not just committers) to review and provided feedback on changes made. Ed On Mon, Jul 30, 2018 at 4:16 PM Angel Cajas wrote: > Hi , > > I created an issue some time ago to add some previously defined rates > to calculate the minimum and maximum nominal rate for a loan. > I committed and pushed those changes to a forked repository and crated > a new a pull request on the dev branch of this repository: > https://github.com/apache/fineract. > I hope that I can get your feedback about the changes I did. > > Thanks for your attention > -- *Ed Cable* President/CEO, Mifos Initiative edca...@mifos.org | Skype: edcable | Mobile: +1.484.477.8649 *Collectively Creating a World of 3 Billion Maries | *http://mifos.org <http://facebook.com/mifos> <http://www.twitter.com/mifos>
Rates module
Hi , I created an issue some time ago to add some previously defined rates to calculate the minimum and maximum nominal rate for a loan. I committed and pushed those changes to a forked repository and crated a new a pull request on the dev branch of this repository: https://github.com/apache/fineract. I hope that I can get your feedback about the changes I did. Thanks for your attention
Help to start contributions
Hi, I'm Angel Cajas from Bowpi, we are ready to submit the next features for code review: *Subrates *Transaction Detail Table *Calculation of overdue amount for daily charges As this useful article I understand that we need to create an issue before creating a pull request and would like to know which of one of this features are you most interested to be included to start this process . Best Regards and thanks for your attention, Angel
RE: Code Standard Questions from BOWPI
Hello Awasum Thanks for your response, I have read the content in the links and as specified in them this project uses the Google Java Style, however I’ve seen that some of those conventions like 2 spaces indentation and column limit of 100 characters aren’t applied in the code and my IDE is formatting the code using those rules. As I’ve said before this may seem a trivial issue but I want to be sure that I am not doing something wrong while modifying existing classes. Thanks From: Awasum Yannick <awa...@apache.org> Sent: miércoles, 4 de abril de 2018 12:29 p. m. To: dev@fineract.apache.org Cc: Angel Cajas <angel.ca...@bowpi.com>; nazeerhussain.sh...@gmail.com; Juan Pablo Alvarez <juanpablo.alva...@bowpi.com>; Adriana Pinto <adriana.pi...@bowpi.com> Subject: Re: Code Standard Questions from BOWPI Hello Angel, Ed, Going through the wiki pages, I found these posts which might be helpful to the coding style issue: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=68714707 <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=68714707> https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide https://cwiki.apache.org/confluence/display/FINERACT/Becoming+a+Committer To the best of my knowledge, If there are some classes within the platform which do not follow some of these conventions then that seems to be code which violates our conventions and that needs to be fixed. What you can do in this case is reformat the code base in accordance to the above specifications and send a PR. For the rest of your query, I will give way for a more experienced contributor to Fineract 1.x to respond. Thanks. Awasum Yannick On Wed, Apr 4, 2018 at 6:46 PM, Ed Cable <edca...@mifos.org<mailto:edca...@mifos.org>> wrote: I wanted to bump this thread back up to the top as unfortunately it's gone without reply and the team at BOWPI who are really itching to contribute are blocked. Could any of our committers please respond to their queries regarding coding standards so they can unblock themselves and make the changes they want to contribute to Fineract. Thanks, Ed On Fri, Mar 2, 2018 at 9:09 AM, Angel Cajas <angel.ca...@bowpi.com<mailto:angel.ca...@bowpi.com>> wrote: > Hi, my name is Angel Cajas from BOWPI and I am making some changes to some > features developed by us some months ago to use the same methods and > validations already existing for some tasks such as the permission > settings, the serialization and deserialization of json request and data > retrieval from database. > > > While I'm doing those changes and start to understand how fineract works > some questions have arisen for me. Some may seem trivial but I would like > to get some feedback from the dev team if it is possible. > > > -According to the wiki, the coding conventions used for this project are > based on Google Java Style > <https://google.github.io/styleguide/javaguide.html> of coding. Regarding > block indentation and column limit, I've seen in some classes those rules > aren't followed and I would like to know if another coding style that isn't > documented is being used as of right now or should I reformat the code > after modifying some existing classes. > > > -I've seen there isn't an option to create new permissions, so these must > be inserted directly into the database, should these be included in a new > script file or is there another way to add this new objects that I am not > aware of? > > > -When reading using a ReadService a RowMapper is being used to transform > the query result to a DTO I guess it's because the result shouldn't include > all the fields saved in the database and just show the relevant ones and > I've seen some queries are saved as strings. It's OK to use repository > functions to retrieve such data instead of saving the query in a string? > and It is necessary all the entities be converted to DTOs when using the > ReadPlatformService? > > > I would really appreciate your help and feedback and thanks for your > attention. > > > -- *Ed Cable* President/CEO, Mifos Initiative edca...@mifos.org<mailto:edca...@mifos.org> | Skype: edcable | Mobile: +1.484.477.8649 *Collectively Creating a World of 3 Billion Maries | *http://mifos.org <http://facebook.com/mifos> <http://www.twitter.com/mifos>
Code Standard Questions from BOWPI
Hi, my name is Angel Cajas from BOWPI and I am making some changes to some features developed by us some months ago to use the same methods and validations already existing for some tasks such as the permission settings, the serialization and deserialization of json request and data retrieval from database. While I'm doing those changes and start to understand how fineract works some questions have arisen for me. Some may seem trivial but I would like to get some feedback from the dev team if it is possible. -According to the wiki, the coding conventions used for this project are based on Google Java Style<https://google.github.io/styleguide/javaguide.html> of coding. Regarding block indentation and column limit, I've seen in some classes those rules aren't followed and I would like to know if another coding style that isn't documented is being used as of right now or should I reformat the code after modifying some existing classes. -I've seen there isn't an option to create new permissions, so these must be inserted directly into the database, should these be included in a new script file or is there another way to add this new objects that I am not aware of? -When reading using a ReadService a RowMapper is being used to transform the query result to a DTO I guess it's because the result shouldn't include all the fields saved in the database and just show the relevant ones and I've seen some queries are saved as strings. It's OK to use repository functions to retrieve such data instead of saving the query in a string? and It is necessary all the entities be converted to DTOs when using the ReadPlatformService? I would really appreciate your help and feedback and thanks for your attention.