FINERACT-1932: Fineract modularization - fineract-tax
diff --git a/build.gradle b/build.gradle
index 4832bb4..aae4ce7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -35,6 +35,7 @@
'fineract-investor',
'fineract-charge',
'fineract-rates',
+ 'fineract-tax',
'fineract-loan',
'fineract-savings',
'fineract-report',
@@ -59,6 +60,7 @@
'fineract-investor',
'fineract-charge',
'fineract-rates',
+ 'fineract-tax',
'fineract-loan',
'fineract-savings',
'fineract-report',
diff --git a/fineract-charge/dependencies.gradle b/fineract-charge/dependencies.gradle
index bd2a158..2da6075 100644
--- a/fineract-charge/dependencies.gradle
+++ b/fineract-charge/dependencies.gradle
@@ -25,6 +25,7 @@
// implementation dependencies are directly used (compiled against) in src/main (and src/test)
//
implementation(project(path: ':fineract-core'))
+ implementation(project(path: ':fineract-tax'))
implementation(
'org.springframework.boot:spring-boot-starter-web',
diff --git a/fineract-charge/src/main/resources/jpa/charge/persistence.xml b/fineract-charge/src/main/resources/jpa/charge/persistence.xml
index d3ba0d4..9d04d96 100644
--- a/fineract-charge/src/main/resources/jpa/charge/persistence.xml
+++ b/fineract-charge/src/main/resources/jpa/charge/persistence.xml
@@ -55,10 +55,6 @@
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</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>
- <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRate</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod</class>
<class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
@@ -68,6 +64,11 @@
<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 Tax module -->
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.weaving" value="static" />
diff --git a/fineract-loan/dependencies.gradle b/fineract-loan/dependencies.gradle
index f314fbc..f7c4f67 100644
--- a/fineract-loan/dependencies.gradle
+++ b/fineract-loan/dependencies.gradle
@@ -28,6 +28,7 @@
implementation(project(path: ':fineract-accounting'))
implementation(project(path: ':fineract-charge'))
implementation(project(path: ':fineract-rates'))
+ implementation(project(path: ':fineract-tax'))
implementation(
'org.springframework.boot:spring-boot-starter-web',
diff --git a/fineract-loan/src/main/resources/jpa/loan/persistence.xml b/fineract-loan/src/main/resources/jpa/loan/persistence.xml
index a902806..eeea8dd 100644
--- a/fineract-loan/src/main/resources/jpa/loan/persistence.xml
+++ b/fineract-loan/src/main/resources/jpa/loan/persistence.xml
@@ -55,10 +55,6 @@
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</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>
- <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRate</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod</class>
<class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
@@ -70,6 +66,11 @@
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
<!-- Fineract Charge module -->
<class>org.apache.fineract.portfolio.charge.domain.Charge</class>
+ <!-- Fineract Tax module -->
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.weaving" value="static" />
diff --git a/fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml b/fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml
index 8fa03a7..24ff3ee 100644
--- a/fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml
+++ b/fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml
@@ -55,10 +55,6 @@
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</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>
- <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRate</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod</class>
<class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
@@ -131,6 +127,11 @@
<class>org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping</class>
<class>org.apache.fineract.accounting.rule.domain.AccountingRule</class>
<class>org.apache.fineract.accounting.rule.domain.AccountingTagRule</class>
+ <!-- Fineract Tax module -->
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</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 ad0a2a3..2d8dfd8 100644
--- a/fineract-provider/dependencies.gradle
+++ b/fineract-provider/dependencies.gradle
@@ -35,6 +35,7 @@
implementation(project(path: ':fineract-document'))
implementation(project(path: ':fineract-progressive-loan'))
implementation(project(path: ':fineract-report'))
+ implementation(project(path: ':fineract-tax'))
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
diff --git a/fineract-provider/src/main/resources/jpa/persistence.xml b/fineract-provider/src/main/resources/jpa/persistence.xml
index 0b6d0ba..f2eb077 100644
--- a/fineract-provider/src/main/resources/jpa/persistence.xml
+++ b/fineract-provider/src/main/resources/jpa/persistence.xml
@@ -55,10 +55,6 @@
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</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>
- <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRate</class>
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod</class>
<class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
@@ -153,6 +149,11 @@
<class>org.apache.fineract.infrastructure.documentmanagement.domain.Document</class>
<!-- Fineract Charge module -->
<class>org.apache.fineract.portfolio.charge.domain.Charge</class>
+ <!-- Fineract Tax module -->
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</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 dac3f7a..c4dd82a 100644
--- a/fineract-savings/dependencies.gradle
+++ b/fineract-savings/dependencies.gradle
@@ -28,6 +28,7 @@
implementation(project(path: ':fineract-accounting'))
implementation(project(path: ':fineract-charge'))
implementation(project(path: ':fineract-rates'))
+ implementation(project(path: ':fineract-tax'))
implementation(
'org.springframework.boot:spring-boot-starter-web',
diff --git a/fineract-savings/src/main/resources/jpa/savings/persistence.xml b/fineract-savings/src/main/resources/jpa/savings/persistence.xml
index 0c3e741..fcd1b4a 100644
--- a/fineract-savings/src/main/resources/jpa/savings/persistence.xml
+++ b/fineract-savings/src/main/resources/jpa/savings/persistence.xml
@@ -52,10 +52,6 @@
<class>org.apache.fineract.portfolio.fund.domain.Fund</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>
- <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
- <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
<class>org.apache.fineract.portfolio.calendar.domain.CalendarHistory</class>
<class>org.apache.fineract.portfolio.calendar.domain.CalendarInstance</class>
@@ -65,6 +61,11 @@
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
<!-- Fineract Charge module -->
<class>org.apache.fineract.portfolio.charge.domain.Charge</class>
+ <!-- Fineract Tax module -->
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.weaving" value="static" />
diff --git a/fineract-tax/build.gradle b/fineract-tax/build.gradle
new file mode 100644
index 0000000..1d0844d
--- /dev/null
+++ b/fineract-tax/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 Taxes'
+
+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/taxes/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-tax/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-tax/dependencies.gradle b/fineract-tax/dependencies.gradle
new file mode 100644
index 0000000..bd2a158
--- /dev/null
+++ b/fineract-tax/dependencies.gradle
@@ -0,0 +1,74 @@
+/**
+ * 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.
+ */
+
+dependencies {
+ // Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'.
+ // Note that we never use 'api', because Fineract at least currently is a simple monolithic application ("WAR"), not a library.
+ // We also (normally should have) no need to ever use 'compileOnly'.
+
+ // implementation dependencies are directly used (compiled against) in src/main (and src/test)
+ //
+ implementation(project(path: ':fineract-core'))
+
+ implementation(
+ 'org.springframework.boot:spring-boot-starter-web',
+ 'org.springframework.boot:spring-boot-starter-security',
+ 'jakarta.ws.rs:jakarta.ws.rs-api',
+ 'org.glassfish.jersey.media:jersey-media-multipart',
+
+ 'com.google.guava:guava',
+ 'com.google.code.gson:gson',
+
+ 'org.apache.commons:commons-lang3',
+
+ 'com.jayway.jsonpath:json-path',
+
+ 'com.github.spotbugs:spotbugs-annotations',
+ 'io.swagger.core.v3:swagger-annotations-jakarta',
+
+ 'com.squareup.retrofit2:converter-gson',
+
+ 'org.springdoc:springdoc-openapi-starter-webmvc-ui',
+ 'org.mapstruct:mapstruct',
+
+ 'io.github.resilience4j:resilience4j-spring-boot3',
+ 'org.apache.httpcomponents:httpcore',
+ )
+ compileOnly 'org.projectlombok:lombok'
+ annotationProcessor 'org.projectlombok:lombok'
+ annotationProcessor 'org.mapstruct:mapstruct-processor'
+ implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
+ exclude group: 'org.hibernate'
+ }
+ implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
+ exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
+ }
+ // testCompile dependencies are ONLY used in src/test, not src/main.
+ // Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
+ //
+ testImplementation( 'io.github.classgraph:classgraph' )
+ testImplementation ('org.springframework.boot:spring-boot-starter-test') {
+ exclude group: 'com.jayway.jsonpath', module: 'json-path'
+ exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
+ exclude group: 'jakarta.activation'
+ exclude group: 'javax.activation'
+ exclude group: 'org.skyscreamer'
+ }
+ testImplementation ('org.mockito:mockito-inline')
+}
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java b/fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java
rename to fineract-tax/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java
diff --git a/fineract-tax/src/main/resources/jpa/taxes/persistence.xml b/fineract-tax/src/main/resources/jpa/taxes/persistence.xml
new file mode 100644
index 0000000..d3ba0d4
--- /dev/null
+++ b/fineract-tax/src/main/resources/jpa/taxes/persistence.xml
@@ -0,0 +1,76 @@
+<?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.
+
+-->
+
+
+<persistence version="2.0"
+ xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+
+ <!-- This file is only used for static weaving, nothing more. -->
+ <!-- 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>
+ <class>org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom</class>
+ <class>org.apache.fineract.infrastructure.codes.domain.Code</class>
+ <class>org.apache.fineract.infrastructure.codes.domain.CodeValue</class>
+ <class>org.apache.fineract.infrastructure.documentmanagement.domain.Image</class>
+ <class>org.apache.fineract.organisation.staff.domain.Staff</class>
+ <class>org.apache.fineract.organisation.office.domain.Office</class>
+ <class>org.apache.fineract.organisation.office.domain.OrganisationCurrency</class>
+ <class>org.apache.fineract.organisation.monetary.domain.ApplicationCurrency</class>
+ <class>org.apache.fineract.organisation.holiday.domain.Holiday</class>
+ <class>org.apache.fineract.organisation.workingdays.domain.WorkingDays</class>
+ <class>org.apache.fineract.portfolio.group.domain.Group</class>
+ <class>org.apache.fineract.portfolio.group.domain.GroupLevel</class>
+ <class>org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory</class>
+ <class>org.apache.fineract.portfolio.group.domain.GroupRole</class>
+ <class>org.apache.fineract.portfolio.client.domain.Client</class>
+ <class>org.apache.fineract.portfolio.client.domain.ClientIdentifier</class>
+ <class>org.apache.fineract.portfolio.rate.domain.Rate</class>
+ <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.paymenttype.domain.PaymentType</class>
+ <class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
+ <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
+ <class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRate</class>
+ <class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod</class>
+ <class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
+ <class>org.apache.fineract.portfolio.calendar.domain.CalendarHistory</class>
+ <class>org.apache.fineract.portfolio.calendar.domain.CalendarInstance</class>
+ <class>org.apache.fineract.useradministration.domain.AppUser</class>
+ <class>org.apache.fineract.useradministration.domain.Role</class>
+ <class>org.apache.fineract.useradministration.domain.Permission</class>
+ <class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
+ <exclude-unlisted-classes>false</exclude-unlisted-classes>
+ <properties>
+ <property name="eclipselink.weaving" value="static" />
+ </properties>
+ </persistence-unit>
+</persistence>
diff --git a/integration-tests/dependencies.gradle b/integration-tests/dependencies.gradle
index 2eb0d59..2362079 100644
--- a/integration-tests/dependencies.gradle
+++ b/integration-tests/dependencies.gradle
@@ -27,6 +27,7 @@
project(path: ':fineract-investor', configuration: 'runtimeElements'),
project(path: ':fineract-charge', configuration: 'runtimeElements'),
project(path: ':fineract-rates', configuration: 'runtimeElements'),
+ project(path: ':fineract-tax', configuration: 'runtimeElements'),
project(path: ':fineract-loan', configuration: 'runtimeElements'),
project(path: ':fineract-savings', configuration: 'runtimeElements'),
project(path: ':fineract-provider', configuration: 'runtimeElements'),
diff --git a/settings.gradle b/settings.gradle
index ca2a485..569d60c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -56,6 +56,7 @@
include ':fineract-investor'
include ':fineract-rates'
include ':fineract-charge'
+include ':fineract-tax'
include ':fineract-loan'
include ':fineract-savings'
include ':fineract-report'