diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java index 177779d87..d8d7bc7c9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java @@ -155,7 +155,12 @@ public class Sdf06Executor { Statement stmt = createStatementBySdf06(sDf06, company.getId(), account); statementImdg.insert(stmt); log.debug("Statement created: {}", stmt.getId()); - requests.add(requestFromStatement(stmt, company.getTradingCode(), tcr.getCode())); + if (InOutDirection.in.getKey().equals(stmt.getInOutDirection())) { + processedApproved(stmt, sDf06, now); + sdf07WasCreated = true; + } else { + requests.add(requestFromStatement(stmt, company.getTradingCode(), tcr.getCode())); + } } if (requests.size() > 0) { this.sdf06GroupId = groupId; @@ -168,6 +173,20 @@ public class Sdf06Executor { } } + private void processedApproved(Statement stmt, SDf06 sDf06, Instant time) { + log.trace("statement.id={}, sdf07.id={}, sdf06.id={} executed", + stmt.getId(), + sDf06.getGenerationId(), + sDf06.getId()); + SDf07 sdf07 = createSdf07(sDf06, time, successResult); + sdf07.setGenerationId(sdf07GroupId); + sdf07Imdg.insert(sdf07); + stmt.setOperationStatus(OperationStatus.Executed.getKey()); + stmt.setUpdated(time); + stmt.setOutSDfId(sdf07.getId()); + statementImdg.update(stmt); + } + private boolean needToCreateStatement(EnumMessage err) { return ClearingError.ActiveSessionIsPresent.equals(err.getSubject()) || ClearingError.BalanceInsufficient.equals(err.getSubject()); } @@ -203,17 +222,7 @@ public class Sdf06Executor { Instant updatedTime = Instant.now(); if (gatewayMsg.isApproved()) { - log.trace("statement.id={}, sdf07.id={}, sdf06.id={} executed", - statementId, - sdf06.getGenerationId(), - sdf06.getId()); - SDf07 sdf07 = createSdf07(sdf06, updatedTime, successResult); - sdf07.setGenerationId(sdf07GroupId); - sdf07Imdg.insert(sdf07); - stmt.setOperationStatus(OperationStatus.Executed.getKey()); - stmt.setUpdated(updatedTime); - stmt.setOutSDfId(sdf07.getId()); - statementImdg.update(stmt); + processedApproved(stmt, sdf06, updatedTime); } else { log.trace("statement.id={}, sdf07.id={}, sdf06.id={} rejected (by gateway answer)", statementId,