diff --git a/build.gradle b/build.gradle index 856217886..cf6a56916 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,7 @@ buildscript { 'fineract-core', 'fineract-provider', 'fineract-investor', + 'fineract-loan', 'integration-tests', 'twofactor-tests', 'oauth2-tests', @@ -42,7 +43,8 @@ buildscript { 'fineract-avro-schemas', 'fineract-client', 'fineract-provider', - 'fineract-investor' + 'fineract-investor', + 'fineract-loan' ].contains(it.name) } npmRepository = 'https://npm.pkg.github.com' diff --git a/custom/acme/event/externalevent/dependencies.gradle b/custom/acme/event/externalevent/dependencies.gradle index b020fa967..8ca9727e6 100644 --- a/custom/acme/event/externalevent/dependencies.gradle +++ b/custom/acme/event/externalevent/dependencies.gradle @@ -19,6 +19,7 @@ dependencies { implementation(project(':fineract-core')) + implementation(project(':fineract-loan')) implementation(project(':fineract-provider')) implementation('org.springframework.boot:spring-boot-starter-data-jpa') } diff --git a/custom/acme/loan/cob/dependencies.gradle b/custom/acme/loan/cob/dependencies.gradle index b020fa967..8ca9727e6 100644 --- a/custom/acme/loan/cob/dependencies.gradle +++ b/custom/acme/loan/cob/dependencies.gradle @@ -19,6 +19,7 @@ dependencies { implementation(project(':fineract-core')) + implementation(project(':fineract-loan')) implementation(project(':fineract-provider')) implementation('org.springframework.boot:spring-boot-starter-data-jpa') } diff --git a/custom/acme/loan/job/dependencies.gradle b/custom/acme/loan/job/dependencies.gradle index b77475517..60b496193 100644 --- a/custom/acme/loan/job/dependencies.gradle +++ b/custom/acme/loan/job/dependencies.gradle @@ -19,6 +19,7 @@ dependencies { implementation(project(':fineract-core')) + implementation(project(':fineract-loan')) implementation(project(':fineract-provider')) implementation('org.springframework.batch:spring-batch-integration') implementation('org.springframework.boot:spring-boot-starter-data-jpa') diff --git a/custom/acme/loan/processor/dependencies.gradle b/custom/acme/loan/processor/dependencies.gradle index edd2e139b..5db9e6b15 100644 --- a/custom/acme/loan/processor/dependencies.gradle +++ b/custom/acme/loan/processor/dependencies.gradle @@ -19,5 +19,6 @@ dependencies { implementation(project(':fineract-core')) + implementation(project(':fineract-loan')) implementation(project(':fineract-provider')) } diff --git a/custom/acme/loan/starter/dependencies.gradle b/custom/acme/loan/starter/dependencies.gradle index 1f134d647..9832dd16f 100644 --- a/custom/acme/loan/starter/dependencies.gradle +++ b/custom/acme/loan/starter/dependencies.gradle @@ -19,6 +19,7 @@ dependencies { implementation(project(':fineract-core')) + implementation(project(':fineract-loan')) implementation(project(':fineract-provider')) implementation(project(':custom:acme:loan:cob')) implementation(project(':custom:acme:loan:processor')) diff --git a/fineract-core/build.gradle b/fineract-core/build.gradle index f725dc284..14ffa8653 100644 --- a/fineract-core/build.gradle +++ b/fineract-core/build.gradle @@ -22,6 +22,25 @@ apply plugin: 'java' apply plugin: 'eclipse' check.dependsOn('cucumber') +compileJava.doLast { + def mainSS = sourceSets.main + def source = mainSS.java.classesDirectory.get() + copy { + from file("src/main/resources/jpa/core/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, '-classpath', sourceSets.main.runtimeClasspath, source, target + classpath sourceSets.main.runtimeClasspath + } + delete { + delete "${source}/META-INF/persistence.xml" + } +} + configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingRuleType.java b/fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingRuleType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingRuleType.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingRuleType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountJsonInputParams.java b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountJsonInputParams.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountJsonInputParams.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountJsonInputParams.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountUsage.java b/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountUsage.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountUsage.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountUsage.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryType.java b/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryType.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/ChargeToGLAccountMapper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/data/PaymentTypeToGLAccountMapper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/PortfolioProductType.java b/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/PortfolioProductType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/PortfolioProductType.java rename to fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/PortfolioProductType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStep.java b/fineract-core/src/main/java/org/apache/fineract/cob/COBBusinessStep.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStep.java rename to fineract-core/src/main/java/org/apache/fineract/cob/COBBusinessStep.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/CodeConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeValueData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/SystemDefinedCodeCannotBeChangedException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/exception/SystemDefinedCodeCannotBeChangedException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/exception/SystemDefinedCodeCannotBeChangedException.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/codes/exception/SystemDefinedCodeCannotBeChangedException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/TemporaryConfigurationServiceContainer.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/service/TemporaryConfigurationServiceContainer.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/TemporaryConfigurationServiceContainer.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/service/TemporaryConfigurationServiceContainer.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/LocalDateInterval.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/LocalDateInterval.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/LocalDateInterval.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/domain/LocalDateInterval.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformDomainRuleException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformDomainRuleException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformDomainRuleException.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformDomainRuleException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformResourceNotFoundException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/GeneralPlatformDomainRuleException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/GeneralPlatformDomainRuleException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/GeneralPlatformDomainRuleException.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/GeneralPlatformDomainRuleException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/exception/PlatformDataIntegrityException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnHeaderData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnHeaderData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnHeaderData.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnHeaderData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnValueData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnValueData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnValueData.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetColumnValueData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/StorageType.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/StorageType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/StorageType.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/StorageType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/NoAuthorizationException.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/security/exception/NoAuthorizationException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/NoAuthorizationException.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/security/exception/NoAuthorizationException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/RandomPasswordGenerator.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/security/service/RandomPasswordGenerator.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/RandomPasswordGenerator.java rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/security/service/RandomPasswordGenerator.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/api/HolidayApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/api/HolidayApiConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/api/HolidayApiConstants.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/holiday/api/HolidayApiConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java b/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayStatusType.java b/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayStatusType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayStatusType.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/HolidayStatusType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java b/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/holiday/domain/RescheduleType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java b/fineract-core/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/holiday/service/HolidayUtil.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/data/CurrencyData.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/data/CurrencyData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/data/CurrencyData.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/monetary/data/CurrencyData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MonetaryCurrency.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/MonetaryCurrency.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MonetaryCurrency.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/MonetaryCurrency.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/Money.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/Money.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/Money.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/Money.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/monetary/domain/MoneyHelper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/data/OfficeData.java b/fineract-core/src/main/java/org/apache/fineract/organisation/office/data/OfficeData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/office/data/OfficeData.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/office/data/OfficeData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java b/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/Office.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/Office.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java b/fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/CannotUpdateOfficeWithParentOfficeSameAsSelf.java b/fineract-core/src/main/java/org/apache/fineract/organisation/office/exception/CannotUpdateOfficeWithParentOfficeSameAsSelf.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/CannotUpdateOfficeWithParentOfficeSameAsSelf.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/office/exception/CannotUpdateOfficeWithParentOfficeSameAsSelf.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/RootOfficeParentCannotBeUpdated.java b/fineract-core/src/main/java/org/apache/fineract/organisation/office/exception/RootOfficeParentCannotBeUpdated.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/office/exception/RootOfficeParentCannotBeUpdated.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/office/exception/RootOfficeParentCannotBeUpdated.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java b/fineract-core/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java b/fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/StaffEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/StaffEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/StaffEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/StaffEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/StaffOrganisationalRoleType.java b/fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/StaffOrganisationalRoleType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/StaffOrganisationalRoleType.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/staff/domain/StaffOrganisationalRoleType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/api/WorkingDaysApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/api/WorkingDaysApiConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/api/WorkingDaysApiConstants.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/api/WorkingDaysApiConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/AdjustedDateDetailsDTO.java b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/data/AdjustedDateDetailsDTO.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/AdjustedDateDetailsDTO.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/data/AdjustedDateDetailsDTO.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/RepaymentRescheduleType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java b/fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java rename to fineract-core/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysUtil.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/PortfolioAccountType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/account/PortfolioAccountType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/account/PortfolioAccountType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/account/PortfolioAccountType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/account/data/PortfolioAccountData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/account/service/AccountTransfersReadPlatformService.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsAccountSummaryData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/domain/AccountType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/accountdetails/domain/AccountType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/domain/AccountType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/accountdetails/domain/AccountType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/address/data/AddressData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/CalendarConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/CalendarConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/CalendarConstants.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/CalendarConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarHistoryDataWrapper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarEntityType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarEntityType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarEntityType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarEntityType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarFrequencyType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRemindBy.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRemindBy.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRemindBy.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarRemindBy.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarWeekDaysType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarWeekDaysType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarWeekDaysType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarWeekDaysType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarDateException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarDateException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarDateException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarDateException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarParameterUpdateNotSupportedException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarParameterUpdateNotSupportedException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarParameterUpdateNotSupportedException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/exception/CalendarParameterUpdateNotSupportedException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/calendar/service/CalendarUtils.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/api/ChargesApiConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java similarity index 85% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java index a018cc604..8696e2d6a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java @@ -20,7 +20,6 @@ package org.apache.fineract.portfolio.charge.data; import java.io.Serializable; import java.math.BigDecimal; -import java.time.LocalDate; import java.time.MonthDay; import java.util.Collection; import java.util.List; @@ -28,13 +27,9 @@ import java.util.Map; import lombok.Getter; import org.apache.fineract.accounting.glaccount.data.GLAccountData; import org.apache.fineract.infrastructure.core.data.EnumOptionData; -import org.apache.fineract.infrastructure.core.domain.ExternalId; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.portfolio.charge.domain.ChargeTimeType; -import org.apache.fineract.portfolio.loanaccount.data.LoanChargeData; import org.apache.fineract.portfolio.paymenttype.data.PaymentTypeData; -import org.apache.fineract.portfolio.savings.data.SavingsAccountChargeData; -import org.apache.fineract.portfolio.shareaccounts.data.ShareAccountChargeData; import org.apache.fineract.portfolio.tax.data.TaxGroupData; /** @@ -301,62 +296,6 @@ public final class ChargeData implements Comparable, Serializable { return obj.id.compareTo(this.id); } - public LoanChargeData toLoanChargeData() { - - BigDecimal percentage = null; - if (this.chargeCalculationType.getId() == 2) { - percentage = this.amount; - } - - return LoanChargeData.newLoanChargeDetails(this.id, this.name, this.currency, this.amount, percentage, this.chargeTimeType, - this.chargeCalculationType, this.penalty, this.chargePaymentMode, this.minCap, this.maxCap, ExternalId.empty()); - } - - public SavingsAccountChargeData toSavingsAccountChargeData() { - - final Long savingsChargeId = null; - final Long savingsAccountId = null; - final BigDecimal amountPaid = BigDecimal.ZERO; - final BigDecimal amountWaived = BigDecimal.ZERO; - final BigDecimal amountWrittenOff = BigDecimal.ZERO; - final BigDecimal amountOutstanding = BigDecimal.ZERO; - final BigDecimal percentage = BigDecimal.ZERO; - final BigDecimal amountPercentageAppliedTo = BigDecimal.ZERO; - final Collection chargeOptions = null; - final LocalDate dueAsOfDate = null; - final Boolean isActive = null; - final Boolean isFreeWithdrawal = null; - final Integer freeWithdrawalChargeFrequency = null; - final Integer restartFrequency = null; - final Integer restartFrequencyEnum = null; - - final LocalDate inactivationDate = null; - - return SavingsAccountChargeData.instance(savingsChargeId, this.id, savingsAccountId, this.name, this.currency, this.amount, - amountPaid, amountWaived, amountWrittenOff, amountOutstanding, this.chargeTimeType, dueAsOfDate, this.chargeCalculationType, - percentage, amountPercentageAppliedTo, chargeOptions, this.penalty, this.feeOnMonthDay, this.feeInterval, isActive, - isFreeWithdrawal, freeWithdrawalChargeFrequency, restartFrequency, restartFrequencyEnum, inactivationDate); - } - - public ShareAccountChargeData toShareAccountChargeData() { - - final Long shareChargeId = null; - final Long shareAccountId = null; - final BigDecimal amountPaid = BigDecimal.ZERO; - final BigDecimal amountWaived = BigDecimal.ZERO; - final BigDecimal amountWrittenOff = BigDecimal.ZERO; - final BigDecimal amountOutstanding = BigDecimal.ZERO; - final BigDecimal percentage = BigDecimal.ZERO; - final BigDecimal amountPercentageAppliedTo = BigDecimal.ZERO; - final Collection chargeOptions = null; - final Boolean isActive = null; - final BigDecimal chargeAmountOrPercentage = BigDecimal.ZERO; - - return new ShareAccountChargeData(shareChargeId, this.id, shareAccountId, this.name, this.currency, this.amount, amountPaid, - amountWaived, amountWrittenOff, amountOutstanding, this.chargeTimeType, this.chargeCalculationType, percentage, - amountPercentageAppliedTo, chargeOptions, isActive, chargeAmountOrPercentage); - } - public boolean isOverdueInstallmentCharge() { boolean isOverdueInstallmentCharge = false; if (this.chargeTimeType != null) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeAppliesTo.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeCalculationType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeDueAtDisbursementCannotBePenaltyException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeParameterUpdateNotSupportedException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeParameterUpdateNotSupportedException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeParameterUpdateNotSupportedException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeParameterUpdateNotSupportedException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeAddedException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientCollateralManagementData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientCollateralManagementData.java similarity index 53% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientCollateralManagementData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientCollateralManagementData.java index a6f51225f..e0f58d4ba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientCollateralManagementData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientCollateralManagementData.java @@ -21,34 +21,18 @@ package org.apache.fineract.portfolio.client.data; import java.io.Serializable; import java.math.BigDecimal; import lombok.Getter; -import org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement; +import lombok.RequiredArgsConstructor; @Getter +@RequiredArgsConstructor public final class ClientCollateralManagementData implements Serializable { - private final BigDecimal quantity; private final Long id; + private final String name; + private final BigDecimal quantity; private final BigDecimal pctToBase; private final BigDecimal unitPrice; private final BigDecimal total; private final BigDecimal totalCollateral; - private final String name; - private ClientCollateralManagementData(final BigDecimal quantity, final Long id, final BigDecimal pctToBase, final BigDecimal unitPrice, - final BigDecimal total, final BigDecimal totalCollateral, final String name) { - this.id = id; - this.pctToBase = pctToBase; - this.total = total; - this.totalCollateral = totalCollateral; - this.unitPrice = unitPrice; - this.quantity = quantity; - this.name = name; - } - - public static ClientCollateralManagementData setCollateralValues(final ClientCollateralManagement clientCollateralManagements, - final BigDecimal total, final BigDecimal totalCollateral) { - return new ClientCollateralManagementData(clientCollateralManagements.getQuantity(), clientCollateralManagements.getId(), - clientCollateralManagements.getCollaterals().getPctToBase(), clientCollateralManagements.getCollaterals().getBasePrice(), - total, totalCollateral, clientCollateralManagements.getCollaterals().getName()); - } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientNonPersonData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientTimelineData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientTimelineData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientTimelineData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/data/ClientTimelineData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java similarity index 98% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java index 6cca1cc6a..1e913b82c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; -import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -32,7 +31,6 @@ import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Transient; @@ -52,7 +50,6 @@ import org.apache.fineract.infrastructure.security.service.RandomPasswordGenerat import org.apache.fineract.organisation.office.domain.Office; import org.apache.fineract.organisation.staff.domain.Staff; import org.apache.fineract.portfolio.client.api.ClientApiConstants; -import org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement; import org.apache.fineract.portfolio.group.domain.Group; import org.apache.fineract.useradministration.domain.AppUser; @@ -223,9 +220,6 @@ public class Client extends AbstractAuditableWithUTCDateTimeCustom { @Column(name = "proposed_transfer_date") private LocalDate proposedTransferDate; - @OneToMany(mappedBy = "client", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) - private Set clientCollateralManagements = new HashSet<>(); - public static Client instance(final AppUser currentUser, final ClientStatus status, final Office office, final Group clientParentGroup, final String accountNo, final String firstname, final String middlename, final String lastname, final String fullname, final LocalDate activationDate, final LocalDate officeJoiningDate, final ExternalId externalId, final String mobileNo, diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/ClientStatus.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/LegalForm.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/ClientCollateralManagementData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/ClientCollateralManagementData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/ClientCollateralManagementData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/ClientCollateralManagementData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/LoanTransactionData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/LoanTransactionData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/LoanTransactionData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/collateralmanagement/data/LoanTransactionData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/PeriodFrequencyType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyBucket.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/delinquency/domain/DelinquencyRange.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/api/GroupingTypesApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/api/GroupingTypesApiConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/api/GroupingTypesApiConstants.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/api/GroupingTypesApiConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/GroupGeneralData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupRoleData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/GroupRoleData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupRoleData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/GroupRoleData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/data/GroupTimelineData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java similarity index 99% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java index 991ce4ba7..f44341149 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java @@ -54,7 +54,6 @@ import org.apache.fineract.portfolio.group.exception.ClientNotInGroupException; import org.apache.fineract.portfolio.group.exception.GroupExistsInCenterException; import org.apache.fineract.portfolio.group.exception.GroupNotExistsInCenterException; import org.apache.fineract.portfolio.group.exception.InvalidGroupStateTransitionException; -import org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount; import org.apache.fineract.useradministration.domain.AppUser; @Entity @@ -137,9 +136,6 @@ public final class Group extends AbstractPersistableCustom { @OneToMany(mappedBy = "group", cascade = CascadeType.REMOVE) private Set groupRole; - @OneToMany(mappedBy = "group") - private List glimLoan; - // JPA default constructor for entity Group() { this.name = null; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeStatus.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeStatus.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeStatus.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/GroupingTypeStatus.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/ClientExistInGroupException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/ClientExistInGroupException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/ClientExistInGroupException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/ClientExistInGroupException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/ClientNotInGroupException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/ClientNotInGroupException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/ClientNotInGroupException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/ClientNotInGroupException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupExistsInCenterException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/GroupExistsInCenterException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupExistsInCenterException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/GroupExistsInCenterException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotExistsInCenterException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotExistsInCenterException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotExistsInCenterException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/GroupNotExistsInCenterException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/InvalidGroupStateTransitionException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/InvalidGroupStateTransitionException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/group/exception/InvalidGroupStateTransitionException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/group/exception/InvalidGroupStateTransitionException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/PaymentDetailConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/PaymentDetailConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/PaymentDetailConstants.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/PaymentDetailConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/data/PaymentDetailData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/data/PaymentDetailData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/data/PaymentDetailData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/data/PaymentDetailData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/data/PaymentTypeData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/data/PaymentTypeData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/data/PaymentTypeData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/data/PaymentTypeData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/rate/domain/RateAppliesTo.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnClosureType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnClosureType.java similarity index 96% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnClosureType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnClosureType.java index 72c5e4c41..aded4a028 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnClosureType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnClosureType.java @@ -20,8 +20,6 @@ package org.apache.fineract.portfolio.savings; import java.util.ArrayList; import java.util.List; -import org.apache.fineract.portfolio.savings.domain.FixedDepositAccount; -import org.apache.fineract.portfolio.savings.domain.RecurringDepositAccount; /** * An enumeration of different options available on account closure {@link FixedDepositAccount} & diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnHoldTransactionType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnHoldTransactionType.java similarity index 97% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnHoldTransactionType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnHoldTransactionType.java index 5d5d11adc..816d22d4c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnHoldTransactionType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnHoldTransactionType.java @@ -18,8 +18,6 @@ */ package org.apache.fineract.portfolio.savings; -import org.apache.fineract.portfolio.savings.domain.SavingsAccount; - /** * An enumeration of on hold transactions that can occur on a {@link SavingsAccount}. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountType.java similarity index 98% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountType.java index 9a1218a8f..200d03506 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountType.java @@ -19,7 +19,6 @@ package org.apache.fineract.portfolio.savings; import org.apache.commons.lang3.StringUtils; -import org.apache.fineract.portfolio.savings.domain.SavingsAccount; /** * An enumeration of different transactions that can occur on a {@link SavingsAccount}. diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/PreClosurePenalInterestOnType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/PreClosurePenalInterestOnType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/PreClosurePenalInterestOnType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/PreClosurePenalInterestOnType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/RecurringDepositType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/RecurringDepositType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/RecurringDepositType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/RecurringDepositType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java similarity index 99% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java index 39fed1926..fb5997880 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsAccountTransactionType.java @@ -18,8 +18,6 @@ */ package org.apache.fineract.portfolio.savings; -import org.apache.fineract.portfolio.savings.domain.SavingsAccount; - /** * An enumeration of different transactions that can occur on a {@link SavingsAccount}. */ diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsCompoundingInterestPeriodType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsCompoundingInterestPeriodType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsCompoundingInterestPeriodType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsCompoundingInterestPeriodType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationDaysInYearType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsInterestCalculationType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsPeriodFrequencyType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsPeriodFrequencyType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsPeriodFrequencyType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsPeriodFrequencyType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsPostingInterestPeriodType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsPostingInterestPeriodType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsPostingInterestPeriodType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsPostingInterestPeriodType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsWithdrawalFeesType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsWithdrawalFeesType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsWithdrawalFeesType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/SavingsWithdrawalFeesType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountApplicationTimelineData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountApplicationTimelineData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountApplicationTimelineData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountApplicationTimelineData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java similarity index 99% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java index 7791c7272..f24513978 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java @@ -40,7 +40,7 @@ import org.apache.fineract.portfolio.charge.data.ChargeData; import org.apache.fineract.portfolio.client.data.ClientData; import org.apache.fineract.portfolio.group.data.GroupGeneralData; import org.apache.fineract.portfolio.savings.DepositAccountType; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionSummaryWrapper; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionDataSummaryWrapper; import org.apache.fineract.portfolio.savings.domain.SavingsHelper; import org.apache.fineract.portfolio.tax.data.TaxGroupData; @@ -127,7 +127,7 @@ public final class SavingsAccountData implements Serializable { private transient Integer rowIndex; private transient LocalDate startInterestCalculationDate; private LocalDate submittedOnDate; - private transient SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper; + private transient SavingsAccountTransactionDataSummaryWrapper savingsAccountTransactionSummaryWrapper; private transient SavingsHelper savingsHelper; private transient SavingsAccountSummaryData savingsAccountSummaryData; @@ -300,7 +300,7 @@ public final class SavingsAccountData implements Serializable { this.glAccountIdForInterestOnSavings = glAccountIdForInterestOnSavings; } - public void setHelpers(final SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper, + public void setHelpers(final SavingsAccountTransactionDataSummaryWrapper savingsAccountTransactionSummaryWrapper, final SavingsHelper savingsHelper) { this.savingsAccountTransactionSummaryWrapper = savingsAccountTransactionSummaryWrapper; this.savingsHelper = savingsHelper; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountStatusEnumData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountStatusEnumData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountStatusEnumData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountStatusEnumData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSubStatusEnumData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSubStatusEnumData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSubStatusEnumData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSubStatusEnumData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSummaryData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSummaryData.java similarity index 97% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSummaryData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSummaryData.java index babf3f2d9..aa2176244 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSummaryData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountSummaryData.java @@ -29,8 +29,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.organisation.monetary.domain.Money; import org.apache.fineract.portfolio.savings.SavingsAccountTransactionType; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionSummaryWrapper; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionDataSummaryWrapper; import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod; /** @@ -90,8 +89,9 @@ public class SavingsAccountSummaryData implements Serializable { return this.runningBalanceOnInterestPostingTillDate; } - public void updateSummaryWithPivotConfig(final CurrencyData currency, final SavingsAccountTransactionSummaryWrapper wrapper, - final SavingsAccountTransaction transaction, final List savingsAccountTransactions) { + public void updateSummaryWithPivotConfig(final CurrencyData currency, final SavingsAccountTransactionDataSummaryWrapper wrapper, + final SavingsAccountTransactionToUpdateSummary transaction, + final List savingsAccountTransactions) { if (transaction != null) { if (transaction.isReversalTransaction()) { @@ -241,7 +241,7 @@ public class SavingsAccountSummaryData implements Serializable { return map; } - public void updateSummary(final CurrencyData currency, final SavingsAccountTransactionSummaryWrapper wrapper, + public void updateSummary(final CurrencyData currency, final SavingsAccountTransactionDataSummaryWrapper wrapper, final List transactions) { this.totalDeposits = wrapper.calculateTotalDeposits(currency, transactions); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionToUpdateSummary.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionToUpdateSummary.java new file mode 100644 index 000000000..199110c82 --- /dev/null +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionToUpdateSummary.java @@ -0,0 +1,44 @@ +/** + * 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.savings.data; + +import java.math.BigDecimal; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public class SavingsAccountTransactionToUpdateSummary { + + private final BigDecimal amount; + private final int typeOf; + private final boolean isReversalTransaction; + private final boolean isDepositAndNotReversed; + private final boolean isDividendPayoutAndNotReversed; + private final boolean isWithdrawal; + private final boolean isNotReversed; + private final boolean isWithdrawalFeeAndNotReversed; + private final boolean isAnnualFeeAndNotReversed; + private final boolean isWaiveFeeChargeAndNotReversed; + private final boolean isWaivePenaltyChargeAndNotReversed; + private final boolean isFeeChargeAndNotReversed; + private final boolean isPenaltyChargeAndNotReversed; + private final boolean isOverdraftInterestAndNotReversed; + private final boolean isWithHoldTaxAndNotReversed; +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargesPaidByData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargesPaidByData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargesPaidByData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargesPaidByData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSubStatusEnum.java diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionDataSummaryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionDataSummaryWrapper.java new file mode 100644 index 000000000..2655c256a --- /dev/null +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionDataSummaryWrapper.java @@ -0,0 +1,145 @@ +/** + * 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.savings.domain; + +import java.math.BigDecimal; +import java.util.List; +import org.apache.fineract.organisation.monetary.data.CurrencyData; +import org.apache.fineract.organisation.monetary.domain.Money; +import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionData; +import org.springframework.stereotype.Component; + +/** + * A wrapper for dealing with side-effect free functionality related to a {@link SavingsAccount}'s + * {@link SavingsAccountTransaction}'s. + */ +@Component +public final class SavingsAccountTransactionDataSummaryWrapper { + + public BigDecimal calculateTotalDeposits(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isDepositAndNotReversed() || transaction.isDividendPayoutAndNotReversed()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalWithdrawals(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isWithdrawal() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalInterestPosted(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isInterestPostingAndNotReversed() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalWithdrawalFees(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isWithdrawalFeeAndNotReversed() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalAnnualFees(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isAnnualFeeAndNotReversed() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalFeesCharge(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isFeeChargeAndNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalFeesChargeWaived(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isWaiveFeeChargeAndNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalPenaltyCharge(final CurrencyData currency, final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isPenaltyChargeAndNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalPenaltyChargeWaived(final CurrencyData currency, + final List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isWaivePenaltyChargeAndNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalOverdraftInterest(CurrencyData currency, List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isOverdraftInterestAndNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } + + public BigDecimal calculateTotalWithholdTaxWithdrawal(CurrencyData currency, List transactions) { + Money total = Money.zero(currency); + for (final SavingsAccountTransactionData transaction : transactions) { + if (transaction.isWithHoldTaxAndNotReversed() && !transaction.isReversalTransaction()) { + total = total.plus(transaction.getAmount()); + } + } + return total.getAmountDefaultedToNullIfZero(); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsHelper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestHelper.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestHelper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestHelper.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestHelper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestValues.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestValues.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestValues.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundInterestValues.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/CompoundingPeriod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/EndOfDayBalance.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java similarity index 98% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java index 9fb422440..f65b7ce60 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java @@ -33,7 +33,6 @@ import org.apache.fineract.organisation.monetary.domain.Money; import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodType; import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType; import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionData; -import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction; public final class PostingPeriod { @@ -66,7 +65,7 @@ public final class PostingPeriod { private Integer financialYearBeginningMonth; public static PostingPeriod createFrom(final LocalDateInterval periodInterval, final Money periodStartingBalance, - final List orderedListOfTransactions, final MonetaryCurrency currency, + final List orderedListOfTransactions, final MonetaryCurrency currency, final SavingsCompoundingInterestPeriodType interestCompoundingPeriodType, final SavingsInterestCalculationType interestCalculationType, final BigDecimal interestRateAsFraction, final long daysInYear, final LocalDate upToInterestCalculationDate, Collection interestPostTransactions, boolean isInterestTransfer, @@ -85,7 +84,7 @@ public final class PostingPeriod { // isInterestTransfer boolean is to identify newly created transaction is // interest transfer public static PostingPeriod createFrom(final LocalDateInterval periodInterval, final Money periodStartingBalance, - final List orderedListOfTransactions, final MonetaryCurrency currency, + final List orderedListOfTransactions, final MonetaryCurrency currency, final SavingsCompoundingInterestPeriodType interestCompoundingPeriodType, final SavingsInterestCalculationType interestCalculationType, final BigDecimal interestRateAsFraction, final long daysInYear, final LocalDate upToInterestCalculationDate, Collection interestPostTransactions, boolean isInterestTransfer, @@ -98,7 +97,7 @@ public final class PostingPeriod { Money openingDayBalance = periodStartingBalance; Money closeOfDayBalance = openingDayBalance; - for (final SavingsAccountTransaction transaction : orderedListOfTransactions) { + for (final SavingsAccountTransactionDetailsForPostingPeriod transaction : orderedListOfTransactions) { if (transaction.fallsWithin(periodInterval)) { // the balance of the transaction falls entirely within this diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/SavingsAccountTransactionDetailsForPostingPeriod.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/SavingsAccountTransactionDetailsForPostingPeriod.java new file mode 100644 index 000000000..ce9a54650 --- /dev/null +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/SavingsAccountTransactionDetailsForPostingPeriod.java @@ -0,0 +1,136 @@ +/** + * 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.savings.domain.interest; + +import java.math.BigDecimal; +import java.time.LocalDate; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.apache.fineract.infrastructure.core.domain.LocalDateInterval; +import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; +import org.apache.fineract.organisation.monetary.domain.Money; + +@Getter +@RequiredArgsConstructor +public class SavingsAccountTransactionDetailsForPostingPeriod { + + private final Long id; + private final LocalDate transactionDate; + private final LocalDate endOfBalanceDate; + private final BigDecimal runningBalance; + private final BigDecimal amount; + private final MonetaryCurrency currency; + private final Integer balanceNumberOfDays; + private final boolean isDeposit; + private final boolean isWithdrawal; + private final boolean isAllowOverdraft; + private final boolean isChargeTransactionAndNotReversed; + private final boolean isDividendPayoutAndNotReversed; + + public boolean fallsWithin(final LocalDateInterval periodInterval) { + final LocalDateInterval balanceInterval = LocalDateInterval.create(getTransactionDate(), getEndOfBalanceDate()); + return periodInterval.contains(balanceInterval); + } + + public boolean spansAnyPortionOf(final LocalDateInterval periodInterval) { + final LocalDateInterval balanceInterval = LocalDateInterval.create(getTransactionDate(), getEndOfBalanceDate()); + return balanceInterval.containsPortionOf(periodInterval); + } + + public boolean occursOn(final LocalDate occursOnDate) { + return getTransactionDate().isEqual(occursOnDate); + } + + public EndOfDayBalance toEndOfDayBalance(final Money openingBalance) { + final MonetaryCurrency currency = openingBalance.getCurrency(); + Money endOfDayBalance = openingBalance.copy(); + if (isDeposit() || isDividendPayoutAndNotReversed()) { + endOfDayBalance = openingBalance.plus(getAmount(currency)); + } else if (isWithdrawal() || isChargeTransactionAndNotReversed()) { + + if (openingBalance.isGreaterThanZero() || isAllowOverdraft()) { + endOfDayBalance = openingBalance.minus(getAmount(currency)); + } else { + endOfDayBalance = Money.of(currency, this.runningBalance); + } + } + + return EndOfDayBalance.from(getTransactionDate(), openingBalance, endOfDayBalance, this.balanceNumberOfDays); + } + + public EndOfDayBalance toEndOfDayBalance(final LocalDateInterval periodInterval, final MonetaryCurrency currency) { + + final Money endOfDayBalance = Money.of(currency, this.runningBalance); + final Money openingBalance = endOfDayBalance; + + LocalDate balanceDate = periodInterval.startDate(); + + int numberOfDays = periodInterval.daysInPeriodInclusiveOfEndDate(); + if (periodInterval.contains(getTransactionDate())) { + balanceDate = getTransactionDate(); + final LocalDateInterval newInterval = LocalDateInterval.create(getTransactionDate(), periodInterval.endDate()); + numberOfDays = newInterval.daysInPeriodInclusiveOfEndDate(); + } + + return EndOfDayBalance.from(balanceDate, openingBalance, endOfDayBalance, numberOfDays); + } + + public EndOfDayBalance toEndOfDayBalanceBoundedBy(final Money openingBalance, final LocalDateInterval boundedBy) { + + final MonetaryCurrency currency = openingBalance.getCurrency(); + Money endOfDayBalance = openingBalance.copy(); + + int numberOfDaysOfBalance = this.balanceNumberOfDays; + + LocalDate balanceStartDate = getTransactionDate(); + LocalDate balanceEndDate = getEndOfBalanceDate(); + + if (boundedBy.startDate().isAfter(balanceStartDate)) { + balanceStartDate = boundedBy.startDate(); + final LocalDateInterval spanOfBalance = LocalDateInterval.create(balanceStartDate, balanceEndDate); + numberOfDaysOfBalance = spanOfBalance.daysInPeriodInclusiveOfEndDate(); + } else { + if (isDeposit() || isDividendPayoutAndNotReversed()) { + // endOfDayBalance = openingBalance.plus(getAmount(currency)); + // if (endOfDayBalance.isLessThanZero()) { + endOfDayBalance = endOfDayBalance.plus(getAmount(currency)); + // } + } else if (isWithdrawal() || isChargeTransactionAndNotReversed()) { + // endOfDayBalance = openingBalance.minus(getAmount(currency)); + if (endOfDayBalance.isGreaterThanZero() || isAllowOverdraft()) { + endOfDayBalance = endOfDayBalance.minus(getAmount(currency)); + } else { + endOfDayBalance = Money.of(currency, this.runningBalance); + } + } + } + + if (balanceEndDate.isAfter(boundedBy.endDate())) { + balanceEndDate = boundedBy.endDate(); + final LocalDateInterval spanOfBalance = LocalDateInterval.create(balanceStartDate, balanceEndDate); + numberOfDaysOfBalance = spanOfBalance.daysInPeriodInclusiveOfEndDate(); + } + + return EndOfDayBalance.from(balanceStartDate, openingBalance, endOfDayBalance, numberOfDaysOfBalance); + } + + private Money getAmount(MonetaryCurrency currency) { + return Money.of(currency, getAmount()); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/api/TaxApiConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentHistoryData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentHistoryData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentHistoryData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentHistoryData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxDetailsData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxDetailsData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxDetailsData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxDetailsData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupMappingsData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupMappingsData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupMappingsData.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupMappingsData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxMappingNotFoundException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/RoleData.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/data/RoleData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/data/RoleData.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/data/RoleData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/RolePermissionsData.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/data/RolePermissionsData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/data/RolePermissionsData.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/data/RolePermissionsData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Permission.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Permission.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Permission.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Permission.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Role.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/domain/Role.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserConstants.java b/fineract-core/src/main/java/org/apache/fineract/useradministration/service/AppUserConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserConstants.java rename to fineract-core/src/main/java/org/apache/fineract/useradministration/service/AppUserConstants.java diff --git a/fineract-core/src/main/resources/jpa/core/persistence.xml b/fineract-core/src/main/resources/jpa/core/persistence.xml new file mode 100644 index 000000000..105688157 --- /dev/null +++ b/fineract-core/src/main/resources/jpa/core/persistence.xml @@ -0,0 +1,37 @@ + + + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + false + + + + + diff --git a/fineract-doc/src/docs/en/chapters/custom/business-step.adoc b/fineract-doc/src/docs/en/chapters/custom/business-step.adoc index 060bcdc49..b8f5a7bc6 100644 --- a/fineract-doc/src/docs/en/chapters/custom/business-step.adoc +++ b/fineract-doc/src/docs/en/chapters/custom/business-step.adoc @@ -9,7 +9,7 @@ It very easy to add your own business steps to Fineract's default steps: .Business Step Interface [source,java] ---- -include::{rootdir}/fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStep.java[lines=19..] +include::{rootdir}/fineract-core/src/main/java/org/apache/fineract/cob/COBBusinessStep.java[lines=19..] ---- == Business Step Implementation @@ -33,4 +33,4 @@ As you can see this implementation is very simple and doesn't do much. There are include::{rootdir}/custom/acme/loan/cob/src/main/resources/db/custom-changelog/0001_acme_loan_cob.xml[lines=22..] ---- -NOTE: See also chapter about batch jobs in this documentation. \ No newline at end of file +NOTE: See also chapter about batch jobs in this documentation. diff --git a/fineract-doc/src/docs/en/chapters/custom/loan-transaction-processor.adoc b/fineract-doc/src/docs/en/chapters/custom/loan-transaction-processor.adoc index 175c50b64..6438712f3 100644 --- a/fineract-doc/src/docs/en/chapters/custom/loan-transaction-processor.adoc +++ b/fineract-doc/src/docs/en/chapters/custom/loan-transaction-processor.adoc @@ -29,7 +29,7 @@ include::{rootdir}/fineract-provider/src/main/resources/application.properties[l .Loan Transaction Processor Interface [source,java] ---- -include::{rootdir}/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java[lines=19..] +include::{rootdir}/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java[lines=19..] ---- .Custom Loan Transaction Processor Example @@ -88,7 +88,7 @@ IMPORTANT: It is preferable to use the processor code to lookup processor instan .Loan Transaction Processor Factory Implementation [source,java] ---- -include::{rootdir}/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleTransactionProcessorFactory.java[lines=19..] +include::{rootdir}/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleTransactionProcessorFactory.java[lines=19..] ---- This is the default factory auto-configuration. diff --git a/fineract-doc/src/docs/en/images/diag-28a77b45f78221c5cb0e8f5d27c6b34f.png b/fineract-doc/src/docs/en/images/diag-28a77b45f78221c5cb0e8f5d27c6b34f.png new file mode 100644 index 000000000..679badc96 Binary files /dev/null and b/fineract-doc/src/docs/en/images/diag-28a77b45f78221c5cb0e8f5d27c6b34f.png differ diff --git a/fineract-doc/src/docs/en/images/multiple-batch-instances-diagram.png b/fineract-doc/src/docs/en/images/multiple-batch-instances-diagram.png index c08085855..5a7fff070 100644 Binary files a/fineract-doc/src/docs/en/images/multiple-batch-instances-diagram.png and b/fineract-doc/src/docs/en/images/multiple-batch-instances-diagram.png differ diff --git a/fineract-doc/src/docs/en/images/multiple-read-instances-diagram.png b/fineract-doc/src/docs/en/images/multiple-read-instances-diagram.png index 7f6da087b..9cbef0c10 100644 Binary files a/fineract-doc/src/docs/en/images/multiple-read-instances-diagram.png and b/fineract-doc/src/docs/en/images/multiple-read-instances-diagram.png differ diff --git a/fineract-doc/src/docs/en/images/single-instance-diagram.png b/fineract-doc/src/docs/en/images/single-instance-diagram.png index bbcf7c2a9..791b02858 100644 Binary files a/fineract-doc/src/docs/en/images/single-instance-diagram.png and b/fineract-doc/src/docs/en/images/single-instance-diagram.png differ diff --git a/fineract-investor/build.gradle b/fineract-investor/build.gradle index d6e05c3fd..61fbb5a44 100644 --- a/fineract-investor/build.gradle +++ b/fineract-investor/build.gradle @@ -84,7 +84,7 @@ modernizer { // 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-core/bin/main") + sourceSets.main.java.outputDir = new File(rootProject.projectDir, "fineract-investor/bin/main") } eclipse { diff --git a/fineract-investor/dependencies.gradle b/fineract-investor/dependencies.gradle index c2c6fb8dd..0fbe2c09f 100644 --- a/fineract-investor/dependencies.gradle +++ b/fineract-investor/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-loan')) implementation( 'org.springframework.boot:spring-boot-starter-web', diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractAuditableWithUTCDateTimeCustom.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractAuditableWithUTCDateTimeCustom.java deleted file mode 100644 index cca8f6eeb..000000000 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractAuditableWithUTCDateTimeCustom.java +++ /dev/null @@ -1,99 +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.investor.domain; - -import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsConstants.CREATED_BY_DB_FIELD; -import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsConstants.CREATED_DATE_DB_FIELD; -import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsConstants.LAST_MODIFIED_BY_DB_FIELD; -import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsConstants.LAST_MODIFIED_DATE_DB_FIELD; - -import java.time.OffsetDateTime; -import java.util.Optional; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import org.apache.fineract.infrastructure.core.service.DateUtils; -import org.springframework.data.domain.Auditable; -import org.springframework.data.jpa.domain.AbstractAuditable; - -/** - * A custom copy of {@link AbstractAuditable} to override the column names used on database. It also uses OffsetDateTime - * for created and modified. The datetimes will be converted from tenant TZ to UTC before storing (automatically - * happens) and converted from System TZ to tenant TZ after fetching from DB - * - * Abstract base class for auditable entities. Stores the audit values in persistent fields. - */ -@MappedSuperclass -@Getter -@Setter -@NoArgsConstructor -public abstract class AbstractAuditableWithUTCDateTimeCustom extends AbstractPersistableCustom - implements Auditable { - - private static final long serialVersionUID = 141481953116476081L; - - @Column(name = CREATED_BY_DB_FIELD, nullable = false) - @Setter(onMethod = @__(@Override)) - private Long createdBy; - - @Column(name = CREATED_DATE_DB_FIELD, nullable = false) - @Setter(onMethod = @__(@Override)) - private OffsetDateTime createdDate; - - @Column(name = LAST_MODIFIED_BY_DB_FIELD, nullable = false) - @Setter(onMethod = @__(@Override)) - private Long lastModifiedBy; - - @Column(name = LAST_MODIFIED_DATE_DB_FIELD, nullable = false) - @Setter(onMethod = @__(@Override)) - private OffsetDateTime lastModifiedDate; - - @Override - public Optional getCreatedBy() { - return Optional.ofNullable(this.createdBy); - } - - @Override - public Optional getCreatedDate() { - if (this.createdDate == null) { - return Optional.empty(); - } else { - return Optional.of(this.createdDate - .withOffsetSameInstant(DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(this.createdDate.toInstant()))); - } - } - - @Override - public Optional getLastModifiedBy() { - return Optional.ofNullable(this.lastModifiedBy); - } - - @Override - public Optional getLastModifiedDate() { - if (this.lastModifiedDate == null) { - return Optional.empty(); - } else { - return Optional.of(this.lastModifiedDate - .withOffsetSameInstant(DateUtils.getDateTimeZoneOfTenant().getRules().getOffset(this.lastModifiedDate.toInstant()))); - } - } - -} diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractPersistableCustom.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractPersistableCustom.java deleted file mode 100644 index d9dfae037..000000000 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/AbstractPersistableCustom.java +++ /dev/null @@ -1,62 +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.investor.domain; - -import java.io.Serializable; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.MappedSuperclass; -import javax.persistence.PostLoad; -import javax.persistence.PrePersist; -import javax.persistence.Transient; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import org.springframework.data.domain.Persistable; - -/** - * This class is a copy paste from the fineract-provider module since EclipseLink not weaves the class properly if it's - * placed in the fineract-core module. - */ -@MappedSuperclass -@Getter -@Setter -@NoArgsConstructor -public abstract class AbstractPersistableCustom implements Persistable, Serializable { - - private static final long serialVersionUID = 9181640245194392646L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Getter(onMethod = @__(@Override)) - private Long id; - - @Transient - @Setter(value = AccessLevel.NONE) - @Getter(onMethod = @__(@Override)) - private boolean isNew = true; - - @PrePersist - @PostLoad - void markNotNew() { - this.isNew = false; - } -} diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java index 4f2422c78..bb2803f31 100644 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java +++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwner.java @@ -24,6 +24,7 @@ import javax.persistence.Table; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom; import org.apache.fineract.infrastructure.core.domain.ExternalId; @Getter diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java index 468c3dc22..618c11ecb 100644 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java +++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransfer.java @@ -27,6 +27,7 @@ import javax.persistence.Table; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom; import org.apache.fineract.infrastructure.core.domain.ExternalId; @Getter diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java index c0add21d2..f94683a24 100644 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java +++ b/fineract-investor/src/main/java/org/apache/fineract/investor/domain/ExternalAssetOwnerTransferLoanMapping.java @@ -27,6 +27,7 @@ import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom; @Getter @Setter diff --git a/fineract-investor/src/main/resources/jpa/investor/persistence.xml b/fineract-investor/src/main/resources/jpa/investor/persistence.xml index 105688157..f1c5a63c7 100644 --- a/fineract-investor/src/main/resources/jpa/investor/persistence.xml +++ b/fineract-investor/src/main/resources/jpa/investor/persistence.xml @@ -29,6 +29,43 @@ org.eclipse.persistence.jpa.PersistenceProvider + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom + org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.codes.domain.CodeValue + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.office.domain.OrganisationCurrency + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.organisation.workingdays.domain.WorkingDays + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.charge.domain.Charge + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.useradministration.domain.Permission + org.apache.fineract.useradministration.domain.AppUserClientMapping false diff --git a/fineract-loan/build.gradle b/fineract-loan/build.gradle new file mode 100644 index 000000000..588060d04 --- /dev/null +++ b/fineract-loan/build.gradle @@ -0,0 +1,108 @@ +/** + * 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 Loan' + +apply plugin: 'java' +apply plugin: 'eclipse' + +check.dependsOn('cucumber') + +compileJava.doLast { + def mainSS = sourceSets.main + def source = mainSS.java.classesDirectory.get() + copy { + from file("src/main/resources/jpa/loan/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, '-classpath', sourceSets.main.runtimeClasspath, 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-loan/bin/main") +} + +eclipse { + project { + buildCommand([ LaunchConfigHandle: "/.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.outputDir +sourceSets.test.output.resourcesDir = sourceSets.test.java.outputDir + +if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { + sourceSets { + test { + java { + exclude '**/core/boot/tests/**' + } + } + } +} diff --git a/fineract-loan/dependencies.gradle b/fineract-loan/dependencies.gradle new file mode 100644 index 000000000..c2c6fb8dd --- /dev/null +++ b/fineract-loan/dependencies.gradle @@ -0,0 +1,75 @@ +/** + * 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', + + 'com.squareup.retrofit2:converter-gson', + + 'org.springdoc:springdoc-openapi-security', + 'org.mapstruct:mapstruct', + + 'io.github.resilience4j:resilience4j-spring-boot2', + ) + 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.cucumber:cucumber-spring', + '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-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBBusinessStep.java b/fineract-loan/src/main/java/org/apache/fineract/cob/loan/LoanCOBBusinessStep.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBBusinessStep.java rename to fineract-loan/src/main/java/org/apache/fineract/cob/loan/LoanCOBBusinessStep.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java b/fineract-loan/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java rename to fineract-loan/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWithoutMandatoryFieldException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWithoutMandatoryFieldException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWithoutMandatoryFieldException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeWithoutMandatoryFieldException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/api/CollateralApiConstants.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/api/CollateralApiConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/api/CollateralApiConstants.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/api/CollateralApiConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/api/CollateralManagementJsonInputParams.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/api/CollateralManagementJsonInputParams.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/api/CollateralManagementJsonInputParams.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/api/CollateralManagementJsonInputParams.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/ClientCollateralManagement.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/collateralmanagement/domain/CollateralManagementDomain.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanApiConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/command/LoanChargeCommand.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/command/LoanChargeCommand.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/command/LoanChargeCommand.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/command/LoanChargeCommand.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/HolidayDetailDTO.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/HolidayDetailDTO.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/HolidayDetailDTO.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/HolidayDetailDTO.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanCollateralManagementData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanCollateralManagementData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanCollateralManagementData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanCollateralManagementData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInstallmentChargeData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInstallmentChargeData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInstallmentChargeData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanInstallmentChargeData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanStatusEnumData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanStatusEnumData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanStatusEnumData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanStatusEnumData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsDataWrapper.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsDataWrapper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsDataWrapper.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTermVariationsDataWrapper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionRelationData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionRelationData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionRelationData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionRelationData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/ChangedTransactionDetail.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanEvent.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanEvent.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanEvent.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanEvent.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanLifecycleStateMachine.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanLifecycleStateMachine.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanLifecycleStateMachine.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanLifecycleStateMachine.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleProcessingWrapper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleTransactionProcessorFactory.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleTransactionProcessorFactory.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleTransactionProcessorFactory.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleTransactionProcessorFactory.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSubStatus.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSubStatus.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSubStatus.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSubStatus.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummaryWrapper.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummaryWrapper.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummaryWrapper.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummaryWrapper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariationType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionComparator.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionComparator.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionComparator.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionComparator.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelation.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnum.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnum.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnum.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRelationTypeEnum.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/LoanRepaymentScheduleTransactionProcessor.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/ExceedingTrancheCountException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/ExceedingTrancheCountException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/ExceedingTrancheCountException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/ExceedingTrancheCountException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanStateTransitionException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanStateTransitionException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanStateTransitionException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanStateTransitionException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanTransactionTypeException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanTransactionTypeException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanTransactionTypeException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidLoanTransactionTypeException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidRefundDateException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidRefundDateException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidRefundDateException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/InvalidRefundDateException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanApplicationDateException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanApplicationDateException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanApplicationDateException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanApplicationDateException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanChargeRefundException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanChargeRefundException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanChargeRefundException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanChargeRefundException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanDisbursalException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanDisbursalException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanDisbursalException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanDisbursalException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanForeclosureException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanForeclosureException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanForeclosureException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanForeclosureException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentDateException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentDateException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentDateException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentDateException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerAssignmentException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerUnassignmentDateException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerUnassignmentDateException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerUnassignmentDateException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanOfficerUnassignmentDateException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionProcessingStrategyNotFoundException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionProcessingStrategyNotFoundException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionProcessingStrategyNotFoundException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/LoanTransactionProcessingStrategyNotFoundException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataNotAllowedException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataNotAllowedException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataNotAllowedException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataNotAllowedException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataRequiredException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataRequiredException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataRequiredException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/MultiDisbursementDataRequiredException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/exception/UndoLastTrancheDisbursementException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/AprCalculator.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/FinanicalFunctions.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGenerator.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGenerator.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGenerator.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGenerator.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGeneratorFactory.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGeneratorFactory.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGeneratorFactory.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleGeneratorFactory.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModel.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanScheduleModelPeriod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PrincipalInterest.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PrincipalInterest.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PrincipalInterest.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PrincipalInterest.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/TransactionProcessingStrategyData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/data/TransactionProcessingStrategyData.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/TransactionProcessingStrategyData.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/data/TransactionProcessingStrategyData.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/AmortizationMethod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestCalculationPeriodMethod.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestCalculationPeriodMethod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestCalculationPeriodMethod.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestCalculationPeriodMethod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestMethod.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestMethod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestMethod.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestMethod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/InterestRecalculationCompoundingMethod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanPreClosureInterestCalculationStrategy.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanPreClosureInterestCalculationStrategy.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanPreClosureInterestCalculationStrategy.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanPreClosureInterestCalculationStrategy.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinMaxConstraints.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinMaxConstraints.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinMaxConstraints.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinMaxConstraints.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductMinimumRepaymentScheduleRelatedDetail.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductParamType.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductParamType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductParamType.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductParamType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductRelatedDetail.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductTrancheDetails.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductTrancheDetails.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductTrancheDetails.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductTrancheDetails.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductValueConditionType.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductValueConditionType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductValueConditionType.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductValueConditionType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanRescheduleStrategyMethod.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanRescheduleStrategyMethod.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanRescheduleStrategyMethod.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanRescheduleStrategyMethod.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/RecalculationFrequencyType.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/RecalculationFrequencyType.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/RecalculationFrequencyType.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/RecalculationFrequencyType.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductGeneralRuleException.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductGeneralRuleException.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductGeneralRuleException.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/LoanProductGeneralRuleException.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanEnumerations.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanEnumerations.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanEnumerations.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanEnumerations.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java similarity index 100% rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java rename to fineract-loan/src/main/java/org/apache/fineract/portfolio/repaymentwithpostdatedchecks/domain/PostDatedChecks.java diff --git a/fineract-loan/src/main/resources/jpa/loan/persistence.xml b/fineract-loan/src/main/resources/jpa/loan/persistence.xml new file mode 100644 index 000000000..b3d099766 --- /dev/null +++ b/fineract-loan/src/main/resources/jpa/loan/persistence.xml @@ -0,0 +1,75 @@ + + + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom + org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.codes.domain.CodeValue + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.office.domain.OrganisationCurrency + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.organisation.workingdays.domain.WorkingDays + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.charge.domain.Charge + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.useradministration.domain.Permission + org.apache.fineract.useradministration.domain.AppUserClientMapping + false + + + + + diff --git a/fineract-loan/src/test/java/.gitkeep b/fineract-loan/src/test/java/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/fineract-loan/src/test/resources/.gitkeep b/fineract-loan/src/test/resources/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle index d2cd3244a..63b5bf659 100644 --- a/fineract-provider/dependencies.gradle +++ b/fineract-provider/dependencies.gradle @@ -20,6 +20,7 @@ dependencies { implementation(project(path: ':fineract-core')) implementation(project(path: ':fineract-investor')) + implementation(project(path: ':fineract-loan')) providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") // Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'. diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java index e1268e9a1..f7d755f5b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomAuditingHandler.java @@ -60,8 +60,7 @@ public class CustomAuditingHandler extends AuditingHandler { } private DateTimeProvider fetchDateTimeProvider(Object bean) { - if (bean instanceof AbstractAuditableWithUTCDateTimeCustom - || bean instanceof org.apache.fineract.investor.domain.AbstractAuditableWithUTCDateTimeCustom) { + if (bean instanceof AbstractAuditableWithUTCDateTimeCustom) { return CustomDateTimeProvider.TENANT; } else { return CustomDateTimeProvider.INSTANCE; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/util/ConvertChargeDataToSpecificChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/util/ConvertChargeDataToSpecificChargeData.java new file mode 100644 index 000000000..8f50d46c1 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/util/ConvertChargeDataToSpecificChargeData.java @@ -0,0 +1,94 @@ +/** + * 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.charge.util; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collection; +import org.apache.fineract.infrastructure.core.domain.ExternalId; +import org.apache.fineract.portfolio.charge.data.ChargeData; +import org.apache.fineract.portfolio.loanaccount.data.LoanChargeData; +import org.apache.fineract.portfolio.savings.data.SavingsAccountChargeData; +import org.apache.fineract.portfolio.shareaccounts.data.ShareAccountChargeData; + +public final class ConvertChargeDataToSpecificChargeData { + + private ConvertChargeDataToSpecificChargeData() {} + + public static LoanChargeData toLoanChargeData(final ChargeData chargeData) { + + BigDecimal percentage = null; + if (chargeData.getChargeCalculationType().getId() == 2) { + percentage = chargeData.getAmount(); + } + + return LoanChargeData.newLoanChargeDetails(chargeData.getId(), chargeData.getName(), chargeData.getCurrency(), + chargeData.getAmount(), percentage, chargeData.getChargeTimeType(), chargeData.getChargeCalculationType(), + chargeData.isPenalty(), chargeData.getChargePaymentMode(), chargeData.getMinCap(), chargeData.getMaxCap(), + ExternalId.empty()); + } + + public static SavingsAccountChargeData toSavingsAccountChargeData(final ChargeData chargeData) { + + final Long savingsChargeId = null; + final Long savingsAccountId = null; + final BigDecimal amountPaid = BigDecimal.ZERO; + final BigDecimal amountWaived = BigDecimal.ZERO; + final BigDecimal amountWrittenOff = BigDecimal.ZERO; + final BigDecimal amountOutstanding = BigDecimal.ZERO; + final BigDecimal percentage = BigDecimal.ZERO; + final BigDecimal amountPercentageAppliedTo = BigDecimal.ZERO; + final Collection chargeOptions = null; + final LocalDate dueAsOfDate = null; + final Boolean isActive = null; + final Boolean isFreeWithdrawal = null; + final Integer freeWithdrawalChargeFrequency = null; + final Integer restartFrequency = null; + final Integer restartFrequencyEnum = null; + + final LocalDate inactivationDate = null; + + return SavingsAccountChargeData.instance(savingsChargeId, chargeData.getId(), savingsAccountId, chargeData.getName(), + chargeData.getCurrency(), chargeData.getAmount(), amountPaid, amountWaived, amountWrittenOff, amountOutstanding, + chargeData.getChargeTimeType(), dueAsOfDate, chargeData.getChargeCalculationType(), percentage, amountPercentageAppliedTo, + chargeOptions, chargeData.isPenalty(), chargeData.getFeeOnMonthDay(), chargeData.getFeeInterval(), isActive, + isFreeWithdrawal, freeWithdrawalChargeFrequency, restartFrequency, restartFrequencyEnum, inactivationDate); + } + + public static ShareAccountChargeData toShareAccountChargeData(final ChargeData chargeData) { + + final Long shareChargeId = null; + final Long shareAccountId = null; + final BigDecimal amountPaid = BigDecimal.ZERO; + final BigDecimal amountWaived = BigDecimal.ZERO; + final BigDecimal amountWrittenOff = BigDecimal.ZERO; + final BigDecimal amountOutstanding = BigDecimal.ZERO; + final BigDecimal percentage = BigDecimal.ZERO; + final BigDecimal amountPercentageAppliedTo = BigDecimal.ZERO; + final Collection chargeOptions = null; + final Boolean isActive = null; + final BigDecimal chargeAmountOrPercentage = BigDecimal.ZERO; + + return new ShareAccountChargeData(shareChargeId, chargeData.getId(), shareAccountId, chargeData.getName(), chargeData.getCurrency(), + chargeData.getAmount(), amountPaid, amountWaived, amountWrittenOff, amountOutstanding, chargeData.getChargeTimeType(), + chargeData.getChargeCalculationType(), percentage, amountPercentageAppliedTo, chargeOptions, isActive, + chargeAmountOrPercentage); + } + +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java index 855dc25b9..62ba40f5e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java @@ -308,8 +308,10 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService for (ClientCollateralManagement clientCollateralManagement : clientCollateralManagements) { BigDecimal total = clientCollateralManagement.getTotal(); BigDecimal totalCollateral = clientCollateralManagement.getTotalCollateral(total); - clientCollateralManagementDataSet - .add(ClientCollateralManagementData.setCollateralValues(clientCollateralManagement, total, totalCollateral)); + clientCollateralManagementDataSet.add(new ClientCollateralManagementData(clientCollateralManagement.getId(), + clientCollateralManagement.getCollaterals().getName(), clientCollateralManagement.getQuantity(), + clientCollateralManagement.getCollaterals().getPctToBase(), + clientCollateralManagement.getCollaterals().getBasePrice(), total, totalCollateral)); } final String clientGroupsSql = "select " + this.clientGroupsMapper.parentGroupsSchema(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java index 86b67aa10..2020af9e8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java @@ -41,6 +41,7 @@ import org.apache.fineract.portfolio.account.data.PortfolioAccountData; import org.apache.fineract.portfolio.accountdetails.data.LoanAccountSummaryData; import org.apache.fineract.portfolio.calendar.data.CalendarData; import org.apache.fineract.portfolio.charge.data.ChargeData; +import org.apache.fineract.portfolio.charge.util.ConvertChargeDataToSpecificChargeData; import org.apache.fineract.portfolio.delinquency.data.DelinquencyRangeData; import org.apache.fineract.portfolio.floatingrates.data.InterestRatePeriodData; import org.apache.fineract.portfolio.fund.data.FundData; @@ -472,7 +473,7 @@ public class LoanAccountData { final Collection charges = new ArrayList(); for (final ChargeData charge : product.charges()) { if (!charge.isOverdueInstallmentCharge()) { - charges.add(charge.toLoanChargeData()); + charges.add(ConvertChargeDataToSpecificChargeData.toLoanChargeData(charge)); } } @@ -565,7 +566,7 @@ public class LoanAccountData { final Collection charges = new ArrayList(); for (final ChargeData charge : product.charges()) { - charges.add(charge.toLoanChargeData()); + charges.add(ConvertChargeDataToSpecificChargeData.toLoanChargeData(charge)); } BigDecimal netDisbursalAmount = product.getPrincipal(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositAccount.java index c78abf37f..45645e5e7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositAccount.java @@ -63,6 +63,7 @@ import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType; import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod; +import org.apache.fineract.portfolio.savings.domain.interest.SavingsAccountTransactionDetailsForPostingPeriod; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.useradministration.domain.AppUser; @@ -317,15 +318,18 @@ public class FixedDepositAccount extends SavingsAccount { final Collection interestPostTransactions = this.savingsHelper.fetchPostInterestTransactionIds(getId()); boolean isInterestTransfer = false; final Money minBalanceForInterestCalculation = Money.of(getCurrency(), minBalanceForInterestCalculation()); + List savingsAccountTransactionDetailsForPostingPeriodList = toSavingsAccountTransactionDetailsForPostingPeriodList( + transactions); for (final LocalDateInterval periodInterval : postingPeriodIntervals) { boolean isUserPosting = false; if (postedAsOnTransactionDates.contains(periodInterval.endDate())) { isUserPosting = true; } - final PostingPeriod postingPeriod = PostingPeriod.createFrom(periodInterval, periodStartingBalance, transactions, this.currency, - compoundingPeriodType, interestCalculationType, interestRateAsFraction, daysInYearType.getValue(), maturityDate, - interestPostTransactions, isInterestTransfer, minBalanceForInterestCalculation, - isSavingsInterestPostingAtCurrentPeriodEnd, isUserPosting, financialYearBeginningMonth); + final PostingPeriod postingPeriod = PostingPeriod.createFrom(periodInterval, periodStartingBalance, + savingsAccountTransactionDetailsForPostingPeriodList, this.currency, compoundingPeriodType, interestCalculationType, + interestRateAsFraction, daysInYearType.getValue(), maturityDate, interestPostTransactions, isInterestTransfer, + minBalanceForInterestCalculation, isSavingsInterestPostingAtCurrentPeriodEnd, isUserPosting, + financialYearBeginningMonth); periodStartingBalance = postingPeriod.closingBalance(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java index a602e55ff..76d2d40a6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java @@ -69,6 +69,7 @@ import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionDTO; import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod; +import org.apache.fineract.portfolio.savings.domain.interest.SavingsAccountTransactionDetailsForPostingPeriod; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.useradministration.domain.AppUser; @@ -348,15 +349,18 @@ public class RecurringDepositAccount extends SavingsAccount { final Collection interestPostTransactions = this.savingsHelper.fetchPostInterestTransactionIds(getId()); boolean isInterestTransfer = false; final Money minBalanceForInterestCalculation = Money.of(getCurrency(), minBalanceForInterestCalculation()); + List savingsAccountTransactionDetailsForPostingPeriodList = toSavingsAccountTransactionDetailsForPostingPeriodList( + transactions); for (final LocalDateInterval periodInterval : postingPeriodIntervals) { boolean isUserPosting = false; if (PostedAsOnDates.contains(periodInterval.endDate())) { isUserPosting = true; } - final PostingPeriod postingPeriod = PostingPeriod.createFrom(periodInterval, periodStartingBalance, transactions, this.currency, - compoundingPeriodType, interestCalculationType, interestRateAsFraction, daysInYearType.getValue(), maturityDate, - interestPostTransactions, isInterestTransfer, minBalanceForInterestCalculation, - isSavingsInterestPostingAtCurrentPeriodEnd, isUserPosting, financialYearBeginningMonth); + final PostingPeriod postingPeriod = PostingPeriod.createFrom(periodInterval, periodStartingBalance, + savingsAccountTransactionDetailsForPostingPeriodList, this.currency, compoundingPeriodType, interestCalculationType, + interestRateAsFraction, daysInYearType.getValue(), maturityDate, interestPostTransactions, isInterestTransfer, + minBalanceForInterestCalculation, isSavingsInterestPostingAtCurrentPeriodEnd, isUserPosting, + financialYearBeginningMonth); periodStartingBalance = postingPeriod.closingBalance(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java index e5425c3a9..52a7581b4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java @@ -104,6 +104,7 @@ import org.apache.fineract.portfolio.savings.SavingsPeriodFrequencyType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionDTO; import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod; +import org.apache.fineract.portfolio.savings.domain.interest.SavingsAccountTransactionDetailsForPostingPeriod; import org.apache.fineract.portfolio.savings.exception.InsufficientAccountBalanceException; import org.apache.fineract.portfolio.savings.exception.SavingsAccountBlockedException; import org.apache.fineract.portfolio.savings.exception.SavingsAccountCreditsBlockedException; @@ -892,11 +893,14 @@ public class SavingsAccount extends AbstractPersistableCustom { orderedNonInterestPostingTransactions = retreiveOrderedNonInterestPostingTransactions(); } - postingPeriod = PostingPeriod.createFrom(periodInterval, periodStartingBalance, orderedNonInterestPostingTransactions, - this.currency, compoundingPeriodType, interestCalculationType, interestRateAsFraction, daysInYearType.getValue(), - upToInterestCalculationDate, interestPostTransactions, isInterestTransfer, minBalanceForInterestCalculation, - isSavingsInterestPostingAtCurrentPeriodEnd, overdraftInterestRateAsFraction, minOverdraftForInterestCalculation, - isUserPosting, financialYearBeginningMonth); + List savingsAccountTransactionDetailsForPostingPeriod = toSavingsAccountTransactionDetailsForPostingPeriodList( + orderedNonInterestPostingTransactions); + + postingPeriod = PostingPeriod.createFrom(periodInterval, periodStartingBalance, + savingsAccountTransactionDetailsForPostingPeriod, this.currency, compoundingPeriodType, interestCalculationType, + interestRateAsFraction, daysInYearType.getValue(), upToInterestCalculationDate, interestPostTransactions, + isInterestTransfer, minBalanceForInterestCalculation, isSavingsInterestPostingAtCurrentPeriodEnd, + overdraftInterestRateAsFraction, minOverdraftForInterestCalculation, isUserPosting, financialYearBeginningMonth); periodStartingBalance = postingPeriod.closingBalance(); @@ -3929,4 +3933,11 @@ public class SavingsAccount extends AbstractPersistableCustom { public boolean isWithHoldTax() { return this.withHoldTax; } + + public List toSavingsAccountTransactionDetailsForPostingPeriodList( + List transactions) { + return transactions.stream() + .map(transaction -> transaction.toSavingsAccountTransactionDetailsForPostingPeriod(this.currency, this.allowOverdraft)) + .toList(); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java index 32fa95dba..ece7ef4c0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java @@ -89,6 +89,7 @@ public class SavingsAccountAssembler { private static final Logger LOG = LoggerFactory.getLogger(SavingsAccountAssembler.class); private final SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper; + private final SavingsAccountTransactionDataSummaryWrapper savingsAccountTransactionDataSummaryWrapper; private final SavingsHelper savingsHelper; private final ClientRepositoryWrapper clientRepository; private final GroupRepositoryWrapper groupRepository; @@ -102,6 +103,7 @@ public class SavingsAccountAssembler { @Autowired public SavingsAccountAssembler(final SavingsAccountTransactionSummaryWrapper savingsAccountTransactionSummaryWrapper, + final SavingsAccountTransactionDataSummaryWrapper savingsAccountTransactionDataSummaryWrapper, final ClientRepositoryWrapper clientRepository, final GroupRepositoryWrapper groupRepository, final StaffRepositoryWrapper staffRepository, final SavingsProductRepository savingProductRepository, final SavingsAccountRepositoryWrapper savingsAccountRepository, @@ -109,6 +111,7 @@ public class SavingsAccountAssembler { final AccountTransfersReadPlatformService accountTransfersReadPlatformService, final JdbcTemplate jdbcTemplate, final ConfigurationDomainService configurationDomainService) { this.savingsAccountTransactionSummaryWrapper = savingsAccountTransactionSummaryWrapper; + this.savingsAccountTransactionDataSummaryWrapper = savingsAccountTransactionDataSummaryWrapper; this.clientRepository = clientRepository; this.groupRepository = groupRepository; this.staffRepository = staffRepository; @@ -403,7 +406,7 @@ public class SavingsAccountAssembler { } else { account.getSummary().setRunningBalanceOnPivotDate(BigDecimal.ZERO); } - account.setHelpers(this.savingsAccountTransactionSummaryWrapper, this.savingsHelper); + account.setHelpers(this.savingsAccountTransactionDataSummaryWrapper, this.savingsHelper); return account; } @@ -474,6 +477,6 @@ public class SavingsAccountAssembler { } public void assignSavingAccountHelpers(final SavingsAccountData savingsAccountData) { - savingsAccountData.setHelpers(this.savingsAccountTransactionSummaryWrapper, this.savingsHelper); + savingsAccountData.setHelpers(this.savingsAccountTransactionDataSummaryWrapper, this.savingsHelper); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java index 21a5a1ee0..f1d92d3d2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java @@ -47,6 +47,7 @@ import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail; import org.apache.fineract.portfolio.savings.SavingsAccountTransactionType; import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionEnumData; import org.apache.fineract.portfolio.savings.domain.interest.EndOfDayBalance; +import org.apache.fineract.portfolio.savings.domain.interest.SavingsAccountTransactionDetailsForPostingPeriod; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.portfolio.tax.domain.TaxComponent; import org.apache.fineract.useradministration.domain.AppUser; @@ -926,4 +927,11 @@ public final class SavingsAccountTransaction extends AbstractPersistableCustom { public boolean isReversalTransaction() { return reversalTransaction; } + + public SavingsAccountTransactionDetailsForPostingPeriod toSavingsAccountTransactionDetailsForPostingPeriod(MonetaryCurrency currency, + boolean isAllowOverDraft) { + return new SavingsAccountTransactionDetailsForPostingPeriod(getId(), this.dateOf, this.balanceEndDate, this.runningBalance, + this.amount, currency, this.balanceNumberOfDays, isDeposit(), isWithdrawal(), isAllowOverDraft, + isChargeTransactionAndNotReversed(), isDividendPayoutAndNotReversed()); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java index 82e9a2de5..62f7caf00 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java @@ -20,10 +20,8 @@ package org.apache.fineract.portfolio.savings.domain; import java.math.BigDecimal; import java.util.List; -import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency; import org.apache.fineract.organisation.monetary.domain.Money; -import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionData; import org.springframework.stereotype.Component; /** @@ -44,16 +42,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalDeposits(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isDepositAndNotReversed() || transaction.isDividendPayoutAndNotReversed()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalWithdrawals(final MonetaryCurrency currency, final List transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { @@ -64,16 +52,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalWithdrawals(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isWithdrawal() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalInterestPosted(final MonetaryCurrency currency, final List transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { @@ -84,16 +62,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalInterestPosted(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isInterestPostingAndNotReversed() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalInterestPosted(final MonetaryCurrency currency, final BigDecimal currentInterestPosted, final List savingsAccountTransactions) { Money total = Money.of(currency, currentInterestPosted); @@ -115,16 +83,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalWithdrawalFees(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isWithdrawalFeeAndNotReversed() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalAnnualFees(final MonetaryCurrency currency, final List transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { @@ -135,16 +93,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalAnnualFees(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isAnnualFeeAndNotReversed() && transaction.isNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalFeesCharge(final MonetaryCurrency currency, final List transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { @@ -155,16 +103,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalFeesCharge(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isFeeChargeAndNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalFeesChargeWaived(final MonetaryCurrency currency, final List transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { @@ -175,16 +113,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalFeesChargeWaived(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isWaiveFeeChargeAndNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalPenaltyCharge(final MonetaryCurrency currency, final List transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { @@ -195,16 +123,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalPenaltyCharge(final CurrencyData currency, final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isPenaltyChargeAndNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalPenaltyChargeWaived(final MonetaryCurrency currency, final List transactions) { Money total = Money.zero(currency); @@ -216,17 +134,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalPenaltyChargeWaived(final CurrencyData currency, - final List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isWaivePenaltyChargeAndNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalOverdraftInterest(MonetaryCurrency currency, BigDecimal overdraftPosted, List transactions) { Money total = Money.of(currency, overdraftPosted); @@ -248,16 +155,6 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalOverdraftInterest(CurrencyData currency, List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isOverdraftInterestAndNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } - public BigDecimal calculateTotalWithholdTaxWithdrawal(MonetaryCurrency currency, List transactions) { Money total = Money.zero(currency); for (final SavingsAccountTransaction transaction : transactions) { @@ -268,13 +165,4 @@ public final class SavingsAccountTransactionSummaryWrapper { return total.getAmountDefaultedToNullIfZero(); } - public BigDecimal calculateTotalWithholdTaxWithdrawal(CurrencyData currency, List transactions) { - Money total = Money.zero(currency); - for (final SavingsAccountTransactionData transaction : transactions) { - if (transaction.isWithHoldTaxAndNotReversed() && !transaction.isReversalTransaction()) { - total = total.plus(transaction.getAmount()); - } - } - return total.getAmountDefaultedToNullIfZero(); - } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java index 52bc1433d..0ed3fffba 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java @@ -53,6 +53,7 @@ import org.apache.fineract.portfolio.calendar.domain.CalendarType; import org.apache.fineract.portfolio.calendar.service.CalendarReadPlatformService; import org.apache.fineract.portfolio.charge.data.ChargeData; import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; +import org.apache.fineract.portfolio.charge.util.ConvertChargeDataToSpecificChargeData; import org.apache.fineract.portfolio.client.data.ClientData; import org.apache.fineract.portfolio.client.service.ClientReadPlatformService; import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType; @@ -560,7 +561,7 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead private Collection fromChargesToSavingsCharges(final Collection productCharges) { final Collection savingsCharges = new ArrayList<>(); for (final ChargeData chargeData : productCharges) { - final SavingsAccountChargeData savingsCharge = chargeData.toSavingsAccountChargeData(); + final SavingsAccountChargeData savingsCharge = ConvertChargeDataToSpecificChargeData.toSavingsAccountChargeData(chargeData); savingsCharges.add(savingsCharge); } return savingsCharges; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java index 9aa6e543e..0bce93194 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java @@ -51,6 +51,7 @@ import org.apache.fineract.organisation.staff.service.StaffReadPlatformService; import org.apache.fineract.portfolio.account.data.AccountTransferData; import org.apache.fineract.portfolio.charge.data.ChargeData; import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; +import org.apache.fineract.portfolio.charge.util.ConvertChargeDataToSpecificChargeData; import org.apache.fineract.portfolio.client.data.ClientData; import org.apache.fineract.portfolio.client.service.ClientReadPlatformService; import org.apache.fineract.portfolio.group.data.GroupGeneralData; @@ -1238,7 +1239,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead private Collection fromChargesToSavingsCharges(final Collection productCharges) { final Collection savingsCharges = new ArrayList<>(); for (final ChargeData chargeData : productCharges) { - final SavingsAccountChargeData savingsCharge = chargeData.toSavingsAccountChargeData(); + final SavingsAccountChargeData savingsCharge = ConvertChargeDataToSpecificChargeData.toSavingsAccountChargeData(chargeData); savingsCharges.add(savingsCharge); } return savingsCharges; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java index e4faf2849..d763777b6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java @@ -42,6 +42,7 @@ import org.apache.fineract.portfolio.accounts.data.AccountData; import org.apache.fineract.portfolio.accounts.exceptions.ShareAccountNotFoundException; import org.apache.fineract.portfolio.charge.data.ChargeData; import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; +import org.apache.fineract.portfolio.charge.util.ConvertChargeDataToSpecificChargeData; import org.apache.fineract.portfolio.client.data.ClientData; import org.apache.fineract.portfolio.client.service.ClientReadPlatformService; import org.apache.fineract.portfolio.products.constants.ProductsApiConstants; @@ -246,7 +247,7 @@ public class ShareAccountReadPlatformServiceImpl implements ShareAccountReadPlat public Collection convertChargesToShareAccountCharges(Collection productCharges) { final Collection savingsCharges = new ArrayList<>(); for (final ChargeData chargeData : productCharges) { - final ShareAccountChargeData savingsCharge = chargeData.toShareAccountChargeData(); + final ShareAccountChargeData savingsCharge = ConvertChargeDataToSpecificChargeData.toShareAccountChargeData(chargeData); savingsCharges.add(savingsCharge); } return savingsCharges; diff --git a/fineract-provider/src/main/resources/jpa/persistence.xml b/fineract-provider/src/main/resources/jpa/persistence.xml index 105688157..40eb0b48e 100644 --- a/fineract-provider/src/main/resources/jpa/persistence.xml +++ b/fineract-provider/src/main/resources/jpa/persistence.xml @@ -29,6 +29,79 @@ org.eclipse.persistence.jpa.PersistenceProvider + + org.apache.fineract.accounting.glaccount.domain.GLAccount + org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom + org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom + org.apache.fineract.infrastructure.codes.domain.Code + org.apache.fineract.infrastructure.codes.domain.CodeValue + org.apache.fineract.infrastructure.documentmanagement.domain.Image + org.apache.fineract.organisation.staff.domain.Staff + org.apache.fineract.organisation.office.domain.Office + org.apache.fineract.organisation.office.domain.OrganisationCurrency + org.apache.fineract.organisation.monetary.domain.ApplicationCurrency + org.apache.fineract.organisation.holiday.domain.Holiday + org.apache.fineract.organisation.workingdays.domain.WorkingDays + org.apache.fineract.portfolio.group.domain.Group + org.apache.fineract.portfolio.group.domain.GroupLevel + org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory + org.apache.fineract.portfolio.group.domain.GroupRole + org.apache.fineract.portfolio.client.domain.Client + org.apache.fineract.portfolio.rate.domain.Rate + org.apache.fineract.portfolio.fund.domain.Fund + org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket + org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange + org.apache.fineract.portfolio.charge.domain.Charge + org.apache.fineract.portfolio.paymenttype.domain.PaymentType + org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail + org.apache.fineract.portfolio.tax.domain.TaxGroup + org.apache.fineract.portfolio.tax.domain.TaxGroupMappings + org.apache.fineract.portfolio.tax.domain.TaxComponent + org.apache.fineract.portfolio.tax.domain.TaxComponentHistory + org.apache.fineract.portfolio.floatingrates.domain.FloatingRate + org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod + org.apache.fineract.portfolio.calendar.domain.Calendar + org.apache.fineract.portfolio.calendar.domain.CalendarHistory + org.apache.fineract.portfolio.calendar.domain.CalendarInstance + org.apache.fineract.useradministration.domain.AppUser + org.apache.fineract.useradministration.domain.Role + org.apache.fineract.useradministration.domain.Permission + org.apache.fineract.useradministration.domain.AppUserClientMapping + + org.apache.fineract.investor.domain.ExternalAssetOwner + org.apache.fineract.investor.domain.ExternalAssetOwnerTransfer + org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMapping + + org.apache.fineract.portfolio.collateral.domain.LoanCollateral + org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement + org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain + org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount + org.apache.fineract.portfolio.loanaccount.domain.Loan + org.apache.fineract.portfolio.loanaccount.domain.LoanCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidBy + org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement + org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalculationDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalcualtionAdditionalDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanOfficerAssignmentHistory + org.apache.fineract.portfolio.loanaccount.domain.LoanOverdueInstallmentCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment + org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations + org.apache.fineract.portfolio.loanaccount.domain.LoanTopupDetails + org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheDisbursementCharge + org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation + org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping + org.apache.fineract.portfolio.loanproduct.domain.LoanProduct + org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations + org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes + org.apache.fineract.portfolio.loanproduct.domain.LoanProductFloatingRates + org.apache.fineract.portfolio.loanproduct.domain.LoanProductGuaranteeDetails + org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails + org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig + org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks false diff --git a/fineract-war/build.gradle b/fineract-war/build.gradle index 82ec98556..113d6a978 100644 --- a/fineract-war/build.gradle +++ b/fineract-war/build.gradle @@ -50,6 +50,7 @@ war { dependencies { implementation project(':fineract-core') implementation project(':fineract-investor') + implementation project(':fineract-loan') implementation project(':fineract-provider') } diff --git a/integration-tests/dependencies.gradle b/integration-tests/dependencies.gradle index 64223fa74..b46b15b7a 100644 --- a/integration-tests/dependencies.gradle +++ b/integration-tests/dependencies.gradle @@ -24,6 +24,7 @@ dependencies { testImplementation( files("$rootDir/fineract-provider/build/classes/java/main/"), project(path: ':fineract-core', configuration: 'runtimeElements'), project(path: ':fineract-investor', configuration: 'runtimeElements'), + project(path: ':fineract-loan', configuration: 'runtimeElements'), project(path: ':fineract-provider', configuration: 'runtimeElements'), project(path: ':fineract-avro-schemas', configuration: 'runtimeElements'), project(path: ':fineract-client', configuration: 'runtimeElements'), diff --git a/settings.gradle b/settings.gradle index 85f504611..1c3d774b3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -20,6 +20,7 @@ rootProject.name='fineract' include ':fineract-core' include ':fineract-provider' include ':fineract-investor' +include ':fineract-loan' include ':fineract-war' include ':integration-tests' include ':twofactor-tests'