FINERACT-1977: 4-eye-principle, maker-checker permission
This commit is contained in:
+4
-1
@@ -38,6 +38,7 @@ import org.apache.fineract.infrastructure.bulkimport.importhandler.helper.EnumOp
|
||||
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
import org.apache.fineract.infrastructure.core.serialization.GoogleGsonSerializerHelper;
|
||||
import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType;
|
||||
import org.apache.fineract.portfolio.savings.data.SavingsAccountChargeData;
|
||||
import org.apache.fineract.portfolio.savings.data.SavingsAccountData;
|
||||
import org.apache.fineract.portfolio.savings.data.SavingsActivation;
|
||||
@@ -147,7 +148,9 @@ public class SavingsImportHandler implements ImportHandler {
|
||||
Long interestPostingPeriodTypeId = null;
|
||||
EnumOptionData interestPostingPeriodTypeEnum = null;
|
||||
if (interestPostingPeriodType != null) {
|
||||
if (interestPostingPeriodType.equalsIgnoreCase(MONTHLY)) {
|
||||
if (interestPostingPeriodType.equalsIgnoreCase(DAILY)) {
|
||||
interestPostingPeriodTypeId = SavingsPostingInterestPeriodType.DAILY.getValue().longValue();
|
||||
} else if (interestPostingPeriodType.equalsIgnoreCase(MONTHLY)) {
|
||||
interestPostingPeriodTypeId = 4L;
|
||||
} else if (interestPostingPeriodType.equalsIgnoreCase(QUARTERLY)) {
|
||||
interestPostingPeriodTypeId = 5L;
|
||||
|
||||
+8
-6
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package org.apache.fineract.infrastructure.configuration.domain;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.time.LocalDate;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -74,6 +75,11 @@ public class ConfigurationDomainServiceJpa implements ConfigurationDomainService
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSameMakerCheckerEnabled() {
|
||||
return getGlobalConfigurationPropertyData("enable-same-maker-checker").isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAmazonS3Enabled() {
|
||||
return getGlobalConfigurationPropertyData("amazon-S3").isEnabled();
|
||||
@@ -379,18 +385,14 @@ public class ConfigurationDomainServiceJpa implements ConfigurationDomainService
|
||||
return property.getValue();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private GlobalConfigurationPropertyData getGlobalConfigurationPropertyData(final String propertyName) {
|
||||
return globalConfigurationRepository.findOneByNameWithNotFoundDetection(propertyName).toData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSubRatesEnabled() {
|
||||
GlobalConfigurationPropertyData configuration = getGlobalConfigurationPropertyData("sub-rates");
|
||||
if (configuration == null) {
|
||||
return false;
|
||||
} else {
|
||||
return configuration.isEnabled();
|
||||
}
|
||||
return getGlobalConfigurationPropertyData("sub-rates").isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -294,7 +294,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
||||
validateParentGroupRulesBeforeClientActivation(newClient);
|
||||
runEntityDatatableCheck(newClient.getId(), newClient.getLegalForm());
|
||||
final CommandWrapper commandWrapper = new CommandWrapperBuilder().activateClient(null).build();
|
||||
rollbackTransaction = this.commandProcessingService.validateCommand(commandWrapper, currentUser);
|
||||
rollbackTransaction = this.commandProcessingService.validateRollbackCommand(commandWrapper, currentUser);
|
||||
}
|
||||
|
||||
this.clientRepository.saveAndFlush(newClient);
|
||||
|
||||
+3
-3
@@ -172,16 +172,16 @@ public class GroupingTypesWritePlatformServiceJpaRepositoryImpl implements Group
|
||||
|
||||
if (newGroup.isCenter()) {
|
||||
final CommandWrapper commandWrapper = new CommandWrapperBuilder().activateCenter(null).build();
|
||||
rollbackTransaction = this.commandProcessingService.validateCommand(commandWrapper, currentUser);
|
||||
rollbackTransaction = this.commandProcessingService.validateRollbackCommand(commandWrapper, currentUser);
|
||||
} else {
|
||||
final CommandWrapper commandWrapper = new CommandWrapperBuilder().activateGroup(null).build();
|
||||
rollbackTransaction = this.commandProcessingService.validateCommand(commandWrapper, currentUser);
|
||||
rollbackTransaction = this.commandProcessingService.validateRollbackCommand(commandWrapper, currentUser);
|
||||
}
|
||||
}
|
||||
|
||||
if (!newGroup.isCenter() && newGroup.hasActiveClients()) {
|
||||
final CommandWrapper commandWrapper = new CommandWrapperBuilder().associateClientsToGroup(newGroup.getId()).build();
|
||||
rollbackTransaction = this.commandProcessingService.validateCommand(commandWrapper, currentUser);
|
||||
rollbackTransaction = this.commandProcessingService.validateRollbackCommand(commandWrapper, currentUser);
|
||||
}
|
||||
|
||||
// pre-save to generate id for use in group hierarchy
|
||||
|
||||
+2
-1
@@ -656,7 +656,8 @@ public class SavingsApplicationProcessWritePlatformServiceJpaRepositoryImpl impl
|
||||
public CommandProcessingResult createActiveApplication(final SavingsAccountDataDTO savingsAccountDataDTO) {
|
||||
|
||||
final CommandWrapper commandWrapper = new CommandWrapperBuilder().savingsAccountActivation(null).build();
|
||||
boolean rollbackTransaction = this.commandProcessingService.validateCommand(commandWrapper, savingsAccountDataDTO.getAppliedBy());
|
||||
boolean rollbackTransaction = this.commandProcessingService.validateRollbackCommand(commandWrapper,
|
||||
savingsAccountDataDTO.getAppliedBy());
|
||||
|
||||
final SavingsAccount account = this.savingAccountAssembler.assembleFrom(savingsAccountDataDTO.getClient(),
|
||||
savingsAccountDataDTO.getGroup(), savingsAccountDataDTO.getSavingsProduct(), savingsAccountDataDTO.getApplicationDate(),
|
||||
|
||||
@@ -150,4 +150,5 @@
|
||||
<include file="parts/0128_savings_audit.xml" relativeToChangelogFile="true" />
|
||||
<include file="parts/0129_transaction_summary_with_asset_owner_report_overpaid_amount.xml" relativeToChangelogFile="true" />
|
||||
<include file="parts/0130_add_create_delinquency_action_permission.xml" relativeToChangelogFile="true" />
|
||||
<include file="parts/0131_add_configuration_maker_checker.xml" relativeToChangelogFile="true" />
|
||||
</databaseChangeLog>
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
-->
|
||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
|
||||
<changeSet author="fineract" id="1">
|
||||
<insert tableName="c_configuration">
|
||||
<column name="name" value="enable-same-maker-checker"/>
|
||||
<column name="value"/>
|
||||
<column name="date_value"/>
|
||||
<column name="string_value"/>
|
||||
<column name="enabled" valueBoolean="false"/>
|
||||
<column name="is_trap_door" valueBoolean="false"/>
|
||||
<column name="description"/>
|
||||
</insert>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
Reference in New Issue
Block a user