This commit is contained in:
parent
8ead0d74b5
commit
a30cb92e47
2 changed files with 25 additions and 6 deletions
|
|
@ -561,6 +561,7 @@ public class ValidationConfig {
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_SDf54, sDf54Imdg);
|
ctx.addImdg(IMDGDistributedNames.Map_SDf54, sDf54Imdg);
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_PaymentInstruction, pmtImdg);
|
ctx.addImdg(IMDGDistributedNames.Map_PaymentInstruction, pmtImdg);
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
ctx.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||||
|
ctx.addImdg(IMDGDistributedNames.Map_TradingClearingRegistryList, imdgTradingClearingRegistryList);
|
||||||
return new ValidatorImpl<>(ctx,
|
return new ValidatorImpl<>(ctx,
|
||||||
Sdf55ValidationRule.Fields,
|
Sdf55ValidationRule.Fields,
|
||||||
Sdf55ValidationRule.GenerationIdFound,
|
Sdf55ValidationRule.GenerationIdFound,
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import ru.clearing.classes.statics.data.account.Account;
|
||||||
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;
|
||||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistryList;
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf54;
|
import ru.clearing.classes.statics.data.sdf.SDf54;
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf55;
|
import ru.clearing.classes.statics.data.sdf.SDf55;
|
||||||
import ru.spcex.clearing.error.ClearingError;
|
import ru.spcex.clearing.error.ClearingError;
|
||||||
|
|
@ -14,6 +15,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
||||||
import ru.spcex.clearing.service.AssetTrio;
|
import ru.spcex.clearing.service.AssetTrio;
|
||||||
import ru.spcex.clearing.service.registry.AssetTBFProcessing;
|
import ru.spcex.clearing.service.registry.AssetTBFProcessing;
|
||||||
|
import ru.spcex.platform.enumeration.CurrencyCode;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
|
@ -73,20 +75,36 @@ public enum Sdf55ValidationRule implements IValidationRule<ImdgValidationContext
|
||||||
TcrPresent() {
|
TcrPresent() {
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<StatementRequest> context) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<StatementRequest> context) {
|
||||||
|
Imdg<TradingClearingRegistryList> tcrListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class);
|
||||||
Imdg<TradingClearingRegistry> tcrImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
Imdg<TradingClearingRegistry> tcrImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||||
PaymentInstruction pmt = context.getStoredObject(ValidationStored.Sdf55PaymentInstruction);
|
PaymentInstruction pmt = context.getStoredObject(ValidationStored.Sdf55PaymentInstruction);
|
||||||
Long accCredId = pmt.getCreditLeg_accountId();
|
Long accCredId = pmt.getCreditLeg_accountId();
|
||||||
|
String creditCurrency = pmt.getCreditLeg_currencyCode();
|
||||||
Long addresseeId = pmt.getSenderId();
|
Long addresseeId = pmt.getSenderId();
|
||||||
if (accCredId == null || addresseeId == null) {
|
if (accCredId == null || addresseeId == null) {
|
||||||
return of(ClearingError.RecordNotFound, "TCR - no PI(id=%d)#CreditLeg_accountId/SenderId"
|
return of(ClearingError.RecordNotFound, "TCR - no PI(id=%d)#CreditLeg_accountId/SenderId"
|
||||||
.formatted(pmt.getId()));
|
.formatted(pmt.getId()));
|
||||||
}
|
}
|
||||||
TradingClearingRegistry tcr = tcrImdg.getFirstObjectBySQL(
|
TradingClearingRegistry tcr = null;
|
||||||
"moneyAccountId = '%d' and companyId = %d".formatted(accCredId, addresseeId)
|
TradingClearingRegistryList tcrList;
|
||||||
);
|
String errMsg;
|
||||||
|
if (CurrencyCode.RUB.equalsByKey(creditCurrency)) {
|
||||||
|
errMsg = "TCR moneyAccountId = '%d' and companyId = %d".formatted(accCredId, addresseeId);
|
||||||
|
tcr = tcrImdg.getFirstObjectBySQL(
|
||||||
|
"moneyAccountId = '%d' and companyId = %d".formatted(accCredId, addresseeId));
|
||||||
|
} else {
|
||||||
|
errMsg = "TCR_LIST accountId = '%d' and companyId = %d".formatted(accCredId, addresseeId);
|
||||||
|
tcrList = tcrListImdg.getFirstObjectBySQL(
|
||||||
|
"accountId = '%d'".formatted(accCredId)
|
||||||
|
);
|
||||||
|
if (tcrList != null) {
|
||||||
|
tcr = tcrImdg.getFirstObjectBySQL(
|
||||||
|
"id = '%d' and companyId = %d".formatted(tcrList.getTradingClearingRegistryId(), addresseeId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (tcr == null) {
|
if (tcr == null) {
|
||||||
return of(ClearingError.RecordNotFound, "TCR moneyAccountId = '%d' and companyId = %d"
|
return of(ClearingError.RecordNotFound, errMsg);
|
||||||
.formatted(accCredId, addresseeId));
|
|
||||||
}
|
}
|
||||||
context.storeObject(ValidationStored.Sdf55Tcr, tcr);
|
context.storeObject(ValidationStored.Sdf55Tcr, tcr);
|
||||||
return empty();
|
return empty();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue