tcr strip from sdf57 specif TKR/TCR

SDF03 for non RUB currencies in session
This commit is contained in:
ialbert 2024-06-14 17:33:53 +03:00
parent 1037b27165
commit fafa3b455a
2 changed files with 19 additions and 11 deletions

View file

@ -116,7 +116,7 @@ public class AnltSearcher {
return new AnltSearch(infoAcc, company, tcr, tcrList, currencyCode); return new AnltSearch(infoAcc, company, tcr, tcrList, currencyCode);
} }
private static final Pattern tcrPattern = Pattern.compile("ТКР|TKR.*?([0-9A-Z-]{12})"); private static final Pattern tcrPattern = Pattern.compile("(?:ТКР|TKR).*?([0-9A-Z-]{12})");
private static String getTkrCodeFromComment(String comment) { private static String getTkrCodeFromComment(String comment) {
if (TextUtil.isEmpty(comment)) { if (TextUtil.isEmpty(comment)) {

View file

@ -47,9 +47,11 @@ import ru.spcex.clearing.session.stage.util.RegistryUtil;
import ru.spcex.platform.enumeration.AccountStatus; import ru.spcex.platform.enumeration.AccountStatus;
import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.Allowed;
import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.enumeration.InstrumentType; import ru.spcex.platform.enumeration.InstrumentType;
import ru.spcex.platform.enumeration.OperationStatus; import ru.spcex.platform.enumeration.OperationStatus;
import ru.spcex.platform.enumeration.RegistryDesignation; import ru.spcex.platform.enumeration.RegistryDesignation;
import ru.spcex.platform.enumeration.RegistryInstrumentType;
import ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.enumeration.RegistryStatus;
import static ru.spcex.platform.enumeration.RegistryTradingParams.*; import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
import ru.spcex.platform.enumeration.RegistryUnit; import ru.spcex.platform.enumeration.RegistryUnit;
@ -403,8 +405,10 @@ public class FormingPaymentInstructionAssets implements ISessionStage {
Registry rgs = pair.getSecond(); Registry rgs = pair.getSecond();
Account account = accountImdg.getSingleObjectByID(paymentInstruction.getCreditLeg_accountId()); Account account = accountImdg.getSingleObjectByID(paymentInstruction.getCreditLeg_accountId());
Security security = securityImdg.getSingleObjectByID(paymentInstruction.getCreditLeg_securityId()); Security security = securityImdg.getSingleObjectByID(paymentInstruction.getCreditLeg_securityId());
if (SessionType.CURR.equals(sessionType) || (rgs != null && Section.CURR.equalsByKey(rgs.getSection()))) { if (SessionType.CURR.equals(sessionType) || (rgs != null
boolean madeStatements = createStatementsIfNeeded(paymentInstruction, rgs); && RegistryInstrumentType.M.equalsByKey(rgs.getRegistryInstrumentType())
&& !CurrencyCode.isRub(rgs.getSecuritySymbol()))) {
boolean madeStatements = statementsWereMade(paymentInstruction, rgs);
if (madeStatements) { if (madeStatements) {
continue; continue;
} }
@ -487,16 +491,20 @@ public class FormingPaymentInstructionAssets implements ISessionStage {
return sDf12; return sDf12;
} }
private boolean createStatementsIfNeeded(PaymentInstruction pmt, Registry am_b) { private boolean statementsWereMade(PaymentInstruction pmt, Registry am_b) {
ImdgPredicateBuilder pb = stlmHPropsImdg.predicateBuilder(); ImdgPredicateBuilder pb = stlmHPropsImdg.predicateBuilder();
String curCode = pmt.getCreditLeg_currencyCode(); String curCode = pmt.getCreditLeg_currencyCode();
boolean noNeedForStatements = stlmHPropsImdg.getFirstObjectByPredicate( {
pb.and( SettlementHouseProperties sttHs = stlmHPropsImdg.getFirstObjectByPredicate(
pb.in("currencyCode", curCode), pb.and(
pb.equals("companyId", Sender.Prc.getId()) pb.in("currencyCode", curCode),
) pb.equals("companyId", Sender.Prc.getId())
) != null; )
if (noNeedForStatements) return false; );
if (sttHs != null) {
return false;
}
}
Supplier<Statement> stmtBldr = () -> { Supplier<Statement> stmtBldr = () -> {
Statement stmt = new Statement(); Statement stmt = new Statement();
stmt.setSenderId(Sender.One.getId()); stmt.setSenderId(Sender.One.getId());