merging 1.9.2 release into develop branch

This commit is contained in:
Vishwas Babu A J
2013-09-19 09:37:36 +05:30
6 changed files with 47 additions and 17 deletions
+17
View File
@@ -5,6 +5,7 @@ See VERSIONING (https://github.com/openMF/mifosx/blob/master/VERSIONING.md) for
Releases
===============
1. 18 Sep 2013 - 1.9.2.RELEASE
1. 10 Sep 2013 - 1.9.1.RELEASE
1. 8 Sep 2013 - 1.9.0.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.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
=============
Bug Release
@@ -11,12 +11,14 @@ import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
@@ -69,11 +71,12 @@ public class OfficesApiResource {
@GET
@Consumes({ 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);
final Collection<OfficeData> offices = this.readPlatformService.retrieveAllOffices();
final Collection<OfficeData> offices = this.readPlatformService.retrieveAllOffices(onlyManualEntries);
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, offices, this.RESPONSE_DATA_PARAMETERS);
@@ -15,7 +15,7 @@ public interface OfficeReadPlatformService {
MifosPlatformTenant loadTenantById(String tenantIdentifier);
Collection<OfficeData> retrieveAllOffices();
Collection<OfficeData> retrieveAllOffices(boolean includeAllOffices);
Collection<OfficeData> retrieveAllOfficesForDropdown();
@@ -123,8 +123,8 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService
final Integer currencyDigits = JdbcSupport.getInteger(rs, "currencyDigits");
final Integer inMultiplesOf = JdbcSupport.getInteger(rs, "inMultiplesOf");
final CurrencyData currencyData = new CurrencyData(currencyCode, currencyName, currencyDigits, inMultiplesOf, currencyDisplaySymbol,
currencyNameCode);
final CurrencyData currencyData = new CurrencyData(currencyCode, currencyName, currencyDigits, inMultiplesOf,
currencyDisplaySymbol, currencyNameCode);
final BigDecimal transactionAmount = rs.getBigDecimal("transactionAmount");
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
@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 String hierarchy = currentUser.getOffice().getHierarchy();
final String hierarchySearchString = hierarchy + "%";
String hierarchySearchString = null;
if (includeAllOffices) {
hierarchySearchString = "." + "%";
} else {
hierarchySearchString = hierarchy + "%";
}
final OfficeMapper rm = new OfficeMapper();
final String sql = "select " + rm.officeSchema() + "where o.hierarchy like ? order by o.hierarchy";
@@ -242,7 +245,7 @@ public class OfficeReadPlatformServiceImpl implements OfficeReadPlatformService
}
@Override
@Cacheable(value = "tenantsById", key="#tenantIdentifier")
@Cacheable(value = "tenantsById", key = "#tenantIdentifier")
public MifosPlatformTenant loadTenantById(final String tenantIdentifier) {
try {
@@ -344,6 +344,9 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
if (ClientStatus.fromInt(client.getStatus()).isClosed()) {
final String errorMessage = "Client is alread closed.";
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)) {
@@ -169,7 +169,7 @@ public class SavingsAccount extends AbstractPersistable<Long> {
/**
* The interest period is the span of time at the end of which savings in a
* client's account earn interest.
*
*
* A value from the {@link SavingsCompoundingInterestPeriodType}
* enumeration.
*/
@@ -424,11 +424,11 @@ public class SavingsAccount extends AbstractPersistable<Long> {
/**
* All interest calculation based on END-OF-DAY-BALANCE.
*
*
* Interest calculation is performed on-the-fly over all account
* transactions.
*
*
*
*
* 1. Calculate Interest From Beginning Of Account 1a. determine the
* 'crediting' periods that exist for this savings acccount 1b. determine
* the 'compounding' periods that exist within each 'crediting' period
@@ -1682,13 +1682,17 @@ public class SavingsAccount extends AbstractPersistable<Long> {
// activating account.
final Money minRequiredOpeningBalance = Money.of(this.currency, this.minRequiredOpeningBalance);
if (minRequiredOpeningBalance.isGreaterThanZero()) {
final SavingsAccountTransactionDTO transactionDTO = new SavingsAccountTransactionDTO(fmt, activationDate,
minRequiredOpeningBalance.getAmount(), existingTransactionIds, existingReversedTransactionIds, null);
deposit(transactionDTO);
// no openingBalance concept supported yet but probably will to
// allow
// for migrations.
final Money openingAccountBalance = Money.zero(this.currency);
// update existing transactions so derived balance fields are
// correct.
recalculateDailyBalances(openingAccountBalance);
}