diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java index 1856f6713..669159287 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java @@ -34,6 +34,7 @@ import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.enumeration.DepoAccountType; import ru.spcex.platform.enumeration.Sender; import ru.spcex.platform.enumeration.ServiceStatus; @@ -137,20 +138,21 @@ public class AccountService extends QueueConsumer implements InitializingBean { CorrespondentAccountNewRequest req = userRequest.getRequestPayload(); Currency currency = validator.getStored(Stored.currency); - + String currencyCode = req.getCurrency() == null ? CurrencyCode.RUB.getKey() : req.getCurrency(); + Long currencyCodeId = CurrencyCode.RUB.getKey().equals(currencyCode) ? 810 : currency.getId(); Instant now = Instant.now(); Account account = new Account(); account.setCompanyId(req.getCompanyId()); account.setAccount(req.getAccount()); if (AccountType.Info.equalsByKey(req.getAccountType())) { - Long infoSequenceId = informationAccountService.accountNextId(currency.getCurrencyCode(), currency.getId()); + Long infoSequenceId = informationAccountService.accountNextId(currencyCode, currencyCodeId); - String accountValue = informationAccountService.generateInfoAccount(currency.getId(), infoSequenceId); + String accountValue = informationAccountService.generateInfoAccount(currencyCodeId, infoSequenceId); log.trace("New info-account SequenceId={} account={}", infoSequenceId, accountValue); account.setAccount(accountValue); } account.setAccountType(req.getAccountType()); - account.setCurrency(currency.getCurrencyCode()); + account.setCurrency(currencyCode); if (req.getStatus() == null) { account.setStatus(WorkflowStatus.Active.getKey()); log.trace("Status not set in request. Use default: {}", account.getStatus()); diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/CurrencyCodeValidationRule.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/CurrencyCodeValidationRule.java index 3f3e864da..b88ce9c5d 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/CurrencyCodeValidationRule.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/CurrencyCodeValidationRule.java @@ -4,6 +4,7 @@ import java.util.Optional; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.interfaces.WithCurrency; +import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -32,8 +33,9 @@ public class CurrencyCodeValidationRule implements IValidationRule curImdg = context.obtainMap(IMDGDistributedNames.Map_Currency, SpcexObjectBase.class); ImdgPredicateBuilder pb = curImdg.predicateBuilder(); + String currencyCode = obj.currency() == null ? CurrencyCode.RUB.getKey() : obj.currency(); SpcexObjectBase currency = curImdg.getFirstObjectByPredicate( - pb.equals("currencyCode", obj.currency()) + pb.equals("currencyCode", currencyCode) ); if (currency == null) { return of(errEnum, obj.currency());