This is an automated email from the ASF dual-hosted git repository.

vorburger pushed a commit to branch revert-592-Fineract-614
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit ab928a6165377a1c25e0a9ae4cd632a7ccf5ca54
Author: Michael Vorburger ⛑️ <[email protected]>
AuthorDate: Fri Mar 13 17:15:42 2020 +0100

    Revert "FINERACT-737: Updated Api Docs to include loan charges paid by 
FINERACT-736: Api Docs were updated to include rates documentation 
FINERACT-735: Integration test were created for rates creation, retrieval and 
update"
    
    This reverts commit c342f5b43d228b01b1fca2bc4a8a54b82f188093.
---
 api-docs/apiLive.htm                               | 227 +--------------------
 .../fineract/integrationtests/RatesTest.java       |  71 -------
 .../integrationtests/common/rates/RatesHelper.java |  91 ---------
 .../fineract/portfolio/rate/data/RateData.java     |   8 +-
 .../fineract/portfolio/rate/domain/Rate.java       |  36 ++--
 .../portfolio/rate/domain/RateAppliesTo.java       |  66 ------
 .../portfolio/rate/service/RateEnumerations.java   |  47 -----
 .../rate/service/RateReadServiceImpl.java          |  12 +-
 .../sql/migrations/core_db/V352__rates.sql         |   6 +-
 9 files changed, 29 insertions(+), 535 deletions(-)

diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm
index b9e93af..3d544b5 100644
--- a/api-docs/apiLive.htm
+++ b/api-docs/apiLive.htm
@@ -2546,24 +2546,6 @@
                                                                <td></td>
                                                                <td></td>
                                                        </tr>
-                            <tr>
-                                <td><a href="#rates">Rates</a></td>
-                                <td>rates</td>
-                                <td><a href="#create_rate">Create Rate</a></td>
-                                <td><a href="#rate_list">List Rates</a></td>
-                                <td></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
-                            <tr>
-                                <td></td>
-                                <td>rates/{rateId}</td>
-                                <td></td>
-                                <td><a href="#retrieve_rate">Retrieve 
Rate</a></td>
-                                <td><a href="#update_rate">Update Rate</a></td>
-                                <td></td>
-                                <td></td>
-                            </tr>
                                                </table>
                                        </div>
                                </div>
@@ -12160,17 +12142,7 @@ GET 
https://DomainName/api/v1/loans/{loanId}/transactions/{transactionId}
     "displayLabel": "US Dollar ($)"
   },
   "amount": 559.88,
-  "interestPortion": 559.88,
-  "loanChargePaidByList": [
-    {
-      "id": 29,
-      "amount": 138.700000,
-      "installmentNumber": 0,
-      "chargeId": 7,
-      "transactionId": 35,
-      "name": "Late Penalty Charge"
-    } 
-  ]
+  "interestPortion": 559.88
 }
                                        </code>
                                </div>
@@ -16202,7 +16174,7 @@ GET https://DomainName/api/v1/loanproducts/{productId}
                                                        
numberOfRepaymentVariationsForBorrowerCycle,
                                                        
interestRateVariationsForBorrowerCycle,
                                                        
multiDisburseLoan,maxTrancheCount,
-                                                       
outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, 
principalThresholdForLastInstalment, 
accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, 
installmentAmountInMultiplesOf, allowAttributeOverrides, 
allowPartialPeriodInterestCalcualtion, rates
+                                                       
outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, 
principalThresholdForLastInstalment, 
accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, 
installmentAmountInMultiplesOf, allowAttributeOverrides, 
allowPartialPeriodInterestCalcualtion
                                                        </td>
                                                </tr>
                                        </table>
@@ -43307,198 +43279,7 @@ No Request Body:
                        </div>
                        <!-- End of Tax Group -->
 
-            <!-- Start of Rates-->
-            <a id="rates" name="rates" class="old-syle-anchor">&nbsp;</a>
-            <div class="method-section">
-                <div class="method-description">
-                    <h3>Rates</h3>
-                    <p>This defines the Rates</p>
-                    <table class=matrixHeading>
-                        <tr class="matrixHeadingBG">
-                            <td>
-                                <div class="fineractHeading2">Field 
Descriptions</div>
-                            </td>
-                        </tr>
-                        <tr class=alt>
-                            <td>name</td>
-                        </tr>
-                        <tr>
-                            <td class=fielddesc>Name of Rate
-                            </td>
-                        </tr>
-                        <tr class=alt>
-                            <td>productApply</td>
-                        </tr>
-                        <tr>
-                            <td class=fielddesc>
-                                Enum value that defines to which entity the 
rate will be applicable.
-                                Available options are:
-                                1=Loans
-
-                                Once a rate definition is created, this 
attribute cannot be changed at any point
-                            </td>
-                        </tr>
-                        <tr class=alt>
-                            <td>Active</td>
-                        </tr>
-                        <tr>
-                            <td class=fielddesc>
-                                Flag indicating if the rate is currently active
-                            </td>
-                        </tr>
-                    </table>
-                </div>
-            </div>
-            <a id="create_rate" name="create_rate"
-               class="old-syle-anchor">&nbsp;</a>
-            <div class="method-section">
-                <div class="method-description">
-                    <h4>Create a new Rate</h4>
-                    <p>Creates a new Rate</p>
-                    <table class=matrixHeading>
-                        <tr class="matrixHeadingBG">
-                            <td>
-                                <div class="fineractHeading2">Mandatory 
Fields</div>
-                            </td>
-                        </tr>
-                        <tr class=alt>
-                            <td>name</td>
-                        </tr>
-                        <tr class=alt>
-                            <td>percentage</td>
-                        </tr>
-                        <tr class=alt>
-                            <td>productApply</td>
-                        </tr>
-                        <tr class=alt>
-                            <td>active</td>
-                        </tr>
-                    </table>
-                </div>
-                <div class="method-example">
-                    <code class="method-declaration">
-                        POST https://DomainName/api/v1/rates
-                    </code>
-                    <code class="method-request">
-                        POST rates
-                        Content-Type: application/json
-                        Request Body:
-                        {
-                        "productApply":1,
-                        "name":"Loan rate",
-                        "percentage":"12",
-                        "active":true,
-                        "locale":"en"
-                        }
-                    </code>
-                    <code class="method-response">
-                        {
-                        "resourceId": 1
-                        }
-                    </code>
-                </div>
-            </div>
-            <a id="rate_list" name="rate_list"
-               class="old-syle-anchor">&nbsp;</a>
-            <div class="method-section">
-                <div class="method-description">
-                    <h4>List Rates</h4>
-                    <p>List Rates</p>
-                </div>
-                <div class="method-example">
-                    <code class="method-declaration">
-                        GET https://DomainName/api/v1/rates
-                    </code>
-                    <code class="method-request">
-                        GET rates
-                        Content-Type: application/json
-                    </code>
-                    <code class="method-response">
-                        [
-                        {
-                        "id":1,
-                        "name":"Loan Rate",
-                        "percentage":12.00,
-                        "productApply":1,
-                        "active":true
-                        },
-                        {
-                        "id":2,
-                        "name":"Public Rate",
-                        "percentage":30.00,
-                        "productApply":1,
-                        "active":true
-                        },
-                        {
-                        "id":3,
-                        "name":"Private Rate",
-                        "percentage":14.00,
-                        "productApply":1,
-                        "active":true
-                        }
-                        ]
-                    </code>
-                </div>
-            </div>
-            <a id="retrieve_rate" name="retrieve_rate"
-               class="old-syle-anchor">&nbsp;</a>
-            <div class="method-section">
-                <div class="method-description">
-                    <h4>Retrieve a Rate</h4>
-                    <p>Return the details of an existing Rate</p>
-                </div>
-                <div class="method-example">
-                    <code class="method-declaration">
-                        GET https://DomainName/api/v1/rates/{rateId}
-                    </code>
-                    <code class="method-request">
-                        GET rates/1
-                        Content-Type: application/json
-                    </code>
-                    <code class="method-response">
-                        {
-                        "id":1,
-                        "name":"Loan Rate",
-                        "percentage":12.00,
-                        "productApply":1,
-                        "active":true
-                        }
-                    </code>
-                </div>
-            </div>
-            <a id="update_rate" name="update_rate"
-               class="old-syle-anchor">&nbsp;</a>
-            <div class="method-section">
-                <div class="method-description">
-                    <h4>Update a Rate</h4>
-                    <p>Updates an existing Rate</p>
-                </div>
-                <div class="method-example">
-                    <code class="method-declaration">
-                        POST https://DomainName/api/v1/rates/{rateId}
-                    </code>
-                    <code class="method-request">
-                        POST rates/3
-                        Content-Type: application/json
-                        Request Body:
-                        {
-                        "percentage":"17",
-                        }
-                    </code>
-                    <code class="method-response">
-                        {
-                        "resourceId":3,
-                        "changes":
-                        {
-                        "percentage":17
-                        }
-                        }
-                    </code>
-                </div>
-            </div>
-            <!-- End of Rates -->
-
-            <!-- start of clients api docs -->
+               <!-- start of clients api docs -->
                <a id="templates" name="clients" 
class="old-syle-anchor">&nbsp;</a>
                <div class="method-section">
                        <div class="method-description">
@@ -46970,7 +46751,7 @@ GET 
https://DomainName/api/v1/self/loans/{loanId}/transactions/{transactionId}
   },
   "amount": 559.88,
   "interestPortion": 559.88
-   }
+}
                                        </code>
                                </div>
                        </div>
diff --git 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RatesTest.java
 
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RatesTest.java
deleted file mode 100644
index 0feb648..0000000
--- 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/RatesTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * 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.integrationtests;
-
-import com.jayway.restassured.builder.RequestSpecBuilder;
-import com.jayway.restassured.builder.ResponseSpecBuilder;
-import com.jayway.restassured.http.ContentType;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.rates.RatesHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-@SuppressWarnings({"rawtypes"})
-public class RatesTest {
-
-    private ResponseSpecification responseSpec;
-    private RequestSpecification requestSpec;
-
-    @Before
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new 
RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + 
Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new 
ResponseSpecBuilder().expectStatusCode(200).build();
-    }
-
-    @Test
-    public void testRatesForLoans() {
-
-        // Retrieving all Rates
-        ArrayList<HashMap> allRatesData = 
RatesHelper.getRates(this.requestSpec, this.responseSpec);
-        Assert.assertNotNull(allRatesData);
-
-        // Testing Creation and Update of Loan Rate
-        final Integer loanRateId = RatesHelper.createRates(this.requestSpec, 
this.responseSpec,
-                RatesHelper.getLoanRateJSON());
-        Assert.assertNotNull(loanRateId);
-
-        //Update Rate percentage
-        HashMap changes = RatesHelper.updateRates(this.requestSpec, 
this.responseSpec, loanRateId,
-                RatesHelper.getModifyRateJSON());
-
-        HashMap rateDataAfterChanges = 
RatesHelper.getRateById(this.requestSpec, this.responseSpec, loanRateId);
-        Assert.assertEquals("Verifying Rate after modification", 
rateDataAfterChanges.get("percentage"), changes.get("percentage"));
-
-    }
-
-   
-}
diff --git 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/rates/RatesHelper.java
 
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/rates/RatesHelper.java
deleted file mode 100644
index 43fd0d7..0000000
--- 
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/rates/RatesHelper.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * 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.integrationtests.common.rates;
-
-import com.google.gson.Gson;
-import com.jayway.restassured.specification.RequestSpecification;
-import com.jayway.restassured.specification.ResponseSpecification;
-import org.apache.fineract.integrationtests.common.CommonConstants;
-import org.apache.fineract.integrationtests.common.Utils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class RatesHelper {
-
-    private static final String RATES_URL = "/fineract-provider/api/v1/rates";
-    private static final String CREATE_RATES_URL = RATES_URL + "?" + 
Utils.TENANT_IDENTIFIER;
-    private final static String PERCENTAGE = "10";
-    private final static Integer PRODUCT_APPLY_LOAN = 1;
-    private final static Boolean ACTIVE = true;
-
-    public static ArrayList<HashMap> getRates(final RequestSpecification 
requestSpec, final ResponseSpecification responseSpec) {
-        return (ArrayList) Utils.performServerGet(requestSpec, responseSpec, 
RATES_URL + "?" + Utils.TENANT_IDENTIFIER, "");
-    }
-
-
-    public static Integer createRates(final RequestSpecification requestSpec, 
final ResponseSpecification responseSpec,
-                                      final String request) {
-        return Utils.performServerPost(requestSpec, responseSpec, 
CREATE_RATES_URL, request, "resourceId");
-    }
-
-    public static HashMap getRateById(final RequestSpecification requestSpec, 
final ResponseSpecification responseSpec,
-                                      final Integer rateId) {
-        return Utils.performServerGet(requestSpec, responseSpec, RATES_URL + 
"/" + rateId + "?" + Utils.TENANT_IDENTIFIER, "");
-    }
-
-    public static HashMap updateRates(final RequestSpecification requestSpec, 
final ResponseSpecification responseSpec,
-                                      final Integer rateId, final String 
request) {
-        return Utils.performServerPut(requestSpec, responseSpec, RATES_URL + 
"/" + rateId + "?" + Utils.TENANT_IDENTIFIER, request,
-                CommonConstants.RESPONSE_CHANGES);
-    }
-
-    public static String getLoanRateJSON() {
-        return getLoanRateJSON(RatesHelper.PRODUCT_APPLY_LOAN, 
RatesHelper.PERCENTAGE);
-    }
-
-    public static String getLoanRateJSON(final Integer productApply, final 
String percentage) {
-        final HashMap<String, Object> map = populateDefaultsForLoan();
-        map.put("percentage", percentage);
-        map.put("productApply", productApply);
-        String crateRateJSON = new Gson().toJson(map);
-        return crateRateJSON;
-    }
-
-    public static HashMap<String, Object> populateDefaultsForLoan() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("active", RatesHelper.ACTIVE);
-        map.put("percentage", RatesHelper.PERCENTAGE);
-        map.put("locale", "en");
-        map.put("productApply", RatesHelper.PRODUCT_APPLY_LOAN);
-        map.put("name", Utils.randomNameGenerator("Rate_Loans_", 6));
-        return map;
-    }
-
-    public static String getModifyRateJSON() {
-        final HashMap<String, Object> map = new HashMap<>();
-        map.put("percentage", "15.0");
-        map.put("locale", "en");
-        String json = new Gson().toJson(map);
-        return json;
-    }
-
-}
-
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java
index e249a1f..d60c8dd 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java
@@ -19,8 +19,6 @@
 
 package org.apache.fineract.portfolio.rate.data;
 
-import org.apache.fineract.infrastructure.core.data.EnumOptionData;
-
 import java.io.Serializable;
 import java.math.BigDecimal;
 
@@ -35,17 +33,17 @@ public class RateData implements Serializable {
 
   private BigDecimal percentage;
 
-  private EnumOptionData productApply;
+  private String productApply;
 
   private boolean active;
 
   public static RateData instance(final Long id, final String name, final 
BigDecimal percentage,
-      final EnumOptionData productApply, final boolean active) {
+      final String productApply, final boolean active) {
     return new RateData(id, name, percentage, productApply, active);
   }
 
   private RateData(final Long id, final String name, final BigDecimal 
percentage,
-      final EnumOptionData productApply, final boolean active) {
+      final String productApply, final boolean active) {
     this.id = id;
     this.name = name;
     this.percentage = percentage;
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
index ad808f4..3d0803b 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
@@ -19,18 +19,11 @@
 
 package org.apache.fineract.portfolio.rate.domain;
 
-import java.util.ArrayList;
 import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Map;
 import org.apache.commons.lang.StringUtils;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
-import org.apache.fineract.infrastructure.core.data.ApiParameterError;
-import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
-import 
org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
-import 
org.apache.fineract.portfolio.charge.exception.ChargeParameterUpdateNotSupportedException;
 import org.apache.fineract.useradministration.domain.AppUser;
-import org.apache.fineract.portfolio.rate.domain.RateAppliesTo;
 
 import javax.persistence.*;
 import java.math.BigDecimal;
@@ -52,7 +45,7 @@ public class Rate extends AbstractAuditableCustom<AppUser, 
Long> {
   private BigDecimal percentage;
 
   @Column(name = "product_apply", length = 100)
-  private Integer productApply;
+  private String productApply;
 
   @Column(name = "active", nullable = false)
   private boolean active;
@@ -66,19 +59,19 @@ public class Rate extends AbstractAuditableCustom<AppUser, 
Long> {
   }
 
 
-  public Rate(String name, BigDecimal percentage, RateAppliesTo productApply, 
boolean active,
+  public Rate(String name, BigDecimal percentage, String productApply, boolean 
active,
       AppUser approveUser) {
     this.name = name;
     this.percentage = percentage;
-    this.productApply = productApply.getValue();
+    this.productApply = productApply;
     this.active = active;
     this.approveUser = approveUser;
   }
 
-  public Rate(String name, BigDecimal percentage, RateAppliesTo productApply, 
boolean active) {
+  public Rate(String name, BigDecimal percentage, String productApply, boolean 
active) {
     this.name = name;
     this.percentage = percentage;
-    this.productApply = productApply.getValue();
+    this.productApply = productApply;
     this.active = active;
   }
 
@@ -114,11 +107,11 @@ public class Rate extends 
AbstractAuditableCustom<AppUser, Long> {
     this.approveUser = approveUser;
   }
 
-  public Integer getProductApply() {
+  public String getProductApply() {
     return productApply;
   }
 
-  public void setProductApply(Integer productApply) {
+  public void setProductApply(String productApply) {
     this.productApply = productApply;
   }
 
@@ -133,7 +126,7 @@ public class Rate extends AbstractAuditableCustom<AppUser, 
Long> {
         '}';
   }
 
-  public static Rate from(String name, BigDecimal percentage, RateAppliesTo 
productApply, Boolean active) {
+  public static Rate from(String name, BigDecimal percentage, String 
productApply, Boolean active) {
     return new Rate(name, percentage, productApply, active);
   }
 
@@ -143,8 +136,8 @@ public class Rate extends AbstractAuditableCustom<AppUser, 
Long> {
 
     final BigDecimal percentage = 
command.bigDecimalValueOfParameterNamed("percentage");
 
-    final RateAppliesTo productApply = 
RateAppliesTo.fromInt(command.integerValueOfParameterNamed("productApply"));
-    
+    final String productApply = 
command.stringValueOfParameterNamed("productApply");
+
     final boolean active = 
command.booleanPrimitiveValueOfParameterNamed("active");
 
     return new Rate(name, percentage, productApply, active, user);
@@ -169,9 +162,10 @@ public class Rate extends AbstractAuditableCustom<AppUser, 
Long> {
     }
 
     final String productApplyParamName = "productApply";
-    if (command.isChangeInIntegerParameterNamed(productApplyParamName, 
this.productApply)) {
-      final String errorMessage = "Update of Rate applies to is not supported";
-      throw new ChargeParameterUpdateNotSupportedException("rate.applies.to", 
errorMessage);
+    if (command.isChangeInStringParameterNamed(productApplyParamName, 
this.productApply)) {
+      final String newValue = 
command.stringValueOfParameterNamed(productApplyParamName);
+      actualChanges.put(productApplyParamName, newValue);
+      this.productApply = StringUtils.defaultIfEmpty(newValue, null);
     }
 
     final String activeParamName = "active";
@@ -198,7 +192,7 @@ public class Rate extends AbstractAuditableCustom<AppUser, 
Long> {
     return approveUserId;
   }
 
-  public void assembleFrom(String name, BigDecimal percentage, Integer 
productApply, boolean active){
+  public void assembleFrom(String name, BigDecimal percentage, String 
productApply, boolean active){
     this.name = name;
     this.percentage = percentage;
     this.productApply = productApply;
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java
deleted file mode 100644
index 684e142..0000000
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * 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.portfolio.rate.domain;
-
-public enum RateAppliesTo {
-
-    INVALID(0, "rateAppliesTo.invalid"), 
-    LOAN(1, "rateAppliesTo.loan");
-    
-    private final Integer value;
-    private final String code;
-
-    private RateAppliesTo(final Integer value, final String code) {
-        this.value = value;
-        this.code = code;
-    }
-
-    public Integer getValue() {
-        return this.value;
-    }
-
-    public String getCode() {
-        return this.code;
-    }
-
-    public static RateAppliesTo fromInt(final Integer rateAppliesTo) {
-        RateAppliesTo rateAppliesToType = RateAppliesTo.INVALID;
-
-        if (rateAppliesTo != null) {
-            switch (rateAppliesTo) {
-                case 1:
-                    rateAppliesToType = LOAN;
-                break;
-                default:
-                    rateAppliesToType = INVALID;
-                break;
-            }
-        }
-
-        return rateAppliesToType;
-    }
-
-    public boolean isLoanRate() {
-        return this.value.equals(RateAppliesTo.LOAN.getValue());
-    }
-    public static Object[] validValues() {
-        return new Object[] { RateAppliesTo.LOAN.getValue() };
-    }
-}
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateEnumerations.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateEnumerations.java
deleted file mode 100644
index a1d79a8..0000000
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateEnumerations.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * 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.portfolio.rate.service;
-
-import org.apache.fineract.infrastructure.core.data.EnumOptionData;
-import org.apache.fineract.portfolio.rate.domain.RateAppliesTo;
-
-public class RateEnumerations {
-
-    public static EnumOptionData rateAppliesTo(final int id) {
-        return rateAppliesTo(RateAppliesTo.fromInt(id));
-    }
-
-    public static EnumOptionData rateAppliesTo(final RateAppliesTo type) {
-        EnumOptionData optionData = null;
-        switch (type) {
-            case LOAN:
-                optionData = new 
EnumOptionData(RateAppliesTo.LOAN.getValue().longValue(), 
RateAppliesTo.LOAN.getCode(), "Loan");
-                break;
-            default:
-                optionData = new 
EnumOptionData(RateAppliesTo.INVALID.getValue().longValue(), 
RateAppliesTo.INVALID.getCode(),
-                        "Invalid");
-                break;
-        }
-        return optionData;
-    }
-
- 
-
-}
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
index f3e5e4f..44682de 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/service/RateReadServiceImpl.java
@@ -19,11 +19,8 @@
 
 package org.apache.fineract.portfolio.rate.service;
 
-import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
 import 
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
-import org.apache.fineract.portfolio.charge.service.ChargeEnumerations;
-import org.apache.fineract.portfolio.rate.domain.RateAppliesTo;
 import org.apache.fineract.portfolio.rate.exception.RateNotFoundException;
 import org.apache.fineract.portfolio.rate.domain.Rate;
 import org.apache.fineract.portfolio.rate.data.RateData;
@@ -95,7 +92,7 @@ public class RateReadServiceImpl implements RateReadService {
     this.context.authenticatedUser();
     final RateMapper rm = new RateMapper();
     final String sql = "select " + rm.rateSchema() + " where r.active = ? and 
product_apply=?";
-    return this.jdbcTemplate.query(sql, rm, new Object[]{true, 
RateAppliesTo.LOAN.getValue() });
+    return this.jdbcTemplate.query(sql, rm, new Object[]{true, "m_loan"});
   }
 
   @Override
@@ -136,17 +133,16 @@ public class RateReadServiceImpl implements 
RateReadService {
       final Long id = resultSet.getLong("id");
       final String name = resultSet.getString("name");
       final BigDecimal percentage = resultSet.getBigDecimal("percentage");
-      final Integer productApply = resultSet.getInt("productApply");
-      final EnumOptionData productAppliesTo = 
RateEnumerations.rateAppliesTo(productApply);
+      final String productApply = resultSet.getString("productApply");
       final boolean active = resultSet.getBoolean("active");
-      return RateData.instance(id, name, percentage, productAppliesTo, active);
+      return RateData.instance(id, name, percentage, productApply, active);
     }
 
     public RateData mapRow(Rate rateResponse, int i) {
       final Long id = rateResponse.getId();
       final String name = rateResponse.getName();
       final BigDecimal percentage = rateResponse.getPercentage();
-      final EnumOptionData productApply = 
RateEnumerations.rateAppliesTo(rateResponse.getProductApply());;
+      final String productApply = rateResponse.getProductApply();
       final boolean active = rateResponse.isActive();
       return RateData.instance(id, name, percentage, productApply, active);
     }
diff --git 
a/fineract-provider/src/main/resources/sql/migrations/core_db/V352__rates.sql 
b/fineract-provider/src/main/resources/sql/migrations/core_db/V352__rates.sql
index 8f35ce8..1ca0986 100644
--- 
a/fineract-provider/src/main/resources/sql/migrations/core_db/V352__rates.sql
+++ 
b/fineract-provider/src/main/resources/sql/migrations/core_db/V352__rates.sql
@@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS `m_rate` (
   `name` varchar(250) NOT NULL,
   `percentage` decimal(10,2) NOT NULL,
   `active` tinyint(1) DEFAULT '0',
-  `product_apply` smallint(5) NOT NULL,
+  `product_apply` varchar(100) NOT NULL,
   `created_date` datetime NULL DEFAULT NULL,
   `createdby_id` bigint(20) NOT NULL,
   `lastmodifiedby_id` bigint(20) NOT NULL,
@@ -58,10 +58,10 @@ CREATE TABLE IF NOT EXISTS `m_product_loan_rate` (
 
 INSERT INTO `m_permission`
 (`grouping`,`code`,`entity_name`,`action_name`,`can_maker_checker`) VALUES
-  ('organisation', 'READ_RATE', 'RATE', 'CREATE', '1'),
   ('organisation', 'CREATE_RATE', 'RATE', 'CREATE', '1'),
   ('organisation', 'UPDATE_RATE', 'RATE', 'UPDATE', '1');
 
 INSERT INTO `c_configuration`
 (`name`, `value`, `enabled`, `is_trap_door`, `description`) VALUES
-('sub-rates', 0, 0, 0, 'Enable Rates Module');
+('vat-tax', 12, 0, 0, 'VAT tax'),
+('sub-rates', 12, 0, 0, 'Enable Rates Module');;

Reply via email to