From 9360387bd0db00d331b5f7a2d4c798cbf88df56f Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 31 May 2023 13:53:52 +0300 Subject: [PATCH] =?UTF-8?q?registries=20B/F=20=D0=B4=D0=BB=D1=8F=20sdf57?= =?UTF-8?q?=20executor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/executors/Sdf57Executor.java | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) 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 a84a67ba6..65e02cfcc 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 @@ -165,35 +165,18 @@ public class Sdf57Executor extends AbstractExecutor { if (err.isEmpty()) { Consumer update = rgs -> { updateReg(stmt, rgs); - - Optional registryUnitBOpt = findRegByUnit(stmt, rgs, RegistryUnit.B); - Optional registryUnitFOpt = findRegByUnit(stmt, rgs, RegistryUnit.F); - if (registryUnitFOpt.isPresent() && registryUnitBOpt.isPresent()) { - Registry registryUnitF = registryUnitFOpt.get(); - Registry registryUnitB = registryUnitBOpt.get(); - registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance())); - registryUnitF.setUpdated(Instant.now()); - registryImdg.update(registryUnitF); - } + //добавил создание если не найдены + Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs)); + 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); registryImdg.update(rgs); }; Consumer create = (dsgn) -> { Registry registry = createRegistryByStatement(stmt, company, account, dsgn); - - Registry registryB = registry.clone(); - registryB.setId(imdgProvider.getImdgIdGenerator().nextId()); - registryB.setRegistryUnit(RegistryUnit.B.getKey()); - registryB.setRegistryCode(RegistryUtil.clearingCode(registryB)); - registryB.setBalance(BigDecimal.ZERO); - registryB.setDebit(BigDecimal.ZERO); - registryB.setCredit(BigDecimal.ZERO); - - Registry registryF = registry.clone(); - registryF.setRegistryUnit(RegistryUnit.F.getKey()); - registryF.setRegistryCode(RegistryUtil.clearingCode(registryF)); - registryF.setBalance(registry.getBalance().subtract(registryB.getBalance())); - registryF.setCredit(BigDecimal.ZERO); - registryF.setId(imdgProvider.getImdgIdGenerator().nextId()); + Registry registryB = copyRegB(registry); + Registry registryF = copyRegF(registry, registryB.getBalance()); registryImdg.insert(registry); registryImdg.insert(registryF); @@ -219,6 +202,25 @@ public class Sdf57Executor extends AbstractExecutor { return result; } + private Registry copyRegB(Registry rgs) { + Registry rgsB = rgs.clone(); + rgsB.setRegistryUnit(RegistryUnit.B.getKey()); + rgsB.setRegistryCode(RegistryUtil.clearingCode(rgsB)); + rgsB.setBalance(BigDecimal.ZERO); + rgsB.setDebit(BigDecimal.ZERO); + rgsB.setCredit(BigDecimal.ZERO); + return rgsB; + } + + private Registry copyRegF(Registry rgs, BigDecimal rgsBBalance) { + Registry rgsF = rgs.clone(); + rgsF.setRegistryUnit(RegistryUnit.F.getKey()); + rgsF.setRegistryCode(RegistryUtil.clearingCode(rgsF)); + rgsF.setBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgsBBalance))); + rgsF.setCredit(BigDecimal.ZERO); + return rgsF; + } + private record StmtCmpAcc(Statement statement, Company company, Account account) { }