Greetings all
We have been using Mifos 2.3.1 operationally for about a month to
operate a small loan business. It is a very solid product and a credit
to those involved.
In the case where we need to apply a late penalty to a partially repaid
loan, then we use Apply Charges (Misc Penalty) under Client
charges(because Mifos doesn't seem to let us apply a penalty to the loan
itself in this situation). I am seeing some odd behaviour if I try to
waive a partially repaid penalty in this situation. This can be
reproduced as follows:
Select any active client.
Apply a Client charge (Misc Penalty) of 20.
Apply a Payment of 15, leaving a balance of 5.
Click the "Waive" link next to the 5.
The account balance becomes -15.
According to the "Recent Account Activity" table on the same page, the
waive action has deducted 20 (the original balance perhaps) rather than 5:
Account summary
Amount Due: -15 Waive
<customerAction.do?method=waiveChargeDue&globalCustNum=0002-000000042&accountType=3&prdOfferingName=Siliva%20Apulu&statusId=3&type=Client&input=Client&accountId=86&globalAccountNum=000200000000086&randomNUm=2465957871840109967¤tFlowKey=1335377845579>
Amount Overdue: 0
Total: -15
Upcoming charges (26/04/2012) View transaction history
<accountAppAction.do?method=getTrxnHistory&statusId=3&globalCustNum=0002-000000042&input=ViewClientCharges&globalAccountNum=000200000000086&accountId=86&accountType=3&prdOfferingName=Siliva%20Apulu&headingInput=ViewClientCharges&searchInput=ClientChargesDetails&randomNUm=2465957871840109967¤tFlowKey=1335377845579>
Fee Type: Amount
Misc Penalty -15
Recent Account Activity View all account activities
<customerAction.do?method=getAllActivity&statusId=3&type=Client&globalCustNum=0002-000000042&prdOfferingName=Siliva%20Apulu&input=ViewClientCharges&globalAccountNum=000200000000086&accountType=3&accountId=86&randomNUm=2465957871840109967¤tFlowKey=1335377845579>
Date Description Amount
Posted By
26/04/2012 Misc penalty applied 20
mifos
26/04/2012 Payment rcvd. 15
mifos
26/04/2012 Amnt waived 20
mifos
Recurring Account Fees
I tried to reproduce this behaviour in the demo server in 2.3.2 (see the
client "smith smith" under branch "ClientAccFeeWaiveTest") but I got a
separate error (The class 'org.mifos.framework.util.helpers.Money' does
not have the property*'aomunt*' - full stack trace follows at end of
message) when trying to View the Client charge details (which might
relate to configuration of the test server):
Any explanation of the client account fee waive behaviour/assistance
with the bug would be greatly appreciated.
Regards
Matthew
System Information
Welcome to the Mifos system information area.
Operating System / Arch / Version Windows 7/amd64/6.1
Java Vendor / Version Sun Microsystems Inc./1.6.0_27
Database vendor / version MySQL/5.1.60-community-log
Database driver / version MySQL-AB JDBC
Driver/mysql-connector-java-5.1.18 ( Revision:
[email protected] )
Application Server jetty/7.5.4.v20111024
Release Name mifos-v2.3.1
Commit Identifier 4ec7636fd6d2e9112e5d16a0d1966a76b73ed96d
Build Date Mon Apr 02 08:52:32 PDT 2012
Build Number hudson-head-h-release-archive-42
Custom Reports Directory C:\Users\Matthew\.mifos\uploads\report
Database Parameter Source [C:\mifos\config\local.properties]
Database Server localhost
Database Port 3306
Database Name mifos
Database User mifos@localhost
Date and Time 26/04/12 6:33 AM
Date and Time in ISO8601 format 2012-04-26T06:33:19.971+12:00
Operating System User Matthew
Stack Trace of error observed on demo server:
javax.el.PropertyNotFoundException: The class
'org.mifos.framework.util.helpers.Money' does not have the
property*'aomunt*'. at
javax.el.BeanELResolver.getBeanProperty(BeanELResolver.java:579) at
javax.el.BeanELResolver.getValue(BeanELResolver.java:281) at
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) at
com.sun.el.parser.AstValue.getValue(AstValue.java:138) at
com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206) at
org.apache.jasper.runtime.PageContextImpl.evaluateExpression(PageContextImpl.java:1001)
at
org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp._jspx_meth_fmt_formatNumber_5(org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp:1751)
at
org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp._jspx_meth_c_if_8(org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp:1705)
at
org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp._jspx_meth_c_if_5(org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp:1437)
at
org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp._jspx_meth_tiles_put_0(org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp:414)
at
org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp._jspx_meth_tiles_insert_0(org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp:220)
at
org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp._jspService(org.apache.jsp.pages.application.client.jsp.view_005fclientchargesdetail_jsp:143)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1352)
at
org.mifos.servlet.filters.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:70)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:474)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:935)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404) at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:870)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:285) at
org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:116) at
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
at
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
at
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
at
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1352)
at
org.mifos.servlet.filters.MifosAccessLogFilter.doFilter(MifosAccessLogFilter.java:72)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
at
org.mifos.framework.persistence.DatabaseInitFilter.doFilter(DatabaseInitFilter.java:58)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
at
org.mifos.security.authentication.MifosLegacyUsernamePasswordAuthenticationFilter.doFilter(MifosLegacyUsernamePasswordAuthenticationFilter.java:115)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
at
org.mifos.servlet.filters.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:70)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:474)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:480)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:935)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404) at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:870)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:346) at
org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
at
org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1051)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:592) at
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214) at
org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:520)
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528)
at java.lang.Thread.run(Thread.java:619)
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Mifos-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mifos-users