diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java index 33df5af56..a6372e482 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java @@ -248,7 +248,9 @@ public class UnitedSession extends AbstractSession implements InitializingBean { log.info("no payment instructions were created"); finishPart(); } else { - this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7(section()); + this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7Unit( + paymentResult.getStageResult().getSdfTypes() + ); log.info("created {} PaymentInstructions, waiting for {}", paymentResult.getStageResult().getPaymentInstructions().size(), this.afterPaymentsSdf4And13Monitor.allConditions()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java index 31b219df0..781a574ce 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.session.stage.monitor; +import java.util.Collection; import ru.spcex.platform.enumeration.SdfTable; import ru.spcex.platform.enumeration.Section; @@ -42,6 +43,19 @@ public class SessionMonitorFactory { } } + public static SessionMonitor waitStep7Unit(Collection sdfTypes) { + SessionMonitor monitor = SessionMonitor.create() + .addCondition(new SdfCondition(SdfTable.SDF_04)) + .addCondition(new SdfCondition(SdfTable.SDF_08)) + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); + if (sdfTypes.stream().anyMatch(t -> t.equals(SdfTable.SDF_12))) { + monitor.addCondition(new SdfCondition(SdfTable.SDF_13)); + monitor.addCondition(new SdfCondition(SdfTable.SDF_21)); + } + return monitor; + } + public static SessionMonitor waitRevise() { return SessionMonitor.create() .addCondition(new SdfCondition(SdfTable.SDF_01))