diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java index dd68a819e..8e80869b4 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java @@ -414,7 +414,9 @@ public class Registry extends BusinessObject implements Cloneable { @Override public Registry clone() { try { - return (Registry) super.clone(); + Registry clone = (Registry) super.clone(); + clone.setId(null); + return clone; } catch (CloneNotSupportedException e) { throw new RuntimeException("never", e); // it is Cloneable } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index 65e02cfcc..d5d60b7ca 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -170,7 +170,16 @@ public class Sdf57Executor extends AbstractExecutor { Registry registryUnitF = findRegByUnit(stmt, rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance())); registryUnitF.setUpdated(Instant.now()); - registryImdg.update(registryUnitF); + //registry F всегда меняется + if (registryUnitF.getId() == null) { + registryImdg.insert(registryUnitF); + } else { + registryImdg.update(registryUnitF); + } + //нужно сохранить registry B только если его не было + if (registryUnitB.getId() == null) { + registryImdg.insert(registryUnitB); + } registryImdg.update(rgs); }; Consumer create = (dsgn) -> {