mansi75 commented on code in PR #6106:
URL: https://github.com/apache/fineract/pull/6106#discussion_r3571371020


##########
fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java:
##########
@@ -257,21 +259,23 @@ public List<ChargeToGLAccountMapper> 
fetchPenaltyToIncomeAccountMappingsForSavin
 
     private List<ChargeToGLAccountMapper> 
fetchChargeToIncomeAccountMappings(final PortfolioProductType 
portfolioProductType,
             final Long loanProductId, final boolean penalty) {
-        final List<ProductToGLAccountMapping> mappings = penalty
-                ? 
productToGLAccountMappingRepository.findAllPenaltyMappings(loanProductId, 
portfolioProductType.getValue())
-                : 
productToGLAccountMappingRepository.findAllFeeMappings(loanProductId, 
portfolioProductType.getValue());
-
-        List<ChargeToGLAccountMapper> chargeToGLAccountMappers = 
mappings.isEmpty() ? null : new ArrayList<>();
-        for (final ProductToGLAccountMapping mapping : mappings) {
-            final GLAccountData gLAccountData = new 
GLAccountData().setId(mapping.getGlAccount().getId())
-                    
.setName(mapping.getGlAccount().getName()).setGlCode(mapping.getGlAccount().getGlCode());
-            final ChargeData chargeData = 
ChargeData.builder().id(mapping.getCharge().getId()).name(mapping.getCharge().getName())
-                    .penalty(mapping.getCharge().isPenalty()).build();
-            final ChargeToGLAccountMapper chargeToGLAccountMapper = new 
ChargeToGLAccountMapper().setCharge(chargeData)
-                    .setIncomeAccount(gLAccountData);
-            chargeToGLAccountMappers.add(chargeToGLAccountMapper);
-        }
-        return chargeToGLAccountMappers;
+        // The accounting module is decoupled from the charge domain, so we 
cannot navigate a Charge association in
+        // JPQL. We read the charge -> income-account rows via JdbcTemplate 
rather than a JPA native query: EclipseLink
+        // does not bind Spring Data ":name" parameters in native queries (it 
expects "#name"), which caused the raw
+        // markers to reach the database. JdbcTemplate uses plain JDBC 
positional binding and works on all supported
+        // databases. The GL account fields are selected via a join on 
acc_gl_account so we avoid a per-row lookup.
+        // Column order: [0] gl_account_id, [1] gl_account_name, [2] gl_code, 
[3] charge_id, [4] charge_name.
+        final String sql = "select ga.id, ga.name, ga.gl_code, c.id, c.name " 
+ "from acc_product_mapping apm "

Review Comment:
   @vidakovic Got it



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to