[MIFOSX-2784] Including all transactions in Teller Cashier transaction list
This commit is contained in:
+14
-7
@@ -37,6 +37,8 @@ import org.apache.fineract.commands.service.CommandWrapperBuilder;
|
||||
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
|
||||
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
||||
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
|
||||
import org.apache.fineract.infrastructure.core.service.Page;
|
||||
import org.apache.fineract.infrastructure.core.service.SearchParameters;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.apache.fineract.organisation.teller.data.CashierData;
|
||||
import org.apache.fineract.organisation.teller.data.CashierTransactionData;
|
||||
@@ -248,15 +250,16 @@ public class TellerApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String getTransactionsForCashier(@PathParam("tellerId") final Long tellerId, @PathParam("cashierId") final Long cashierId,
|
||||
@QueryParam("currencyCode") final String currencyCode) {
|
||||
@QueryParam("currencyCode") final String currencyCode, @QueryParam("offset") final Integer offset, @QueryParam("limit") final Integer limit,
|
||||
@QueryParam("orderBy") final String orderBy, @QueryParam("sortOrder") final String sortOrder) {
|
||||
final TellerData teller = this.readPlatformService.findTeller(tellerId);
|
||||
final CashierData cashier = this.readPlatformService.findCashier(cashierId);
|
||||
|
||||
final Date fromDate = null;
|
||||
final Date toDate = null;
|
||||
|
||||
final Collection<CashierTransactionData> cashierTxns = this.readPlatformService.retrieveCashierTransactions(cashierId, false,
|
||||
fromDate, toDate, currencyCode);
|
||||
final SearchParameters searchParameters = SearchParameters.forPagination(offset, limit, orderBy, sortOrder);
|
||||
final Page<CashierTransactionData> cashierTxns = this.readPlatformService.retrieveCashierTransactions(cashierId, false,
|
||||
fromDate, toDate, currencyCode, searchParameters);
|
||||
|
||||
return this.jsonSerializer.serialize(cashierTxns);
|
||||
}
|
||||
@@ -266,15 +269,19 @@ public class TellerApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String getTransactionsWtihSummaryForCashier(@PathParam("tellerId") final Long tellerId,
|
||||
@PathParam("cashierId") final Long cashierId, @QueryParam("currencyCode") final String currencyCode) {
|
||||
@PathParam("cashierId") final Long cashierId, @QueryParam("currencyCode") final String currencyCode,
|
||||
@QueryParam("offset") final Integer offset, @QueryParam("limit") final Integer limit,
|
||||
@QueryParam("orderBy") final String orderBy, @QueryParam("sortOrder") final String sortOrder) {
|
||||
final TellerData teller = this.readPlatformService.findTeller(tellerId);
|
||||
final CashierData cashier = this.readPlatformService.findCashier(cashierId);
|
||||
|
||||
final Date fromDate = null;
|
||||
final Date toDate = null;
|
||||
|
||||
final SearchParameters searchParameters = SearchParameters.forPagination(offset, limit, orderBy, sortOrder);
|
||||
|
||||
final CashierTransactionsWithSummaryData cashierTxnWithSummary = this.readPlatformService
|
||||
.retrieveCashierTransactionsWithSummary(cashierId, false, fromDate, toDate, currencyCode);
|
||||
final CashierTransactionsWithSummaryData cashierTxnWithSummary = this.readPlatformService.retrieveCashierTransactionsWithSummary(
|
||||
cashierId, false, fromDate, toDate, currencyCode, searchParameters);
|
||||
|
||||
return this.jsonSerializer.serialize(cashierTxnWithSummary);
|
||||
}
|
||||
|
||||
+6
-5
@@ -20,7 +20,8 @@ package org.apache.fineract.organisation.teller.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.apache.fineract.infrastructure.core.service.Page;
|
||||
|
||||
public final class CashierTransactionsWithSummaryData implements Serializable {
|
||||
|
||||
@@ -35,10 +36,10 @@ public final class CashierTransactionsWithSummaryData implements Serializable {
|
||||
private final long cashierId;
|
||||
private final String cashierName;
|
||||
|
||||
private final Collection<CashierTransactionData> cashierTransactions;
|
||||
private final Page<CashierTransactionData> cashierTransactions;
|
||||
|
||||
private CashierTransactionsWithSummaryData(
|
||||
final Collection<CashierTransactionData> cashierTransactions,
|
||||
final Page<CashierTransactionData> cashierTransactions,
|
||||
final BigDecimal sumCashAllocation,
|
||||
final BigDecimal sumInwardCash,
|
||||
final BigDecimal sumOutwardCash,
|
||||
@@ -64,7 +65,7 @@ public final class CashierTransactionsWithSummaryData implements Serializable {
|
||||
}
|
||||
|
||||
public static CashierTransactionsWithSummaryData instance(
|
||||
final Collection<CashierTransactionData> cashierTransactions,
|
||||
final Page<CashierTransactionData> cashierTransactions,
|
||||
final BigDecimal sumCashAllocation,
|
||||
final BigDecimal sumInwardCash,
|
||||
final BigDecimal sumOutwardCash,
|
||||
@@ -128,7 +129,7 @@ public final class CashierTransactionsWithSummaryData implements Serializable {
|
||||
public String getCashierName() {
|
||||
return cashierName;
|
||||
}
|
||||
public Collection<CashierTransactionData> getCashierTransactions() {
|
||||
public Page<CashierTransactionData> getCashierTransactions() {
|
||||
return cashierTransactions;
|
||||
}
|
||||
|
||||
|
||||
+5
-3
@@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.apache.fineract.organisation.teller.service;
|
||||
|
||||
import org.apache.fineract.infrastructure.core.service.Page;
|
||||
import org.apache.fineract.infrastructure.core.service.SearchParameters;
|
||||
import org.apache.fineract.organisation.teller.data.CashierData;
|
||||
import org.apache.fineract.organisation.teller.data.CashierTransactionData;
|
||||
import org.apache.fineract.organisation.teller.data.CashierTransactionsWithSummaryData;
|
||||
@@ -60,10 +62,10 @@ public interface TellerManagementReadPlatformService {
|
||||
|
||||
public Collection<CashierData> retrieveCashiersForTellers(String sqlSearch, Long tellerId);
|
||||
|
||||
public Collection<CashierTransactionData> retrieveCashierTransactions(Long cashierId, boolean includeAllTellers, Date fromDate,
|
||||
Date toDate, String currencyCode);
|
||||
public Page<CashierTransactionData> retrieveCashierTransactions(Long cashierId, boolean includeAllTellers, Date fromDate,
|
||||
Date toDate, String currencyCode, final SearchParameters searchParameters);
|
||||
|
||||
public CashierTransactionsWithSummaryData retrieveCashierTransactionsWithSummary(Long cashierId, boolean includeAllTellers,
|
||||
Date fromDate, Date toDate, String currencyCode);
|
||||
Date fromDate, Date toDate, String currencyCode, final SearchParameters searchParameters);
|
||||
|
||||
}
|
||||
|
||||
+137
-22
@@ -28,7 +28,10 @@ import java.util.Iterator;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
|
||||
import org.apache.fineract.infrastructure.core.exception.UnrecognizedQueryParamException;
|
||||
import org.apache.fineract.infrastructure.core.service.Page;
|
||||
import org.apache.fineract.infrastructure.core.service.PaginationHelper;
|
||||
import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
|
||||
import org.apache.fineract.infrastructure.core.service.SearchParameters;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.apache.fineract.organisation.monetary.data.CurrencyData;
|
||||
import org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformService;
|
||||
@@ -66,6 +69,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
private final OfficeReadPlatformService officeReadPlatformService;
|
||||
private final StaffReadPlatformService staffReadPlatformService;
|
||||
private final CurrencyReadPlatformService currencyReadPlatformService;
|
||||
private final PaginationHelper<CashierTransactionData> paginationHelper = new PaginationHelper<>();
|
||||
|
||||
@Autowired
|
||||
public TellerManagementReadPlatformServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
|
||||
@@ -439,7 +443,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
|
||||
@Override
|
||||
public CashierTransactionsWithSummaryData retrieveCashierTransactionsWithSummary(final Long cashierId, final boolean includeAllTellers,
|
||||
final Date fromDate, final Date toDate, final String currencyCode) {
|
||||
final Date fromDate, final Date toDate, final String currencyCode, final SearchParameters searchParameters) {
|
||||
CashierData cashierData = findCashier(cashierId);
|
||||
Long staffId = cashierData.getStaffId();
|
||||
StaffData staffData = staffReadPlatformService.retrieveStaff(staffId);
|
||||
@@ -456,7 +460,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
|
||||
Collection<CashierTransactionTypeTotalsData> cashierTxnTypeTotals = this.jdbcTemplate.query(sql, ctsm, new Object[] { cashierId,
|
||||
currencyCode, hierarchySearchString, cashierId, currencyCode, hierarchySearchString, cashierId, currencyCode,
|
||||
hierarchySearchString });
|
||||
hierarchySearchString, cashierId, currencyCode, hierarchySearchString });
|
||||
|
||||
Iterator<CashierTransactionTypeTotalsData> itr = cashierTxnTypeTotals.iterator();
|
||||
BigDecimal allocAmount = new BigDecimal(0);
|
||||
@@ -479,8 +483,8 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
}
|
||||
}
|
||||
|
||||
final Collection<CashierTransactionData> cashierTransactions = retrieveCashierTransactions(cashierId, includeAllTellers, fromDate,
|
||||
toDate, currencyCode);
|
||||
final Page<CashierTransactionData> cashierTransactions = retrieveCashierTransactions(cashierId, includeAllTellers, fromDate,
|
||||
toDate, currencyCode, searchParameters);
|
||||
|
||||
CashierTransactionData cashierTxnTemplate = retrieveCashierTxnTemplate(cashierId);
|
||||
|
||||
@@ -491,8 +495,8 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<CashierTransactionData> retrieveCashierTransactions(final Long cashierId, final boolean includeAllTellers,
|
||||
final Date fromDate, final Date toDate, final String currencyCode) {
|
||||
public Page<CashierTransactionData> retrieveCashierTransactions(final Long cashierId, final boolean includeAllTellers,
|
||||
final Date fromDate, final Date toDate, final String currencyCode, final SearchParameters searchParameters) {
|
||||
CashierData cashierData = findCashier(cashierId);
|
||||
Long staffId = cashierData.getStaffId();
|
||||
StaffData staffData = staffReadPlatformService.retrieveStaff(staffId);
|
||||
@@ -507,20 +511,41 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
|
||||
final CashierTransactionMapper ctm = new CashierTransactionMapper();
|
||||
|
||||
final String sql = "select * from (select " + ctm.cashierTxnSchema()
|
||||
String sql = "select * from (select " + ctm.cashierTxnSchema()
|
||||
+ " where txn.cashier_id = ? and txn.currency_code = ? and o.hierarchy like ? ) cashier_txns " + " union (select "
|
||||
+ ctm.savingsTxnSchema()
|
||||
+ " where sav_txn.is_reversed = 0 and c.id = ? and sav.currency_code = ? and o.hierarchy like ? and "
|
||||
+ " sav_txn.transaction_date between c.start_date and date_add(c.end_date, interval 1 day) "
|
||||
+ " and renum.enum_value in ('deposit','withdrawal fee', 'Pay Charge', 'withdrawal') ) " + " union (select "
|
||||
+ " and renum.enum_value in ('deposit','withdrawal fee', 'Pay Charge', 'withdrawal', 'Annual Fee', 'Waive Charge', 'Interest Posting', 'Overdraft Interest') "
|
||||
+ " and (sav_txn.payment_detail_id IS NULL OR payType.is_cash_payment = 1) "
|
||||
+ " AND acnttrans.id IS NULL ) "
|
||||
+ " union (select "
|
||||
+ ctm.loansTxnSchema()
|
||||
+ " where loan_txn.is_reversed = 0 and c.id = ? and loan.currency_code = ? and o.hierarchy like ? and "
|
||||
+ " loan_txn.transaction_date between c.start_date and date_add(c.end_date, interval 1 day) "
|
||||
+ " and renum.enum_value in ('Repayment At Disbursement','Repayment', 'Recovery Payment','Disbursement') ) "
|
||||
+ " and renum.enum_value in ('REPAYMENT_AT_DISBURSEMENT','REPAYMENT', 'RECOVERY_REPAYMENT','DISBURSEMENT', 'CHARGE_PAYMENT', 'WAIVE_CHARGES', 'WAIVE_INTEREST', 'WRITEOFF') "
|
||||
+ " and (loan_txn.payment_detail_id IS NULL OR payType.is_cash_payment = 1) "
|
||||
+ " AND acnttrans.id IS NULL ) "
|
||||
+ " union (select "
|
||||
+ ctm.clientTxnSchema()
|
||||
+ " where cli_txn.is_reversed = 0 and c.id = ? and cli_txn.currency_code = ? and o.hierarchy like ? and cli_txn.transaction_date "
|
||||
+ " between c.start_date and date_add(c.end_date, interval 1 day) "
|
||||
+ " and renum.enum_value in ('PAY_CHARGE', 'WAIVE_CHARGE') "
|
||||
+ " and (cli_txn.payment_detail_id IS NULL OR payType.is_cash_payment = 1) ) "
|
||||
+ " order by created_date ";
|
||||
|
||||
return this.jdbcTemplate.query(sql, ctm, new Object[] { cashierId, currencyCode, hierarchySearchString, cashierId, currencyCode,
|
||||
hierarchySearchString, cashierId, currencyCode, hierarchySearchString });
|
||||
|
||||
if (searchParameters.isLimited()) {
|
||||
sql = sql + " limit " + searchParameters.getLimit();
|
||||
if (searchParameters.isOffset()) {
|
||||
sql = sql + " offset " + searchParameters.getOffset();
|
||||
}
|
||||
}
|
||||
final String sqlCountRows = "SELECT FOUND_ROWS()";
|
||||
// return this.jdbcTemplate.query(sql, ctm, new Object[] { cashierId, currencyCode, hierarchySearchString, cashierId, currencyCode,
|
||||
// hierarchySearchString, cashierId, currencyCode, hierarchySearchString, cashierId, currencyCode, hierarchySearchString });
|
||||
Object[] params = new Object[] {cashierId, currencyCode, hierarchySearchString, cashierId, currencyCode,
|
||||
hierarchySearchString, cashierId, currencyCode, hierarchySearchString, cashierId, currencyCode, hierarchySearchString };
|
||||
return this.paginationHelper.fetchPage(this.jdbcTemplate, sqlCountRows, sql, params, ctm);
|
||||
}
|
||||
|
||||
private static final class CashierMapper implements RowMapper<CashierData> {
|
||||
@@ -592,9 +617,9 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
|
||||
sqlBuilder.append(" sav_txn.id as txn_id, null as cashier_id, ");
|
||||
sqlBuilder.append(" case ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('deposit','withdrawal fee', 'Pay Charge') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('deposit','withdrawal fee', 'Pay Charge', 'Annual Fee') ");
|
||||
sqlBuilder.append(" then 103 ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('withdrawal', '') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('withdrawal', 'Waive Charge', 'Interest Posting', 'Overdraft Interest', '') ");
|
||||
sqlBuilder.append(" then 104 ");
|
||||
sqlBuilder.append(" else ");
|
||||
sqlBuilder.append(" 105 ");
|
||||
@@ -614,6 +639,11 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
sqlBuilder.append(" left join m_appuser user on sav_txn.appuser_id = user.id ");
|
||||
sqlBuilder.append(" left join m_staff staff on user.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_cashiers c on c.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_payment_detail payDetails on payDetails.id = sav_txn.payment_detail_id ");
|
||||
sqlBuilder.append(" left join m_payment_type payType on payType.id = payDetails.payment_type_id ");
|
||||
sqlBuilder.append(" left join m_account_transfer_transaction acnttrans ");
|
||||
sqlBuilder.append(" on (acnttrans.from_savings_transaction_id = sav_txn.id ");
|
||||
sqlBuilder.append(" or acnttrans.to_savings_transaction_id = sav_txn.id) ");
|
||||
|
||||
return sqlBuilder.toString();
|
||||
}
|
||||
@@ -624,9 +654,9 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
|
||||
sqlBuilder.append(" loan_txn.id as txn_id, c.id as cashier_id, ");
|
||||
sqlBuilder.append(" case ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('Repayment At Disbursement','Repayment', 'Recovery Payment') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('REPAYMENT_AT_DISBURSEMENT','REPAYMENT', 'RECOVERY_REPAYMENT', 'CHARGE_PAYMENT') ");
|
||||
sqlBuilder.append(" then 103 ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('Disbursement') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('DISBURSEMENT', 'WAIVE_INTEREST', 'WRITEOFF', 'WAIVE_CHARGES') ");
|
||||
sqlBuilder.append(" then 104 ");
|
||||
sqlBuilder.append(" else ");
|
||||
sqlBuilder.append(" 105 ");
|
||||
@@ -639,13 +669,51 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
.append(" o.id as office_id, o.name as office_name, null as teller_id, null as teller_name, staff.display_name as cashier_name ");
|
||||
sqlBuilder.append(" from m_loan_transaction loan_txn ");
|
||||
sqlBuilder
|
||||
.append(" left join r_enum_value renum on loan_txn.transaction_type_enum = renum.enum_id and renum.enum_name = 'transaction_type_enum' ");
|
||||
.append(" left join r_enum_value renum on loan_txn.transaction_type_enum = renum.enum_id and renum.enum_name = 'loan_transaction_type_enum' ");
|
||||
sqlBuilder.append(" left join m_loan loan on loan_txn.loan_id = loan.id ");
|
||||
sqlBuilder.append(" left join m_client cl on loan.client_id = cl.id ");
|
||||
sqlBuilder.append(" left join m_office o on cl.office_id = o.id ");
|
||||
sqlBuilder.append(" left join m_appuser user on loan_txn.appuser_id = user.id ");
|
||||
sqlBuilder.append(" left join m_staff staff on user.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_cashiers c on c.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_payment_detail payDetails on payDetails.id = loan_txn.payment_detail_id ");
|
||||
sqlBuilder.append(" left join m_payment_type payType on payType.id = payDetails.payment_type_id ");
|
||||
sqlBuilder.append(" left join m_account_transfer_transaction acnttrans ");
|
||||
sqlBuilder.append(" on (acnttrans.from_loan_transaction_id = loan_txn.id ");
|
||||
sqlBuilder.append(" or acnttrans.to_loan_transaction_id = loan_txn.id) ");
|
||||
|
||||
return sqlBuilder.toString();
|
||||
}
|
||||
|
||||
public String clientTxnSchema() {
|
||||
|
||||
final StringBuilder sqlBuilder = new StringBuilder(400);
|
||||
|
||||
sqlBuilder.append(" cli_txn.id AS txn_id, c.id AS cashier_id, ");
|
||||
sqlBuilder.append(" case ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('PAY_CHARGE') ");
|
||||
sqlBuilder.append(" then 103 ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('WAIVE_CHARGE') ");
|
||||
sqlBuilder.append(" then 104 ");
|
||||
sqlBuilder.append(" else ");
|
||||
sqlBuilder.append(" 105 ");
|
||||
sqlBuilder.append(" end as cash_txn_type, ");
|
||||
sqlBuilder.append(" cli_txn.amount as txn_amount, cli_txn.transaction_date as txn_date, ");
|
||||
sqlBuilder
|
||||
.append(" concat (renum.enum_value, ', Client:', cl.id, '-', cl.account_no, ',Client:', cl.id, '-',cl.display_name) as txn_note, ");
|
||||
sqlBuilder.append(" 'client' as entity_type, cl.id as entity_id, cli_txn.created_date as created_date, ");
|
||||
sqlBuilder
|
||||
.append(" o.id as office_id, o.name as office_name, null as teller_id, null as teller_name, staff.display_name as cashier_name ");
|
||||
sqlBuilder.append(" from m_client_transaction cli_txn ");
|
||||
sqlBuilder
|
||||
.append(" left join r_enum_value renum on cli_txn.transaction_type_enum = renum.enum_id AND renum.enum_name = 'client_transaction_type_enum' ");
|
||||
sqlBuilder.append(" left join m_client cl on cli_txn.client_id = cl.id ");
|
||||
sqlBuilder.append(" left join m_office o on cl.office_id = o.id ");
|
||||
sqlBuilder.append(" left join m_appuser user on cli_txn.appuser_id = user.id ");
|
||||
sqlBuilder.append(" left join m_staff staff on user.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_cashiers c on c.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_payment_detail payDetails on payDetails.id = cli_txn.payment_detail_id ");
|
||||
sqlBuilder.append(" left join m_payment_type payType on payType.id = payDetails.payment_type_id ");
|
||||
|
||||
return sqlBuilder.toString();
|
||||
}
|
||||
@@ -709,9 +777,9 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
sqlBuilder.append(" UNION ");
|
||||
sqlBuilder.append(" (select sav_txn.id as txn_id, c.id as cashier_id, ");
|
||||
sqlBuilder.append(" case ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('deposit','withdrawal fee', 'Pay Charge') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('deposit','withdrawal fee', 'Pay Charge', 'Annual Fee') ");
|
||||
sqlBuilder.append(" then 103 ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('withdrawal') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('withdrawal', 'Waive Charge', 'Interest Posting', 'Overdraft Interest') ");
|
||||
sqlBuilder.append(" then 104 ");
|
||||
sqlBuilder.append(" else ");
|
||||
sqlBuilder.append(" 105 ");
|
||||
@@ -731,18 +799,25 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
sqlBuilder.append(" left join m_appuser user on sav_txn.appuser_id = user.id ");
|
||||
sqlBuilder.append(" left join m_staff staff on user.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_cashiers c on c.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_payment_detail payDetails on payDetails.id = sav_txn.payment_detail_id ");
|
||||
sqlBuilder.append(" left join m_payment_type payType on payType.id = payDetails.payment_type_id ");
|
||||
sqlBuilder.append(" left join m_account_transfer_transaction acnttrans ");
|
||||
sqlBuilder.append(" on (acnttrans.from_savings_transaction_id = sav_txn.id ");
|
||||
sqlBuilder.append(" or acnttrans.to_savings_transaction_id = sav_txn.id) ");
|
||||
sqlBuilder.append(" where sav_txn.is_reversed = 0 and c.id = ? ");
|
||||
sqlBuilder.append(" and sav.currency_code = ? ");
|
||||
sqlBuilder.append(" and o.hierarchy like ? ");
|
||||
sqlBuilder.append(" and sav_txn.transaction_date between c.start_date and date_add(c.end_date, interval 1 day) ");
|
||||
sqlBuilder.append(" and (sav_txn.payment_detail_id IS NULL OR payType.is_cash_payment = 1) ");
|
||||
sqlBuilder.append(" AND acnttrans.id IS NULL ");
|
||||
sqlBuilder.append(" ) ");
|
||||
sqlBuilder.append(" UNION ");
|
||||
sqlBuilder.append(" ( ");
|
||||
sqlBuilder.append(" select loan_txn.id as txn_id, c.id as cashier_id, ");
|
||||
sqlBuilder.append(" case ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('Repayment At Disbursement','Repayment', 'Recovery Payment') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('REPAYMENT_AT_DISBURSEMENT','REPAYMENT', 'RECOVERY_REPAYMENT', 'CHARGE_PAYMENT') ");
|
||||
sqlBuilder.append(" then 103 ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('Disbursement') ");
|
||||
sqlBuilder.append(" when renum.enum_value in ('DISBURSEMENT', 'WAIVE_INTEREST', 'WRITEOFF', 'WAIVE_CHARGES') ");
|
||||
sqlBuilder.append(" then 104 ");
|
||||
sqlBuilder.append(" else ");
|
||||
sqlBuilder.append(" 105 ");
|
||||
@@ -755,17 +830,57 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement
|
||||
.append(" o.id as office_id, o.name as office_name, null as teller_id, null as teller_name, staff.display_name as cashier_name ");
|
||||
sqlBuilder.append(" from m_loan_transaction loan_txn ");
|
||||
sqlBuilder
|
||||
.append(" left join r_enum_value renum on loan_txn.transaction_type_enum = renum.enum_id and renum.enum_name = 'transaction_type_enum' ");
|
||||
.append(" left join r_enum_value renum on loan_txn.transaction_type_enum = renum.enum_id and renum.enum_name = 'loan_transaction_type_enum' ");
|
||||
sqlBuilder.append(" left join m_loan loan on loan_txn.loan_id = loan.id ");
|
||||
sqlBuilder.append(" left join m_client cl on loan.client_id = cl.id ");
|
||||
sqlBuilder.append(" left join m_office o on cl.office_id = o.id ");
|
||||
sqlBuilder.append(" left join m_appuser user on loan_txn.appuser_id = user.id ");
|
||||
sqlBuilder.append(" left join m_staff staff on user.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_cashiers c on c.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_payment_detail payDetails on payDetails.id = loan_txn.payment_detail_id ");
|
||||
sqlBuilder.append(" left join m_payment_type payType on payType.id = payDetails.payment_type_id ");
|
||||
sqlBuilder.append(" left join m_account_transfer_transaction acnttrans ");
|
||||
sqlBuilder.append(" on (acnttrans.from_loan_transaction_id = loan_txn.id ");
|
||||
sqlBuilder.append(" or acnttrans.to_loan_transaction_id = loan_txn.id) ");
|
||||
sqlBuilder.append(" where loan_txn.is_reversed = 0 and c.id = ? ");
|
||||
sqlBuilder.append(" and loan.currency_code = ? ");
|
||||
sqlBuilder.append(" and o.hierarchy like ? ");
|
||||
sqlBuilder.append(" and loan_txn.transaction_date between c.start_date and date_add(c.end_date, interval 1 day) ");
|
||||
sqlBuilder.append(" and (loan_txn.payment_detail_id IS NULL OR payType.is_cash_payment = 1) ");
|
||||
sqlBuilder.append(" AND acnttrans.id IS NULL ");
|
||||
sqlBuilder.append(" ) ");
|
||||
sqlBuilder.append(" UNION ");
|
||||
sqlBuilder.append(" ( ");
|
||||
sqlBuilder.append(" SELECT cli_txn.id AS txn_id, c.id AS cashier_id, ");
|
||||
sqlBuilder.append(" case ");
|
||||
sqlBuilder.append(" WHEN renum.enum_value IN ('PAY_CHARGE') ");
|
||||
sqlBuilder.append(" then 103 ");
|
||||
sqlBuilder.append(" WHEN renum.enum_value IN ('WAIVE_CHARGE') ");
|
||||
sqlBuilder.append(" then 104 ");
|
||||
sqlBuilder.append(" else ");
|
||||
sqlBuilder.append(" 105 ");
|
||||
sqlBuilder.append(" end as cash_txn_type, ");
|
||||
sqlBuilder.append(" cli_txn.amount as txn_amount, cli_txn.transaction_date as txn_date, ");
|
||||
sqlBuilder
|
||||
.append(" concat (renum.enum_value, ', Client:', cl.id, '-', cl.account_no, ',Client:', cl.id, '-',cl.display_name) as txn_note, ");
|
||||
sqlBuilder.append(" 'client' as entity_type, cl.id as entity_id, cli_txn.created_date as created_date, ");
|
||||
sqlBuilder
|
||||
.append(" o.id as office_id, o.name as office_name, null as teller_id, null as teller_name, staff.display_name as cashier_name ");
|
||||
sqlBuilder.append(" from m_client_transaction cli_txn ");
|
||||
sqlBuilder
|
||||
.append(" left join r_enum_value renum ON cli_txn.transaction_type_enum = renum.enum_id AND renum.enum_name = 'client_transaction_type_enum' ");
|
||||
sqlBuilder.append(" left join m_client cl ON cli_txn.client_id = cl.id ");
|
||||
sqlBuilder.append(" left join m_office o ON cl.office_id = o.id ");
|
||||
sqlBuilder.append(" left join m_appuser user ON cli_txn.appuser_id = user.id ");
|
||||
sqlBuilder.append(" left join m_staff staff ON user.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_cashiers c ON c.staff_id = staff.id ");
|
||||
sqlBuilder.append(" left join m_payment_detail payDetails on payDetails.id = cli_txn.payment_detail_id ");
|
||||
sqlBuilder.append(" left join m_payment_type payType on payType.id = payDetails.payment_type_id ");
|
||||
sqlBuilder.append(" where cli_txn.is_reversed = 0 AND c.id = ? ");
|
||||
sqlBuilder.append(" and cli_txn.currency_code = ? ");
|
||||
sqlBuilder.append(" and o.hierarchy LIKE ? ");
|
||||
sqlBuilder.append(" and cli_txn.transaction_date between c.start_date and date_add(c.end_date, interval 1 day) ");
|
||||
sqlBuilder.append(" and (cli_txn.payment_detail_id IS NULL OR payType.is_cash_payment = 1) ");
|
||||
sqlBuilder.append(" ) ");
|
||||
sqlBuilder.append(" ) txns ");
|
||||
sqlBuilder.append(" group by cash_txn_type ");
|
||||
|
||||
Reference in New Issue
Block a user