This commit is contained in:
parent
8ae41b9d16
commit
3e6b8911c9
2 changed files with 38 additions and 1 deletions
|
|
@ -4,7 +4,9 @@ import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import ru.clearing.classes.statics.data.account.Account;
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -12,6 +14,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.time.TimeUtil;
|
import ru.spcex.platform.utils.time.TimeUtil;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -27,6 +30,8 @@ public class PaymentInstructionBuilderV2 {
|
||||||
private ImdgProvider imdgProvider;
|
private ImdgProvider imdgProvider;
|
||||||
private Imdg<Company> companyImdg;
|
private Imdg<Company> companyImdg;
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||||
|
private final Imdg<ClearingMemberCategory> clearingCategoryImdg;
|
||||||
|
private final Imdg<CompanyRoleSet> cmpRoleImdg;
|
||||||
private Long sessionId;
|
private Long sessionId;
|
||||||
private BigDecimal amount;
|
private BigDecimal amount;
|
||||||
private Account creditLegAccount;
|
private Account creditLegAccount;
|
||||||
|
|
@ -37,6 +42,7 @@ public class PaymentInstructionBuilderV2 {
|
||||||
private static final DateTimeFormatter DATE_FORMATTER_ddMMyy = DateTimeFormatter.ofPattern("ddMMyy");
|
private static final DateTimeFormatter DATE_FORMATTER_ddMMyy = DateTimeFormatter.ofPattern("ddMMyy");
|
||||||
private Long senderId;
|
private Long senderId;
|
||||||
private Long addresseeId;
|
private Long addresseeId;
|
||||||
|
private boolean useCS_BLKD = false;
|
||||||
|
|
||||||
public static PaymentInstructionBuilderV2 builder(ImdgProvider imdgProvider) {
|
public static PaymentInstructionBuilderV2 builder(ImdgProvider imdgProvider) {
|
||||||
return new PaymentInstructionBuilderV2(imdgProvider);
|
return new PaymentInstructionBuilderV2(imdgProvider);
|
||||||
|
|
@ -46,6 +52,13 @@ public class PaymentInstructionBuilderV2 {
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
this.clearingCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
|
this.cmpRoleImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PaymentInstructionBuilderV2 useCS_BLKD(boolean useCS_BLKD) {
|
||||||
|
this.useCS_BLKD = useCS_BLKD;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PaymentInstructionBuilderV2 sessionId(Long sessionId) {
|
public PaymentInstructionBuilderV2 sessionId(Long sessionId) {
|
||||||
|
|
@ -128,7 +141,12 @@ public class PaymentInstructionBuilderV2 {
|
||||||
payment.setPaymentDate(Instant.now());
|
payment.setPaymentDate(Instant.now());
|
||||||
payment.setSettlementDate(LocalDate.now());
|
payment.setSettlementDate(LocalDate.now());
|
||||||
}
|
}
|
||||||
payment.setPaymentPurpose(purpose);
|
|
||||||
|
if (useCS_BLKD && categoryVInitiator(senderId) && companyRoleODEPPresent(senderId)) {
|
||||||
|
payment.setPaymentPurpose("CS_BLKD " + purpose);
|
||||||
|
} else {
|
||||||
|
payment.setPaymentPurpose(purpose);
|
||||||
|
}
|
||||||
payment.setCreditLeg_amount(amount);
|
payment.setCreditLeg_amount(amount);
|
||||||
payment.setDebitLeg_amount(amount);
|
payment.setDebitLeg_amount(amount);
|
||||||
|
|
||||||
|
|
@ -193,4 +211,21 @@ public class PaymentInstructionBuilderV2 {
|
||||||
return cSymbol.getCompanySymbolValue();
|
return cSymbol.getCompanySymbolValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean categoryVInitiator(Long companyId) {
|
||||||
|
ClearingMemberCategory category = clearingCategoryImdg.getFirstObjectByFieldValues(
|
||||||
|
Map.of("companyId", companyId));
|
||||||
|
ClearingCategory ctg = IEnumKey.getEnumByKey(ClearingCategory.class, category.getClearingMemberCategory());
|
||||||
|
return ctg != null && ctg.equals(ClearingCategory.V);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean companyRoleODEPPresent(Long companyId) {
|
||||||
|
return cmpRoleImdg.getFirstObjectBySQL(
|
||||||
|
"companyId = %d and companyRole = '%s' and workflowStatus = '%s'".formatted(
|
||||||
|
companyId,
|
||||||
|
CompanyRole.ODEP.getKey(),
|
||||||
|
WorkflowStatus.Active.getKey()
|
||||||
|
)
|
||||||
|
) != null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -215,6 +215,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage {
|
||||||
.creditLegAccount(creditLegAccount)
|
.creditLegAccount(creditLegAccount)
|
||||||
.amount(amount)
|
.amount(amount)
|
||||||
.sessionId(sessionId)
|
.sessionId(sessionId)
|
||||||
|
.useCS_BLKD(SessionType.FINL.equals(sessionType) || SessionType.MEDM.equals(sessionType))
|
||||||
.purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry()));
|
.purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry()));
|
||||||
PaymentInstruction paymentInstruction = paymentInstructionBuilder.build();
|
PaymentInstruction paymentInstruction = paymentInstructionBuilder.build();
|
||||||
log.debug("Created paymentInstruction by registry.id: {}", registry.getId());
|
log.debug("Created paymentInstruction by registry.id: {}", registry.getId());
|
||||||
|
|
@ -281,6 +282,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage {
|
||||||
.sender(senderId)
|
.sender(senderId)
|
||||||
.addressee(addresseeId)
|
.addressee(addresseeId)
|
||||||
.debitLegAccount(debitLegAccount)
|
.debitLegAccount(debitLegAccount)
|
||||||
|
.useCS_BLKD(SessionType.FINL.equals(sessionType) || SessionType.MEDM.equals(sessionType))
|
||||||
.creditLegAccount(creditLegAccount)
|
.creditLegAccount(creditLegAccount)
|
||||||
.amount(amount)
|
.amount(amount)
|
||||||
.sessionId(sessionId)
|
.sessionId(sessionId)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue