add support for reporting on loans with payments in advance (quipo need)
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* 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.scheduledjobs;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.mifosplatform.scheduledjobs.service.ScheduledJobRunnerService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class UpdateLoanPaidInAdvanceScheduledJob {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(UpdateLoanPaidInAdvanceScheduledJob.class);
|
||||
|
||||
private final ScheduledJobRunnerService scheduledJobRunnerService;
|
||||
|
||||
public UpdateLoanPaidInAdvanceScheduledJob(final ScheduledJobRunnerService scheduledJobRunnerService) {
|
||||
this.scheduledJobRunnerService = scheduledJobRunnerService;
|
||||
}
|
||||
|
||||
public void execute() {
|
||||
logger.info("Running Job UpdateLoanPaidInAdvanceScheduledJob " + new Date());
|
||||
|
||||
this.scheduledJobRunnerService.updateLoanPaidInAdvance();
|
||||
|
||||
logger.info("Finishing Job UpdateLoanPaidInAdvanceScheduledJob " + new Date());
|
||||
}
|
||||
}
|
||||
+2
@@ -11,5 +11,7 @@ public interface ScheduledJobRunnerService {
|
||||
|
||||
void updateLoanArrearsAgeingDetails();
|
||||
|
||||
void updateLoanPaidInAdvance();
|
||||
|
||||
void applyAnnualFeeForSavings();
|
||||
}
|
||||
|
||||
+35
@@ -165,6 +165,41 @@ public class ScheduledJobRunnerServiceImpl implements ScheduledJobRunnerService
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void updateLoanPaidInAdvance() {
|
||||
|
||||
List<MifosPlatformTenant> allTenants = this.tenantDetailsService.findAllTenants();
|
||||
for (MifosPlatformTenant tenant : allTenants) {
|
||||
ThreadLocalContextUtil.setTenant(tenant);
|
||||
|
||||
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSourcePerTenantService.retrieveTenantAwareDataSource());
|
||||
|
||||
jdbcTemplate.execute("truncate table m_loan_paid_in_advance");
|
||||
|
||||
StringBuilder updateSqlBuilder = new StringBuilder(900);
|
||||
|
||||
updateSqlBuilder.append("INSERT INTO m_loan_paid_in_advance(loan_id, principal_in_advance_derived, interest_in_advance_derived, fee_charges_in_advance_derived, penalty_charges_in_advance_derived, total_in_advance_derived)");
|
||||
updateSqlBuilder.append("select ml.id as loanId,");
|
||||
updateSqlBuilder.append("SUM(ifnull(mr.principal_completed_derived, 0)) as principal_in_advance_derived,");
|
||||
updateSqlBuilder.append("SUM(ifnull(mr.interest_completed_derived, 0)) as interest_in_advance_derived,");
|
||||
updateSqlBuilder.append("SUM(ifnull(mr.fee_charges_completed_derived, 0)) as fee_charges_in_advance_derived,");
|
||||
updateSqlBuilder.append("SUM(ifnull(mr.penalty_charges_completed_derived, 0)) as penalty_charges_in_advance_derived,");
|
||||
updateSqlBuilder.append("(SUM(ifnull(mr.principal_completed_derived, 0)) + SUM(ifnull(mr.interest_completed_derived, 0)) + SUM(ifnull(mr.fee_charges_completed_derived, 0)) + SUM(ifnull(mr.penalty_charges_completed_derived, 0))) as total_in_advance_derived");
|
||||
updateSqlBuilder.append("FROM m_loan ml ");
|
||||
updateSqlBuilder.append("INNER JOIN m_loan_repayment_schedule mr on mr.loan_id = ml.id ");
|
||||
updateSqlBuilder.append("WHERE ml.loan_status_id = 300 ");
|
||||
updateSqlBuilder.append("and mr.duedate >= CURDATE() ");
|
||||
updateSqlBuilder.append("GROUP BY ml.id");
|
||||
updateSqlBuilder.append("HAVING (SUM(ifnull(mr.principal_completed_derived, 0)) + SUM(ifnull(mr.interest_completed_derived, 0)) +");
|
||||
updateSqlBuilder.append("SUM(ifnull(mr.fee_charges_completed_derived, 0)) + SUM(ifnull(mr.penalty_charges_completed_derived, 0))) > 0.0");
|
||||
|
||||
int result = jdbcTemplate.update(updateSqlBuilder.toString());
|
||||
|
||||
logger.info(tenant.getName() + ": Results affected by update: " + result);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void applyAnnualFeeForSavings() {
|
||||
|
||||
Reference in New Issue
Block a user