Report related changes
This commit is contained in:
@@ -45,9 +45,6 @@ group = 'org.mifosplatform'
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
maven {
|
|
||||||
url "http://nexus.pentaho.org/content/repositories/pentaho-public-release-repos/"
|
|
||||||
}
|
|
||||||
// mavenLocal() // useful for local dev using MariaDB4j SNAPSHOTs (not needed for real-world non-SNAPHOT builds)
|
// mavenLocal() // useful for local dev using MariaDB4j SNAPSHOTs (not needed for real-world non-SNAPHOT builds)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,11 +94,6 @@ task dist(type:Zip){
|
|||||||
include '**/*'
|
include '**/*'
|
||||||
into('apps')
|
into('apps')
|
||||||
}
|
}
|
||||||
from('src/main/pentahoReports/') {
|
|
||||||
fileMode = 0755
|
|
||||||
include '*'
|
|
||||||
into('pentahoReports')
|
|
||||||
}
|
|
||||||
from('../api-docs/') {
|
from('../api-docs/') {
|
||||||
fileMode = 0755
|
fileMode = 0755
|
||||||
include '*'
|
include '*'
|
||||||
@@ -122,20 +114,7 @@ task dist(type:Zip){
|
|||||||
into(baseName + '-' + version)
|
into(baseName + '-' + version)
|
||||||
}
|
}
|
||||||
|
|
||||||
task deployPentahoReports() {
|
|
||||||
def pentahoReportDir = System.properties['user.home'] + System.properties['file.separator'] + '.mifosx' + System.properties['file.separator'] + 'pentahoReports'
|
|
||||||
copy {
|
|
||||||
from "src/main/pentahoReports"
|
|
||||||
into pentahoReportDir
|
|
||||||
}
|
|
||||||
|
|
||||||
doLast {
|
|
||||||
println ':deployPentahoReports - moving pentaho reports under: ' + pentahoReportDir
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
war {
|
war {
|
||||||
it.dependsOn deployPentahoReports
|
|
||||||
war.finalizedBy(bootRepackage)
|
war.finalizedBy(bootRepackage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,22 +50,6 @@ dependencies {
|
|||||||
[group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'],
|
[group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'],
|
||||||
// [group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: tomcatVersion],
|
// [group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: tomcatVersion],
|
||||||
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-core', version: '3.9.1.1'],
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-extensions', version: '3.9.1-GA'],
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-extensions-scripting', version: '3.9.1-GA'],
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-wizard-core', version: '3.9.1-GA'],
|
|
||||||
[group: 'pentaho-report-designer', name: 'pentaho-reporting-engine-wizard-xul', version: '3.9.1-GA'],
|
|
||||||
|
|
||||||
[group: 'pentaho-library', name: 'libbase', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libdocbundle', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libfonts', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libformat', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libformula', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libloader', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'librepository', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libserializer', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libsparkline', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libxml', version: '1.2.8'],
|
|
||||||
|
|
||||||
[group: 'org.apache.poi',name: 'poi', version: '3.9'],
|
[group: 'org.apache.poi',name: 'poi', version: '3.9'],
|
||||||
[group: 'org.apache.poi',name: 'poi-ooxml', version: '3.9'],
|
[group: 'org.apache.poi',name: 'poi-ooxml', version: '3.9'],
|
||||||
|
|||||||
@@ -49,23 +49,7 @@ dependencies {
|
|||||||
[group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'],
|
[group: 'mysql', name: 'mysql-connector-java', version: '5.1.27'],
|
||||||
[group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: tomcatVersion],
|
[group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: tomcatVersion],
|
||||||
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-core', version: '3.9.1.1'],
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-extensions', version: '3.9.1-GA'],
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-classic-extensions-scripting', version: '3.9.1-GA'],
|
|
||||||
[group: 'pentaho-reporting-engine', name: 'pentaho-reporting-engine-wizard-core', version: '3.9.1-GA'],
|
|
||||||
[group: 'pentaho-report-designer', name: 'pentaho-reporting-engine-wizard-xul', version: '3.9.1-GA'],
|
|
||||||
|
|
||||||
[group: 'pentaho-library', name: 'libbase', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libdocbundle', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libfonts', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libformat', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libformula', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libloader', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'librepository', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libserializer', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libsparkline', version: '1.2.8'],
|
|
||||||
[group: 'pentaho-library',name: 'libxml', version: '1.2.8'],
|
|
||||||
|
|
||||||
[group: 'org.apache.poi',name: 'poi', version: '3.9'],
|
[group: 'org.apache.poi',name: 'poi', version: '3.9'],
|
||||||
[group: 'org.apache.poi',name: 'poi-ooxml', version: '3.9'],
|
[group: 'org.apache.poi',name: 'poi-ooxml', version: '3.9'],
|
||||||
[group: 'org.apache.poi',name: 'poi-ooxml-schemas', version: '3.9'],
|
[group: 'org.apache.poi',name: 'poi-ooxml-schemas', version: '3.9'],
|
||||||
|
|||||||
+14
-18
@@ -7,7 +7,6 @@ package org.mifosplatform.infrastructure.dataqueries.api;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -30,6 +29,8 @@ import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
|
|||||||
import org.mifosplatform.infrastructure.dataqueries.data.ReportData;
|
import org.mifosplatform.infrastructure.dataqueries.data.ReportData;
|
||||||
import org.mifosplatform.infrastructure.dataqueries.service.GenericDataService;
|
import org.mifosplatform.infrastructure.dataqueries.service.GenericDataService;
|
||||||
import org.mifosplatform.infrastructure.dataqueries.service.ReadReportingService;
|
import org.mifosplatform.infrastructure.dataqueries.service.ReadReportingService;
|
||||||
|
import org.mifosplatform.infrastructure.report.provider.ReportingProcessServiceProvider;
|
||||||
|
import org.mifosplatform.infrastructure.report.service.ReportingProcessService;
|
||||||
import org.mifosplatform.infrastructure.security.exception.NoAuthorizationException;
|
import org.mifosplatform.infrastructure.security.exception.NoAuthorizationException;
|
||||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||||
import org.mifosplatform.useradministration.domain.AppUser;
|
import org.mifosplatform.useradministration.domain.AppUser;
|
||||||
@@ -46,14 +47,17 @@ public class RunreportsApiResource {
|
|||||||
private final ToApiJsonSerializer<ReportData> toApiJsonSerializer;
|
private final ToApiJsonSerializer<ReportData> toApiJsonSerializer;
|
||||||
private final ReadReportingService readExtraDataAndReportingService;
|
private final ReadReportingService readExtraDataAndReportingService;
|
||||||
private final GenericDataService genericDataService;
|
private final GenericDataService genericDataService;
|
||||||
|
private final ReportingProcessServiceProvider reportingProcessServiceProvider;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public RunreportsApiResource(final PlatformSecurityContext context, final ReadReportingService readExtraDataAndReportingService,
|
public RunreportsApiResource(final PlatformSecurityContext context, final ReadReportingService readExtraDataAndReportingService,
|
||||||
final GenericDataService genericDataService, final ToApiJsonSerializer<ReportData> toApiJsonSerializer) {
|
final GenericDataService genericDataService, final ToApiJsonSerializer<ReportData> toApiJsonSerializer,
|
||||||
|
final ReportingProcessServiceProvider reportingProcessServiceProvider) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.readExtraDataAndReportingService = readExtraDataAndReportingService;
|
this.readExtraDataAndReportingService = readExtraDataAndReportingService;
|
||||||
this.genericDataService = genericDataService;
|
this.genericDataService = genericDataService;
|
||||||
this.toApiJsonSerializer = toApiJsonSerializer;
|
this.toApiJsonSerializer = toApiJsonSerializer;
|
||||||
|
this.reportingProcessServiceProvider = reportingProcessServiceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@@ -74,12 +78,9 @@ public class RunreportsApiResource {
|
|||||||
String parameterTypeValue = null;
|
String parameterTypeValue = null;
|
||||||
if (!parameterType) {
|
if (!parameterType) {
|
||||||
parameterTypeValue = "report";
|
parameterTypeValue = "report";
|
||||||
if (this.readExtraDataAndReportingService.getReportType(reportName).equalsIgnoreCase("Pentaho")) {
|
String reportType = this.readExtraDataAndReportingService.getReportType(reportName);
|
||||||
final Map<String, String> reportParams = getReportParams(queryParams, true);
|
ReportingProcessService reportingProcessService = this.reportingProcessServiceProvider.findReportingProcessService(reportType);
|
||||||
final Locale locale = ApiParameterHelper.extractLocale(queryParams);
|
if (reportingProcessService != null) { return reportingProcessService.processRequest(reportName, queryParams); }
|
||||||
return this.readExtraDataAndReportingService.processPentahoRequest(reportName, queryParams.getFirst("output-type"),
|
|
||||||
reportParams, locale);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
parameterTypeValue = "parameter";
|
parameterTypeValue = "parameter";
|
||||||
}
|
}
|
||||||
@@ -87,7 +88,7 @@ public class RunreportsApiResource {
|
|||||||
// PDF format
|
// PDF format
|
||||||
|
|
||||||
if (exportPdf) {
|
if (exportPdf) {
|
||||||
final Map<String, String> reportParams = getReportParams(queryParams, false);
|
final Map<String, String> reportParams = getReportParams(queryParams);
|
||||||
final String pdfFileName = this.readExtraDataAndReportingService
|
final String pdfFileName = this.readExtraDataAndReportingService
|
||||||
.retrieveReportPDF(reportName, parameterTypeValue, reportParams);
|
.retrieveReportPDF(reportName, parameterTypeValue, reportParams);
|
||||||
|
|
||||||
@@ -102,7 +103,7 @@ public class RunreportsApiResource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!exportCsv) {
|
if (!exportCsv) {
|
||||||
final Map<String, String> reportParams = getReportParams(queryParams, false);
|
final Map<String, String> reportParams = getReportParams(queryParams);
|
||||||
|
|
||||||
final GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(reportName,
|
final GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(reportName,
|
||||||
parameterTypeValue, reportParams);
|
parameterTypeValue, reportParams);
|
||||||
@@ -124,7 +125,7 @@ public class RunreportsApiResource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CSV Export
|
// CSV Export
|
||||||
final Map<String, String> reportParams = getReportParams(queryParams, false);
|
final Map<String, String> reportParams = getReportParams(queryParams);
|
||||||
final StreamingOutput result = this.readExtraDataAndReportingService
|
final StreamingOutput result = this.readExtraDataAndReportingService
|
||||||
.retrieveReportCSV(reportName, parameterTypeValue, reportParams);
|
.retrieveReportCSV(reportName, parameterTypeValue, reportParams);
|
||||||
|
|
||||||
@@ -143,7 +144,7 @@ public class RunreportsApiResource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, String> getReportParams(final MultivaluedMap<String, String> queryParams, final Boolean isPentaho) {
|
private Map<String, String> getReportParams(final MultivaluedMap<String, String> queryParams) {
|
||||||
|
|
||||||
final Map<String, String> reportParams = new HashMap<>();
|
final Map<String, String> reportParams = new HashMap<>();
|
||||||
final Set<String> keys = queryParams.keySet();
|
final Set<String> keys = queryParams.keySet();
|
||||||
@@ -152,12 +153,7 @@ public class RunreportsApiResource {
|
|||||||
for (final String k : keys) {
|
for (final String k : keys) {
|
||||||
|
|
||||||
if (k.startsWith("R_")) {
|
if (k.startsWith("R_")) {
|
||||||
if (isPentaho) {
|
pKey = "${" + k.substring(2) + "}";
|
||||||
pKey = k.substring(2);
|
|
||||||
} else {
|
|
||||||
pKey = "${" + k.substring(2) + "}";
|
|
||||||
}
|
|
||||||
|
|
||||||
pValue = queryParams.get(k).get(0);
|
pValue = queryParams.get(k).get(0);
|
||||||
reportParams.put(pKey, pValue);
|
reportParams.put(pKey, pValue);
|
||||||
}
|
}
|
||||||
|
|||||||
-4
@@ -6,10 +6,8 @@
|
|||||||
package org.mifosplatform.infrastructure.dataqueries.service;
|
package org.mifosplatform.infrastructure.dataqueries.service;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
import javax.ws.rs.core.StreamingOutput;
|
import javax.ws.rs.core.StreamingOutput;
|
||||||
|
|
||||||
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
|
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
|
||||||
@@ -22,8 +20,6 @@ public interface ReadReportingService {
|
|||||||
|
|
||||||
GenericResultsetData retrieveGenericResultset(String name, String type, Map<String, String> extractedQueryParams);
|
GenericResultsetData retrieveGenericResultset(String name, String type, Map<String, String> extractedQueryParams);
|
||||||
|
|
||||||
Response processPentahoRequest(String reportName, String outputType, Map<String, String> queryParams, Locale locale);
|
|
||||||
|
|
||||||
String retrieveReportPDF(String name, String type, Map<String, String> extractedQueryParams);
|
String retrieveReportPDF(String name, String type, Map<String, String> extractedQueryParams);
|
||||||
|
|
||||||
String getReportType(String reportName);
|
String getReportType(String reportName);
|
||||||
|
|||||||
+1
-174
@@ -6,34 +6,24 @@
|
|||||||
package org.mifosplatform.infrastructure.dataqueries.service;
|
package org.mifosplatform.infrastructure.dataqueries.service;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.Date;
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
import javax.ws.rs.core.StreamingOutput;
|
import javax.ws.rs.core.StreamingOutput;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
|
import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
|
||||||
import org.mifosplatform.infrastructure.core.domain.MifosPlatformTenant;
|
|
||||||
import org.mifosplatform.infrastructure.core.domain.MifosPlatformTenantConnection;
|
|
||||||
import org.mifosplatform.infrastructure.core.exception.PlatformDataIntegrityException;
|
import org.mifosplatform.infrastructure.core.exception.PlatformDataIntegrityException;
|
||||||
import org.mifosplatform.infrastructure.core.service.RoutingDataSource;
|
import org.mifosplatform.infrastructure.core.service.RoutingDataSource;
|
||||||
import org.mifosplatform.infrastructure.core.service.ThreadLocalContextUtil;
|
|
||||||
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
|
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
|
||||||
import org.mifosplatform.infrastructure.dataqueries.data.ReportData;
|
import org.mifosplatform.infrastructure.dataqueries.data.ReportData;
|
||||||
import org.mifosplatform.infrastructure.dataqueries.data.ReportParameterData;
|
import org.mifosplatform.infrastructure.dataqueries.data.ReportParameterData;
|
||||||
@@ -44,20 +34,6 @@ import org.mifosplatform.infrastructure.dataqueries.exception.ReportNotFoundExce
|
|||||||
import org.mifosplatform.infrastructure.documentmanagement.contentrepository.FileSystemContentRepository;
|
import org.mifosplatform.infrastructure.documentmanagement.contentrepository.FileSystemContentRepository;
|
||||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||||
import org.mifosplatform.useradministration.domain.AppUser;
|
import org.mifosplatform.useradministration.domain.AppUser;
|
||||||
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.DefaultReportEnvironment;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.MasterReport;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.ReportProcessingException;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.PdfReportUtil;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.modules.output.table.csv.CSVReportUtil;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.modules.output.table.html.HtmlReportUtil;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.modules.output.table.xls.ExcelReportUtil;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.parameters.ParameterDefinitionEntry;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.parameters.ReportParameterDefinition;
|
|
||||||
import org.pentaho.reporting.engine.classic.core.util.ReportParameterValues;
|
|
||||||
import org.pentaho.reporting.libraries.resourceloader.Resource;
|
|
||||||
import org.pentaho.reporting.libraries.resourceloader.ResourceException;
|
|
||||||
import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -80,14 +56,10 @@ public class ReadReportingServiceImpl implements ReadReportingService {
|
|||||||
private final DataSource dataSource;
|
private final DataSource dataSource;
|
||||||
private final PlatformSecurityContext context;
|
private final PlatformSecurityContext context;
|
||||||
private final GenericDataService genericDataService;
|
private final GenericDataService genericDataService;
|
||||||
private boolean noPentaho = false;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ReadReportingServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
|
public ReadReportingServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
|
||||||
final GenericDataService genericDataService) {
|
final GenericDataService genericDataService) {
|
||||||
// kick off pentaho reports server
|
|
||||||
ClassicEngineBoot.getInstance().start();
|
|
||||||
this.noPentaho = false;
|
|
||||||
|
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.dataSource = dataSource;
|
this.dataSource = dataSource;
|
||||||
@@ -223,7 +195,7 @@ public class ReadReportingServiceImpl implements ReadReportingService {
|
|||||||
|
|
||||||
final SqlRowSet rs = this.jdbcTemplate.queryForRowSet(inputSqlWrapped);
|
final SqlRowSet rs = this.jdbcTemplate.queryForRowSet(inputSqlWrapped);
|
||||||
|
|
||||||
if (rs.next()) { return rs.getString("the_sql"); }
|
if (rs.next() && rs.getString("the_sql") != null) { return rs.getString("the_sql"); }
|
||||||
throw new ReportNotFoundException(inputSql);
|
throw new ReportNotFoundException(inputSql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,151 +212,6 @@ public class ReadReportingServiceImpl implements ReadReportingService {
|
|||||||
throw new ReportNotFoundException(sql);
|
throw new ReportNotFoundException(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response processPentahoRequest(final String reportName, final String outputTypeParam, final Map<String, String> queryParams,
|
|
||||||
final Locale locale) {
|
|
||||||
|
|
||||||
String outputType = "HTML";
|
|
||||||
if (StringUtils.isNotBlank(outputTypeParam)) {
|
|
||||||
outputType = outputTypeParam;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(outputType.equalsIgnoreCase("HTML") || outputType.equalsIgnoreCase("PDF") || outputType.equalsIgnoreCase("XLS")
|
|
||||||
|| outputType.equalsIgnoreCase("XLSX") || outputType.equalsIgnoreCase("CSV"))) { throw new PlatformDataIntegrityException(
|
|
||||||
"error.msg.invalid.outputType", "No matching Output Type: " + outputType); }
|
|
||||||
|
|
||||||
if (this.noPentaho) { throw new PlatformDataIntegrityException("error.msg.no.pentaho", "Pentaho is not enabled",
|
|
||||||
"Pentaho is not enabled"); }
|
|
||||||
|
|
||||||
final String reportPath = FileSystemContentRepository.MIFOSX_BASE_DIR + File.separator + "pentahoReports" + File.separator
|
|
||||||
+ reportName + ".prpt";
|
|
||||||
logger.info("Report path: " + reportPath);
|
|
||||||
|
|
||||||
// load report definition
|
|
||||||
final ResourceManager manager = new ResourceManager();
|
|
||||||
manager.registerDefaults();
|
|
||||||
Resource res;
|
|
||||||
|
|
||||||
try {
|
|
||||||
res = manager.createDirectly(reportPath, MasterReport.class);
|
|
||||||
final MasterReport masterReport = (MasterReport) res.getResource();
|
|
||||||
final DefaultReportEnvironment reportEnvironment = (DefaultReportEnvironment) masterReport.getReportEnvironment();
|
|
||||||
if (locale != null) {
|
|
||||||
reportEnvironment.setLocale(locale);
|
|
||||||
}
|
|
||||||
addParametersToReport(masterReport, queryParams);
|
|
||||||
|
|
||||||
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
||||||
|
|
||||||
if ("PDF".equalsIgnoreCase(outputType)) {
|
|
||||||
PdfReportUtil.createPDF(masterReport, baos);
|
|
||||||
return Response.ok().entity(baos.toByteArray()).type("application/pdf").build();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ("XLS".equalsIgnoreCase(outputType)) {
|
|
||||||
ExcelReportUtil.createXLS(masterReport, baos);
|
|
||||||
return Response.ok().entity(baos.toByteArray()).type("application/vnd.ms-excel")
|
|
||||||
.header("Content-Disposition", "attachment;filename=" + reportName.replaceAll(" ", "") + ".xls").build();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ("XLSX".equalsIgnoreCase(outputType)) {
|
|
||||||
ExcelReportUtil.createXLSX(masterReport, baos);
|
|
||||||
return Response.ok().entity(baos.toByteArray()).type("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|
|
||||||
.header("Content-Disposition", "attachment;filename=" + reportName.replaceAll(" ", "") + ".xlsx").build();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ("CSV".equalsIgnoreCase(outputType)) {
|
|
||||||
CSVReportUtil.createCSV(masterReport, baos, "UTF-8");
|
|
||||||
return Response.ok().entity(baos.toByteArray()).type("text/csv")
|
|
||||||
.header("Content-Disposition", "attachment;filename=" + reportName.replaceAll(" ", "") + ".csv").build();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ("HTML".equalsIgnoreCase(outputType)) {
|
|
||||||
HtmlReportUtil.createStreamHTML(masterReport, baos);
|
|
||||||
return Response.ok().entity(baos.toByteArray()).type("text/html").build();
|
|
||||||
}
|
|
||||||
} catch (final ResourceException e) {
|
|
||||||
throw new PlatformDataIntegrityException("error.msg.reporting.error", e.getMessage());
|
|
||||||
} catch (final ReportProcessingException e) {
|
|
||||||
throw new PlatformDataIntegrityException("error.msg.reporting.error", e.getMessage());
|
|
||||||
} catch (final IOException e) {
|
|
||||||
throw new PlatformDataIntegrityException("error.msg.reporting.error", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new PlatformDataIntegrityException("error.msg.invalid.outputType", "No matching Output Type: " + outputType);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addParametersToReport(final MasterReport report, final Map<String, String> queryParams) {
|
|
||||||
|
|
||||||
final AppUser currentUser = this.context.authenticatedUser();
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
final ReportParameterValues rptParamValues = report.getParameterValues();
|
|
||||||
final ReportParameterDefinition paramsDefinition = report.getParameterDefinition();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* only allow integer, long, date and string parameter types and
|
|
||||||
* assume all mandatory - could go more detailed like Pawel did in
|
|
||||||
* Mifos later and could match incoming and pentaho parameters
|
|
||||||
* better... currently assuming they come in ok... and if not an
|
|
||||||
* error
|
|
||||||
*/
|
|
||||||
for (final ParameterDefinitionEntry paramDefEntry : paramsDefinition.getParameterDefinitions()) {
|
|
||||||
final String paramName = paramDefEntry.getName();
|
|
||||||
if (!((paramName.equals("tenantUrl")) || (paramName.equals("userhierarchy") || (paramName.equals("username")) || (paramName
|
|
||||||
.equals("password") || (paramName.equals("userid")))))) {
|
|
||||||
logger.info("paramName:" + paramName);
|
|
||||||
final String pValue = queryParams.get(paramName);
|
|
||||||
if (StringUtils.isBlank(pValue)) { throw new PlatformDataIntegrityException("error.msg.reporting.error",
|
|
||||||
"Pentaho Parameter: " + paramName + " - not Provided"); }
|
|
||||||
|
|
||||||
final Class<?> clazz = paramDefEntry.getValueType();
|
|
||||||
logger.info("addParametersToReport(" + paramName + " : " + pValue + " : " + clazz.getCanonicalName() + ")");
|
|
||||||
if (clazz.getCanonicalName().equalsIgnoreCase("java.lang.Integer")) {
|
|
||||||
rptParamValues.put(paramName, Integer.parseInt(pValue));
|
|
||||||
} else if (clazz.getCanonicalName().equalsIgnoreCase("java.lang.Long")) {
|
|
||||||
rptParamValues.put(paramName, Long.parseLong(pValue));
|
|
||||||
} else if (clazz.getCanonicalName().equalsIgnoreCase("java.sql.Date")) {
|
|
||||||
rptParamValues.put(paramName, Date.valueOf(pValue));
|
|
||||||
} else {
|
|
||||||
rptParamValues.put(paramName, pValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// tenant database name and current user's office hierarchy
|
|
||||||
// passed as parameters to allow multitenant penaho reporting
|
|
||||||
// and
|
|
||||||
// data scoping
|
|
||||||
final Connection connection = this.dataSource.getConnection();
|
|
||||||
String tenantUrl;
|
|
||||||
try {
|
|
||||||
tenantUrl = connection.getMetaData().getURL();
|
|
||||||
} finally {
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
final String userhierarchy = currentUser.getOffice().getHierarchy();
|
|
||||||
logger.info("db URL:" + tenantUrl + " userhierarchy:" + userhierarchy);
|
|
||||||
rptParamValues.put("userhierarchy", userhierarchy);
|
|
||||||
|
|
||||||
final Long userid = currentUser.getId();
|
|
||||||
logger.info("db URL:" + tenantUrl + " userid:" + userid);
|
|
||||||
rptParamValues.put("userid", userid);
|
|
||||||
|
|
||||||
final MifosPlatformTenant tenant = ThreadLocalContextUtil.getTenant();
|
|
||||||
final MifosPlatformTenantConnection tenantConnection = tenant.getConnection();
|
|
||||||
|
|
||||||
rptParamValues.put("tenantUrl", tenantUrl);
|
|
||||||
rptParamValues.put("username", tenantConnection.getSchemaUsername());
|
|
||||||
rptParamValues.put("password", tenantConnection.getSchemaPassword());
|
|
||||||
} catch (final Exception e) {
|
|
||||||
logger.error("error.msg.reporting.error:" + e.getMessage());
|
|
||||||
throw new PlatformDataIntegrityException("error.msg.reporting.error", e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String retrieveReportPDF(final String reportName, final String type, final Map<String, String> queryParams) {
|
public String retrieveReportPDF(final String reportName, final String type, final Map<String, String> queryParams) {
|
||||||
|
|
||||||
|
|||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
package org.mifosplatform.infrastructure.report.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target(ElementType.TYPE)
|
||||||
|
@Documented
|
||||||
|
public @interface ReportService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the type of the report
|
||||||
|
*/
|
||||||
|
String type();
|
||||||
|
}
|
||||||
+61
@@ -0,0 +1,61 @@
|
|||||||
|
package org.mifosplatform.infrastructure.report.provider;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
import org.mifosplatform.infrastructure.report.annotation.ReportService;
|
||||||
|
import org.mifosplatform.infrastructure.report.service.ReportingProcessService;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.ApplicationContextAware;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Scope("singleton")
|
||||||
|
public class ReportingProcessServiceProvider implements ApplicationContextAware {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(ReportingProcessServiceProvider.class);
|
||||||
|
|
||||||
|
private ApplicationContext applicationContext;
|
||||||
|
|
||||||
|
Map<String, String> reportingProcessServices = null;
|
||||||
|
|
||||||
|
ReportingProcessServiceProvider() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReportingProcessService findReportingProcessService(final String reportType) {
|
||||||
|
if (this.reportingProcessServices.containsKey(reportType)) { return (ReportingProcessService) this.applicationContext
|
||||||
|
.getBean(this.reportingProcessServices.get(reportType)); }
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||||
|
this.applicationContext = applicationContext;
|
||||||
|
this.initializeRegistry();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeRegistry() {
|
||||||
|
if (this.reportingProcessServices == null) {
|
||||||
|
this.reportingProcessServices = new HashMap<>();
|
||||||
|
|
||||||
|
final String[] reportServiceBeans = this.applicationContext.getBeanNamesForAnnotation(ReportService.class);
|
||||||
|
if (ArrayUtils.isNotEmpty(reportServiceBeans)) {
|
||||||
|
for (final String reportName : reportServiceBeans) {
|
||||||
|
LOGGER.info("Register report service '" + reportName + "' ...");
|
||||||
|
final ReportService service = this.applicationContext.findAnnotationOnBean(reportName, ReportService.class);
|
||||||
|
try {
|
||||||
|
this.reportingProcessServices.put(service.type(), reportName);
|
||||||
|
} catch (final Throwable th) {
|
||||||
|
LOGGER.error("Unable to register reporting service '" + reportName + "'!", th);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
package org.mifosplatform.infrastructure.report.service;
|
||||||
|
|
||||||
|
import javax.ws.rs.core.MultivaluedMap;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
|
public interface ReportingProcessService {
|
||||||
|
|
||||||
|
Response processRequest(String reportName, MultivaluedMap<String, String> queryParams);
|
||||||
|
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,26 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.loan.Officer=Loan Officer
|
|
||||||
label.column.client=Client
|
|
||||||
label.column.Loan.Account.No=Loan Account No.
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Annual.Nominal.Interest.Rate=Annual Nominal Interest Rate
|
|
||||||
label.column.Disbursed.Date=Disbursed Date
|
|
||||||
label.column.Expected.Matured.On=Expected Matured On
|
|
||||||
label.column.Principal.Repaid=Principal Repaid
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Repaid=Interest Repaid
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Fees.Repaid=Fees Repaid
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Penalties.Repaid=Penalties Repaid
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
label.groupby.Branch=Branch
|
|
||||||
label.title.Active.Loans.Details=Active Loans - Details
|
|
||||||
lable.group.tolat=Total
|
|
||||||
Binary file not shown.
@@ -1,25 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.No.of.Clients=No. of Clients
|
|
||||||
label.column.No.Active.Loans=No. Active Loans
|
|
||||||
label.column.No.of.Loans.in.Arrears=No. of Loans in Arrears
|
|
||||||
label.column.Total.Loans.Disbursed=Total Loans Disbursed
|
|
||||||
label.column.Principal.Repaid=Principal Repaid
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Total.Interest=Total Interest
|
|
||||||
label.column.Interest.Repaid=Interest Repaid
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Total.Fees=Total Fees
|
|
||||||
label.column.Fees.Repaid=Fees Repaid
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Total.Penalties=Total Penalties
|
|
||||||
label.column.Penalties.Repaid=Penalties Repaid
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
label.column.Portfolio.at.Risk%=Portfolio at Risk %
|
|
||||||
label.groupby.column.Branch=Branch
|
|
||||||
|
|
||||||
label.title.Active.Loans.Details=Active Loan-Summary
|
|
||||||
BIN
Binary file not shown.
-25
@@ -1,25 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.No.of.Clients=No. of Clients
|
|
||||||
label.column.No.Active.Loans=No. Active Loans
|
|
||||||
label.column.No.of.Loans.in.Arrears=No. of Loans in Arrears
|
|
||||||
label.column.Total.Loans.Disbursed=Total Loans Disbursed
|
|
||||||
label.column.Principal.Repaid=Principal Repaid
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Total.Interest=Total Interest
|
|
||||||
label.column.Interest.Repaid=Interest Repaid
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Total.Fees=Total Fees
|
|
||||||
label.column.Fees.Repaid=Fees Repaid
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Total.Penalties=Total Penalties
|
|
||||||
label.column.Penalties.Repaid=Penalties Repaid
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
label.column.Portfolio.at.Risk%=Portfolio at Risk %
|
|
||||||
lable.title.Active.Loans.Passed.Final.Maturity.Summary=Active Loans Passed Final Maturity Summary
|
|
||||||
|
|
||||||
|
|
||||||
BIN
Binary file not shown.
-27
@@ -1,27 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.column.Client=Client
|
|
||||||
label.column.Loan.Account.No=Loan Account No.
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Annual.Nominal.Interest.Rate=Annual Nominal Interest Rate
|
|
||||||
label.column.Disbursed.Date=Disbursed Date
|
|
||||||
label.column.Expected.Matured.On=Expected Matured On
|
|
||||||
label.column.Principal.Repaid=Principal Repaid
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Repaid=Interest Repaid
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Fees.Repaid=Fees Repaid
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Penalties.Repaid=Penalties Repaid
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
|
|
||||||
lable.title.Active.Loans.Passed.Final.Maturity=Active Loans Passed Final Maturity
|
|
||||||
|
|
||||||
lable.title.group.Branch=Branch
|
|
||||||
BIN
Binary file not shown.
@@ -1,20 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Client.Account.No=Client Account No
|
|
||||||
label.column.Client=Client
|
|
||||||
label.column.Loan.Account.No=Loan Account No
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Loan.Principal.Amount=Loan Principal Amount
|
|
||||||
label.column.Annual.Nominal.Interest.Rate=Annual Nominal Interest Rate
|
|
||||||
label.column.Disbursed.Date=Disbursed Date
|
|
||||||
label.column.Total.Loan(P+I+F+Pen)=Total Loan (P+I+F+Pen)
|
|
||||||
label.column.Total.Repaid(P+I+F+Pen)=Total Repaid (P+I+F+Pen)
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.title.Active.Loans.by.Disbursal.Period=Active Loans by Disbursal Period
|
|
||||||
lable.grouptotal.by.date=Total
|
|
||||||
lable.grouptotal.by.Branch= Branch Total
|
|
||||||
label.groupby.column.Disbursed.Date=Disbursed Date
|
|
||||||
label.groupby.column.Branch=Branch
|
|
||||||
lable.title.Disbursal.Period.from=Disbursal Period from
|
|
||||||
lable.title.Disbursal.Period.to=To
|
|
||||||
BIN
Binary file not shown.
-24
@@ -1,24 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.No.of.Clients=No. of Clients
|
|
||||||
label.column.No.Active.Loans=No. Active Loans
|
|
||||||
label.column.No.of.Loans.in.Arrears=No. of Loans in Arrears
|
|
||||||
label.column.Total.Loans.Disbursed=Total Loans Disbursed
|
|
||||||
label.column.Principal.Repaid=Principal Repaid
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Total.Interest=Total Interest
|
|
||||||
label.column.Interest.Repaid=Interest Repaid
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Total.Fees=Total Fees
|
|
||||||
label.column.Fees.Repaid=Fees Repaid
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Total.Penalties=Total Penalties
|
|
||||||
label.column.Penalties.Repaid=Penalties Repaid
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
label.column.Portfolio.at.Risk%=Portfolio at Risk %
|
|
||||||
label.groupby.column.Branch=Branch
|
|
||||||
lable.title.Active.Loans.In.Last.Installment.Summary=Active Loans In Last Installment Summary
|
|
||||||
BIN
Binary file not shown.
@@ -1,26 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.column.Client.Account.No=Client Account No
|
|
||||||
label.column.Client=Client
|
|
||||||
label.column.Loan.Account.No=Loan Account No
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Annual.Nominal.Interest.Rate=Annual Nominal Interest Rate
|
|
||||||
label.column.Disbursed=Disbursed
|
|
||||||
label.column.Expected.Matured.On=Expected Matured On
|
|
||||||
label.column.Principal.Repaid=Principal Repaid
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Repaid=Interest Repaid
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Fees.Repaid=Fees Repaid
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Penalties.Repaid=Penalties Repaid
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
label.groupby.column.Branch=Branch
|
|
||||||
lable.title.Active.Loans.In.Last.Installment=Active Loans In Last Installment
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
active_loan_summery.=Active Loan Summary per Branch
|
|
||||||
branch.=Branch
|
|
||||||
centers.=No of Centers
|
|
||||||
groups.=No of Groups
|
|
||||||
clients.=No of Clients
|
|
||||||
activeloan.=No of Active Loan
|
|
||||||
loanarrears.=No of Loan in Arrears
|
|
||||||
disbursed.=Total Loans Disbursed
|
|
||||||
principalrepaid.=Total Principal Repaid
|
|
||||||
interestrepaid.=Total Interest Repaid
|
|
||||||
principaloutstand.=Total Principal Outstanding
|
|
||||||
interestoutstand.=Total Interest Outstanding
|
|
||||||
amountarreas.=Amount in Arrears
|
|
||||||
total.=Total
|
|
||||||
PrintedBy\:=Printed By :
|
|
||||||
On\:=On :
|
|
||||||
Binary file not shown.
@@ -1,20 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Client.Account.No=Client Account No.
|
|
||||||
label.column.Client.Name=Client Name
|
|
||||||
label.column.Account.Number=Account Number
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Original.Principal=Original Principal
|
|
||||||
label.column.Original.Interest=Original Interest
|
|
||||||
label.column.Principal.Paid=Principal Paid
|
|
||||||
label.column.Interest.Paid=Interest Paid
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Days.in.Arrears=Days in Arrears
|
|
||||||
label.column.Weeks.In.Arrears.Band=Weeks In Arrears Band
|
|
||||||
label.column.Days.in.Arrears.Band=Days in Arrears Band
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Aging.Detail=Aging Detail
|
|
||||||
|
|
||||||
lable.title.group.Branch=Branch
|
|
||||||
BIN
Binary file not shown.
@@ -1,12 +0,0 @@
|
|||||||
label.column.currency=currency
|
|
||||||
label.column.Days.In.Arrears=Days In Arrears
|
|
||||||
label.column.No.Of.Loans=No Of Loans
|
|
||||||
label.column.Original.Principal=Original Principal
|
|
||||||
label.column.Original.Interest=Original Interest
|
|
||||||
label.column.Principal.Paid=Principal Paid
|
|
||||||
label.column.Interest.Paid=Interest Paid
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
lable.title.Aging.Summary.Months=Aging Summary (Arrears in Months)
|
|
||||||
|
|
||||||
lable.title.group.Branch=Branch
|
|
||||||
BIN
Binary file not shown.
@@ -1,13 +0,0 @@
|
|||||||
label.column.Currency=Currency
|
|
||||||
label.column.Weeks.In.Arrears=Weeks In Arrears(Up To)
|
|
||||||
label.column.N.Of.Loans=No Of Loans
|
|
||||||
label.column.Original.Principal=Original Principal
|
|
||||||
label.column.Original.Interest=Original Interest
|
|
||||||
label.column.Principal.Paid=Principal Paid
|
|
||||||
label.column.Interest.Paid=Interest Paid
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
|
|
||||||
lable.title.Aging.Summary.in.Weeks=Aging Summary (Arrears in Weeks)
|
|
||||||
|
|
||||||
lable.title.group.Branch=Branch
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,10 +0,0 @@
|
|||||||
label.column.ID=ID
|
|
||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Client.Account.No=Client Account No.
|
|
||||||
label.column.Name=Name
|
|
||||||
label.column.Status=Status
|
|
||||||
label.column.Activation=Activation
|
|
||||||
label.column.External.Id=External Id
|
|
||||||
|
|
||||||
lable.title.Client.Listing=Client Listing
|
|
||||||
lable.title.group.Branch=Branch
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,19 +0,0 @@
|
|||||||
label.column.Transaction.ID=Transaction ID
|
|
||||||
label.column.Transaction.Date=Transaction Date
|
|
||||||
label.column.Transaction.Type=Transaction Type
|
|
||||||
label.column.Debit=Debit
|
|
||||||
label.column.Credit=Credit
|
|
||||||
label.column.Balance=Balance
|
|
||||||
label.column.Reversed=Reversed
|
|
||||||
lable.title.Saving.Transaction=Client Saving Transaction
|
|
||||||
lable.title.Transaction.from=From :
|
|
||||||
lable.title.Saving.Transaction.To= To :
|
|
||||||
lable.title.Client.Name=Client Name
|
|
||||||
lable.title.Savings.Account.Name/No=Account Name/No
|
|
||||||
lable.title.Branch=Branch
|
|
||||||
lable.title.Staff=Staff
|
|
||||||
lable.title.Interest=Interest Rate
|
|
||||||
lable.title.Balance=Balance
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,18 +0,0 @@
|
|||||||
label.column.Transaction.ID=Transaction Id
|
|
||||||
label.column.Transaction.Date=Date de transaction
|
|
||||||
label.column.Transaction.Type=Type de transaction
|
|
||||||
label.column.Debit=Débit
|
|
||||||
label.column.Credit=Crédit
|
|
||||||
label.column.Balance=Solde
|
|
||||||
label.column.Reversed=Reversed
|
|
||||||
lable.title.Transaction.from=À partir de la date :
|
|
||||||
lable.title.Saving.Transaction.To= Jusqu’à la date :
|
|
||||||
lable.title.Client.Name=Client Nom
|
|
||||||
lable.title.Savings.Account.Name/No=Account Name/No
|
|
||||||
lable.title.Branch=Branch
|
|
||||||
lable.title.Staff=Staff
|
|
||||||
lable.title.Interest=Interest Rate
|
|
||||||
lable.title.Balance=Balance
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,20 +0,0 @@
|
|||||||
collection.=Collection Report
|
|
||||||
receipt.=Receipt No
|
|
||||||
group.=Group Name
|
|
||||||
client.=Clients Name
|
|
||||||
loanAccNo.=Loan Account No
|
|
||||||
pricAmt.=Principal Amount
|
|
||||||
intAmt.=Interest Amount
|
|
||||||
totalAmt.=Total Receipt Amount
|
|
||||||
feeAmt.=Fees
|
|
||||||
penaltyAmt.=Penalty
|
|
||||||
others.=Others
|
|
||||||
mifos.=Mifos User
|
|
||||||
actdate.=Action Date
|
|
||||||
created.=Created Date
|
|
||||||
office.=Branch :
|
|
||||||
ondate.=From :
|
|
||||||
todate.=To :
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
center\:=Center :
|
|
||||||
Binary file not shown.
@@ -1,23 +0,0 @@
|
|||||||
disbursalReport=Disbursal Report
|
|
||||||
receiptNo=Receipt No:
|
|
||||||
phoneNo=Phone No:
|
|
||||||
accountId=Account ID:
|
|
||||||
clientGroup=Client/Group
|
|
||||||
loanAmount=Loan Amount
|
|
||||||
disbDate=Disbursed Date
|
|
||||||
loanType=Loan Type
|
|
||||||
loanOfficer=Loan Officer
|
|
||||||
PrintedBy\:=Printed By :
|
|
||||||
On\:=On :
|
|
||||||
center\:=Center :
|
|
||||||
centerName=Center Name
|
|
||||||
groupName=Group Name
|
|
||||||
disbursedAmount=Disbursed Amount
|
|
||||||
clientName=Client Name
|
|
||||||
serviceTax=Service Tax
|
|
||||||
annualSubscription=Annual Subscription
|
|
||||||
processingFees=Processing Fees
|
|
||||||
disbursedDate=Disbursed Date
|
|
||||||
createdDate=Created Date
|
|
||||||
mifosUser=Mifos User
|
|
||||||
fees=Fees
|
|
||||||
BIN
Binary file not shown.
@@ -1,20 +0,0 @@
|
|||||||
|
|
||||||
label.column.Office=Office
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.column.Client.Account.Number=Client Account Number
|
|
||||||
label.column.Name=Name
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Loan.Account.Number=Loan Account Number
|
|
||||||
label.column.Due.Date=Due Date
|
|
||||||
label.column.Installment=Installment
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Principal.Due=Principal Due
|
|
||||||
label.column.Interest.Due=Interest Due
|
|
||||||
label.column.Fees.Due=Fees Due
|
|
||||||
label.column.Penalty.Due=Penalty Due
|
|
||||||
label.column.Total.Due=Total Due
|
|
||||||
label.column.Total.Overdue=Total Overdue
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Expected.Payments.By.Date.Basic=Expected Payments By Date - Basic
|
|
||||||
lable.title.group.Branch=Branch
|
|
||||||
Binary file not shown.
BIN
Binary file not shown.
-8
@@ -1,8 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Disbursed.amount=Disbursed_amount
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Funds.Disbursed.Between.Dates.Summary.by.Office=Funds Disbursed Between Dates Summary by Office
|
|
||||||
|
|
||||||
BIN
Binary file not shown.
-4
@@ -1,4 +0,0 @@
|
|||||||
label.column.Fund=Fund
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.disbursed_amount=disbursed_amount
|
|
||||||
lable.title.Funds.Disbursed.Between.Dates.Summary=Funds Disbursed Between Dates Summary
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
lable.detail.Vch_No_Unit=Vch No./Unit
|
|
||||||
lable.detail.AC.code=GL Code
|
|
||||||
lable.detail.Account_Description=Account Description
|
|
||||||
lable.detail.Narration=Description
|
|
||||||
lable.detail.Debits=Debits
|
|
||||||
lable.detail.Credits=Credits
|
|
||||||
lable.detail.Opening_Balance=BALANCE BROUGHT FORWARD (b/f)
|
|
||||||
lable.detail.Day_Total=Day Total
|
|
||||||
lable.detail.Closing_Balance=Closing Balance
|
|
||||||
lable.detail.date=Date
|
|
||||||
lable.detail.Cash_Book_From=Ledger Report From Date :
|
|
||||||
lable.detail.Run_Date=Run Date :
|
|
||||||
lable.detail.Cash_Code= Ledger Account :
|
|
||||||
lable.header=GENERAL LEDGER REPORT
|
|
||||||
lable.page=Page No
|
|
||||||
lable.detail.AfterTxn=Balance
|
|
||||||
lable.detail.office = Office :
|
|
||||||
lable.detail.todate = To Date :
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,20 +0,0 @@
|
|||||||
Loan_Account_Statement.=Loan Account Statement
|
|
||||||
Date.=Date
|
|
||||||
type.=Type
|
|
||||||
disbur.=Disbursement
|
|
||||||
repayment.=Repayment
|
|
||||||
contra.=Contra
|
|
||||||
waiveint=WaiveInterest
|
|
||||||
repaydisbur=Repayment At Disburesement
|
|
||||||
writeoff.=Write-off
|
|
||||||
marked_resch.=Marked for Rescheduling
|
|
||||||
recover.=Recover Repayment
|
|
||||||
waive_cha.=Waive Charges
|
|
||||||
apply_char.=Apply charges
|
|
||||||
apply_int.=Apply Interest
|
|
||||||
description.=Description
|
|
||||||
amount.=Amount
|
|
||||||
principal.=Principal
|
|
||||||
interest.=Interest
|
|
||||||
recepit_no.=Recepit No
|
|
||||||
paymentype.=Payment Type
|
|
||||||
Binary file not shown.
@@ -1,42 +0,0 @@
|
|||||||
title.Loan.Transaction.Receipt=Receipt
|
|
||||||
label.ClientName=Client Name:
|
|
||||||
label.ClientAccountNumber=Client Account Number:
|
|
||||||
label.ProductName=Client Account Title:
|
|
||||||
label.Operation=Operation:
|
|
||||||
label.Operation.Deposit=Deposit
|
|
||||||
label.Operation.Withdrawal=Withdrawal
|
|
||||||
label.Operation.Amount=Amount:
|
|
||||||
label.Operation.Amount.InFigures=In Figures:
|
|
||||||
label.Operation.Amount.InWords=In Words:
|
|
||||||
label.Operation.Description=Description:
|
|
||||||
label.receipt.text1=Your account has been
|
|
||||||
label.receipt.credited=credited
|
|
||||||
label.receipt.debited=debited
|
|
||||||
label.receipt.text2= with
|
|
||||||
label.receipt.text.dot=.
|
|
||||||
label.receipt.ClientName=Client Name and Signature
|
|
||||||
label.receipt.TxnDateTime=Date and Time of Transaction:
|
|
||||||
label.receipt.Operator=Cashier Name:
|
|
||||||
label.receipt.TxnID=Transaction ID:
|
|
||||||
txn_type.1=Disbursement
|
|
||||||
txn_type.2=Repayment
|
|
||||||
txn_type.3=Contra
|
|
||||||
txn_type.4=Waive Interest
|
|
||||||
txn_type.5=Repayment At Disbursement
|
|
||||||
txn_type.6=Write-Off
|
|
||||||
txn_type.7=Marked for Rescheduling
|
|
||||||
txn_type.8=Recovery Repayment
|
|
||||||
txn_type.9=Waive Charges
|
|
||||||
txn_type.10=Apply Charges
|
|
||||||
txn_type.11=Apply Interest
|
|
||||||
accounting_txn_type.1=debited
|
|
||||||
accounting_txn_type.2=credited
|
|
||||||
accounting_txn_type.3=contra-ed
|
|
||||||
accounting_txn_type.4=credited
|
|
||||||
accounting_txn_type.5=credited
|
|
||||||
accounting_txn_type.6=credited
|
|
||||||
accounting_txn_type.7=credited
|
|
||||||
accounting_txn_type.8=debited
|
|
||||||
accounting_txn_type.9=credited
|
|
||||||
accounting_txn_type.10=debitd
|
|
||||||
accounting_txn_type.11=debited
|
|
||||||
Binary file not shown.
BIN
Binary file not shown.
-12
@@ -1,12 +0,0 @@
|
|||||||
|
|
||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Currency=Currency
|
|
||||||
|
|
||||||
label.column.Year=Year
|
|
||||||
label.column.Month=Month
|
|
||||||
label.column.Principal=Principal
|
|
||||||
|
|
||||||
lable.title.Loans.Awaiting.Disbursal.Summary.by.Month=Loans Awaiting Disbursal Summary by Month
|
|
||||||
lable.Group.title.Branch=Branch
|
|
||||||
|
|
||||||
BIN
Binary file not shown.
@@ -1,13 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Principal=Principal
|
|
||||||
lable.title.Loans.Awaiting.Disbursal.Summary=Loans Awaiting Disbursal Summary
|
|
||||||
lable.Group.title.Branch=Branch
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,24 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Client.Account.No=Client Account No
|
|
||||||
label.column.Name=Name
|
|
||||||
label.column.Loan.Account.No=Loan Account No.
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Principal=Principal
|
|
||||||
label.column.Term.Frequency=Term Frequency
|
|
||||||
label.column.Term.Frequency.Period=Term Frequency Period
|
|
||||||
label.column.Annual.Nominal.Interest.Rate=Annual Nominal Interest Rate
|
|
||||||
label.column.Approved=Approved
|
|
||||||
label.column.Days.to.Disbursal=Days to Disbursal
|
|
||||||
label.column.Expected.Disbursal=Expected Disbursal
|
|
||||||
label.column.Loan.Purpose=Loan Purpose
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.group.title.Branch.Name=Branch Name
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Loans.Awaiting.Disbursal=Loans Awaiting Disbursal
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,18 +0,0 @@
|
|||||||
label.column.Branch/Office=Branch/Office
|
|
||||||
label.column.Client.Account.No=Client Account No.
|
|
||||||
label.column.Client.Name=Client Name
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Loan.Account.No=Loan Account No.
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Term.Frequency=Term Frequency
|
|
||||||
label.column.Term.Frequency.Period=Term Frequency Period
|
|
||||||
label.column.Annual.Nominal.Interest.Rate=Annual Nominal Interest Rate
|
|
||||||
label.column.Days.Pending.Approval=Days Pending Approval
|
|
||||||
label.column.Loan.Purpose=Loan Purpose
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
|
|
||||||
label.group.title.Branch.Name=Branch Name
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Loans.Pending.Approval=Loans Pending Approval
|
|
||||||
Binary file not shown.
@@ -1,22 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Client.Account.No=Client Account No.
|
|
||||||
label.column.Client=Client
|
|
||||||
label.column.Loan.Account.No=Loan Account No.
|
|
||||||
label.column.Product=Product
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Total.Repaid=Total Repaid
|
|
||||||
label.column.Annual.Nominal.Interest.Rate=Annual Nominal Interest Rate
|
|
||||||
label.column.Disbursed=Disbursed
|
|
||||||
label.column.Closed=Closed
|
|
||||||
label.column.Principal.Repaid=Principal Repaid
|
|
||||||
label.column.Interest.Repaid=Interest Repaid
|
|
||||||
label.column.Fees.Repaid=Fees Repaid
|
|
||||||
label.column.Penalties.Repaid=Penalties Repaid
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.group.title.Branch.Name=Branch Name
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Obligation.Met.Loans.Details=Obligation Met Loans Details
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,17 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.No.of.Clients=No. of Clients
|
|
||||||
label.column.Total.Loan.Amount=Total Loan Amount
|
|
||||||
label.column.Total.Principal.Repaid=Total Principal Repaid
|
|
||||||
label.column.Total.Interest.Repaid=Total Interest Repaid
|
|
||||||
label.column.Total.Fees.Repaid=Total Fees Repaid
|
|
||||||
label.column.Total.Penalties.Repaid=Total Penalties Repaid
|
|
||||||
label.column.Total.Interest.Waived=Total Interest Waived
|
|
||||||
label.column.Total.Fees.Waived=Total Fees Waived
|
|
||||||
label.column.Total.Penalties.Waived=Total Penalties Waived
|
|
||||||
label.group.title.Branch=Branch
|
|
||||||
label.column.
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Obligation.Met.Loans.Summary=Obligation Met Loans Summary
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,15 +0,0 @@
|
|||||||
label.group.title.Branch=Branch
|
|
||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lable.title.Portfolio.At.Risk.By.Branch=Portfolio At Risk By Branch
|
|
||||||
Binary file not shown.
@@ -1,16 +0,0 @@
|
|||||||
label.column.Currency=Currency
|
|
||||||
label.column.Principal.Outstanding=Principal Outstanding
|
|
||||||
label.column.Principal.Overdue=Principal Overdue
|
|
||||||
label.column.Interest.Outstanding=Interest Outstanding
|
|
||||||
label.column.Interest.Overdue=Interest Overdue
|
|
||||||
label.column.Fees.Outstanding=Fees Outstanding
|
|
||||||
label.column.Fees.Overdue=Fees Overdue
|
|
||||||
label.column.Penalties.Outstanding=Penalties Outstanding
|
|
||||||
label.column.Penalties.Overdue=Penalties Overdue
|
|
||||||
label.column.Portfolio.at.Risk.per=Portfolio at Risk %
|
|
||||||
|
|
||||||
label.group.title.Branch=Branch
|
|
||||||
lable.title.Portfolio.at.Risk=Portfolio at Risk
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,17 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Client.Account.No=Client Account No.
|
|
||||||
label.column.Client.Name=Client Name
|
|
||||||
label.column.Loan.AccountNo=Loan Account No.
|
|
||||||
label.column.Product.Name=Product Name
|
|
||||||
label.column.Disbursed.Date=Disbursed Date
|
|
||||||
label.column.Written.Off.date=Written Off date
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Rescheduled.Principal=Rescheduled Principal
|
|
||||||
label.column.Rescheduled.Interest=Rescheduled Interest
|
|
||||||
label.column.Rescheduled.Fees=Rescheduled Fees
|
|
||||||
label.column.Rescheduled.Penalties=Rescheduled Penalties
|
|
||||||
label.column.Reason.For.Rescheduling=Reason For Rescheduling
|
|
||||||
label.columnLoan.Officer.Name=Loan Officer Name
|
|
||||||
label.group.title.Branch=Branch
|
|
||||||
lable.title.Rescheduled.Loans=Rescheduled Loans
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Saving_Account_Statement.=Saving Account Statement
|
|
||||||
date.=Date
|
|
||||||
transaction_type=Transaction type
|
|
||||||
receipt_number=Receipt no
|
|
||||||
Description.=Description
|
|
||||||
Credited.=Credited
|
|
||||||
Debited.=Debited
|
|
||||||
Balance.=Balance
|
|
||||||
transaction.=Patment Type
|
|
||||||
Binary file not shown.
@@ -1,14 +0,0 @@
|
|||||||
label.column.Transaction.ID=Transaction ID
|
|
||||||
label.column.Transaction.Date=Transaction Date
|
|
||||||
label.column.Transaction.Type=Transaction Type
|
|
||||||
label.column.Debit=Debit
|
|
||||||
label.column.Credit=Credit
|
|
||||||
label.column.Balance=Balance
|
|
||||||
label.column.Reversed=Reversed
|
|
||||||
lable.title.Saving.Transaction=Client Saving Transaction
|
|
||||||
lable.title.Transaction.from=Transaction From :
|
|
||||||
lable.title.Saving.Transaction.To= To :
|
|
||||||
lable.title.Client.Name=Client Name :
|
|
||||||
lable.title.Savings.Account.Name/No=Account Name/No. :
|
|
||||||
lable.title.
|
|
||||||
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
title.Saving.Transaction.Receipt=Receipt
|
|
||||||
label.ClientName=Client Name:
|
|
||||||
label.ClientAccountNumber=Client Account Number:
|
|
||||||
label.ProductName=Client Account Title:
|
|
||||||
label.Operation=Operation:
|
|
||||||
label.Operation.Deposit=Deposit
|
|
||||||
label.Operation.Withdrawal=Withdrawal
|
|
||||||
label.Operation.Amount=Amount:
|
|
||||||
label.Operation.Amount.InFigures=In Figures:
|
|
||||||
label.Operation.Amount.InWords=In Words:
|
|
||||||
label.Operation.Description=Description:
|
|
||||||
label.receipt.text1=Your account has been
|
|
||||||
label.receipt.credited=credited
|
|
||||||
label.receipt.credited=debited
|
|
||||||
label.receipt.text2= with
|
|
||||||
label.receipt.text.dot=.
|
|
||||||
label.receipt.ClientName=Client Name and Signature
|
|
||||||
label.receipt.TxnDateTime=Date and Time of Transaction:
|
|
||||||
label.receipt.Operator=Cashier Name:
|
|
||||||
label.receipt.TxnID=Transaction ID:
|
|
||||||
txn_type.1=Deposit
|
|
||||||
txn_type.2=Withdrawal
|
|
||||||
txn_type.3=Interest Posting
|
|
||||||
accounting_txn_type.1=credited
|
|
||||||
accounting_txn_type.2=debited
|
|
||||||
accounting_txn_type.3=credited
|
|
||||||
test.msg=Your Account has been $(acc_txn_type) with $(txn_amount, number, "#,###.##")
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,19 +0,0 @@
|
|||||||
label.column.Transaction.Date=Transaction Date
|
|
||||||
label.column.Transaction.Type=Transaction Type
|
|
||||||
label.column.Office=Office
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.column.Loan.Account.No=Loan Account No
|
|
||||||
label.column.Loan.Product=Loan Product
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Client.Account.No=Client Account No
|
|
||||||
label.column.Client=Client
|
|
||||||
label.column.Amount=Amount
|
|
||||||
label.column.Principal=Principal
|
|
||||||
label.column.Interest=Interest
|
|
||||||
label.column.Outstanding.Principal=Outstanding Principal
|
|
||||||
label.column.Interest.Income=Interest Income
|
|
||||||
label.column.Principal.Write.Off=Principal Write Off
|
|
||||||
label.group.title.Branch=Branch
|
|
||||||
lable.title.Transaction.Running.Balances=Transaction Running Balances
|
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,17 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.Client.Account.No=Client Account No.
|
|
||||||
label.column.Client.Name=Client Name
|
|
||||||
label.column.Loan.Account.No.=Loan Account No.
|
|
||||||
label.column.Product.Name=Product Name
|
|
||||||
label.column.Disbursed.Date=Disbursed Date
|
|
||||||
label.column.Written.Off.date=Written Off date
|
|
||||||
label.column.Loan.Amount=Loan Amount
|
|
||||||
label.column.Written.Off.Principal=Written-Off Principal
|
|
||||||
label.column.Written.Off.Interest=Written-Off Interest
|
|
||||||
label.column.Written.Off.Fees=Written-Off Fees
|
|
||||||
label.column.Written.Off.Penalties=Written-Off Penalties
|
|
||||||
label.column.Reason.For.Write.Off=Reason For Write-Off
|
|
||||||
label.column.Loan.Officer.Name=Loan Officer Name
|
|
||||||
label.group.title.Branch=Branch
|
|
||||||
label.title.Written.Off.Loans=Written-Off Loans
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
balanceOutstanding=Balance Outstanding
|
|
||||||
accountId=Account ID:
|
|
||||||
clientGroup=Client/Group
|
|
||||||
loanAmount=Loan Amount
|
|
||||||
balance=Balance
|
|
||||||
loanStatus=Loan Status
|
|
||||||
disbDate=Disbursed Date
|
|
||||||
gender=Gender
|
|
||||||
loanType=Loan Type
|
|
||||||
fundSource=Fund Source
|
|
||||||
loanOfficer=Loan Officer
|
|
||||||
PrintedBy\:=Printed By :
|
|
||||||
On\:=On :
|
|
||||||
center\:=Center :
|
|
||||||
loanpurpose.=Loan Purpose
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
balanceSheet=Balance Sheet
|
|
||||||
glcode=GL CODE
|
|
||||||
name=Name
|
|
||||||
balance=Balance
|
|
||||||
assets=Assets
|
|
||||||
totalAssets=Total Assets :
|
|
||||||
liability=Liabilities
|
|
||||||
totalLiabilities=Total Liabilities :
|
|
||||||
equity=Equities
|
|
||||||
totalEquities=Total Equities :
|
|
||||||
branchName=Branch :
|
|
||||||
asOn=As On :
|
|
||||||
retainedEarnings=Retained Earnings
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
BranchExpectedCashFlow=Branch Expected Cash Flow
|
|
||||||
From=From :
|
|
||||||
To=To:
|
|
||||||
Office=Office:
|
|
||||||
Currency=Currency :
|
|
||||||
Date=Date
|
|
||||||
ExpectedCashIn=Expected Cash In
|
|
||||||
ExpectedCashOut=Expected Cash Out
|
|
||||||
Principle=Principle
|
|
||||||
Interest=Interest
|
|
||||||
ClientFees=CLient Fees
|
|
||||||
LoanFees=Loan Fees
|
|
||||||
Penalty=Penalty
|
|
||||||
LoanDisbursals=Loan Disbursals
|
|
||||||
NetExpectedCashOut=Net Expected Cash Out
|
|
||||||
Total=Total :
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
MFIName\:=MFI Name:
|
|
||||||
Page=Page
|
|
||||||
VersionAt=Version 1.3.1
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
label.column.Office/Branch=Office/Branch
|
|
||||||
label.column.Client.Account.No=Client Account No.
|
|
||||||
label.column.Name=Name
|
|
||||||
label.column.Client.Status=Client Status
|
|
||||||
label.column.Loan.Officer=Loan Officer
|
|
||||||
label.column.Loan.Account.No=Loan Account No.
|
|
||||||
label.column.External.Id=External Id
|
|
||||||
label.column.Loan=Loan
|
|
||||||
label.column.Status=Status
|
|
||||||
label.column.Fund=Fund
|
|
||||||
label.column.Loan.Purpose=Loan Purpose
|
|
||||||
label.column.Currency=Currency
|
|
||||||
label.column.principal_amount=principal_amount
|
|
||||||
label.column.Arrears.Tolerance.Amount=Arrears Tolerance Amount
|
|
||||||
label.column.principal_amount=principal_amount
|
|
||||||
label.column.Annual_Nominal.Interest_Rate=Annual_Nominal Interest_Rate
|
|
||||||
label.column.Nominal.Interest.Rate.Per.Period=Nominal Interest Rate Per Period
|
|
||||||
label.column.Interest.Rate.Frequency=Interest Rate Frequency
|
|
||||||
label.column.Interest.Method=Interest Method
|
|
||||||
label.column.Interest.Calculated.in.Period=Interest Calculated in Period
|
|
||||||
label.column.Term.Frequency=Term Frequency
|
|
||||||
label.column.Term.Frequency.Period=Term Frequency Period
|
|
||||||
label.column.Repayment.Frequency=Repayment Frequency
|
|
||||||
label.column.Repayment.Frequency.Period=Repayment Frequency Period
|
|
||||||
label.column.Amortization=Amortization
|
|
||||||
label.column.Total.Charges.Due.At.Disbursement=Total Charges Due At Disbursement
|
|
||||||
label.column.Submitted=Submitted
|
|
||||||
label.column.Approved=Approved
|
|
||||||
label.column.Expected.Disbursal=Expected Disbursal
|
|
||||||
label.column.Expected.First.Repayment=Expected First Repayment
|
|
||||||
label.column.Interest.Calculated.From=Interest Calculated From
|
|
||||||
label.column.Disbursed=Disbursed
|
|
||||||
label.column.Expected.Maturity=Expected Maturity
|
|
||||||
label.column.Matured.On=Matured On
|
|
||||||
label.column.Closed=Closed
|
|
||||||
label.column.Rejected=Rejected
|
|
||||||
label.column.Rescheduled=Rescheduled
|
|
||||||
label.column.Withdrawn=Withdrawn
|
|
||||||
label.column.Written.Off=Written Off
|
|
||||||
label.column.
|
|
||||||
label.groupby.Branch=Branch
|
|
||||||
label.title.Client.Loans.Listing=Client Loans Listing
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
clientSavingsSummary=Client Savings Summary
|
|
||||||
transactionDate=Transaction Date
|
|
||||||
details=Details
|
|
||||||
totalDebits=Total Debits
|
|
||||||
totalCredits=Total Credits
|
|
||||||
withdrawal=Withdrawal
|
|
||||||
balance=Balance
|
|
||||||
balancebf=Balance B/F
|
|
||||||
From=From :
|
|
||||||
To=To:
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
MFIName\:=MFI Name:
|
|
||||||
Page=Page
|
|
||||||
VersionAt=Version 1.3.1
|
|
||||||
accountNo=Account No:
|
|
||||||
clientName=Client Name
|
|
||||||
product=Product
|
|
||||||
Total=Total :
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
ExpectedPaymentsByDate=Expected Payments By Date
|
|
||||||
From=From :
|
|
||||||
To=To:
|
|
||||||
Office=Office :
|
|
||||||
DueDate=Due Date :
|
|
||||||
ClientName=Client Name
|
|
||||||
LoanAccountNo=Loan Account No:
|
|
||||||
Product=Product
|
|
||||||
Installment=Installment
|
|
||||||
Date=Date
|
|
||||||
Principal=Principal
|
|
||||||
LoanOfficer=Loan Officer
|
|
||||||
Interest=Interest
|
|
||||||
FeesDue=Fees Due
|
|
||||||
PenaltyDue=Penalty Due
|
|
||||||
TotalDue=Total Due
|
|
||||||
TotalOverDue=Total Over Due
|
|
||||||
Total=Total :
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
MFIName\:=MFI Name:
|
|
||||||
Page=Page
|
|
||||||
VersionAt=Version 1.3.1
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
incomeStatement=Income Statement
|
|
||||||
glcode=GL CODE
|
|
||||||
name=Name
|
|
||||||
balance=Balance
|
|
||||||
income=Income
|
|
||||||
totalIncome=Total Income :
|
|
||||||
expenses=Expenses
|
|
||||||
totalExpenses=Total Expenses :
|
|
||||||
netIncome=Net Income :
|
|
||||||
branchName=Branch :
|
|
||||||
period=Period:
|
|
||||||
to=To
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
Page=Page
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
loanAccountSchedule=Loan Account Schedule
|
|
||||||
Office=Office :
|
|
||||||
LoanOfficer=Loan Officer :
|
|
||||||
ClientName=Client Name :
|
|
||||||
FileID=File ID :
|
|
||||||
LoanAccountNumber=Loan Account Number :
|
|
||||||
LoanAmount=Loan Amount :
|
|
||||||
DisbursalDate=Disbursal Date :
|
|
||||||
NoOfInstallments=Number Of Installments :
|
|
||||||
InterestRate=Interest Rate :
|
|
||||||
Installment=Installment
|
|
||||||
Currency=Currency :
|
|
||||||
PrincipleDue=Principle Due
|
|
||||||
InterestDue=Interest Due
|
|
||||||
FeesDue=Fees Due
|
|
||||||
PenaltyDue=Penalty Due
|
|
||||||
TotalDue=Total Due
|
|
||||||
DateExpected=Date Expected
|
|
||||||
Status=Status
|
|
||||||
Total=Total :
|
|
||||||
ActivityDetails=Activity Details
|
|
||||||
Date=Date
|
|
||||||
Comment=Comment
|
|
||||||
Principle=Principle
|
|
||||||
Interest=Interest
|
|
||||||
Fees=Fees
|
|
||||||
Penalty=Penalty
|
|
||||||
TotalPaid=Total Paid
|
|
||||||
TotalOutstanding=Total Outstanding
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
MFIName\:=MFI Name:
|
|
||||||
Page=Page
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
loanAccountSchedule=Loan Account Schedule
|
|
||||||
Office=Bureau :
|
|
||||||
LoanOfficer=Agent de crédit :
|
|
||||||
ClientName=Client Name :
|
|
||||||
FileID=File ID :
|
|
||||||
LoanAccountNumber=Compte de prêt# :
|
|
||||||
LoanAmount=Loan Amount :
|
|
||||||
DisbursalDate=Décaisser Date :
|
|
||||||
NoOfInstallments=Number Of Installments :
|
|
||||||
InterestRate=Interest Rate :
|
|
||||||
Installment=Installment
|
|
||||||
Currency=la devise :
|
|
||||||
PrincipleDue=Capital dû
|
|
||||||
InterestDue=Intérêts dus
|
|
||||||
FeesDue=Fees Due
|
|
||||||
PenaltyDue=Penalty Due
|
|
||||||
TotalDue=Total dû
|
|
||||||
DateExpected=Date Expected
|
|
||||||
Status=Status
|
|
||||||
Total=Total :
|
|
||||||
ActivityDetails=Activity Details
|
|
||||||
Date=Date
|
|
||||||
Comment=Commentaire
|
|
||||||
Principle=Capital
|
|
||||||
Interest=Intérêt
|
|
||||||
Fees=Frais
|
|
||||||
Penalty=Pénalité
|
|
||||||
TotalPaid=Total Payé
|
|
||||||
TotalOutstanding=Total Impayé
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
MFIName\:=MFI Name:
|
|
||||||
Page=Page
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
savingsTransactions=Savings Transactions
|
|
||||||
transactionDate=Transaction Date
|
|
||||||
details=Details
|
|
||||||
deposit=Deposit
|
|
||||||
withdrawal=Withdrawal
|
|
||||||
balance=Balance
|
|
||||||
From=From :
|
|
||||||
To=To:
|
|
||||||
PrintedBy\:=Printed by:
|
|
||||||
On\:=On:
|
|
||||||
MFIName\:=MFI Name:
|
|
||||||
Page=Page
|
|
||||||
VersionAt=Version 1.3.1
|
|
||||||
accountNo=Account No:
|
|
||||||
clientName=Client Name
|
|
||||||
product=Product
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user