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

adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new a3fb836b7 FINERACT-1932: Fineract modularization - fineract-charge
a3fb836b7 is described below

commit a3fb836b73f47007e4d5a6ed3a56e0f9d90e3445
Author: Jose Alberto Hernandez <[email protected]>
AuthorDate: Mon May 20 22:22:52 2024 -0600

    FINERACT-1932: Fineract modularization - fineract-charge
---
 build.gradle                                       |   2 +
 fineract-accounting/dependencies.gradle            |   1 +
 .../main/resources/jpa/accounting/persistence.xml  |   3 +-
 .../src/main/resources/jpa/branch/persistence.xml  |   4 +-
 fineract-charge/build.gradle                       | 106 +++++++++++++++++++++
 .../dependencies.gradle                            |   2 -
 .../portfolio/charge/api/ChargesApiConstants.java  |   0
 .../portfolio/charge/api/ChargesApiResource.java   |   0
 .../charge/api/ChargesApiResourceSwagger.java      |   0
 .../fineract/portfolio/charge/domain/Charge.java   |   0
 .../portfolio/charge/domain/ChargeAppliesTo.java   |   0
 .../charge/domain/ChargeCalculationType.java       |   0
 .../portfolio/charge/domain/ChargePaymentMode.java |   0
 .../portfolio/charge/domain/ChargeRepository.java  |   0
 .../charge/domain/ChargeRepositoryWrapper.java     |   0
 .../ChargeCannotBeAppliedToException.java          |   0
 .../exception/ChargeCannotBeDeletedException.java  |   0
 .../exception/ChargeCannotBeUpdatedException.java  |   0
 ...eDueAtDisbursementCannotBePenaltyException.java |   0
 .../exception/ChargeIsNotActiveException.java      |   0
 .../exception/ChargeMustBePenaltyException.java    |   0
 .../charge/exception/ChargeNotFoundException.java  |   0
 .../LoanChargeCannotBeAddedException.java          |   0
 .../LoanChargeCannotBeDeletedException.java        |   0
 .../LoanChargeCannotBePayedException.java          |   0
 .../LoanChargeCannotBeUpdatedException.java        |   0
 .../LoanChargeCannotBeWaivedException.java         |   0
 .../exception/LoanChargeNotFoundException.java     |   0
 .../LoanChargeWaiveCannotBeReversedException.java  |   0
 ...ccountChargeWithoutMandatoryFieldException.java |   0
 .../CreateChargeDefinitionCommandHandler.java      |   0
 .../DeleteChargeDefinitionCommandHandler.java      |   0
 .../UpdateChargeDefinitionCommandHandler.java      |   0
 ...geDefinitionCommandFromApiJsonDeserializer.java |   0
 .../service/ChargeDropdownReadPlatformService.java |   0
 .../ChargeDropdownReadPlatformServiceImpl.java     |   0
 .../charge/service/ChargeEnumerations.java         |   0
 .../charge/service/ChargeReadPlatformService.java  |   0
 .../charge/service/ChargeWritePlatformService.java |   0
 .../module/charge/module-changelog-master.xml      |  26 +++++
 .../src/main/resources/jpa/charge}/persistence.xml |   1 -
 .../main/resources/jpa/document/persistence.xml    |   3 +-
 fineract-investor/dependencies.gradle              |   1 +
 fineract-loan/dependencies.gradle                  |   1 +
 .../src/main/resources/jpa/loan/persistence.xml    |   3 +-
 fineract-provider/dependencies.gradle              |   1 +
 .../src/main/resources/jpa/persistence.xml         |   3 +-
 .../src/main/resources/jpa/rates/persistence.xml   |   3 +-
 fineract-savings/dependencies.gradle               |   1 +
 .../src/main/resources/jpa/savings/persistence.xml |   3 +-
 fineract-war/build.gradle                          |   1 +
 integration-tests/dependencies.gradle              |   1 +
 settings.gradle                                    |   1 +
 53 files changed, 156 insertions(+), 11 deletions(-)

diff --git a/build.gradle b/build.gradle
index f944ef766..cbf5f3b05 100644
--- a/build.gradle
+++ b/build.gradle
@@ -33,6 +33,7 @@ buildscript {
                 'fineract-branch',
                 'fineract-document',
                 'fineract-investor',
+                'fineract-charge',
                 'fineract-rates',
                 'fineract-loan',
                 'fineract-savings',
@@ -54,6 +55,7 @@ buildscript {
                 'fineract-accounting',
                 'fineract-provider',
                 'fineract-investor',
+                'fineract-charge',
                 'fineract-rates',
                 'fineract-loan',
                 'fineract-savings',
diff --git a/fineract-accounting/dependencies.gradle 
b/fineract-accounting/dependencies.gradle
index 5d95adec8..ba2bfda66 100644
--- a/fineract-accounting/dependencies.gradle
+++ b/fineract-accounting/dependencies.gradle
@@ -25,6 +25,7 @@ dependencies {
     // implementation dependencies are directly used (compiled against) in 
src/main (and src/test)
     //
     implementation(project(path: ':fineract-core'))
+    implementation(project(path: ':fineract-charge'))
     implementation('org.apache.avro:avro')
     implementation(
             project(path: ':fineract-avro-schemas')
diff --git 
a/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml 
b/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml
index c919eb5ea..3e2aa1743 100644
--- a/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml
+++ b/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml
@@ -35,13 +35,14 @@
         
<class>org.apache.fineract.infrastructure.codes.domain.CodeValue</class>
         
<class>org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom</class>
         <class>org.apache.fineract.organisation.office.domain.Office</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
         
<class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
         
<class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+        <!-- Fineract Charge module -->
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-branch/src/main/resources/jpa/branch/persistence.xml 
b/fineract-branch/src/main/resources/jpa/branch/persistence.xml
index bf32dc798..ef4086d55 100644
--- a/fineract-branch/src/main/resources/jpa/branch/persistence.xml
+++ b/fineract-branch/src/main/resources/jpa/branch/persistence.xml
@@ -29,7 +29,6 @@
     <!--  You can find the runtime configuration in the JPAConfig class  -->
     <persistence-unit name="jpa-pu" transaction-type="RESOURCE_LOCAL">
         <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-        <!-- Fineract core module -->
         
<class>org.apache.fineract.accounting.glaccount.domain.GLAccount</class>
         
<class>org.apache.fineract.accounting.journalentry.domain.JournalEntry</class>
         
<class>org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom</class>
@@ -53,7 +52,6 @@
         <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
@@ -69,6 +67,8 @@
         <class>org.apache.fineract.useradministration.domain.Role</class>
         <class>org.apache.fineract.useradministration.domain.Permission</class>
         
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
+        <!-- Fineract core module -->
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-charge/build.gradle b/fineract-charge/build.gradle
new file mode 100644
index 000000000..636fc048a
--- /dev/null
+++ b/fineract-charge/build.gradle
@@ -0,0 +1,106 @@
+/**
+ * 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.
+ */
+description = 'Fineract Charge'
+
+apply plugin: 'java'
+apply plugin: 'eclipse'
+
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/charge/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
+}
+
+// Configuration for Swagger documentation generation task
+// 
https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin
+import org.apache.tools.ant.filters.ReplaceTokens
+
+
+
+configurations {
+    providedRuntime // needed for Spring Boot executable WAR
+    providedCompile
+    compile() {
+        exclude module: 'hibernate-entitymanager'
+        exclude module: 'hibernate-validator'
+        exclude module: 'activation'
+        exclude module: 'bcmail-jdk14'
+        exclude module: 'bcprov-jdk14'
+        exclude module: 'bctsp-jdk14'
+        exclude module: 'c3p0'
+        exclude module: 'stax-api'
+        exclude module: 'jaxb-api'
+        exclude module: 'jaxb-impl'
+        exclude module: 'jboss-logging'
+        exclude module: 'itext-rtf'
+        exclude module: 'classworlds'
+    }
+    runtime
+}
+
+apply from: 'dependencies.gradle'
+
+// Configuration for the modernizer plugin
+// https://github.com/andygoossens/gradle-modernizer-plugin
+modernizer {
+    ignoreClassNamePatterns = [
+        '.*AbstractPersistableCustom',
+        '.*EntityTables',
+        '.*domain.*'
+    ]
+}
+
+// If we are running Gradle within Eclipse to enhance classes with OpenJPA,
+// set the classes directory to point to Eclipse's default build directory
+if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') {
+    sourceSets.main.java.outputDir = new File(rootProject.projectDir, 
"fineract-charge/bin/main")
+}
+
+eclipse {
+    project {
+        buildCommand([ LaunchConfigHandle: 
"<project>/.externalToolBuilders/OpenJPA Enhance Builder.launch" ],  
'org.eclipse.ui.externaltools.ExternalToolBuilder')
+    }
+}
+
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
+if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
+    sourceSets {
+        test {
+            java {
+                exclude '**/core/boot/tests/**'
+            }
+        }
+    }
+}
diff --git a/fineract-savings/dependencies.gradle 
b/fineract-charge/dependencies.gradle
similarity index 96%
copy from fineract-savings/dependencies.gradle
copy to fineract-charge/dependencies.gradle
index 5cf7cdd1c..bd2a15867 100644
--- a/fineract-savings/dependencies.gradle
+++ b/fineract-charge/dependencies.gradle
@@ -25,8 +25,6 @@ dependencies {
     // implementation dependencies are directly used (compiled against) in 
src/main (and src/test)
     //
     implementation(project(path: ':fineract-core'))
-    implementation(project(path: ':fineract-accounting'))
-    implementation(project(path: ':fineract-rates'))
 
     implementation(
             'org.springframework.boot:spring-boot-starter-web',
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResource.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResource.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResource.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResource.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiResourceSwagger.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepository.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepository.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepository.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepository.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeRepositoryWrapper.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeDeletedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeDeletedException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeDeletedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeDeletedException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeUpdatedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeUpdatedException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeUpdatedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeUpdatedException.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeIsNotActiveException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeIsNotActiveException.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeIsNotActiveException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeIsNotActiveException.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeNotFoundException.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeDeletedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeDeletedException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeDeletedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeDeletedException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBePayedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBePayedException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBePayedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBePayedException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeUpdatedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeUpdatedException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeUpdatedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeUpdatedException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeWaivedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeWaivedException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeWaivedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeWaivedException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeNotFoundException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeNotFoundException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeNotFoundException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeNotFoundException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWaiveCannotBeReversedException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWaiveCannotBeReversedException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWaiveCannotBeReversedException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWaiveCannotBeReversedException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ShareAccountChargeWithoutMandatoryFieldException.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ShareAccountChargeWithoutMandatoryFieldException.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ShareAccountChargeWithoutMandatoryFieldException.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/exception/ShareAccountChargeWithoutMandatoryFieldException.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/handler/CreateChargeDefinitionCommandHandler.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/handler/CreateChargeDefinitionCommandHandler.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/handler/CreateChargeDefinitionCommandHandler.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/handler/CreateChargeDefinitionCommandHandler.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/handler/DeleteChargeDefinitionCommandHandler.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/handler/DeleteChargeDefinitionCommandHandler.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/handler/DeleteChargeDefinitionCommandHandler.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/handler/DeleteChargeDefinitionCommandHandler.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/handler/UpdateChargeDefinitionCommandHandler.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/handler/UpdateChargeDefinitionCommandHandler.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/handler/UpdateChargeDefinitionCommandHandler.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/handler/UpdateChargeDefinitionCommandHandler.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java
diff --git 
a/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java
similarity index 100%
rename from 
fineract-core/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformService.java
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformService.java
 
b/fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformService.java
similarity index 100%
rename from 
fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformService.java
rename to 
fineract-charge/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeWritePlatformService.java
diff --git 
a/fineract-charge/src/main/resources/jpa/charge/db/changelog/tenant/module/charge/module-changelog-master.xml
 
b/fineract-charge/src/main/resources/jpa/charge/db/changelog/tenant/module/charge/module-changelog-master.xml
new file mode 100644
index 000000000..570460d3f
--- /dev/null
+++ 
b/fineract-charge/src/main/resources/jpa/charge/db/changelog/tenant/module/charge/module-changelog-master.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog 
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd";>
+  <!-- Sequence is starting from 6000 to make it easier to move existing 
liquibase changesets here -->
+</databaseChangeLog>
diff --git a/fineract-loan/src/main/resources/jpa/loan/persistence.xml 
b/fineract-charge/src/main/resources/jpa/charge/persistence.xml
similarity index 98%
copy from fineract-loan/src/main/resources/jpa/loan/persistence.xml
copy to fineract-charge/src/main/resources/jpa/charge/persistence.xml
index bf32dc798..d3ba0d405 100644
--- a/fineract-loan/src/main/resources/jpa/loan/persistence.xml
+++ b/fineract-charge/src/main/resources/jpa/charge/persistence.xml
@@ -53,7 +53,6 @@
         <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
diff --git a/fineract-document/src/main/resources/jpa/document/persistence.xml 
b/fineract-document/src/main/resources/jpa/document/persistence.xml
index 7849844df..0c3e741c3 100644
--- a/fineract-document/src/main/resources/jpa/document/persistence.xml
+++ b/fineract-document/src/main/resources/jpa/document/persistence.xml
@@ -50,7 +50,6 @@
         <class>org.apache.fineract.portfolio.client.domain.Client</class>
         
<class>org.apache.fineract.portfolio.client.domain.ClientIdentifier</class>
         <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
@@ -64,6 +63,8 @@
         <class>org.apache.fineract.useradministration.domain.Role</class>
         <class>org.apache.fineract.useradministration.domain.Permission</class>
         
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
+        <!-- Fineract Charge module -->
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-investor/dependencies.gradle 
b/fineract-investor/dependencies.gradle
index 12ec14af7..c39bee864 100644
--- a/fineract-investor/dependencies.gradle
+++ b/fineract-investor/dependencies.gradle
@@ -26,6 +26,7 @@ dependencies {
     //
     implementation(project(path: ':fineract-core'))
     implementation(project(path: ':fineract-accounting'))
+    implementation(project(path: ':fineract-charge'))
     implementation(project(path: ':fineract-loan'))
     implementation('org.apache.avro:avro')
     implementation(
diff --git a/fineract-loan/dependencies.gradle 
b/fineract-loan/dependencies.gradle
index 5cf7cdd1c..dac3f7aa1 100644
--- a/fineract-loan/dependencies.gradle
+++ b/fineract-loan/dependencies.gradle
@@ -26,6 +26,7 @@ dependencies {
     //
     implementation(project(path: ':fineract-core'))
     implementation(project(path: ':fineract-accounting'))
+    implementation(project(path: ':fineract-charge'))
     implementation(project(path: ':fineract-rates'))
 
     implementation(
diff --git a/fineract-loan/src/main/resources/jpa/loan/persistence.xml 
b/fineract-loan/src/main/resources/jpa/loan/persistence.xml
index bf32dc798..b76d09e1a 100644
--- a/fineract-loan/src/main/resources/jpa/loan/persistence.xml
+++ b/fineract-loan/src/main/resources/jpa/loan/persistence.xml
@@ -53,7 +53,6 @@
         <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
@@ -69,6 +68,8 @@
         <class>org.apache.fineract.useradministration.domain.Role</class>
         <class>org.apache.fineract.useradministration.domain.Permission</class>
         
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
+        <!-- Fineract Charge module -->
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-provider/dependencies.gradle 
b/fineract-provider/dependencies.gradle
index 6e64f5abf..b9cb294b7 100644
--- a/fineract-provider/dependencies.gradle
+++ b/fineract-provider/dependencies.gradle
@@ -28,6 +28,7 @@ dependencies {
     implementation(project(path: ':fineract-accounting'))
     implementation(project(path: ':fineract-investor'))
     implementation(project(path: ':fineract-rates'))
+    implementation(project(path: ':fineract-charge'))
     implementation(project(path: ':fineract-loan'))
     implementation(project(path: ':fineract-savings'))
     implementation(project(path: ':fineract-branch'))
diff --git a/fineract-provider/src/main/resources/jpa/persistence.xml 
b/fineract-provider/src/main/resources/jpa/persistence.xml
index 0d7a3654e..56ae3946c 100644
--- a/fineract-provider/src/main/resources/jpa/persistence.xml
+++ b/fineract-provider/src/main/resources/jpa/persistence.xml
@@ -53,7 +53,6 @@
         <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
@@ -143,6 +142,8 @@
         
<class>org.apache.fineract.accounting.rule.domain.AccountingTagRule</class>
         <!-- Fineract Document module -->
         
<class>org.apache.fineract.infrastructure.documentmanagement.domain.Document</class>
+        <!-- Fineract Charge module -->
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-rates/src/main/resources/jpa/rates/persistence.xml 
b/fineract-rates/src/main/resources/jpa/rates/persistence.xml
index bf32dc798..b76d09e1a 100644
--- a/fineract-rates/src/main/resources/jpa/rates/persistence.xml
+++ b/fineract-rates/src/main/resources/jpa/rates/persistence.xml
@@ -53,7 +53,6 @@
         <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket</class>
         
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
@@ -69,6 +68,8 @@
         <class>org.apache.fineract.useradministration.domain.Role</class>
         <class>org.apache.fineract.useradministration.domain.Permission</class>
         
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
+        <!-- Fineract Charge module -->
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-savings/dependencies.gradle 
b/fineract-savings/dependencies.gradle
index 5cf7cdd1c..dac3f7aa1 100644
--- a/fineract-savings/dependencies.gradle
+++ b/fineract-savings/dependencies.gradle
@@ -26,6 +26,7 @@ dependencies {
     //
     implementation(project(path: ':fineract-core'))
     implementation(project(path: ':fineract-accounting'))
+    implementation(project(path: ':fineract-charge'))
     implementation(project(path: ':fineract-rates'))
 
     implementation(
diff --git a/fineract-savings/src/main/resources/jpa/savings/persistence.xml 
b/fineract-savings/src/main/resources/jpa/savings/persistence.xml
index 7849844df..0c3e741c3 100644
--- a/fineract-savings/src/main/resources/jpa/savings/persistence.xml
+++ b/fineract-savings/src/main/resources/jpa/savings/persistence.xml
@@ -50,7 +50,6 @@
         <class>org.apache.fineract.portfolio.client.domain.Client</class>
         
<class>org.apache.fineract.portfolio.client.domain.ClientIdentifier</class>
         <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
-        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
         
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
         <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
@@ -64,6 +63,8 @@
         <class>org.apache.fineract.useradministration.domain.Role</class>
         <class>org.apache.fineract.useradministration.domain.Permission</class>
         
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
+        <!-- Fineract Charge module -->
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-war/build.gradle b/fineract-war/build.gradle
index 0553f56b1..ebee98cfd 100644
--- a/fineract-war/build.gradle
+++ b/fineract-war/build.gradle
@@ -53,6 +53,7 @@ dependencies {
     implementation project(':fineract-investor')
     implementation project(':fineract-branch')
     implementation project(':fineract-document')
+    implementation project(':fineract-charge')
     implementation project(':fineract-rates')
     implementation project(':fineract-loan')
     implementation project(':fineract-savings')
diff --git a/integration-tests/dependencies.gradle 
b/integration-tests/dependencies.gradle
index f4d2e41eb..bc1aca3f7 100644
--- a/integration-tests/dependencies.gradle
+++ b/integration-tests/dependencies.gradle
@@ -25,6 +25,7 @@ dependencies {
             project(path: ':fineract-core', configuration: 'runtimeElements'),
             project(path: ':fineract-accounting', configuration: 
'runtimeElements'),
             project(path: ':fineract-investor', configuration: 
'runtimeElements'),
+            project(path: ':fineract-charge', configuration: 
'runtimeElements'),
             project(path: ':fineract-rates', configuration: 'runtimeElements'),
             project(path: ':fineract-loan', configuration: 'runtimeElements'),
             project(path: ':fineract-savings', configuration: 
'runtimeElements'),
diff --git a/settings.gradle b/settings.gradle
index c37631e13..54b501199 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -55,6 +55,7 @@ include ':fineract-branch'
 include ':fineract-document'
 include ':fineract-investor'
 include ':fineract-rates'
+include ':fineract-charge'
 include ':fineract-loan'
 include ':fineract-savings'
 include ':fineract-war'


Reply via email to