diff --git a/fineract-provider/pentahoReports/Print Bank Cheque.prpt b/fineract-provider/pentahoReports/Print Bank Cheque.prpt index b907c350bda..d8420757944 100644 Binary files a/fineract-provider/pentahoReports/Print Bank Cheque.prpt and b/fineract-provider/pentahoReports/Print Bank Cheque.prpt differ diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/prequalification/service/PrequalificationReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/prequalification/service/PrequalificationReadPlatformServiceImpl.java index 6617fad6008..5f76557a69f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/prequalification/service/PrequalificationReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/prequalification/service/PrequalificationReadPlatformServiceImpl.java @@ -311,10 +311,10 @@ private String buildSqlStringFromBlacklistCriteria(final SearchParameters search } if (agencyId != null) { - if (StringUtils.equalsIgnoreCase(groupingType, "individual")) { - extraCriteria += " and individualOffice.agency_id = ? "; - } else { + if (StringUtils.equals(searchParameters.getGroupingType(), "group") || StringUtils.equals(searchParameters.getType(), "checked")) { extraCriteria += " and ma.id = ? "; + } else { + extraCriteria += " and individualOffice.agency_id = ? "; } paramList.add(agencyId); } @@ -413,121 +413,106 @@ private static final class PrequalificationsGroupMapper implements RowMapper0 THEN 'Reproceso' ELSE 'Nuevo' END) as processQuality, - concat(mu.firstname, ' ', mu.lastname) as statusChangedBy, - coalesce(ma.name,individualOffice.agency_name) AS agencyName, - ma.id AS agencyId, - cg.display_name AS groupName, - g.group_name AS newGroupName, - g.group_id AS groupId, - pc.display_name AS centerName, - pc.id AS centerId, - lp.id AS productId, - fa.id AS facilitatorId, - concat(fa.firstname, ' ', fa.lastname) AS facilitatorName, - lp.name AS productName, - au.firstname, - au.lastname, - greenValidation.validCount AS greenValidationCount, - yellowValidation.validCount AS yellowValidationCount, - orangeValidation.validCount AS orangeValidationCount, - redValidation.validCount AS redValidationCount - FROM - m_prequalification_group g - INNER JOIN m_appuser au ON - au.id = g.added_by - INNER JOIN m_product_loan lp ON - g.product_id = lp.id - LEFT JOIN ( - SELECT - mpgm.group_id AS prequalification_id, - SUM(mpgm.requested_amount) total_requested_amount, - SUM(mpgm.approved_amount) total_approved_amount - FROM m_prequalification_group_members mpgm - GROUP BY mpgm.group_id - ) prequalification_numbers ON prequalification_numbers.prequalification_id = g.id - \s - LEFT JOIN( - select DISTINCT mc.office_id, ms.agency_id,mag.name as agency_name, mpgm.group_id, ms.linked_office_id as supervision_office - from m_prequalification_group_members mpgm - INNER JOIN m_client mc on mc.dpi = mpgm.dpi - INNER JOIN m_group_client mgc on mgc.client_id = mc.id - INNER JOIN m_group mg on mg.id = mgc.group_id - INNER JOIN m_group center on center.id = mg.parent_id - INNER JOIN m_portfolio mp on mp.id = center.portfolio_id - INNER JOIN m_supervision ms on ms.id = mp.supervision_id - INNER JOIN m_agency mag on mag.id = ms.agency_id - ) individualOffice ON individualOffice.group_id = g.id - LEFT JOIN m_agency ma ON - g.agency_id = ma.id - LEFT JOIN( - select agency_id, linked_office_id from m_supervision GROUP BY agency_id - ) supv ON supv.agency_id = ma.id - LEFT JOIN m_office mo on mo.id = supv.linked_office_id - LEFT JOIN m_office moind on moind.id = individualOffice.supervision_office - LEFT JOIN - ( - SELECT p.id AS groupid, - COUNT(mcvr.id) AS validCount - FROM m_checklist_validation_result mcvr - INNER JOIN m_prequalification_group p ON mcvr.prequalification_id = p.id and mcvr.validation_color_enum = 1 - GROUP BY p.id - ) greenValidation ON greenValidation.groupid = g.id - LEFT JOIN - ( - SELECT p.id AS groupid, - COUNT(mcvr.id) AS validCount - FROM m_checklist_validation_result mcvr - INNER JOIN m_prequalification_group p ON mcvr.prequalification_id = p.id and mcvr.validation_color_enum = 2 - GROUP BY p.id - ) yellowValidation ON yellowValidation.groupid = g.id - LEFT JOIN - ( - SELECT p.id AS groupid, - COUNT(mcvr.id) AS validCount - FROM m_checklist_validation_result mcvr - INNER JOIN m_prequalification_group p ON mcvr.prequalification_id = p.id and mcvr.validation_color_enum = 3 - GROUP BY p.id - ) orangeValidation ON orangeValidation.groupid = g.id - LEFT JOIN - ( - SELECT p.id AS groupid, - COUNT(mcvr.id) AS validCount - FROM m_checklist_validation_result mcvr - INNER JOIN m_prequalification_group p ON mcvr.prequalification_id = p.id and mcvr.validation_color_enum = 4 - GROUP BY p.id - ) redValidation ON redValidation.groupid = g.id - LEFT JOIN m_group cg ON - cg.id = g.group_id - LEFT JOIN m_group linkedGroup ON - linkedGroup.prequalification_id = g.id - LEFT JOIN m_group pc ON - pc.id = g.center_id - LEFT JOIN m_prequalification_status_log sl ON - sl.prequalification_id = g.id AND sl.to_status=g.status - AND sl.id = - (SELECT MAX(id) - FROM m_prequalification_status_log WHERE prequalification_id = g.id AND sl.to_status=g.status ) - LEFT JOIN m_appuser assigned ON assigned.id = sl.assigned_to - LEFT JOIN m_appuser mu ON - mu.id = sl.updatedby_id - LEFT JOIN m_appuser fa ON - fa.id = g.facilitator + g.prequalification_number AS prequalificationNumber, + g.STATUS, + linkedGroup.id AS linkedGroupId, + g.prequalification_duration AS prequalilficationTimespan, + g.comments, + g.created_at, + g.prequalification_type_enum AS prequalificationType, + sl.from_status AS previousStatus, + sl.sub_status AS substatus, + sl.comments AS latestComments, + assigned.username AS assignedUser, + concat( assigned.firstname, ' ', assigned.lastname ) AS assignedUserName, + sl.date_created AS statusChangedOn, + prequalification_numbers.total_requested_amount AS totalRequestedAmount, + prequalification_numbers.total_approved_amount totalApprovedAmount, + CASE + + WHEN g.previous_prequalification IS NOT NULL THEN + 'Recredito' ELSE 'Nuevo' + END AS processType, + CASE + + WHEN mpsl.reprocess_count > 0 THEN + 'Reproceso' ELSE 'Nuevo' + END AS processQuality, + concat( mu.firstname, ' ', mu.lastname ) AS statusChangedBy, + COALESCE ( ma.NAME, individualOffice.agency_name ) AS agencyName, + ma.id AS agencyId, + cg.display_name AS groupName, + g.group_name AS newGroupName, + g.group_id AS groupId, + pc.display_name AS centerName, + pc.id AS centerId, + lp.id AS productId, + fa.id AS facilitatorId, + concat( fa.firstname, ' ', fa.lastname ) AS facilitatorName, + lp.NAME AS productName, + au.firstname, + au.lastname, + greenValidCount AS greenValidationCount, + yellowValidCount AS yellowValidationCount, + orangeValidCount AS orangeValidationCount, + redValidCount AS redValidationCount\s + FROM + m_prequalification_group g + INNER JOIN m_appuser au ON au.id = g.added_by + INNER JOIN m_product_loan lp ON g.product_id = lp.id + LEFT JOIN ( + SELECT + mpgm.group_id AS prequalification_id, + SUM( mpgm.requested_amount ) total_requested_amount, + SUM( mpgm.approved_amount ) total_approved_amount\s + FROM + m_prequalification_group_members mpgm\s + GROUP BY + mpgm.group_id\s + ) prequalification_numbers ON prequalification_numbers.prequalification_id = g.id + LEFT JOIN ( + SELECT DISTINCT + mc.office_id, + ms.agency_id, + mag.NAME AS agency_name, + mpgm.group_id, + ms.linked_office_id AS supervision_office\s + FROM + m_prequalification_group_members mpgm + INNER JOIN m_client mc ON mc.dpi = mpgm.dpi + INNER JOIN m_group_client mgc ON mgc.client_id = mc.id + INNER JOIN m_group mg ON mg.id = mgc.group_id + INNER JOIN m_group center ON center.id = mg.parent_id + INNER JOIN m_portfolio mp ON mp.id = center.portfolio_id + INNER JOIN m_supervision ms ON ms.id = mp.supervision_id + INNER JOIN m_agency mag ON mag.id = ms.agency_id\s + ) individualOffice ON individualOffice.group_id = g.id + LEFT JOIN m_agency ma ON g.agency_id = ma.id + LEFT JOIN ( SELECT agency_id, linked_office_id FROM m_supervision GROUP BY agency_id ) supv ON supv.agency_id = ma.id + LEFT JOIN m_office mo ON mo.id = supv.linked_office_id + LEFT JOIN m_office moind ON moind.id = individualOffice.supervision_office + LEFT JOIN ( + SELECT + mcvr.prequalification_id, + COUNT( CASE WHEN mcvr.validation_color_enum = 1 THEN 1 END ) AS greenValidCount, + COUNT( CASE WHEN mcvr.validation_color_enum = 2 THEN 1 END ) AS yellowValidCount, + COUNT( CASE WHEN mcvr.validation_color_enum = 3 THEN 1 END ) AS orangeValidCount, + COUNT( CASE WHEN mcvr.validation_color_enum = 4 THEN 1 END ) AS redValidCount\s + FROM + m_checklist_validation_result mcvr\s + GROUP BY + mcvr.prequalification_id\s + ) validations ON validations.prequalification_id = g.id + LEFT JOIN m_group cg ON cg.id = g.group_id + LEFT JOIN m_group linkedGroup ON linkedGroup.prequalification_id = g.id + LEFT JOIN m_group pc ON pc.id = g.center_id + LEFT JOIN m_appuser fa ON fa.id = g.facilitator + LEFT JOIN ( SELECT count(*) AS reprocess_count, prequalification_id, to_status FROM m_prequalification_status_log GROUP BY prequalification_id, to_status ) mpsl ON mpsl.prequalification_id = g.id\s + AND mpsl.to_status = g. + STATUS LEFT JOIN ( SELECT prequalification_id, to_status, from_status, sub_status, comments, assigned_to, updatedby_id, MAX( date_created ) AS date_created FROM m_prequalification_status_log GROUP BY prequalification_id ) sl ON sl.prequalification_id = g.id\s + AND sl.to_status = g.status + LEFT JOIN m_appuser mu ON mu.id = sl.updatedby_id + LEFT JOIN m_appuser assigned ON assigned.id = sl.assigned_to """; this.grpSchema = """ diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/FS_002_FIX_REPORTS_PERFORMANCE.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/FS_002_FIX_REPORTS_PERFORMANCE.xml index 3d083e28e53..54b3730577d 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/parts/FS_002_FIX_REPORTS_PERFORMANCE.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/FS_002_FIX_REPORTS_PERFORMANCE.xml @@ -37,5 +37,19 @@ ]]> + + + + + + + + + +