Skip to content

Commit

Permalink
Release/1.0.23-alpha-fb: Prepare QA Release (#422)
Browse files Browse the repository at this point in the history
* Feature/FBR-422: Edit Fund sources (#293)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Fix/fbr 457 (#295)

* Fix Prequalification Processflow

* Fix Prequalification Processflow

* Fbr 47 guarantees (#297)

* FBR-47 deposit guarantee to client savings account on disbursal of loan

* FBR-47 limit creation of gurantee account if user already has account

* FBR-47 added account number generation and restriction for adding second savings for client

* Check meeting time when creating or editing a group

* Transfer group validations

* BAC-52/Feature: Add Daily Journal Posting Report (#300)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* BAC-52/Feature: Add Daily Journal Posting Report (#301)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Bug/FBR-15: Reset mifos processed fields (#302)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* fix prequalification of existing group

* Feature/FBR-465: Retrieve Loan Product from Prequalification (#306)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* validate client loan request before hard policy

* Feature/FBR-44: Add authorization user roles (#308)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Fix for FBR-469 - Update center name (#309)

* Block full deposit amount

* Feature/FBR-468: Approve and reject loan applications (#310)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Enhancement/FBR-477: Improve batch loan repayment imports (#313)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Display agencies in proper hierarchy

* Display agencies in proper hierarchy

* Fbr 437 release guarantee (#315)

* FBR-437 added number of repayments to loan transaction template

* FBR-437 added number of repayments to loan transaction template

* WIP: FBR-437 added loan_id to saving transactions table

* FBR-437 release guanrantee payment of last payment

* FBR-437 set loan id on release transaction to help with report generation

* FBR-437 set loan id on release transaction

* fix merge conflicts

* Group Additionals migration

* Hold full required amount.

* FBR-436 added guarantee report (#316)

* Hold full required amount.

* Bug/Remove JLG Constraint on client loan (#321)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* group additionals migration

* group additionals domain

* FBR 489

* Bug/FBR-488: Approve/Reject Loan Request Fixes (#324)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Bug/FBR-488: Approve/Reject Loan Request Fixes (#325)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Bug/FBR-488: Approve/Reject Loan Request Fixes (#326)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Bug/FBR-488: Approve/Reject Loan Request Fixes (#327)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Fix migration scripts (#329)

Removed the database hard-coded in the migration scripts

* FBR-460 misc changes required for bulk loan and user import

* Feature/FBR-418: Add Additional Loan Properties (#319)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* FBR-460 bypass prequalification check for bulk import (#332)

Co-authored-by: Faheem Ahmad <[email protected]>

* FBR 489

* FBR-493: Adjust prequalification workflows (#335)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* Bug/FBR-418: Make Loan Additional Optional (#336)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* FBR 489

* FBR-485 - Wrong status for Individual prequalification (#337)

* Feature/FBR-420: Optimize Loan Additional Information (#333)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* FBR-484 add permission to role

* FBR-430 Date and BigDecimal locale issue for Spanish fixed

* FBR-438,FBR-439 & FBR-440 (#343)

* Pager Libre Protesto Grupal Report

* New reports

* FBR-472

* Feature/FBR-420: Add Hard Policy Checks V1 (#342)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* FBR-487

* Changes on the reports datasources (#346)

* Pager Libre Protesto Grupal Report

* New reports

* Latest Pagare report changes

* Latest Changes on Pagare Libre reports

* Latest report changes

* Libre report changes

* Feature/FBR-420: Add hard policy check V4 (#347)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* FBR-481

* FBR-481

* FBR-481

* FBR-481

* FBR-481

* FBR-482/FBR-492: Edit Prequalifications (#349)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* New parameter definition on FBR-438,439 & 440 (#350)

* Pager Libre Protesto Grupal Report

* New reports

* Latest Pagare report changes

* Latest Changes on Pagare Libre reports

* Latest report changes

* Libre report changes

* Libre reports with New parameters defined

* Feature/FBR-486-FBR-53: Edit loan application (#351)

Co-authored-by: Julius Peter Oketayot <[email protected]>

* FBR-453

* FBR-453

* Changes on report Params on Fbr 440 branch (#352)

* Libre report under FBR-440

* FBR-440 report parameter changes

* Pagare reports fixes on paramaters (#354)

* fix/FBR-419

* Feature/FBR-440: Add Pagare Libre Protesto Reporte (#355)

* Feature/FBR-440: Add Pagare Libre Protesto Reporte

* Feature/FBR-440: Add Pagare Libre Protesto Reporte

* FBR-482: Fix Prequalification Date Of Birth Date Picker (#357)

* Create Group loan pagaré report (LIBRE DE PROTESTO) (#358)

* fix/FBR-453

* fix/FBR-453 (#359)

* FBR-439 report query changes based on the changes in DB (#360)

* group additional data details

* FBR-497 retain loan external id for bulk import and fix 500 exception for loans with no additional data

* group additional data details

* Feature/FBR-418: Solicitud de crédito individual - Agregar pestaña para campos adicionales en nuevo préstamo (#361)

* FBR-476 show supervision and supervision office while creating portfolio

* FBR-429 update loan restructuting to outstanding principal

* Feature/FBR-490: Préstamo complementario (#366)

* Feature/FBR-420: Refactor hard-policy implementation Final (#370)

* Enhancement/FBR-505: Edit Reporte de Garantas (#371)

* group additional data details

* Bug/FBR-435-502-509: Fix Reported Bugs (#373)

* group additional data details

* group additional data details (#374)

* date of birth param validation

* Fix/fbr417 (#375)

* group additional data details

* date of birth param validation

* Bugs/FBR-418-FBR-505: Bug Fixes (#376)

* FBR-508

* Bug/FBR-506: Reporte Grupal de Cobranzas y Saldos por Financista is missing some groups (#378)

* FBR-508

* Bug/FBR-490: Préstamo complementario - Waive Interest (#380)

* FBR-501 Negative balance in savings accounts after releasing the guarantee Fixed

* Add prequalificatiobn group validation linkage (#382)

* FBR-383

* FBR-394

* FBR-511

* FBR-427 portfolio planning issue fixed for active group loans

* FBR-394

* Pagare Grupo Report changes (#388)

* FBR-515

* Bug/FBR-516-FBR-490: Prequalification Fixes (#390)

* Pagare Grupal report modified (#392)

* FBR-518 update client loan cycle

* remove SALDOS table statement as it is no longer needed after migration

* FBR-518 remove unused import (#395)

Co-authored-by: Faheem Ahmad <[email protected]>

* FBR-513

* Pagare Grupal report well formated (#397)

* FBR-513

* Further review of FBR-438 (#400)

* Bug/FBR-514: Update prequalification creation date (#401)

* FBR-519

* FBR-429 fixed prequalificationgroup id issue for restructured loans

* Protesto Grupal & PretestoAddicional report changes (#404)

* add fonts to docker impl

* FBR-438 &FBR-440 with spanish accent embedded (#407)

* Fix Multiple printing cheques

* Fix Multiple printing cheques

* Enhancements/FBR-439: Pagaré Libre Protesto Individual (#409)

* Enhancements/FBR-439: Pagaré Libre Protesto Individual

* Enhancements/FBR-439: Pagaré Libre Protesto Individual (#411)

* Enhancements/FBR-439: Pagaré Libre Protesto Individual (#412)

* FBR-438-440 with pdf encoding format ISO-8859-1 (#413)

* Enhancements/FBR-439: Pagaré Libre Protesto Individual (#415)

* Disable withdraw of hold transactions

* FBR-438 & FBR-440 with formated dates (#417)

* Enhancements/FBR-439: Pagaré Libre Protesto Individual (#418)

* fix transaction date

* Enhancements/FBR-439: Pagaré Libre Protesto Individual (#420)

* Release/1.0.23-alpha-fb: Merge fiter/fb/dev into fiter/fb/qa

---------

Co-authored-by: Julius Peter Oketayot <[email protected]>
Co-authored-by: Brian Muhimbura <[email protected]>
Co-authored-by: Moses Kalema <[email protected]>
Co-authored-by: Leonardo Hildt <[email protected]>
Co-authored-by: Faheem Ahmad <[email protected]>
Co-authored-by: Faheem Ahmad <[email protected]>
Co-authored-by: josephNak <[email protected]>
Co-authored-by: Faheem Ahmad <[email protected]>
  • Loading branch information
9 people authored Jan 13, 2024
1 parent 052e739 commit f055632
Show file tree
Hide file tree
Showing 34 changed files with 814 additions and 448 deletions.
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ RUN wget -q https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mys
FROM azul/zulu-openjdk:17 as fineract
COPY --from=builder /fineract/fineract-provider/pentahoReports/*.properties /root/.mifosx/pentahoReports/
COPY --from=builder /fineract/fineract-provider/pentahoReports/*.prpt /root/.mifosx/pentahoReports/
COPY --from=builder /fineract/fineract-provider/pentahoReports/fonts/*.ttf /usr/local/share/fonts/
COPY --from=builder /fineract/fineract-provider/build/libs/ /app
COPY --from=builder /app/libs /app/libs

Expand Down
Binary file not shown.
Binary file modified fineract-provider/pentahoReports/Pagare Libre Protesto Grupal.prpt
Binary file not shown.
Binary file not shown.
Binary file modified fineract-provider/pentahoReports/Print Bank Cheque.prpt
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ public static SearchParameters forBlacklist(final String displayName, final Stri

public static SearchParameters forPrequalification(final String displayName, final String status, final Integer offset,
final Integer limit, final String orderBy, final String sortOrder, final String type, String searchText,
final String groupingType) {
final String groupingType, Long portfolioCenterId) {

final Integer maxLimitAllowed = getCheckedLimit(limit);
final Long staffId = null;
Expand All @@ -138,7 +138,8 @@ public static SearchParameters forPrequalification(final String displayName, fin
final Long savingsId = null;

return new SearchParameters(searchText, null, null, displayName, null, null, null, status, offset, maxLimitAllowed, orderBy,
sortOrder, staffId, accountNo, loanId, savingsId, null, false, null, type, null, null, null, groupingType);
sortOrder, staffId, accountNo, loanId, savingsId, null, false, null, type, null, null, null, groupingType,
portfolioCenterId);
}

public static SearchParameters forBankCheques(final Long agencyId, final String chequeNo, final String bankAccNo, final Long batchId,
Expand Down Expand Up @@ -620,7 +621,8 @@ private SearchParameters(final String sqlSearch, final Long officeId, final Stri
final String hierarchy, final String firstname, final String lastname, final String status, final Integer offset,
final Integer limit, final String orderBy, final String sortOrder, final Long staffId, final String accountNo,
final Long loanId, final Long savingsId, final Boolean orphansOnly, boolean isSelfUser, final String dpiNumber,
final String type, final String groupName, final String groupNumber, final String centerName, final String groupingType) {
final String type, final String groupName, final String groupNumber, final String centerName, final String groupingType,
Long portfolioCenterId) {
this.sqlSearch = sqlSearch;
this.officeId = officeId;
this.externalId = externalId;
Expand Down Expand Up @@ -660,7 +662,7 @@ private SearchParameters(final String sqlSearch, final Long officeId, final Stri
this.agencyId = null;
this.clientNo = null;
this.groupId = null;
this.centerId = null;
this.centerId = portfolioCenterId;
this.facilitatorId = null;
this.isIndividualBusinessLoan = null;
this.groupingType = groupingType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public static void validateSQLInput(final String sqlSearch) {
}
String lowerCaseSQL = sqlSearch.toLowerCase();
for (String ddl : DDL_COMMANDS) {
if (lowerCaseSQL.contains(ddl)) {
if (ddl.equals(lowerCaseSQL)) {
throw new SQLInjectionException();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,16 +110,16 @@ public class GroupPrequalificationApiResource {

@Autowired
public GroupPrequalificationApiResource(final PlatformSecurityContext context,
final CodeValueReadPlatformService codeValueReadPlatformService, final AgencyReadPlatformServiceImpl agencyReadPlatformService,
final PrequalificationWritePlatformService prequalificationWritePlatformService,
final CenterReadPlatformServiceImpl centerReadPlatformService,
final LoanProductReadPlatformService loanProductReadPlatformService,
final AppUserReadPlatformService appUserReadPlatformService,
final DefaultToApiJsonSerializer<GroupPrequalificationData> toApiJsonSerializer,
final ConfigurationReadPlatformService configurationReadPlatformService,
final PrequalificationReadPlatformService prequalificationReadPlatformService, final FileUploadValidator fileUploadValidator,
final DocumentWritePlatformService documentWritePlatformService, final ApiRequestParameterHelper apiRequestParameterHelper,
final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) {
final CodeValueReadPlatformService codeValueReadPlatformService, final AgencyReadPlatformServiceImpl agencyReadPlatformService,
final PrequalificationWritePlatformService prequalificationWritePlatformService,
final CenterReadPlatformServiceImpl centerReadPlatformService,
final LoanProductReadPlatformService loanProductReadPlatformService,
final AppUserReadPlatformService appUserReadPlatformService,
final DefaultToApiJsonSerializer<GroupPrequalificationData> toApiJsonSerializer,
final ConfigurationReadPlatformService configurationReadPlatformService,
final PrequalificationReadPlatformService prequalificationReadPlatformService, final FileUploadValidator fileUploadValidator,
final DocumentWritePlatformService documentWritePlatformService, final ApiRequestParameterHelper apiRequestParameterHelper,
final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) {
this.context = context;
this.codeValueReadPlatformService = codeValueReadPlatformService;
this.toApiJsonSerializer = toApiJsonSerializer;
Expand All @@ -141,22 +141,23 @@ public GroupPrequalificationApiResource(final PlatformSecurityContext context,
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "List all prequalifications", description = "Example Requests:\n" + "prequalification\n")
public String retrieveAllBlacklistItems(@Context final UriInfo uriInfo,
@QueryParam("offset") @Parameter(description = "offset") final Integer offset,
@QueryParam("limit") @Parameter(description = "limit") final Integer limit,
@QueryParam("orderBy") @Parameter(description = "orderBy") final String orderBy,
@QueryParam("status") @Parameter(description = "status") final String status,
@QueryParam("type") @Parameter(description = "type") final String type,
@QueryParam("searchText") @Parameter(description = "searchText") final String searchText,
@QueryParam("sortOrder") @Parameter(description = "sortOrder") final String sortOrder,
@QueryParam("groupingType") @Parameter(description = "groupingType") final String groupingType) {
@QueryParam("offset") @Parameter(description = "offset") final Integer offset,
@QueryParam("limit") @Parameter(description = "limit") final Integer limit,
@QueryParam("orderBy") @Parameter(description = "orderBy") final String orderBy,
@QueryParam("status") @Parameter(description = "status") final String status,
@QueryParam("type") @Parameter(description = "type") final String type,
@QueryParam("portfolioCenterId") @Parameter(description = "type") final Long portfolioCenterId,
@QueryParam("searchText") @Parameter(description = "searchText") final String searchText,
@QueryParam("sortOrder") @Parameter(description = "sortOrder") final String sortOrder,
@QueryParam("groupingType") @Parameter(description = "groupingType") final String groupingType) {

this.context.authenticatedUser().validateHasViewPermission(this.resourceNameForPermissions);

MultivaluedMap<String, String> queryParameters = uriInfo.getQueryParameters();

String clientName = queryParameters.getFirst("clientName");
SearchParameters searchParameters = SearchParameters.forPrequalification(clientName, status, offset, limit, orderBy, sortOrder,
type, searchText, groupingType);
type, searchText, groupingType, portfolioCenterId);
final Page<GroupPrequalificationData> clientData = this.prequalificationReadPlatformService.retrieveAll(searchParameters);

final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(queryParameters);
Expand Down Expand Up @@ -244,7 +245,7 @@ public String newClientIdentifierDetails(@Context final UriInfo uriInfo) {
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Retrieve Prequalification Details")
public String getBlacklistDetails(@Context final UriInfo uriInfo,
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId) {
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId) {

this.context.authenticatedUser().validateHasViewPermission(this.resourceNameForPermissions);

Expand All @@ -260,8 +261,8 @@ public String getBlacklistDetails(@Context final UriInfo uriInfo,
@Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Retrieve Prequalification Details")
public String prequalifyExistingGroup(@Context final UriInfo uriInfo,
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId,
@Parameter(hidden = true) final String apiRequestBodyAsJson) {
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId,
@Parameter(hidden = true) final String apiRequestBodyAsJson) {

try {
final CommandWrapper commandRequest = new CommandWrapperBuilder().createPrequalification().withGroupId(groupId)
Expand Down Expand Up @@ -299,7 +300,7 @@ public String createPrequalification(@Parameter(hidden = true) final String apiR
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String updatePrequalification(@Parameter(hidden = true) final String apiRequestBodyAsJson,
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId) {
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId) {

try {
final CommandWrapper commandRequest = new CommandWrapperBuilder().updatePrequalification(groupId).withJson(apiRequestBodyAsJson)
Expand All @@ -319,8 +320,8 @@ public String updatePrequalification(@Parameter(hidden = true) final String apiR
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String updatePrequalificationMember(@Parameter(hidden = true) final String apiRequestBodyAsJson,
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId,
@PathParam("memberId") @Parameter(description = "memberId") final Long memberId) {
@PathParam("groupId") @Parameter(description = "groupId") final Long groupId,
@PathParam("memberId") @Parameter(description = "memberId") final Long memberId) {

try {
final CommandWrapper commandRequest = new CommandWrapperBuilder().updatePrequalificationMemberDetails(memberId)
Expand All @@ -340,10 +341,10 @@ public String updatePrequalificationMember(@Parameter(hidden = true) final Strin
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public String createDocument(@PathParam("groupId") @Parameter(description = "groupId") final Long groupId,
@HeaderParam("Content-Length") @Parameter(description = "Content-Length") final Long fileSize,
@FormDataParam("file") final InputStream inputStream, @FormDataParam("file") final FormDataContentDisposition fileDetails,
@FormDataParam("file") final FormDataBodyPart bodyPart, @FormDataParam("name") final String name,
@FormDataParam("description") final String description, @FormDataParam("comment") final String comment) {
@HeaderParam("Content-Length") @Parameter(description = "Content-Length") final Long fileSize,
@FormDataParam("file") final InputStream inputStream, @FormDataParam("file") final FormDataContentDisposition fileDetails,
@FormDataParam("file") final FormDataBodyPart bodyPart, @FormDataParam("name") final String name,
@FormDataParam("description") final String description, @FormDataParam("comment") final String comment) {

if (inputStream != null) {
fileUploadValidator.validate(fileSize, inputStream, fileDetails, bodyPart);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public String retrieveAllBlacklistItems(@Context final UriInfo uriInfo,
@QueryParam("orderBy") @Parameter(description = "orderBy") final String orderBy,
@QueryParam("status") @Parameter(description = "status") final String status,
@QueryParam("type") @Parameter(description = "type") final String type,
@QueryParam("portfolioCenterId") @Parameter(description = "type") final Long portfolioCenterId,
@QueryParam("searchText") @Parameter(description = "searchText") final String searchText,
@QueryParam("sortOrder") @Parameter(description = "sortOrder") final String sortOrder,
@QueryParam("groupingType") @Parameter(description = "groupingType") final String groupingType) {
Expand All @@ -123,7 +124,7 @@ public String retrieveAllBlacklistItems(@Context final UriInfo uriInfo,

String clientName = queryParameters.getFirst("clientName");
SearchParameters searchParameters = SearchParameters.forPrequalification(clientName, status, offset, limit, orderBy, sortOrder,
type, searchText, groupingType);
type, searchText, groupingType, portfolioCenterId);
final Page<MemberPrequalificationData> memberData = this.prequalificationReadPlatformService.retrieveAllMembers(searchParameters);

final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(queryParameters);
Expand Down
Loading

0 comments on commit f055632

Please sign in to comment.