diff --git a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/api/JournalEntriesApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/api/JournalEntriesApiResource.java index 57201d167..540991fe9 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/api/JournalEntriesApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/api/JournalEntriesApiResource.java @@ -82,6 +82,7 @@ public class JournalEntriesApiResource { @QueryParam("offset") final Integer offset, @QueryParam("limit") final Integer limit, @QueryParam("orderBy") final String orderBy, @QueryParam("sortOrder") final String sortOrder, @QueryParam("locale") final String locale, @QueryParam("dateFormat") final String dateFormat, + @QueryParam("loanId") final Long loanId,@QueryParam("savingsId") final Long savingsId, @QueryParam("runningBalance") final boolean runningBalance, @QueryParam("transactionDetails") final boolean transactionDetails) { this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermission); @@ -95,7 +96,7 @@ public class JournalEntriesApiResource { toDate = toDateParam.getDate("toDate", dateFormat, locale); } - final SearchParameters searchParameters = SearchParameters.forJournalEntries(officeId, offset, limit, orderBy, sortOrder); + final SearchParameters searchParameters = SearchParameters.forJournalEntries(officeId, offset, limit, orderBy, sortOrder,loanId,savingsId); JournalEntryAssociationParametersData associationParametersData = new JournalEntryAssociationParametersData(transactionDetails, runningBalance); @@ -106,11 +107,11 @@ public class JournalEntriesApiResource { } @GET - @Path("{journalEntryId}") - @Consumes({ MediaType.APPLICATION_JSON }) - @Produces({ MediaType.APPLICATION_JSON }) - public String retreiveJournalEntryById(@PathParam("journalEntryId") final Long journalEntryId, @Context final UriInfo uriInfo, - @QueryParam("runningBalance") final boolean runningBalance, @QueryParam("transactionDetails") final boolean transactionDetails) { + @Path("{journalEntryId}") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + public String retreiveJournalEntryById(@PathParam("journalEntryId") final Long journalEntryId, @Context final UriInfo uriInfo, + @QueryParam("runningBalance") final boolean runningBalance, @QueryParam("transactionDetails") final boolean transactionDetails) { this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermission); JournalEntryAssociationParametersData associationParametersData = new JournalEntryAssociationParametersData(transactionDetails, @@ -122,6 +123,8 @@ public class JournalEntriesApiResource { return this.apiJsonSerializerService.serialize(settings, glJournalEntryData, RESPONSE_DATA_PARAMETERS); } + + @POST @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java index 1caf7dec1..1f643b3b9 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java @@ -5,16 +5,6 @@ */ package org.mifosplatform.accounting.journalentry.service; -import java.math.BigDecimal; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - import org.apache.commons.lang.StringUtils; import org.joda.time.LocalDate; import org.mifosplatform.accounting.common.AccountingEnumerations; @@ -23,25 +13,17 @@ import org.mifosplatform.accounting.financialactivityaccount.domain.FinancialAct import org.mifosplatform.accounting.glaccount.data.GLAccountData; import org.mifosplatform.accounting.glaccount.domain.GLAccountType; import org.mifosplatform.accounting.glaccount.service.GLAccountReadPlatformService; -import org.mifosplatform.accounting.journalentry.data.JournalEntryAssociationParametersData; -import org.mifosplatform.accounting.journalentry.data.JournalEntryData; -import org.mifosplatform.accounting.journalentry.data.OfficeOpeningBalancesData; -import org.mifosplatform.accounting.journalentry.data.TransactionDetailData; -import org.mifosplatform.accounting.journalentry.data.TransactionTypeEnumData; +import org.mifosplatform.accounting.journalentry.data.*; import org.mifosplatform.accounting.journalentry.exception.JournalEntriesNotFoundException; import org.mifosplatform.infrastructure.codes.data.CodeValueData; import org.mifosplatform.infrastructure.core.data.EnumOptionData; import org.mifosplatform.infrastructure.core.domain.JdbcSupport; import org.mifosplatform.infrastructure.core.exception.GeneralPlatformDomainRuleException; -import org.mifosplatform.infrastructure.core.service.DateUtils; -import org.mifosplatform.infrastructure.core.service.Page; -import org.mifosplatform.infrastructure.core.service.PaginationHelper; -import org.mifosplatform.infrastructure.core.service.RoutingDataSource; +import org.mifosplatform.infrastructure.core.service.*; import org.mifosplatform.organisation.monetary.data.CurrencyData; import org.mifosplatform.organisation.office.data.OfficeData; import org.mifosplatform.organisation.office.service.OfficeReadPlatformService; import org.mifosplatform.portfolio.account.PortfolioAccountType; -import org.mifosplatform.infrastructure.core.service.SearchParameters; import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionEnumData; import org.mifosplatform.portfolio.loanproduct.service.LoanEnumerations; import org.mifosplatform.portfolio.note.data.NoteData; @@ -55,6 +37,16 @@ import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + @Service public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlatformService { @@ -315,6 +307,22 @@ public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlat } } + if (searchParameters.isLoanIdPassed()) { + sqlBuilder.append(whereClose + " journalEntry.loan_transaction_id in (select id from m_loan_transaction where loan_id = ?)"); + objectArray[arrayPos] = searchParameters.getLoanId(); + arrayPos = arrayPos + 1; + + whereClose = " and "; + } + if (searchParameters.isSavingsIdPassed()) { + sqlBuilder.append(whereClose + " journalEntry.savings_transaction_id in (select id from m_savings_account_transaction where savings_account_id = ?)"); + objectArray[arrayPos] = searchParameters.getSavingsId(); + arrayPos = arrayPos + 1; + + whereClose = " and "; + } + + if (searchParameters.isOrderByRequested()) { sqlBuilder.append(" order by ").append(searchParameters.getOrderBy()); @@ -465,7 +473,7 @@ public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlat final Date toDate = null; final JournalEntryAssociationParametersData associationParametersData = null; - final SearchParameters searchParameters = SearchParameters.forJournalEntries(officeId, offset, limit, orderBy, sortOrder); + final SearchParameters searchParameters = SearchParameters.forJournalEntries(officeId, offset, limit, orderBy, sortOrder,null,null); return retrieveAll(searchParameters, contraId, onlyManualEntries, fromDate, toDate, transactionId, entityType, associationParametersData); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java old mode 100644 new mode 100755 index 536582d21..251b01337 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java @@ -24,12 +24,16 @@ public final class SearchParameters { private final Long staffId; + private final Long loanId; + + private final Long savingsId; + public static SearchParameters from(final String sqlSearch, final Long officeId, final String externalId, final String name, final String hierarchy) { final Long staffId = null; final String accountNo = null; return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, null, null, null, null, staffId, - accountNo); + accountNo,null,null); } public static SearchParameters forClients(final String sqlSearch, final Long officeId, final String externalId, @@ -41,7 +45,7 @@ public final class SearchParameters { final String accountNo = null; return new SearchParameters(sqlSearch, officeId, externalId, displayName, hierarchy, firstname, lastname, offset, maxLimitAllowed, - orderBy, sortOrder, staffId, accountNo); + orderBy, sortOrder, staffId, accountNo,null,null); } public static SearchParameters forGroups(final String sqlSearch, final Long officeId, final Long staffId, final String externalId, @@ -52,12 +56,12 @@ public final class SearchParameters { final String accountNo = null; return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, offset, maxLimitAllowed, orderBy, - sortOrder, staffId, accountNo); + sortOrder, staffId, accountNo,null,null); } public static SearchParameters forOffices(final String orderBy, final String sortOrder) { return new SearchParameters(null, null, null, null, null, null, null, null, null, orderBy, sortOrder, - null, null); + null, null,null,null); } public static SearchParameters forLoans(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, @@ -67,17 +71,17 @@ public final class SearchParameters { final Long staffId = null; return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, - staffId, accountNo); + staffId, accountNo,null,null); } public static SearchParameters forJournalEntries(final Long officeId, final Integer offset, final Integer limit, final String orderBy, - final String sortOrder) { + final String sortOrder,final Long loanId,final Long savingsId) { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; return new SearchParameters(null, officeId, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, - null); + null,loanId,savingsId); } public static SearchParameters forPagination(final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { @@ -85,7 +89,7 @@ public final class SearchParameters { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; - return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, null); + return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, null,null,null); } public static SearchParameters forSavings(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, @@ -96,7 +100,7 @@ public final class SearchParameters { final String accountNo = null; return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, - staffId, accountNo); + staffId, accountNo,null,null); } public static SearchParameters forAccountTransfer(final String sqlSearch, final String externalId, final Integer offset, @@ -107,12 +111,12 @@ public final class SearchParameters { final String accountNo = null; return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, - staffId, accountNo); + staffId, accountNo,null,null); } private SearchParameters(final String sqlSearch, final Long officeId, final String externalId, final String name, final String hierarchy, final String firstname, final String lastname, final Integer offset, final Integer limit, - final String orderBy, final String sortOrder, final Long staffId, final String accountNo) { + final String orderBy, final String sortOrder, final Long staffId, final String accountNo,final Long loanId,final Long savingsId) { this.sqlSearch = sqlSearch; this.officeId = officeId; this.externalId = externalId; @@ -126,6 +130,8 @@ public final class SearchParameters { this.sortOrder = sortOrder; this.staffId = staffId; this.accountNo = accountNo; + this.loanId = loanId; + this.savingsId = savingsId; } public boolean isOrderByRequested() { @@ -224,4 +230,14 @@ public final class SearchParameters { return this.accountNo; } + public boolean isLoanIdPassed() { + return this.loanId != null && this.loanId != 0; + } + public boolean isSavingsIdPassed() { + return this.savingsId != null && this.savingsId != 0; + } + + public Long getLoanId() {return this.loanId;} + + public Long getSavingsId() {return this.savingsId;} } \ No newline at end of file