merging 1.9.2 release into develop branch
This commit is contained in:
@@ -5,6 +5,7 @@ See VERSIONING (https://github.com/openMF/mifosx/blob/master/VERSIONING.md) for
|
|||||||
|
|
||||||
Releases
|
Releases
|
||||||
===============
|
===============
|
||||||
|
1. 18 Sep 2013 - 1.9.2.RELEASE
|
||||||
1. 10 Sep 2013 - 1.9.1.RELEASE
|
1. 10 Sep 2013 - 1.9.1.RELEASE
|
||||||
1. 8 Sep 2013 - 1.9.0.RELEASE
|
1. 8 Sep 2013 - 1.9.0.RELEASE
|
||||||
1. 21 Aug 2013 - 1.8.1.RELEASE
|
1. 21 Aug 2013 - 1.8.1.RELEASE
|
||||||
@@ -35,6 +36,22 @@ Releases
|
|||||||
1. 05 April 2013 - 0.11.1.beta
|
1. 05 April 2013 - 0.11.1.beta
|
||||||
1. 05 April 2013 - 0.11.0.beta
|
1. 05 April 2013 - 0.11.0.beta
|
||||||
|
|
||||||
|
1.9.2.RELEASE
|
||||||
|
=============
|
||||||
|
Bug Release
|
||||||
|
|
||||||
|
Platform & API
|
||||||
|
|
||||||
|
Bug
|
||||||
|
- [MIFOSX-659] - Not able to transfer Client between Branch offices which were created under same parent office.
|
||||||
|
- [MIFOSX-663] - No API documentation on Holidays or Working Days features
|
||||||
|
- [MIFOSX-671] - "Minimum opening balance" assigned is not displaying as balance in Transaction page after activation of savings account
|
||||||
|
- [MIFOSX-672] - Final installment of FLAT interest loans incorrectly has closing loan balance thats greater than zero.
|
||||||
|
|
||||||
|
Improvement
|
||||||
|
- [MIFOSX-669] - Ability to not allow to "close" a client while transfer of client is in progress
|
||||||
|
|
||||||
|
|
||||||
1.9.1.RELEASE
|
1.9.1.RELEASE
|
||||||
=============
|
=============
|
||||||
Bug Release
|
Bug Release
|
||||||
|
|||||||
+5
-2
@@ -11,12 +11,14 @@ import java.util.HashSet;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DefaultValue;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.POST;
|
import javax.ws.rs.POST;
|
||||||
import javax.ws.rs.PUT;
|
import javax.ws.rs.PUT;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.Produces;
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.Context;
|
import javax.ws.rs.core.Context;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.UriInfo;
|
import javax.ws.rs.core.UriInfo;
|
||||||
@@ -69,11 +71,12 @@ public class OfficesApiResource {
|
|||||||
@GET
|
@GET
|
||||||
@Consumes({ MediaType.APPLICATION_JSON })
|
@Consumes({ MediaType.APPLICATION_JSON })
|
||||||
@Produces({ MediaType.APPLICATION_JSON })
|
@Produces({ MediaType.APPLICATION_JSON })
|
||||||
public String retrieveOffices(@Context final UriInfo uriInfo) {
|
public String retrieveOffices(@Context final UriInfo uriInfo,
|
||||||
|
@DefaultValue("false") @QueryParam("includeAllOffices") final boolean onlyManualEntries) {
|
||||||
|
|
||||||
this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
|
this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
|
||||||
|
|
||||||
final Collection<OfficeData> offices = this.readPlatformService.retrieveAllOffices();
|
final Collection<OfficeData> offices = this.readPlatformService.retrieveAllOffices(onlyManualEntries);
|
||||||
|
|
||||||
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||||
return this.toApiJsonSerializer.serialize(settings, offices, this.RESPONSE_DATA_PARAMETERS);
|
return this.toApiJsonSerializer.serialize(settings, offices, this.RESPONSE_DATA_PARAMETERS);
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ public interface OfficeReadPlatformService {
|
|||||||
|
|
||||||
MifosPlatformTenant loadTenantById(String tenantIdentifier);
|
MifosPlatformTenant loadTenantById(String tenantIdentifier);
|
||||||
|
|
||||||
Collection<OfficeData> retrieveAllOffices();
|
Collection<OfficeData> retrieveAllOffices(boolean includeAllOffices);
|
||||||
|
|
||||||
Collection<OfficeData> retrieveAllOfficesForDropdown();
|
Collection<OfficeData> retrieveAllOfficesForDropdown();
|
||||||
|
|
||||||
|
|||||||
+11
-8
@@ -123,8 +123,8 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService
|
|||||||
final Integer currencyDigits = JdbcSupport.getInteger(rs, "currencyDigits");
|
final Integer currencyDigits = JdbcSupport.getInteger(rs, "currencyDigits");
|
||||||
final Integer inMultiplesOf = JdbcSupport.getInteger(rs, "inMultiplesOf");
|
final Integer inMultiplesOf = JdbcSupport.getInteger(rs, "inMultiplesOf");
|
||||||
|
|
||||||
final CurrencyData currencyData = new CurrencyData(currencyCode, currencyName, currencyDigits, inMultiplesOf, currencyDisplaySymbol,
|
final CurrencyData currencyData = new CurrencyData(currencyCode, currencyName, currencyDigits, inMultiplesOf,
|
||||||
currencyNameCode);
|
currencyDisplaySymbol, currencyNameCode);
|
||||||
|
|
||||||
final BigDecimal transactionAmount = rs.getBigDecimal("transactionAmount");
|
final BigDecimal transactionAmount = rs.getBigDecimal("transactionAmount");
|
||||||
final String description = rs.getString("description");
|
final String description = rs.getString("description");
|
||||||
@@ -134,15 +134,18 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** TODO: Vishwas This change breaks caching, need to have a relook **/
|
||||||
@Override
|
@Override
|
||||||
@Cacheable(value = "offices", key = "T(org.mifosplatform.infrastructure.core.service.ThreadLocalContextUtil).getTenant().getTenantIdentifier().concat(#root.target.context.authenticatedUser().getOffice().getHierarchy()+'of')")
|
@Cacheable(value = "offices", key = "T(org.mifosplatform.infrastructure.core.service.ThreadLocalContextUtil).getTenant().getTenantIdentifier().concat(#root.target.context.authenticatedUser().getOffice().getHierarchy()+'of')")
|
||||||
public Collection<OfficeData> retrieveAllOffices() {
|
public Collection<OfficeData> retrieveAllOffices(boolean includeAllOffices) {
|
||||||
|
|
||||||
final AppUser currentUser = this.context.authenticatedUser();
|
final AppUser currentUser = this.context.authenticatedUser();
|
||||||
|
|
||||||
final String hierarchy = currentUser.getOffice().getHierarchy();
|
final String hierarchy = currentUser.getOffice().getHierarchy();
|
||||||
final String hierarchySearchString = hierarchy + "%";
|
String hierarchySearchString = null;
|
||||||
|
if (includeAllOffices) {
|
||||||
|
hierarchySearchString = "." + "%";
|
||||||
|
} else {
|
||||||
|
hierarchySearchString = hierarchy + "%";
|
||||||
|
}
|
||||||
final OfficeMapper rm = new OfficeMapper();
|
final OfficeMapper rm = new OfficeMapper();
|
||||||
final String sql = "select " + rm.officeSchema() + "where o.hierarchy like ? order by o.hierarchy";
|
final String sql = "select " + rm.officeSchema() + "where o.hierarchy like ? order by o.hierarchy";
|
||||||
|
|
||||||
@@ -242,7 +245,7 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Cacheable(value = "tenantsById", key="#tenantIdentifier")
|
@Cacheable(value = "tenantsById", key = "#tenantIdentifier")
|
||||||
public MifosPlatformTenant loadTenantById(final String tenantIdentifier) {
|
public MifosPlatformTenant loadTenantById(final String tenantIdentifier) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
+3
@@ -344,6 +344,9 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
|||||||
if (ClientStatus.fromInt(client.getStatus()).isClosed()) {
|
if (ClientStatus.fromInt(client.getStatus()).isClosed()) {
|
||||||
final String errorMessage = "Client is alread closed.";
|
final String errorMessage = "Client is alread closed.";
|
||||||
throw new InvalidClientStateTransitionException("close", "is.already.closed", errorMessage);
|
throw new InvalidClientStateTransitionException("close", "is.already.closed", errorMessage);
|
||||||
|
} else if (ClientStatus.fromInt(client.getStatus()).isUnderTransfer()) {
|
||||||
|
final String errorMessage = "Cannot Close a Client under Transfer";
|
||||||
|
throw new InvalidClientStateTransitionException("close", "is.under.transfer", errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client.isNotPending() && client.getActivationLocalDate().isAfter(closureDate)) {
|
if (client.isNotPending() && client.getActivationLocalDate().isAfter(closureDate)) {
|
||||||
|
|||||||
+6
-2
@@ -1682,13 +1682,17 @@ public class SavingsAccount extends AbstractPersistable<Long> {
|
|||||||
// activating account.
|
// activating account.
|
||||||
final Money minRequiredOpeningBalance = Money.of(this.currency, this.minRequiredOpeningBalance);
|
final Money minRequiredOpeningBalance = Money.of(this.currency, this.minRequiredOpeningBalance);
|
||||||
if (minRequiredOpeningBalance.isGreaterThanZero()) {
|
if (minRequiredOpeningBalance.isGreaterThanZero()) {
|
||||||
|
|
||||||
final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, activationDate,
|
final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, activationDate,
|
||||||
minRequiredOpeningBalance.getAmount(), existingTransactionIds, existingReversedTransactionIds, null);
|
minRequiredOpeningBalance.getAmount(), existingTransactionIds, existingReversedTransactionIds, null);
|
||||||
|
|
||||||
deposit(transactionDTO);
|
deposit(transactionDTO);
|
||||||
|
|
||||||
|
// no openingBalance concept supported yet but probably will to
|
||||||
|
// allow
|
||||||
|
// for migrations.
|
||||||
final Money openingAccountBalance = Money.zero(this.currency);
|
final Money openingAccountBalance = Money.zero(this.currency);
|
||||||
|
|
||||||
|
// update existing transactions so derived balance fields are
|
||||||
|
// correct.
|
||||||
recalculateDailyBalances(openingAccountBalance);
|
recalculateDailyBalances(openingAccountBalance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user