fineract-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nazeer1100...@apache.org
Subject [1/3] incubator-fineract git commit: Changing dependency of m_entity_to_entity_access to m_entity_mapping and adding validation for new loan application
Date Thu, 09 Jun 2016 12:43:18 GMT
Repository: incubator-fineract
Updated Branches:
  refs/heads/develop 3774900ae -> b43d3ef06


Changing dependency of m_entity_to_entity_access to m_entity_mapping and adding validation for new loan application


Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/66f8d7ce
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/66f8d7ce
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/66f8d7ce

Branch: refs/heads/develop
Commit: 66f8d7ce432cb605826e12ff077af9eace63a2bc
Parents: b4cb1a5
Author: jinjurajan <jinju.rajan@confluxtechnologies.com>
Authored: Thu Jun 9 16:27:16 2016 +0530
Committer: jinjurajan <jinju.rajan@confluxtechnologies.com>
Committed: Thu Jun 9 16:29:04 2016 +0530

----------------------------------------------------------------------
 .../data/FineractEntityToEntityMappingData.java |  13 ++
 .../domain/FineractEntityAccessType.java        |   6 +-
 .../FineractEntityRelationRepository.java       |   5 +-
 ...FineractEntityRelationRepositoryWrapper.java |   6 +
 ...FineractEntityToEntityMappingRepository.java |   6 +-
 .../FineractEntityAccessNotFoundException.java  |   5 +-
 ...ractEntityMappingConfigurationException.java |  29 +++++
 .../NotOfficeSpecificProductException.java      |  33 +++++
 .../FineractEntityAccessReadService.java        |  10 +-
 .../FineractEntityAccessReadServiceImpl.java    | 129 ++++++++-----------
 .../service/FineractEntityAccessUtil.java       |  45 ++++---
 ...geWritePlatformServiceJpaRepositoryImpl.java |   2 +-
 .../portfolio/loanaccount/domain/Loan.java      |   8 ++
 ...onWritePlatformServiceJpaRepositoryImpl.java |  59 ++++++++-
 ...ctWritePlatformServiceJpaRepositoryImpl.java |   1 -
 ...ctWritePlatformServiceJpaRepositoryImpl.java |   2 +-
 ...ytoentityaccess_to_entitytoentitymapping.sql |   9 ++
 17 files changed, 251 insertions(+), 117 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java
index 24d59b7..37a0758 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java
@@ -77,4 +77,17 @@ public class FineractEntityToEntityMappingData implements Serializable {
 
     }
 
+	public Long getRelationId() {
+		return relationId;
+	}
+
+	public Long getToId() {
+		return toId;
+	}
+
+	public String getFromEntity() {
+		return fromEntity;
+	}
+
+    
 }

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java
index b4c11d1..fda0d61 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java
@@ -22,9 +22,9 @@ public class FineractEntityAccessType {
 	
 	private String str;
 	
-	public static final FineractEntityAccessType OFFICE_ACCESS_TO_LOAN_PRODUCTS = new FineractEntityAccessType("Office Access to Loan Products");
-	public static final FineractEntityAccessType OFFICE_ACCESS_TO_SAVINGS_PRODUCTS = new FineractEntityAccessType("Office Access to Savings Products");
-	public static final FineractEntityAccessType OFFICE_ACCESS_TO_CHARGES = new FineractEntityAccessType("Office Access to Fees/Charges");
+	public static final FineractEntityAccessType OFFICE_ACCESS_TO_LOAN_PRODUCTS = new FineractEntityAccessType("office_access_to_loan_products");
+	public static final FineractEntityAccessType OFFICE_ACCESS_TO_SAVINGS_PRODUCTS = new FineractEntityAccessType("office_access_to_savings_products");
+	public static final FineractEntityAccessType OFFICE_ACCESS_TO_CHARGES = new FineractEntityAccessType("office_access_to_fees/charges");
      
     private FineractEntityAccessType (String str) {
     	this.str = str;

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepository.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepository.java
index 303bfdb..81e9da6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepository.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepository.java
@@ -19,8 +19,11 @@
 package org.apache.fineract.infrastructure.entityaccess.domain;
 
 import org.springframework.data.jpa.repository.JpaRepository;
-
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
 public interface FineractEntityRelationRepository extends JpaRepository<FineractEntityRelation, Long>{
 
+	@Query("from FineractEntityRelation fea where fea.codeName= :codeName")
+	FineractEntityRelation findOneByCodeName(@Param("codeName") String codeName);
 }

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java
index a851f5a..4ea8199 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java
@@ -38,5 +38,11 @@ public class FineractEntityRelationRepositoryWrapper {
         if (fineractEntityRelation == null) { throw new FineractEntityAccessNotFoundException(id); }
         return fineractEntityRelation;
     }
+    
+    public FineractEntityRelation findOneByCodeName(final String codeName) {
+    	    	 final FineractEntityRelation fineractEntityRelation = this.fineractEntityRelationRepository.findOneByCodeName(codeName) ;
+    	    	 if (fineractEntityRelation == null) { throw new FineractEntityAccessNotFoundException(codeName); }
+    	         return fineractEntityRelation;
+    	    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java
index 7b4bd83..5ec3293 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMappingRepository.java
@@ -19,10 +19,14 @@
 package org.apache.fineract.infrastructure.entityaccess.domain;
 
 import org.springframework.data.jpa.repository.JpaRepository;
-
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+ 
 
 public interface FineractEntityToEntityMappingRepository extends JpaRepository<FineractEntityToEntityMapping, Long>{
     
    
 
+	@Query("from FineractEntityToEntityMapping feem where feem.fromId= :fromId and feem.toId= :toId and feem.relationId= :relId")
+	FineractEntityToEntityMapping findListByProductId(@Param("relId")FineractEntityRelation relId, @Param("toId")Long toId, @Param("fromId")Long fromId );
 }

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java
index b03d2fd..41c0d35 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityAccessNotFoundException.java
@@ -28,5 +28,8 @@ public class FineractEntityAccessNotFoundException extends AbstractPlatformResou
     public FineractEntityAccessNotFoundException(final Long id) {
         super("error.msg.entityaccess.id.invalid", "FineractEntityAccess with identifier " + id + " does not exist", id);
     }
-     
+    
+    public FineractEntityAccessNotFoundException(final String codeName) {
+    	       super("error.msg.entityaccess.id.invalid", "FineractEntityAccess with identifier " + codeName + " does not exist");
+    	    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityMappingConfigurationException.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityMappingConfigurationException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityMappingConfigurationException.java
new file mode 100644
index 0000000..37f91a9
--- /dev/null
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/FineractEntityMappingConfigurationException.java
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.infrastructure.entityaccess.exception;
+
+import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException;
+
+public class FineractEntityMappingConfigurationException extends AbstractPlatformDomainRuleException {
+
+	public FineractEntityMappingConfigurationException() {
+        super("error.msg.entityaccess.config",
+                "Error while getting entity maping configuration ");
+}
+}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java
new file mode 100644
index 0000000..9b14aee
--- /dev/null
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/exception/NotOfficeSpecificProductException.java
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.infrastructure.entityaccess.exception;
+
+import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException;
+
+/**
+ * A {@link RuntimeException} thrown when valid api request end up violating
+ * some domain rule.
+ */
+public  class NotOfficeSpecificProductException extends AbstractPlatformDomainRuleException {
+		
+	public NotOfficeSpecificProductException(final Long productId, final Long officeId) {
+			super("error.msg.office.product.not.found", "Product with productId " + productId +
+					" not office Specific Product in offfice with officeId", officeId);
+		}
+	}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadService.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadService.java
index 7b33bd9..d9ea9a3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadService.java
@@ -20,19 +20,17 @@ package org.apache.fineract.infrastructure.entityaccess.service;
 
 import java.util.Collection;
 
-import org.apache.fineract.infrastructure.entityaccess.data.FineractEntityAccessData;
 import org.apache.fineract.infrastructure.entityaccess.data.FineractEntityRelationData;
 import org.apache.fineract.infrastructure.entityaccess.data.FineractEntityToEntityMappingData;
-import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessType;
 import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityType;
 
 public interface FineractEntityAccessReadService {
 
-    Collection<FineractEntityAccessData> retrieveEntityAccessFor(Long entityId, FineractEntityType type, FineractEntityAccessType accessType,
-            FineractEntityType secondType, boolean includeAllOffices);
+	Collection<FineractEntityToEntityMappingData> retrieveEntityAccessFor(FineractEntityType firstEntityType,
+			   		final Long relId, final  Long fromEntityId,boolean includeAllSubOffices);
 
-    String getSQLQueryInClause_WithListOfIDsForEntityAccess(Long entityId, FineractEntityType firstEntityType,
-            FineractEntityAccessType accessType, FineractEntityType secondEntityType, boolean includeAllOffices);
+	String getSQLQueryInClause_WithListOfIDsForEntityAccess( FineractEntityType firstEntityType,
+			             final Long relId,final Long fromEntityId ,boolean includeAllOffices);
 
     String getSQLQueryInClauseIDList_ForLoanProductsForOffice(Long loanProductId, boolean includeAllOffices);
 

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java
index 1505c3b..6234a94 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessReadServiceImpl.java
@@ -31,8 +31,11 @@ import org.apache.fineract.infrastructure.entityaccess.data.FineractEntityRelati
 import org.apache.fineract.infrastructure.entityaccess.data.FineractEntityToEntityMappingData;
 import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntity;
 import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessType;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelation;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelationRepositoryWrapper;
 import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityType;
 import org.apache.fineract.infrastructure.entityaccess.exception.FineractEntityAccessConfigurationException;
+import org.apache.fineract.infrastructure.entityaccess.exception.FineractEntityMappingConfigurationException;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.useradministration.domain.AppUser;
 import org.slf4j.Logger;
@@ -48,11 +51,14 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess
     private final PlatformSecurityContext context;
     private final JdbcTemplate jdbcTemplate;
     private final static Logger logger = LoggerFactory.getLogger(GenericDataServiceImpl.class);
+    private final FineractEntityRelationRepositoryWrapper fineractEntityRelationRepository;
 
     @Autowired
-    public FineractEntityAccessReadServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource) {
+    public FineractEntityAccessReadServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
+    		final FineractEntityRelationRepositoryWrapper fineractEntityRelationRepository) {
         this.context = context;
         this.jdbcTemplate = new JdbcTemplate(dataSource);
+        this.fineractEntityRelationRepository = fineractEntityRelationRepository;
     }
 
     /*
@@ -71,38 +77,32 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess
      * null if there is no entity restrictions or if there
      */
     @Override
-    public String getSQLQueryInClause_WithListOfIDsForEntityAccess(Long firstEntityId, FineractEntityType firstEntityType,
-            FineractEntityAccessType accessType, FineractEntityType secondEntityType, boolean includeAllOffices) {
-        Collection<FineractEntityAccessData> accesslist = retrieveEntityAccessFor(firstEntityId, firstEntityType, accessType, secondEntityType,
-                includeAllOffices);
+    public String getSQLQueryInClause_WithListOfIDsForEntityAccess( FineractEntityType firstEntityType,
+    		           final Long relId, final Long fromEntityId, boolean includeAllOffices) {
+    		        Collection<FineractEntityToEntityMappingData> accesslist = retrieveEntityAccessFor(firstEntityType, relId, fromEntityId, 
+    		        		includeAllOffices);
         String returnIdListStr = null;
         StringBuffer accessListCSVStrBuf = null;
         if ((accesslist != null) && (accesslist.size() > 0)) {
-            logger.debug("Found " + accesslist.size() + " access type restrictions while getting entity access configuration for "
-                    + firstEntityType.getType() + ":" + firstEntityId + " with type " + accessType.toStr() + " against "
-                    + secondEntityType.getType());
-            accessListCSVStrBuf = new StringBuffer(" ");
-            for (int i = 0; i < accesslist.size(); i++) {
-                FineractEntityAccessData accessData = (FineractEntityAccessData) accesslist.toArray()[i];
-                if (accessData == null) { throw new FineractEntityAccessConfigurationException(firstEntityId, firstEntityType, accessType,
-                        secondEntityType); }
-                if (accessData.getSecondEntity().getId() == 0) { // If there is
-                                                                 // any ID that
-                                                                 // zero, then
-                                                                 // allow access
-                                                                 // to all
-                    accessListCSVStrBuf = null;
-                    break;
+        	for(FineractEntityToEntityMappingData accessData: accesslist){
+        		            	if (accessData == null) {  
+        		                	throw new FineractEntityMappingConfigurationException();
+        		                 }
+        		              
+        		            	if(accessListCSVStrBuf == null){
+        		            		accessListCSVStrBuf = new StringBuffer() ;
+        		            	}else{
+        		            		accessListCSVStrBuf.append(",");
+        		            	}
+        		            	accessListCSVStrBuf.append(accessData.getToId());
+        		            	if(accessData.getToId() == 0){
+        		            		accessListCSVStrBuf =null; 
+        		            		break;
+        		            	}
                 }
-                if (i > 0) {
-                    accessListCSVStrBuf.append(',');
-                }
-                accessListCSVStrBuf.append(accessData.getSecondEntity().getId());
-            }
 
         } else {
-            logger.debug("Found zero access type restrictions while getting entity access configuration for " + firstEntityType.getType()
-                    + ":" + firstEntityId + " with type " + accessType.toStr() + " against " + secondEntityType.getType());
+           
             accessListCSVStrBuf = new StringBuffer();
             accessListCSVStrBuf.append("false"); // Append false so that no rows
                                                  // will be returned
@@ -115,8 +115,8 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess
     }
 
     @Override
-    public Collection<FineractEntityAccessData> retrieveEntityAccessFor(Long firstEntityId, FineractEntityType firstEntityType,
-            FineractEntityAccessType accessType, FineractEntityType secondEntityType, boolean includeAllSubOffices) {
+    public Collection<FineractEntityToEntityMappingData> retrieveEntityAccessFor(FineractEntityType firstEntityType,
+    		    		final Long relId, final Long fromEntityId,boolean includeAllSubOffices) {
         final AppUser currentUser = this.context.authenticatedUser();
 
         final String hierarchy = currentUser.getOffice().getHierarchy();
@@ -126,52 +126,27 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess
         } else {
             hierarchySearchString = hierarchy + "%";
         }
-        String sql = getSQLForRetriveEntityAccessFor(firstEntityType, accessType, secondEntityType);
-
-        Collection<FineractEntityAccessData> entityAccessData = null;
-        FineractEntityAccessDataMapper mapper = new FineractEntityAccessDataMapper();
+        String sql = getSQLForRetriveEntityAccessFor();
+        
+        Collection<FineractEntityToEntityMappingData> entityAccessData = null;
+        GetOneEntityMapper mapper = new GetOneEntityMapper();
 
         if (includeAllSubOffices && (firstEntityType.getTable().equals("m_office"))) {
             sql += " where firstentity.hierarchy like ? order by firstEntity.hierarchy";
-            entityAccessData = this.jdbcTemplate.query(sql, mapper, new Object[] { firstEntityId, hierarchySearchString });
+            entityAccessData = this.jdbcTemplate.query(sql, mapper, new Object[] { fromEntityId, fromEntityId, hierarchySearchString });
         } else {
-            entityAccessData = this.jdbcTemplate.query(sql, mapper, new Object[] { firstEntityId });
+        	entityAccessData = this.jdbcTemplate.query(sql, mapper, new Object[] { relId, fromEntityId});
         }
 
         return entityAccessData;
     }
 
-    private String getSQLForRetriveEntityAccessFor(FineractEntityType firstEntityType, FineractEntityAccessType accessType,
-            FineractEntityType secondEntityType) {
-        StringBuffer str = new StringBuffer("select eea.entity_id as entity_id, entity_type as entity_type, ");
-        str.append("access_type_code_value_id as access_id, cv.code_value as access_type_desc, c.code_name as code, ");
-        str.append("firstentity.id as first_entity_id, firstentity.name as entity_name, ");
-        str.append("otherentity.id as second_entity_id, otherentity.name as second_entity_name, ");
-        str.append("eea.second_entity_type as second_entity_type ");
-        str.append("from m_entity_to_entity_access eea ");
-        str.append("left join m_code_value cv on (cv.code_value = ");
-        str.append("'");
-        str.append(accessType.toStr());
-        str.append("' ");
-        str.append("and eea.access_type_code_value_id = cv.id) ");
-        str.append("left join m_code c on (c.code_name = '");
-        str.append(FineractEntityAccessConstants.ENTITY_ACCESS_CODENAME);
-        str.append("' and cv.code_id = c.id) ");
-        str.append("left join ");
-        str.append(firstEntityType.getTable());
-        str.append(" firstentity on (eea.entity_type = ");
-        str.append("'");
-        str.append(firstEntityType.getType());
-        str.append("'");
-        str.append(" and eea.entity_id = firstentity.id)        left join ");
-        str.append(secondEntityType.getTable());
-        str.append(" otherentity on (eea.second_entity_type = ");
-        str.append("'");
-        str.append(secondEntityType.getType());
-        str.append("' ");
-        str.append("and eea.second_entity_id = otherentity.id) ");
-        str.append("where eea.access_type_code_value_id = cv.id ");
-        str.append("and eea.entity_id = ? ");
+    private String getSQLForRetriveEntityAccessFor() {
+    	StringBuffer str = new StringBuffer("select  eem.rel_id as relId,eem.from_id as fromId, ");
+    	        str.append("eem.to_id as toId, eem.start_date as startDate, eem.end_date as endDate ");
+    	        str.append("from  m_entity_to_entity_mapping eem ");
+    	        str.append("where eem.rel_id = ? ");
+    	        str.append("and eem.from_id = ? ");
         logger.debug(str.toString());
         return str.toString();
     }
@@ -220,30 +195,32 @@ public class FineractEntityAccessReadServiceImpl implements FineractEntityAccess
     public String getSQLQueryInClauseIDList_ForLoanProductsForOffice(Long officeId, boolean includeAllOffices) {
 
         FineractEntityType firstEntityType = FineractEntityType.OFFICE;
-        FineractEntityAccessType accessType = FineractEntityAccessType.OFFICE_ACCESS_TO_LOAN_PRODUCTS;
-        FineractEntityType secondEntityType = FineractEntityType.LOAN_PRODUCT;
-
-        return getSQLQueryInClause_WithListOfIDsForEntityAccess(officeId, firstEntityType, accessType, secondEntityType, includeAllOffices);
+        FineractEntityRelation fineractEntityRelation = fineractEntityRelationRepository
+        						.findOneByCodeName(FineractEntityAccessType.OFFICE_ACCESS_TO_LOAN_PRODUCTS.toStr());
+        Long relId = fineractEntityRelation.getId();
+        return getSQLQueryInClause_WithListOfIDsForEntityAccess(firstEntityType, relId, officeId, includeAllOffices);
     }
 
     @Override
     public String getSQLQueryInClauseIDList_ForSavingsProductsForOffice(Long officeId, boolean includeAllOffices) {
 
         FineractEntityType firstEntityType = FineractEntityType.OFFICE;
-        FineractEntityAccessType accessType = FineractEntityAccessType.OFFICE_ACCESS_TO_SAVINGS_PRODUCTS;
-        FineractEntityType secondEntityType = FineractEntityType.SAVINGS_PRODUCT;
+        FineractEntityRelation fineractEntityRelation = fineractEntityRelationRepository
+        		      .findOneByCodeName(FineractEntityAccessType.OFFICE_ACCESS_TO_SAVINGS_PRODUCTS.toStr());
+        Long relId = fineractEntityRelation.getId();
 
-        return getSQLQueryInClause_WithListOfIDsForEntityAccess(officeId, firstEntityType, accessType, secondEntityType, includeAllOffices);
+        return getSQLQueryInClause_WithListOfIDsForEntityAccess(firstEntityType, relId, officeId, includeAllOffices);
     }
 
     @Override
     public String getSQLQueryInClauseIDList_ForChargesForOffice(Long officeId, boolean includeAllOffices) {
 
         FineractEntityType firstEntityType = FineractEntityType.OFFICE;
-        FineractEntityAccessType accessType = FineractEntityAccessType.OFFICE_ACCESS_TO_CHARGES;
-        FineractEntityType secondEntityType = FineractEntityType.CHARGE;
+        FineractEntityRelation fineractEntityRelation = fineractEntityRelationRepository
+        						.findOneByCodeName(FineractEntityAccessType.OFFICE_ACCESS_TO_CHARGES.toStr());
+        Long relId = fineractEntityRelation.getId();
 
-        return getSQLQueryInClause_WithListOfIDsForEntityAccess(officeId, firstEntityType, accessType, secondEntityType, includeAllOffices);
+        return getSQLQueryInClause_WithListOfIDsForEntityAccess(firstEntityType, relId, officeId, includeAllOffices);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java
index bb3fbc9..8da407f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/service/FineractEntityAccessUtil.java
@@ -19,6 +19,7 @@
 package org.apache.fineract.infrastructure.entityaccess.service;
 
 import java.util.Collection;
+import java.util.Date;
 import java.util.Iterator;
 
 import org.apache.fineract.infrastructure.codes.data.CodeValueData;
@@ -29,6 +30,10 @@ import org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurati
 import org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationRepositoryWrapper;
 import org.apache.fineract.infrastructure.entityaccess.FineractEntityAccessConstants;
 import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessType;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelation;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelationRepositoryWrapper;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMapping;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMappingRepository;
 import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityType;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.useradministration.domain.AppUser;
@@ -47,6 +52,8 @@ public class FineractEntityAccessUtil {
     private final CodeValueRepositoryWrapper codeValueRepository;
     private final FineractEntityAccessWriteService fineractEntityAccessWriteService;
     private final FineractEntityAccessReadService fineractEntityAccessReadService;
+    private final FineractEntityRelationRepositoryWrapper fineractEntityRelationRepositoryWrapper;
+    private final FineractEntityToEntityMappingRepository fineractEntityToEntityMappingRepository;
 
     @Autowired
     public FineractEntityAccessUtil (
@@ -55,20 +62,23 @@ public class FineractEntityAccessUtil {
             final FineractEntityAccessWriteService fineractEntityAccessWriteService,
             final CodeValueReadPlatformService codeValueReadPlatformService,
             final CodeValueRepositoryWrapper codeValueRepository,
-            final FineractEntityAccessReadService fineractEntityAccessReadService) {
+            final FineractEntityAccessReadService fineractEntityAccessReadService,
+            final FineractEntityRelationRepositoryWrapper fineractEntityRelationRepositoryWrapper,
+            final FineractEntityToEntityMappingRepository fineractEntityToEntityMappingRepository) {
     	this.context = context;
         this.globalConfigurationRepository = globalConfigurationRepository;
         this.fineractEntityAccessWriteService = fineractEntityAccessWriteService;
         this.codeValueReadPlatformService = codeValueReadPlatformService;
         this.codeValueRepository = codeValueRepository;
         this.fineractEntityAccessReadService = fineractEntityAccessReadService;
+        this.fineractEntityRelationRepositoryWrapper = fineractEntityRelationRepositoryWrapper;
+        this.fineractEntityToEntityMappingRepository = fineractEntityToEntityMappingRepository;
     }
 
 	
 	@Transactional
 	public void checkConfigurationAndAddProductResrictionsForUserOffice (
 			final FineractEntityAccessType fineractEntityAccessType,
-			final FineractEntityType fineractEntityType,
 			final Long productOrChargeId) {
 		
 		AppUser thisUser = this.context.authenticatedUser();
@@ -87,28 +97,17 @@ public class FineractEntityAccessUtil {
             
             if (restrictToUserOfficeProperty.isEnabled() ) {
             	final Long officeId = thisUser.getOffice().getId();
-            	Collection<CodeValueData> codevalues = codeValueReadPlatformService.retrieveCodeValuesByCode(
-            			FineractEntityAccessConstants.ENTITY_ACCESS_CODENAME);
-            	if (codevalues != null) {
-            		Iterator<CodeValueData> iterator = codevalues.iterator();
-            		while(iterator.hasNext()) {
-            			CodeValueData oneCodeValue = iterator.next();
-            			if ( (oneCodeValue != null) &&
-            					(oneCodeValue.getName().equals(fineractEntityAccessType.toStr())) ) {
-            				CodeValue cv = codeValueRepository.findOneByCodeNameAndLabelWithNotFoundDetection(
-            						FineractEntityAccessConstants.ENTITY_ACCESS_CODENAME,
-            						fineractEntityAccessType.toStr()
-            						);
-            				if (cv != null) {
-            					fineractEntityAccessWriteService.addNewEntityAccess(
-            							FineractEntityType.OFFICE.getType(), officeId,
-            							cv,
-            							fineractEntityType.getType(), productOrChargeId);
+            					Date startDateFormapping = null;
+            					Date endDateFormapping = null;
+            					FineractEntityRelation fineractEntityRelation = fineractEntityRelationRepositoryWrapper
+            							.findOneByCodeName(fineractEntityAccessType.toStr());
+            					Long relId = fineractEntityRelation.getId();
+            					final FineractEntityRelation mapId = this.fineractEntityRelationRepositoryWrapper
+            							.findOneWithNotFoundDetection(relId);
+            					final FineractEntityToEntityMapping newMap = FineractEntityToEntityMapping.newMap(mapId, officeId,
+            							productOrChargeId, startDateFormapping, endDateFormapping);
+            					this.fineractEntityToEntityMappingRepository.save(newMap);
             				}
-            			}
-            		}
-            	}
-            }
         }
 		
 	}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformServiceJpaRepositoryImpl.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformServiceJpaRepositoryImpl.java
index 35e5420..40b5781 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformServiceJpaRepositoryImpl.java
@@ -114,7 +114,7 @@ public class ChargeWritePlatformServiceJpaRepositoryImpl implements ChargeWriteP
             // save this savings product against a specific office
             // i.e. this savings product is specific for this office.
             fineractEntityAccessUtil.checkConfigurationAndAddProductResrictionsForUserOffice(
-                    FineractEntityAccessType.OFFICE_ACCESS_TO_CHARGES, FineractEntityType.CHARGE, charge.getId());
+                    FineractEntityAccessType.OFFICE_ACCESS_TO_CHARGES, charge.getId());
 
             return new CommandProcessingResultBuilder().withCommandId(command.commandId()).withEntityId(charge.getId()).build();
         } catch (final DataIntegrityViolationException dve) {

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index e3835d4..520c47f 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -5973,4 +5973,12 @@ public class Loan extends AbstractPersistable<Long> {
         return amount;
     }
 
+	public Group getGroup() {
+		return group;
+	}
+
+	public LoanProduct getLoanProduct() {
+		return loanProduct;
+	}
+	
 }

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
index 0bcdd09..0d49414 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
@@ -32,15 +32,24 @@ import org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumb
 import org.apache.fineract.infrastructure.accountnumberformat.domain.EntityAccountType;
 import org.apache.fineract.infrastructure.codes.domain.CodeValue;
 import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService;
+import org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationProperty;
+import org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationRepositoryWrapper;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.api.JsonQuery;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder;
 import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
+import org.apache.fineract.infrastructure.entityaccess.exception.NotOfficeSpecificProductException;
 import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
 import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException;
 import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
+import org.apache.fineract.infrastructure.entityaccess.FineractEntityAccessConstants;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessType;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelation;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelationRepository;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMapping;
+import org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMappingRepository;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.organisation.staff.domain.Staff;
 import org.apache.fineract.portfolio.account.domain.AccountAssociationType;
@@ -156,6 +165,9 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
     private final LoanScheduleAssembler loanScheduleAssembler;
     private final LoanUtilService loanUtilService;
     private final CalendarReadPlatformService calendarReadPlatformService;
+    private final GlobalConfigurationRepositoryWrapper globalConfigurationRepository;
+    private final FineractEntityToEntityMappingRepository repository;
+    private final FineractEntityRelationRepository fineractEntityRelationRepository;
 
     @Autowired
     public LoanApplicationWritePlatformServiceJpaRepositoryImpl(final PlatformSecurityContext context, final FromJsonHelper fromJsonHelper,
@@ -175,7 +187,8 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
             final AccountNumberFormatRepositoryWrapper accountNumberFormatRepository,
             final BusinessEventNotifierService businessEventNotifierService, final ConfigurationDomainService configurationDomainService,
             final LoanScheduleAssembler loanScheduleAssembler, final LoanUtilService loanUtilService, 
-            final CalendarReadPlatformService calendarReadPlatformService) {
+            final CalendarReadPlatformService calendarReadPlatformService, final GlobalConfigurationRepositoryWrapper globalConfigurationRepository,
+            final FineractEntityToEntityMappingRepository repository, final FineractEntityRelationRepository fineractEntityRelationRepository) {
         this.context = context;
         this.fromJsonHelper = fromJsonHelper;
         this.loanApplicationTransitionApiJsonValidator = loanApplicationTransitionApiJsonValidator;
@@ -206,6 +219,9 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
         this.loanScheduleAssembler = loanScheduleAssembler;
         this.loanUtilService = loanUtilService;
         this.calendarReadPlatformService = calendarReadPlatformService;
+        this.globalConfigurationRepository = globalConfigurationRepository;
+        this.repository = repository;
+        this.fineractEntityRelationRepository = fineractEntityRelationRepository;
     }
 
     private LoanLifecycleStateMachine defaultLoanLifecycleStateMachine() {
@@ -224,14 +240,23 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
             final LoanProduct loanProduct = this.loanProductRepository.findOne(productId);
             if (loanProduct == null) { throw new LoanProductNotFoundException(productId); }
 
+            final Long clientId = this.fromJsonHelper.extractLongNamed("clientId", command.parsedJson());
+                        if(clientId !=null){
+                        Client client= this.clientRepository.findOneWithNotFoundDetection(clientId);
+                        officeSpecificLoanProductValidation( productId,client.getOffice().getId());
+                        }
+                        final Long groupId = this.fromJsonHelper.extractLongNamed("groupId", command.parsedJson());
+                        if(groupId != null){
+                        	Group group= this.groupRepository.findOneWithNotFoundDetection(groupId);
+                            officeSpecificLoanProductValidation( productId,group.getOffice().getId());
+                        }
+            
             this.fromApiJsonDeserializer.validateForCreate(command.json(), isMeetingMandatoryForJLGLoans, loanProduct);
 
             final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
             final DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("loan");
 
             if (loanProduct.useBorrowerCycle()) {
-                final Long clientId = this.fromJsonHelper.extractLongNamed("clientId", command.parsedJson());
-                final Long groupId = this.fromJsonHelper.extractLongNamed("groupId", command.parsedJson());
                 Integer cycleNumber = 0;
                 if (clientId != null) {
                     cycleNumber = this.loanReadPlatformService.retriveLoanCounter(clientId, loanProduct.getId());
@@ -802,6 +827,18 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
                     }
                 }
             }
+            
+            if ((command.longValueOfParameterNamed(productIdParamName) != null)
+            							|| (command.longValueOfParameterNamed(clientIdParamName) != null) || (command.longValueOfParameterNamed(groupIdParamName) != null)) { 
+            						Long OfficeId = null;
+            						if(existingLoanApplication.getClient() != null){
+            							OfficeId = existingLoanApplication.getClient().getOffice().getId();
+            						}
+            						else if(existingLoanApplication.getGroup() != null){
+            							OfficeId = existingLoanApplication.getGroup().getOffice().getId();
+            						}
+            						officeSpecificLoanProductValidation( existingLoanApplication.getLoanProduct().getId(),OfficeId);
+            							}
 
             // updating loan interest recalculation details throwing null
             // pointer exception after saveAndFlush
@@ -1160,4 +1197,20 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
         return map;
     }
 
+    private void officeSpecificLoanProductValidation(final Long productId, final Long officeId) {
+    			final GlobalConfigurationProperty restrictToUserOfficeProperty = this.globalConfigurationRepository
+    					.findOneByNameWithNotFoundDetection(
+    							FineractEntityAccessConstants.GLOBAL_CONFIG_FOR_OFFICE_SPECIFIC_PRODUCTS);
+    			if (restrictToUserOfficeProperty.isEnabled()) {
+    				FineractEntityRelation fineractEntityRelation = fineractEntityRelationRepository
+    						                               .findOneByCodeName(FineractEntityAccessType.OFFICE_ACCESS_TO_LOAN_PRODUCTS.toStr());
+    				FineractEntityToEntityMapping officeToLoanProductMappingList = this.repository.findListByProductId(fineractEntityRelation, productId,
+    						officeId);
+    				if (officeToLoanProductMappingList == null) {
+    					throw new NotOfficeSpecificProductException(productId, officeId);
+    				}
+    
+    			}
+    		}
+    
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java
index 905cc2d..723de30 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java
@@ -136,7 +136,6 @@ public class LoanProductWritePlatformServiceJpaRepositoryImpl implements LoanPro
             // i.e. this savings product is specific for this office.
             fineractEntityAccessUtil.checkConfigurationAndAddProductResrictionsForUserOffice(
             		FineractEntityAccessType.OFFICE_ACCESS_TO_LOAN_PRODUCTS, 
-            		FineractEntityType.LOAN_PRODUCT, 
             		loanproduct.getId());
             
             return new CommandProcessingResultBuilder() //

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java
index c864dc1..a5d4f9c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java
@@ -128,7 +128,7 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi
             // save this savings product against a specific office
             // i.e. this savings product is specific for this office.
             fineractEntityAccessUtil.checkConfigurationAndAddProductResrictionsForUserOffice(
-                    FineractEntityAccessType.OFFICE_ACCESS_TO_SAVINGS_PRODUCTS, FineractEntityType.SAVINGS_PRODUCT, product.getId());
+                    FineractEntityAccessType.OFFICE_ACCESS_TO_SAVINGS_PRODUCTS, product.getId());
 
             return new CommandProcessingResultBuilder() //
                     .withEntityId(product.getId()) //

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/66f8d7ce/fineract-provider/src/main/resources/sql/migrations/core_db/V309__copy_data_from_entitytoentityaccess_to_entitytoentitymapping.sql
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V309__copy_data_from_entitytoentityaccess_to_entitytoentitymapping.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V309__copy_data_from_entitytoentityaccess_to_entitytoentitymapping.sql
new file mode 100644
index 0000000..19e58ae
--- /dev/null
+++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V309__copy_data_from_entitytoentityaccess_to_entitytoentitymapping.sql
@@ -0,0 +1,9 @@
+insert ignore into m_entity_to_entity_mapping (from_id,to_id,rel_id)  
+select  mea.entity_id as fromId,
+mea.second_entity_id as toid,
+case mea.access_type_code_value_id
+when 10 then 1
+when 11 then 2
+when 12 then 3
+end as reId
+from m_entity_to_entity_access mea
\ No newline at end of file


Mime
View raw message