From cd67d0b113a5c5754839b2be7d8bc75cc8a410c8 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Thu, 31 Aug 2023 14:38:07 +0300 Subject: [PATCH] =?UTF-8?q?clearing-service=20SDF=5F01=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=81=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B1=D0=B0=D0=BB=D0=B0=D0=BD=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B8=D0=BD=D1=84=D0=BE=D1=81=D1=87=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clearing/service/executors/Sdf01Executor.java | 12 ++++++++---- .../clearing/service/executors/Sdf57Executor.java | 1 - .../service/validation/Sdf01NewValidationRule.java | 8 ++++++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java index aae465b37..134b3e325 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java @@ -323,14 +323,17 @@ public class Sdf01Executor extends AbstractExecutor { private void calcBalance(Registry rgs, Statement statement) { rgs.setCheckBalance(BigDecimalUtil.safeBD(statement.getAmount())); - rgs.setDiffBalance(BigDecimalUtil.safeBD(rgs.getCheckBalance()).negate()); + if (!AccountType.Info.equalsByKey(rgs.getAccountType())) + rgs.setDiffBalance(BigDecimalUtil.safeBD(rgs.getCheckBalance()).negate()); } private void updateReg(Statement s, Registry r) { r.setCheckBalance(s.getAmount()); - BigDecimal balance = BigDecimalUtil.safeBD(r.getBalance()); BigDecimal checkBalance = BigDecimalUtil.safeBD(r.getCheckBalance()); - r.setDiffBalance(balance.subtract(checkBalance)); + if (!AccountType.Info.equalsByKey(r.getAccountType())) { + BigDecimal balance = BigDecimalUtil.safeBD(r.getBalance()); + r.setDiffBalance(balance.subtract(checkBalance)); + } r.setUpdated(Instant.now()); } @@ -340,11 +343,12 @@ public class Sdf01Executor extends AbstractExecutor { ); String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); - ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), + ImdgPredicate rgstrPredicate = pb.and( pb.sql(sql), pb.equals("accountId", s.getAccountId()), pb.equals("companyId", s.getAddresseeId()) ); + log.debug("Reg search query: {}", rgstrPredicate); return Optional.ofNullable(registryImdg.getSingleObjectByPredicate(rgstrPredicate)); } } 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 fbd68fbfc..aa126b54a 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 @@ -506,7 +506,6 @@ public class Sdf57Executor extends AbstractExecutor { if (!AccountType.Info.equals(accType)) { rgs.setDiffBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgs.getCheckBalance()))); } - rgs.setDiffBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgs.getCheckBalance()))); rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme ! смотри описание и ссылка на начало html'ки } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java index 0e303a023..f908342a3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java @@ -6,6 +6,7 @@ import ru.clearing.classes.statics.data.sdf.SDf01; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.AccType; +import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -51,8 +52,11 @@ public enum Sdf01NewValidationRule implements IValidationRule validate(ImdgValidationContext context) { SDf01 sdf01 = context.getValidatedObject(); Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); - Account acc = accountImdg.getFirstObjectBySQL("account = '" + sdf01.getAccount() - + "' and accountType='" + ru.spcex.platform.enumeration.AccountType.Clrn.getKey() + "'"); + Account acc = accountImdg.getFirstObjectBySQL("account = '" + sdf01.getAccount() + "' and (" + + "accountType='" + ru.spcex.platform.enumeration.AccountType.Clrn.getKey() + "' or "+ + "accountType='" + ru.spcex.platform.enumeration.AccountType.Tran.getKey() + "' or "+ + "accountType='" + ru.spcex.platform.enumeration.AccountType.Anlt.getKey() + "' )" + ); if (acc == null) { return of (ClearingError.AccountNotPresent, sdf01.getAccount()); }