From 0f7a017a8d793e8c50a33a97990b4c7f94d74503 Mon Sep 17 00:00:00 2001 From: etreshenkov Date: Mon, 5 Jun 2023 12:13:41 +0300 Subject: [PATCH] fix registry builders --- .../session/stage/impl/RegistryDepoBuilder.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java index 71280d243..0d8d08376 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java @@ -86,16 +86,23 @@ public class RegistryDepoBuilder implements IRegistryBuilder { Account account = accountImdg.getSingleObjectByID(tcr.getMoneyAccountId()); String capacityByAccount = defineCapacityByAccountType(account.getAccountType(), tcr.getMoneyAccountId()); reg.setAccountId(tcr.getMoneyAccountId()); - if ((regDsgn.equals(RegistryDesignation.O) && side.isBuy()) || (regDsgn.equals(RegistryDesignation.T) && side.isSell())) { + + boolean isOBuying = regDsgn.equals(RegistryDesignation.O) && side.isBuy(); + boolean isOSelling = regDsgn.equals(RegistryDesignation.O) && side.isSell(); + boolean isTSelling = regDsgn.equals(RegistryDesignation.T) && side.isSell(); + boolean isTBuying = regDsgn.equals(RegistryDesignation.T) && side.isBuy(); + + if ((isOBuying || isTSelling) && !secondLeg || + (isOSelling || isTBuying) && secondLeg) { reg.setRegistryInstrumentType(RegistryInstrumentType.M.getKey()); - reg.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme add second leg code branch + reg.setBalanceDimension(BalanceDimension.MONY.getKey()); Currency currency = currencyImdg.getSingleObjectByFieldValues(Map.of("currencyCode", exec.getSettlementCurrency())); reg.setSecurityId(currency.getId()); reg.setSecuritySymbol(currency.getCurrencyCode()); - - } else if ((regDsgn.equals(RegistryDesignation.T) && side.isBuy()) || (regDsgn.equals(RegistryDesignation.O) && side.isSell())) { + } else if ((isOSelling || isTBuying) && !secondLeg || + (isOBuying || isTSelling) && secondLeg) { reg.setRegistryInstrumentType(RegistryInstrumentType.S.getKey()); - reg.setBalanceDimension(BalanceDimension.PICS.getKey()); //fixme add second leg code branch + reg.setBalanceDimension(BalanceDimension.PICS.getKey()); reg.setSecurityId(exec.getSecurityId()); reg.setSecuritySymbol(exec.getSecuritySymbol()); }