fineract-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nazeer1100...@apache.org
Subject [1/2] incubator-fineract git commit: #261 validation added on disabling gl account
Date Fri, 05 May 2017 11:52:09 GMT
Repository: incubator-fineract
Updated Branches:
  refs/heads/develop 516160bf4 -> cb28f2a01


#261 validation added on disabling gl account


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

Branch: refs/heads/develop
Commit: 94a4bf570a64bb016196cb3e954afa572cfbe0a4
Parents: 8baf9f4
Author: nazeer1100126 <nazeer.shaik@confluxtechnologies.com>
Authored: Fri Apr 21 15:26:19 2017 +0530
Committer: nazeer1100126 <nazeer.shaik@confluxtechnologies.com>
Committed: Fri Apr 21 15:26:19 2017 +0530

----------------------------------------------------------------------
 .../exception/GLAccountDisableException.java    | 35 ++++++++++++++++++++
 ...ntWritePlatformServiceJpaRepositoryImpl.java | 25 ++++++++++++--
 2 files changed, 57 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/94a4bf57/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java
b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java
new file mode 100644
index 0000000..5ad0658
--- /dev/null
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java
@@ -0,0 +1,35 @@
+/**
+ * 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.accounting.glaccount.exception;
+
+import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException;
+
+/**
+ * 
+ * when gl account is attached with any product(loan/saving) then we can not
+ * disable the gl account
+ */
+public class GLAccountDisableException extends
+		AbstractPlatformDomainRuleException {
+
+	public GLAccountDisableException() {
+		super("error.msg.glaccount.attached.to.product",
+				"General Ledger Account is already attached to product.");
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/94a4bf57/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
index 4597c6a..2135efd 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
@@ -27,6 +27,7 @@ import org.apache.fineract.accounting.glaccount.command.GLAccountCommand;
 import org.apache.fineract.accounting.glaccount.domain.GLAccount;
 import org.apache.fineract.accounting.glaccount.domain.GLAccountRepository;
 import org.apache.fineract.accounting.glaccount.domain.GLAccountType;
+import org.apache.fineract.accounting.glaccount.exception.GLAccountDisableException;
 import org.apache.fineract.accounting.glaccount.exception.GLAccountDuplicateException;
 import org.apache.fineract.accounting.glaccount.exception.GLAccountInvalidDeleteException;
 import org.apache.fineract.accounting.glaccount.exception.GLAccountInvalidParentException;
@@ -44,10 +45,12 @@ import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder;
 import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException;
+import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataIntegrityViolationException;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -60,15 +63,17 @@ public class GLAccountWritePlatformServiceJpaRepositoryImpl implements
GLAccount
     private final JournalEntryRepository glJournalEntryRepository;
     private final GLAccountCommandFromApiJsonDeserializer fromApiJsonDeserializer;
     private final CodeValueRepositoryWrapper codeValueRepositoryWrapper;
+    private final JdbcTemplate jdbcTemplate;
 
     @Autowired
     public GLAccountWritePlatformServiceJpaRepositoryImpl(final GLAccountRepository glAccountRepository,
             final JournalEntryRepository glJournalEntryRepository, final GLAccountCommandFromApiJsonDeserializer
fromApiJsonDeserializer,
-            final CodeValueRepositoryWrapper codeValueRepositoryWrapper) {
+            final CodeValueRepositoryWrapper codeValueRepositoryWrapper, final RoutingDataSource
dataSource) {
         this.glAccountRepository = glAccountRepository;
         this.glJournalEntryRepository = glJournalEntryRepository;
         this.fromApiJsonDeserializer = fromApiJsonDeserializer;
         this.codeValueRepositoryWrapper = codeValueRepositoryWrapper;
+        this.jdbcTemplate = new JdbcTemplate(dataSource);
     }
 
     @Transactional
@@ -115,7 +120,13 @@ public class GLAccountWritePlatformServiceJpaRepositoryImpl implements
GLAccount
         try {
             final GLAccountCommand accountCommand = this.fromApiJsonDeserializer.commandFromApiJson(command.json());
             accountCommand.validateForUpdate();
-
+			if (command.hasParameter(GLAccountJsonInputParams.DISABLED
+					.getValue())
+					&& command
+							.booleanPrimitiveValueOfParameterNamed(GLAccountJsonInputParams.DISABLED
+									.getValue())) {
+				validateForAttachedProduct(glAccountId);
+			}
             final Long parentId = command.longValueOfParameterNamed(GLAccountJsonInputParams.PARENT_ID.getValue());
             if (glAccountId.equals(parentId)) { throw new InvalidParentGLAccountHeadException(glAccountId,
parentId); }
             // is the glAccount valid
@@ -165,7 +176,15 @@ public class GLAccountWritePlatformServiceJpaRepositoryImpl implements
GLAccount
         }
     }
 
-    @Transactional
+    private void validateForAttachedProduct(Long glAccountId) {
+		String sql = "select count(*) from acc_product_mapping acc where acc.gl_account_id = "+glAccountId;
+		int count = this.jdbcTemplate.queryForObject(sql, Integer.class);
+		if(count>0){
+			throw new GLAccountDisableException();
+		}
+	}
+
+	@Transactional
     @Override
     public CommandProcessingResult deleteGLAccount(final Long glAccountId) {
         final GLAccount glAccount = this.glAccountRepository.findOne(glAccountId);


Mime
View raw message