tests done

This commit is contained in:
akulikov 2023-05-17 11:00:15 +03:00
parent 94ab971af1
commit 15abb8cbfa
29 changed files with 909 additions and 203 deletions

View file

@ -8,39 +8,47 @@ import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Configuration
public class ReportBuildersConfig {
@Bean("reportBuildersWithoutParams")
public Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams(ImdgProvider imdgProvider) {
Map<ReportType, CSVReportBuilder<EmptyParams>> resultMap = new HashMap<>();
resultMap.put(ReportType.SUMMARY_LIABILITIES_CLAIMS, new SummaryLiabilitiesClaimsReportBuilder(imdgProvider));
resultMap.put(ReportType.SUMMARY_MONEY_CHANGE, new SummaryMoneyChangeReportBuilder(imdgProvider));
public Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams(ImdgProvider imdgProvider) {
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> resultMap = new HashMap<>();
resultMap.put(ReportType.SUMMARY_LIABILITIES_CLAIMS, List.of(new SummaryLiabilitiesClaimsReportBuilder(imdgProvider)));
resultMap.put(ReportType.SUMMARY_MONEY_CHANGE, List.of(new SummaryMoneyChangeReportBuilder(imdgProvider)));
return resultMap;
}
@Bean("reportBuildersWithSessionIdParam")
public Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam(ImdgProvider imdgProvider) {
Map<ReportType, CSVReportBuilder<SessionIdParam>> resultMap = new HashMap<>();
resultMap.put(ReportType.OPERATIONAL_LIABILITIES_CLAIMS, new OperationalLiabilitiesClaimsReportBuilder(imdgProvider));
resultMap.put(ReportType.OPERATIONAL_MONEY_CHANGE, new OperationalMoneyChangeReportBuilder(imdgProvider));
resultMap.put(ReportType.EXECUTED_DEAL_REPORT, new ExecutedDealReportBuilder(imdgProvider));
resultMap.put(ReportType.UNFULFILLED_DEAL_REPORT, new UnfulfilledDealReportBuilder(imdgProvider));
public Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam(ImdgProvider imdgProvider) {
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> resultMap = new HashMap<>();
resultMap.put(ReportType.OPERATIONAL_LIABILITIES_CLAIMS, List.of(new OperationalLiabilitiesClaimsReportBuilder(imdgProvider)));
resultMap.put(ReportType.OPERATIONAL_MONEY_CHANGE, List.of(new OperationalMoneyChangeReportBuilder(imdgProvider)));
resultMap.put(ReportType.EXECUTED_DEAL_REPORT,
List.of(
new ExecutedDealReportBuilder_INFTYPE_1(imdgProvider),
new ExecutedDealReportBuilder_INFTYPE_2(imdgProvider),
new ExecutedDealReportBuilder_INFTYPE_3(imdgProvider),
new ExecutedDealReportBuilder_INFTYPE_4(imdgProvider)
)
);
resultMap.put(ReportType.UNFULFILLED_DEAL_REPORT, List.of(new UnfulfilledDealReportBuilder(imdgProvider)));
return resultMap;
}
@Bean("reportBuildersWithSessionIdListParam")
public Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParams(ImdgProvider imdgProvider) {
Map<ReportType, CSVReportBuilder<SessionIdListParams>> resultMap = new HashMap<>();
resultMap.put(ReportType.PERIOD_LIABILITIES_CLAIMS, new PeriodLiabilitiesClaimsReportBuilder(imdgProvider));
public Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParams(ImdgProvider imdgProvider) {
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> resultMap = new HashMap<>();
resultMap.put(ReportType.PERIOD_LIABILITIES_CLAIMS, List.of(new PeriodLiabilitiesClaimsReportBuilder(imdgProvider)));
return resultMap;
}
@Bean("reportBuildersWithPeriodParams")
public Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams(ImdgProvider imdgProvider) {
Map<ReportType, CSVReportBuilder<PeriodParams>> resultMap = new HashMap<>();
resultMap.put(ReportType.PERIOD_MONEY_CHANGE, new PeriodMoneyChangeReportBuilder(imdgProvider));
public Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams(ImdgProvider imdgProvider) {
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> resultMap = new HashMap<>();
resultMap.put(ReportType.PERIOD_MONEY_CHANGE, List.of(new PeriodMoneyChangeReportBuilder(imdgProvider)));
return resultMap;
}
}

View file

@ -45,7 +45,7 @@ public abstract class CSVReportBuilder<P> {
/**
* Тип отчета по {@link ReportType}
*/
protected abstract ReportType getReportType();
public abstract ReportType getReportType();
/**
* Формирование отчета на основе параметров

View file

@ -5,24 +5,23 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.clearing.classes.statics.data.misc.STrades;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.Allowed;
import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam> {
private final Imdg<ExecutionFond> executionFondImdg;
public abstract class ExecutedDealReportBuilderCommon<T> extends CSVReportBuilder<T> {
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
protected final Imdg<ExecutionFond> executionFondImdg;
private final Imdg<Company> companyImdg;
private final Imdg<STrades> sTradesImdg;
@ -32,7 +31,7 @@ public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam>
};
private List<String[]> lines = null;
public ExecutedDealReportBuilder(ImdgProvider imdgProvider) {
public ExecutedDealReportBuilderCommon(ImdgProvider imdgProvider) {
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
@ -49,23 +48,15 @@ public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam>
}
@Override
protected String getReportFilename(SessionIdParam params) {
return "executed_deal_report.%s".formatted(LocalDateTime.now());
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.EXECUTED_DEAL_REPORT;
}
protected abstract Collection<ExecutionFond> getExecutionFondsForReport(T params);
@Override
protected void collect(SessionIdParam params) {
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
ImdgPredicate predicate = pb.and(
pb.equals("sessionId", params.getSessionId()),
pb.equals("coverageStatus", Allowed.DENIED.getKey())
);
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);
protected void collect(T params) {
Collection<ExecutionFond> executionFonds = getExecutionFondsForReport(params);
lines = new ArrayList<>(executionFonds.size());
for (ExecutionFond executionFond : executionFonds) {
@ -82,7 +73,7 @@ public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam>
String securityId = String.valueOf(executionFond.getSecurityId());
String tradeNo = String.valueOf(executionFond.getExchangeExecutionId());
String tradeDate = dateFormatter.format(executionFond.getTradingDate());
String tradeTime = dateFormatter.format(executionFond.getCreated());
String tradeTime = dateFormatter.format(LocalDate.ofInstant(executionFond.getCreated(), ZoneId.systemDefault()));
String settleDate = dateFormatter.format(executionFond.getSettlementDate());
String settleCode = sTrade != null ? sTrade.getSettleCode() : "";
String quantity = String.valueOf(executionFond.getQuantity());

View file

@ -0,0 +1,34 @@
package ru.spcex.clearing.reports.reports.bp;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
public ExecutedDealReportBuilder_INFTYPE_1(ImdgProvider imdgProvider) {
super(imdgProvider);
}
@Override
protected String getReportFilename(SessionIdParam params) {
return "KS_BR_PFX64_INFTYPE_1_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
return executionFondImdg.getCollectionObjectsByPredicate(
pb.and(
pb.equals("sessionId", params.getSessionId()),
pb.less("tradingDate", LocalDate.now()),
pb.equals("settlementDate", LocalDate.now())
)
);
}
}

View file

@ -0,0 +1,34 @@
package ru.spcex.clearing.reports.reports.bp;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
public ExecutedDealReportBuilder_INFTYPE_2(ImdgProvider imdgProvider) {
super(imdgProvider);
}
@Override
protected String getReportFilename(SessionIdParam params) {
return "KS_BR_PFX64_INFTYPE_2_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
return executionFondImdg.getCollectionObjectsByPredicate(
pb.and(
pb.equals("sessionId", params.getSessionId()),
pb.equals("tradingDate", LocalDate.now()),
pb.equals("settlementDate", LocalDate.now())
)
);
}
}

View file

@ -0,0 +1,28 @@
package ru.spcex.clearing.reports.reports.bp;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
public ExecutedDealReportBuilder_INFTYPE_3(ImdgProvider imdgProvider) {
super(imdgProvider);
}
@Override
protected String getReportFilename(SessionIdParam params) {
return "KS_BR_PFX64_INFTYPE_3_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
return executionFondImdg.getCollectionObjectsByPredicate(pb.greater("settlementDate", LocalDate.now()));
}
}

View file

@ -0,0 +1,34 @@
package ru.spcex.clearing.reports.reports.bp;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.Allowed;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collection;
public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
public ExecutedDealReportBuilder_INFTYPE_4(ImdgProvider imdgProvider) {
super(imdgProvider);
}
@Override
protected String getReportFilename(SessionIdParam params) {
return "KS_BR_PFX64_INFTYPE_4_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
return executionFondImdg.getCollectionObjectsByPredicate(
pb.and(
pb.equals("coverageStatus", Allowed.DENIED.getKey()),
pb.equals("settlementDate", LocalDate.now())
)
);
}
}

View file

@ -11,9 +11,11 @@ import ru.spcex.platform.enumeration.InOutDirection;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -30,6 +32,7 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
"account", "currency", "registry_code", "registry_name", "open_balance", "change_balance", "add_withdraw",
"close_balance", "remarks", "add_sum", "add_time", "withdraw_sum", "withdraw_time"
};
protected List<String[]> lines = null;
public MoneyChangeReportBuilder(ImdgProvider imdgProvider) {
@ -54,13 +57,13 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
@Override
protected void collect(P params) {
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
Collection<Registry> registries = getRegistryForReport(params);
Company clearingHouseCompany = companyImdg.getSingleObjectByID(1L);
String clearingHouse = clearingHouseCompany.getFullName();
Instant now = Instant.now();
LocalDate nowDate = LocalDate.now();
LocalTime nowTime = LocalTime.now();
lines = new ArrayList<>(registries.size());
for (Registry registry : registries) {
Company company = companyImdg.getSingleObjectByID(registry.getCompanyId());
@ -71,13 +74,13 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
PaymentInstruction paymentInstruction = paymentInstructionImdg.getSingleObjectByFieldValues(
Map.of(
"id", registry.getPaymentId(),
"creditLegDirection", InOutDirection.out.getKey()
"creditLeg_direction", InOutDirection.out.getKey()
)
);
String id = String.valueOf(registry.getId());
String docDate = dateFormatter.format(now);
String docTime = timeFormatter.format(now);
String docDate = dateFormatter.format(nowDate);
String docTime = timeFormatter.format(nowTime);
String docName = "Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга";
String docType = "KS_FIRMID_ASSETS";
String firmId = String.valueOf(registry.getCompanyId());
@ -93,9 +96,9 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
String closeBalance = String.valueOf(registry.getCloseBalance());
String remarks = "";
String addSum = String.valueOf(registry.getCredit());
String addTime = dateTimeFormatter.format(statement.getCreated());
String addTime = dateTimeFormatter.format(LocalDateTime.ofInstant(statement.getCreated(), ZoneId.systemDefault()));
String withdrawSum = String.valueOf(registry.getDebit());
String withdrawTime = dateTimeFormatter.format(paymentInstruction.getPaymentDate());
String withdrawTime = dateTimeFormatter.format(LocalDateTime.ofInstant(paymentInstruction.getPaymentDate(), ZoneId.systemDefault()));
int valueIdx = 0;
String[] line = new String[getHeaders().length];
@ -103,7 +106,6 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
line[valueIdx++] = docDate;
line[valueIdx++] = docTime;
line[valueIdx++] = docName;
line[valueIdx++] = docTime;
line[valueIdx++] = docType;
line[valueIdx++] = clearingHouse;
line[valueIdx++] = firmId;

View file

@ -37,7 +37,7 @@ public class OperationalLiabilitiesClaimsReportBuilder extends LiabilitiesClaims
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.OPERATIONAL_LIABILITIES_CLAIMS;
}
}

View file

@ -5,7 +5,7 @@ import ru.spcex.clearing.reports.reports.SessionIdParam;
import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Map;
@ -23,11 +23,11 @@ public class OperationalMoneyChangeReportBuilder extends MoneyChangeReportBuilde
@Override
protected String getReportFilename(SessionIdParam params) {
return "operational_money_change.%s".formatted(dateTimeFormatter.format(Instant.now()));
return "operational_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.OPERATIONAL_MONEY_CHANGE;
}
}

View file

@ -6,7 +6,7 @@ import ru.spcex.clearing.reports.reports.SessionIdListParams;
import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Collections;
@ -18,11 +18,11 @@ public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepor
@Override
protected String getReportFilename(SessionIdListParams params) {
return "period_liabilities_claims.%s".formatted(dateTimeFormatter.format(Instant.now()));
return "period_liabilities_claims.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.PERIOD_LIABILITIES_CLAIMS;
}

View file

@ -6,7 +6,7 @@ import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Collection;
public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<PeriodParams> {
@ -31,12 +31,12 @@ public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Per
return "period_money_change.%s-%s.%s".formatted(
dateFormatter.format(params.getStartDate()),
dateFormatter.format(params.getEndDate()),
dateTimeFormatter.format(Instant.now())
dateTimeFormatter.format(LocalDateTime.now())
);
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.PERIOD_MONEY_CHANGE;
}

View file

@ -6,7 +6,7 @@ import ru.spcex.clearing.reports.reports.EmptyParams;
import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Collection;
public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder<EmptyParams> {
@ -26,11 +26,11 @@ public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepo
@Override
protected String getReportFilename(EmptyParams params) {
return "summary_money_change.%s".formatted(dateTimeFormatter.format(Instant.now()));
return "summary_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.SUMMARY_LIABILITIES_CLAIMS;
}
}

View file

@ -5,7 +5,7 @@ import ru.spcex.clearing.reports.reports.EmptyParams;
import ru.spcex.platform.enumeration.ReportType;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.Collection;
public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<EmptyParams> {
@ -20,11 +20,11 @@ public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Em
@Override
protected String getReportFilename(EmptyParams params) {
return "summary_money_change.%s".formatted(dateTimeFormatter.format(Instant.now()));
return "summary_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.SUMMARY_MONEY_CHANGE;
}

View file

@ -14,7 +14,8 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -26,7 +27,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
private final String[] headers = {
"id", "securityId", "tradeNo", "tradeDate", "settleCode"
};
private final List<String[]> lines = null;
private List<String[]> lines = null;
public UnfulfilledDealReportBuilder(ImdgProvider imdgProvider) {
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
@ -46,11 +47,11 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
@Override
protected String getReportFilename(SessionIdParam params) {
return "unfulfilled_deal_report.%s".formatted(dateTimeFormatter.format(Instant.now()));
return "unfulfilled_deal_report.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
}
@Override
protected ReportType getReportType() {
public ReportType getReportType() {
return ReportType.UNFULFILLED_DEAL_REPORT;
}
@ -80,6 +81,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
String settleCode = sTrade != null ? sTrade.getClassCode() : null;
int valueIdx = 0;
lines = new ArrayList<>(executionFonds.size());
String[] line = new String[getHeaders().length];
line[valueIdx++] = id;
line[valueIdx++] = securityId;

View file

@ -25,6 +25,8 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
import ru.spcex.platform.utils.validation.IValidator;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@ -38,10 +40,10 @@ public class ReportService extends QueueConsumer implements InitializingBean {
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
private final Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams;
private final Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam;
private final Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParam;
private final Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams;
private final Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams;
private final Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam;
private final Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
private final Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams;
private final File outFolder;
@ -52,13 +54,13 @@ public class ReportService extends QueueConsumer implements InitializingBean {
RequestHelper requestHelper,
ReportsServiceSettings reportsServiceSettings,
@Qualifier("reportBuildersWithoutParams")
Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams,
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams,
@Qualifier("reportBuildersWithSessionIdParam")
Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam,
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam,
@Qualifier("reportBuildersWithSessionIdListParam")
Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParam,
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam,
@Qualifier("reportBuildersWithPeriodParams")
Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams,
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams,
@Qualifier("reportRequestValidator")
Function<ReportRequest, IValidator> reportRequestValidator,
@Qualifier("reportRequestWithSessionIdValidator")
@ -111,14 +113,24 @@ public class ReportService extends QueueConsumer implements InitializingBean {
ReportRequest req = userRequest.getRequestPayload();
log.debug("Create report type {}...", req.getReportId());
CSVReportBuilder<EmptyParams> builder = reportBuildersWithoutParams.get(
List<CSVReportBuilder<EmptyParams>> builders = reportBuildersWithoutParams.get(
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
);
File outFile = builder.createReport(new EmptyParams(), outFolder);
if (outFile == null) {
List<String> outFilenames = new ArrayList<>();
for (CSVReportBuilder<EmptyParams> builder : builders) {
File outFile = builder.createReport(new EmptyParams(), outFolder);
if (outFile == null) continue;
outFilenames.add(outFile.getAbsolutePath());
}
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
int outFilesCnt = outFilenames.size();
if (outFilesCnt == 0) {
log.error("Create report {} failed, see log", req.getReportId());
} else if (outFilesCnt < builders.size()) {
log.error("Create some error for {} failed, see log", req.getReportId());
} else {
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
}
return null;
}
@ -133,14 +145,26 @@ public class ReportService extends QueueConsumer implements InitializingBean {
ReportRequestWithSessionId req = userRequest.getRequestPayload();
log.debug("Create report type {}...", req.getReportId());
CSVReportBuilder<SessionIdParam> builder = reportBuildersWithSessionIdParam.get(
List<CSVReportBuilder<SessionIdParam>> builders = reportBuildersWithSessionIdParam.get(
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
);
SessionIdParam sessionIdParam = new SessionIdParam();
sessionIdParam.setSessionId(req.getSessionId());
File outFile = builder.createReport(sessionIdParam, outFolder);
List<String> outFilenames = new ArrayList<>();
for (CSVReportBuilder<SessionIdParam> builder : builders) {
SessionIdParam sessionIdParam = new SessionIdParam();
sessionIdParam.setSessionId(req.getSessionId());
File outFile = builder.createReport(sessionIdParam, outFolder);
if (outFile == null) continue;
outFilenames.add(outFile.getAbsolutePath());
}
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
int outFilesCnt = outFilenames.size();
if (outFilesCnt == 0) {
log.error("Create report {} failed, see log", req.getReportId());
} else if (outFilesCnt < builders.size()) {
log.error("Create some error for {} failed, see log", req.getReportId());
} else {
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
}
return null;
}
@ -155,14 +179,26 @@ public class ReportService extends QueueConsumer implements InitializingBean {
ReportRequestWithSessionIdList req = userRequest.getRequestPayload();
log.debug("Create report type {}...", req.getReportId());
CSVReportBuilder<SessionIdListParams> builder = reportBuildersWithSessionIdListParam.get(
List<CSVReportBuilder<SessionIdListParams>> builders = reportBuildersWithSessionIdListParam.get(
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
);
SessionIdListParams sessionIdListParams = new SessionIdListParams();
sessionIdListParams.setSessionIdList(req.getSessionIdList());
File outFile = builder.createReport(sessionIdListParams, outFolder);
List<String> outFilenames = new ArrayList<>();
for (CSVReportBuilder<SessionIdListParams> builder : builders) {
SessionIdListParams sessionIdListParams = new SessionIdListParams();
sessionIdListParams.setSessionIdList(req.getSessionIdList());
File outFile = builder.createReport(sessionIdListParams, outFolder);
if (outFile == null) continue;
outFilenames.add(outFile.getAbsolutePath());
}
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
int outFilesCnt = outFilenames.size();
if (outFilesCnt == 0) {
log.error("Create report {} failed, see log", req.getReportId());
} else if (outFilesCnt < builders.size()) {
log.error("Create some error for {} failed, see log", req.getReportId());
} else {
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
}
return null;
}
@ -177,15 +213,27 @@ public class ReportService extends QueueConsumer implements InitializingBean {
ReportRequestWithPeriod req = userRequest.getRequestPayload();
log.debug("Create report type {}...", req.getReportId());
CSVReportBuilder<PeriodParams> builder = reportBuildersWithPeriodParams.get(
List<CSVReportBuilder<PeriodParams>> builders = reportBuildersWithPeriodParams.get(
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
);
PeriodParams periodParams = new PeriodParams();
periodParams.setStartDate(req.getStartDate());
periodParams.setEndDate(req.getEndDate());
File outFile = builder.createReport(periodParams, outFolder);
List<String> outFilenames = new ArrayList<>();
for (CSVReportBuilder<PeriodParams> builder : builders) {
PeriodParams periodParams = new PeriodParams();
periodParams.setStartDate(req.getStartDate());
periodParams.setEndDate(req.getEndDate());
File outFile = builder.createReport(periodParams, outFolder);
if (outFile == null) continue;
outFilenames.add(outFile.getAbsolutePath());
}
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
int outFilesCnt = outFilenames.size();
if (outFilesCnt == 0) {
log.error("Create report {} failed, see log", req.getReportId());
} else if (outFilesCnt < builders.size()) {
log.error("Create some error for {} failed, see log", req.getReportId());
} else {
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
}
return null;
}

View file

@ -9,10 +9,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.kafka.clients.consumer.MockConsumer;
import org.apache.kafka.clients.producer.MockProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
@ -26,11 +23,17 @@ import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
import ru.clearing.classes.statics.data.misc.Listing;
import ru.clearing.classes.statics.data.misc.STrades;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.statement.Statement;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
import ru.spcex.clearing.reports.config.BeanConfiguration;
import ru.spcex.clearing.reports.config.ReportBuildersConfig;
import ru.spcex.clearing.reports.config.TestConfig;
@ -64,25 +67,18 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
ReportBuildersConfig.class,
TestConfig.class
})
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class ReportServiceTest {
private Imdg<ExecutionFond> executionFondImdg;
private Imdg<ExecutionDeposit> executionDepositImdg;
private Imdg<Company> companyImdg;
private Imdg<Registry> registryImdg;
private Imdg<Listing> listingImdg;
private Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private static File outFolder;
private final ExecutionFond testExecutionFond = new ExecutionFond();
private final ExecutionDeposit testExecutionDeposit = new ExecutionDeposit();
private final Registry testRegistry_1 = new Registry();
private final Registry testRegistry_2 = new Registry();
private final Company testCompany_1 = new Company();
private final Company testCompany_2 = new Company();
private final Company testCompanyHouse = new Company();
private final Registry testRegistryForCompanyId_1 = new Registry();
private final Registry testRegistryForCompanyId_2 = new Registry();
private final Registry tm_tRegistry_1 = new Registry();
private final Registry om_tRegistry_1 = new Registry();
private final Registry ts_tRegistry_1 = new Registry();
@ -91,31 +87,88 @@ public class ReportServiceTest {
private final Registry om_tRegistry_2 = new Registry();
private final Registry ts_tRegistry_2 = new Registry();
private final Registry os_tRegistry_2 = new Registry();
private final Listing testListing_1 = new Listing();
private final Listing testListing_2 = new Listing();
private final FixedIncomeSecurity testFixedIncomeSecurity_1 = new FixedIncomeSecurity();
private final FixedIncomeSecurity testFixedIncomeSecurity_2 = new FixedIncomeSecurity();
private final TradingClearingRegistry testTradingClearingRegistry_1 = new TradingClearingRegistry();
private final TradingClearingRegistry testTradingClearingRegistry_2 = new TradingClearingRegistry();
private static File outFolder;
private final PaymentInstruction testPaymentInstruction_1 = new PaymentInstruction();
private final PaymentInstruction testPaymentInstruction_2 = new PaymentInstruction();
private final Statement testStatement_1 = new Statement();
private final Statement testStatement_2 = new Statement();
private final STrades testSTrade = new STrades();
private final Instant TEST_EXCHANGE_EXECUTION_TIME_1 = Instant.ofEpochMilli(777777777777L);
private final Instant TEST_EXCHANGE_EXECUTION_TIME_2 = Instant.ofEpochMilli(888888888888L);
private final LocalDate TEST_TRADING_DATE_1 = LocalDate.now().minus(10, ChronoUnit.DAYS);
private final LocalDate TEST_TRADING_DATE_2 = LocalDate.now().minus(20, ChronoUnit.DAYS);
private final String TEST_MARKET_1 = Market.fond.getKey();
private final String TEST_MARKET_2 = Market.mkrs.getKey();
private final BigDecimal TEST_PRICE_1 = BigDecimal.valueOf(77L);
private final BigDecimal TEST_PRICE_2 = BigDecimal.valueOf(88L);
private final BigDecimal TEST_LOTS_1 = BigDecimal.valueOf(777L);
private final BigDecimal TEST_LOTS_2 = BigDecimal.valueOf(888L);
private final BigDecimal TEST_QUANTITY_1 = BigDecimal.valueOf(7777L);
private final BigDecimal TEST_QUANTITY_2 = BigDecimal.valueOf(8888L);
private final BigDecimal TEST_INTEREST_AMOUNT_1 = BigDecimal.valueOf(77777L);
private final BigDecimal TEST_INTEREST_AMOUNT_2 = BigDecimal.valueOf(88888L);
private final String TEST_SIDE_1 = Side.SELL.getKey();
private final String TEST_SIDE_2 = Side.BUY.getKey();
private final String TEST_COVERAGE_STATUS_1 = Allowed.DENIED.getKey();
private final String TEST_COVERAGE_STATUS_2 = Allowed.ALLOWED.getKey();
private final Long TEST_SESSION_ID_1 = 10007L;
private final Long TEST_SESSION_ID_2 = 10008L;
private final Long TEST_SESSION_ID_3 = 10009L;
private final LocalDate TEST_CLEARING_DATE_1 = LocalDate.now().minus(30, ChronoUnit.DAYS);
private final LocalDate TEST_CLEARING_DATE_2 = LocalDate.now().minus(40, ChronoUnit.DAYS);
private final BigDecimal TEST_SETTLEMENT_AMOUNT = BigDecimal.valueOf(7777777L);
private final LocalDate TEST_SETTLEMENT_DATE = LocalDate.now().minus(22, ChronoUnit.DAYS);
private final Instant TEST_EXCHANGE_EXECUTION_MICROSECONDS = Instant.now().minus(777L, ChronoUnit.SECONDS);
private final BigDecimal TEST_FIRST_LEG_AMOUNT = BigDecimal.valueOf(1L);
private final BigDecimal TEST_SECOND_LEG_AMOUNT = BigDecimal.valueOf(2L);
private final LocalDate TEST_FIRST_LEG_SETTLEMENT_DATE = LocalDate.now().minus(1, ChronoUnit.DAYS);
private final LocalDate TEST_SECOND_LEG_SETTLEMENT_DATE = LocalDate.now().minus(2, ChronoUnit.DAYS);
private final BigDecimal TEST_LOT_SIZE_1 = BigDecimal.valueOf(12L);
private final BigDecimal TEST_LOT_SIZE_2 = BigDecimal.valueOf(34L);
private final BigDecimal TEST_NOMINAL_1 = BigDecimal.valueOf(333L);
private final BigDecimal TEST_NOMINAL_2 = BigDecimal.valueOf(444L);
private final BigDecimal TEST_COUPON_1 = BigDecimal.valueOf(3333L);
private final BigDecimal TEST_COUPON_2 = BigDecimal.valueOf(4444L);
private final BigDecimal TEST_OPEN_BALANCE_1 = BigDecimal.valueOf(3L);
private final BigDecimal TEST_CLOSE_BALANCE_1 = BigDecimal.valueOf(780L);
private final BigDecimal TEST_OPEN_BALANCE_2 = BigDecimal.valueOf(2L);
private final BigDecimal TEST_CLOSE_BALANCE_2 = BigDecimal.valueOf(890L);
private final BigDecimal TEST_CREDIT_1 = BigDecimal.valueOf(777777L);
private final BigDecimal TEST_CREDIT_2 = BigDecimal.valueOf(999999L);
private final BigDecimal TEST_DEBIT_1 = BigDecimal.valueOf(77777L);
private final BigDecimal TEST_DEBIT_2 = BigDecimal.valueOf(99999L);
private final LocalDate TEST_START_CLEARING_DATE = LocalDate.now();
private final LocalDate TEST_END_CLEARING_DATE = LocalDate.now();
private Imdg<ExecutionFond> executionFondImdg;
private Imdg<ExecutionDeposit> executionDepositImdg;
private Imdg<Company> companyImdg;
private Imdg<Registry> registryImdg;
private Imdg<Listing> listingImdg;
private Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private Imdg<PaymentInstruction> paymentInstructionImdg;
private Imdg<Statement> statementImdg;
private Imdg<STrades> sTradeImdg;
@Autowired
private ReportService reportService;
@Autowired
@Qualifier("hazelcastServiceTest")
private ImdgProvider imdgProvider;
@Captor
private ArgumentCaptor<ProducerRecord> producerRecord;
@SpyBean
private MockProducer<String, Object> producer;
private static int reportRequestCnt = 0;
private static int reportRequestWithSessionIdCnt = 0;
private static int reportRequestWithSessionIdListCnt = 0;
private static int reportRequestWithPeriodCnt = 0;
@BeforeAll
public static void createTestFolder() {
outFolder = new File("out");
@ -128,7 +181,9 @@ public class ReportServiceTest {
}
@Test
public void createReportTest_OPERATIONAL_LIABILITIES_CLAIMS() throws InterruptedException, IOException, CsvValidationException {
@Order(1)
public void createReportTest_OPERATIONAL_LIABILITIES_CLAIMS() throws IOException, CsvValidationException {
clearTestDir();
final Long oldSessionIdDeposit = testExecutionDeposit.getSessionId();
final Long oldSessionIdFond = testExecutionFond.getSessionId();
@ -145,17 +200,15 @@ public class ReportServiceTest {
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
0,
reportRequestWithSessionIdCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles()[0];
File expectedFile = new File(getClass().getClassLoader().getResource("operational_liabilities_claims_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time"));
System.out.println("hello");
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/operational_liabilities_claims_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
testExecutionDeposit.setSessionId(oldSessionIdDeposit);
testExecutionFond.setSessionId(oldSessionIdFond);
@ -165,7 +218,405 @@ public class ReportServiceTest {
outFile.delete();
}
public void compareCSVFiles(File expectedFile, File actualFile, List<String> columnsForSkip) throws IOException, CsvValidationException {
@Test
@Order(2)
public void createReportTest_PERIOD_LIABILITIES_CLAIMS() throws CsvValidationException, IOException {
clearTestDir();
ReportRequestWithSessionIdList reportRequestWithPeriod = new ReportRequestWithSessionIdList();
reportRequestWithPeriod.setReportId(ReportType.PERIOD_LIABILITIES_CLAIMS.getKey());
reportRequestWithPeriod.setSessionIdList(Arrays.asList(testExecutionDeposit.getSessionId(), testExecutionFond.getSessionId()));
String jsonString = TestUtils.getJsonStringForSystem(reportRequestWithPeriod, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID_LIST,
reportRequestWithSessionIdListCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles()[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/period_liabilities_claims_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
outFile.delete();
}
@Test
@Order(3)
public void createReportTest_SUMMARY_LIABILITIES_CLAIMS() throws CsvValidationException, IOException {
clearTestDir();
ReportRequest reportRequest = new ReportRequest();
reportRequest.setReportId(ReportType.SUMMARY_LIABILITIES_CLAIMS.getKey());
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT,
reportRequestCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles()[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/summary_liabilities_claims_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
outFile.delete();
}
@Test
@Order(4)
public void createReportTest_OPERATIONAL_MONEY_CHANGE() throws CsvValidationException, IOException {
clearTestDir();
final Long oldRegistrySessionId_1 = testRegistry_1.getSessionId();
final Long oldRegistrySessionId_2 = testRegistry_2.getSessionId();
testRegistry_1.setSessionId(TEST_SESSION_ID_3);
testRegistry_2.setSessionId(TEST_SESSION_ID_3);
registryImdg.update(testRegistry_1);
registryImdg.update(testRegistry_2);
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
reportRequest.setReportId(ReportType.OPERATIONAL_MONEY_CHANGE.getKey());
reportRequest.setSessionId(TEST_SESSION_ID_3);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
reportRequestWithSessionIdCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles()[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/operational_money_change_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
testRegistry_1.setSessionId(oldRegistrySessionId_1);
testRegistry_2.setSessionId(oldRegistrySessionId_2);
registryImdg.update(testRegistry_1);
registryImdg.update(testRegistry_2);
outFile.delete();
}
@Test
@Order(5)
public void createReportTest_PERIOD_MONEY_CHANGE() throws CsvValidationException, IOException {
clearTestDir();
ReportRequestWithPeriod reportRequest = new ReportRequestWithPeriod();
reportRequest.setReportId(ReportType.PERIOD_MONEY_CHANGE.getKey());
reportRequest.setStartDate(TEST_START_CLEARING_DATE);
reportRequest.setEndDate(TEST_END_CLEARING_DATE);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_PERIOD,
reportRequestWithPeriodCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles()[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/period_money_change_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
outFile.delete();
}
@Test
@Order(6)
public void createReportTest_SUMMARY_MONEY_CHANGE() throws CsvValidationException, IOException {
clearTestDir();
ReportRequest reportRequest = new ReportRequest();
reportRequest.setReportId(ReportType.SUMMARY_MONEY_CHANGE.getKey());
TestUtils.clearAllInImdg(registryImdg);
registryImdg.insert(testRegistry_1);
registryImdg.insert(testRegistry_2);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT,
reportRequestCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles()[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/summary_money_change_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
registryImdg.insert(testRegistryForCompanyId_1);
registryImdg.insert(testRegistryForCompanyId_2);
registryImdg.insert(tm_tRegistry_1);
registryImdg.insert(om_tRegistry_1);
registryImdg.insert(ts_tRegistry_1);
registryImdg.insert(os_tRegistry_1);
registryImdg.insert(tm_tRegistry_2);
registryImdg.insert(om_tRegistry_2);
registryImdg.insert(ts_tRegistry_2);
registryImdg.insert(os_tRegistry_2);
registryImdg.insert(testRegistry_1);
registryImdg.insert(testRegistry_2);
outFile.delete();
}
@Test
@Order(7)
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_1() throws CsvValidationException, IOException {
clearTestDir();
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
reportRequest.setSessionId(TEST_SESSION_ID_3);
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
executionFondImdg.update(testExecutionFond);
// TEST INFTYPE_1
testExecutionFond.setTradingDate(LocalDate.now().minus(10, ChronoUnit.DAYS));
testExecutionFond.setSettlementDate(LocalDate.now());
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
executionFondImdg.update(testExecutionFond);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
reportRequestWithSessionIdCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_1"))[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_1_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
for (File file : outFolder.listFiles()) {
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
compareCSVFiles(expectedEmptyFile, file, null);
}
FileUtils.delete(file);
}
testExecutionFond.setSessionId(oldExecutionFondSessionId);
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
executionFondImdg.update(testExecutionFond);
}
@Test
@Order(8)
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_2() throws CsvValidationException, IOException {
clearTestDir();
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
reportRequest.setSessionId(TEST_SESSION_ID_3);
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
executionFondImdg.update(testExecutionFond);
// TEST INFTYPE_2
testExecutionFond.setTradingDate(LocalDate.now());
testExecutionFond.setSettlementDate(LocalDate.now());
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
executionFondImdg.update(testExecutionFond);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
reportRequestWithSessionIdCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_2"))[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_2_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
for (File file : outFolder.listFiles()) {
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
compareCSVFiles(expectedEmptyFile, file, null);
}
FileUtils.delete(file);
}
testExecutionFond.setSessionId(oldExecutionFondSessionId);
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
executionFondImdg.update(testExecutionFond);
}
@Test
@Order(9)
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_3() throws CsvValidationException, IOException {
clearTestDir();
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
reportRequest.setSessionId(TEST_SESSION_ID_3);
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
// TEST INFTYPE_3
testExecutionFond.setSettlementDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
executionFondImdg.update(testExecutionFond);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
reportRequestWithSessionIdCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_3"))[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_3_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
for (File file : outFolder.listFiles()) {
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
compareCSVFiles(expectedEmptyFile, file, null);
}
FileUtils.delete(file);
}
testExecutionFond.setSessionId(oldExecutionFondSessionId);
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
executionFondImdg.update(testExecutionFond);
}
@Test
@Order(10)
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_4() throws CsvValidationException, IOException {
clearTestDir();
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
reportRequest.setSessionId(TEST_SESSION_ID_3);
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
// TEST INFTYPE_4
testExecutionFond.setSessionId(TEST_SESSION_ID_1);
testExecutionFond.setSettlementDate(LocalDate.now());
testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey());
executionFondImdg.update(testExecutionFond);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
reportRequestWithSessionIdCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_4"))[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_4_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
for (File file : outFolder.listFiles()) {
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
compareCSVFiles(expectedEmptyFile, file, null);
}
FileUtils.delete(file);
}
testExecutionFond.setSessionId(oldExecutionFondSessionId);
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
executionFondImdg.update(testExecutionFond);
}
@Test
@Order(11)
public void createReportTest_UNFULFILLED_DEAL_REPORT() throws IOException, CsvValidationException {
clearTestDir();
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
reportRequest.setReportId(ReportType.UNFULFILLED_DEAL_REPORT.getKey());
reportRequest.setSessionId(TEST_SESSION_ID_3);
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey());
executionFondImdg.update(testExecutionFond);
final String oldSTradeSettleCode = testSTrade.getSettleCode();
final String oldSTradeOperation = testSTrade.getOperation();
testSTrade.setSettleCode(testExecutionFond.getSettlementCode());
testSTrade.setOperation(testExecutionFond.getSide());
sTradeImdg.update(testSTrade);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
reportRequestWithSessionIdCnt++,
0,
jsonString);
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
File outFile = outFolder.listFiles()[0];
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/unfulfilled_deal_report_expected.csv").getFile());
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate"));
testExecutionFond.setSessionId(oldExecutionFondSessionId);
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
executionFondImdg.update(testExecutionFond);
testSTrade.setSettleCode(oldSTradeSettleCode);
testSTrade.setOperation(oldSTradeOperation);
sTradeImdg.update(testSTrade);
}
private void compareCSVFiles(File expectedFile, File actualFile, List<String> columnsForSkip) throws IOException, CsvValidationException {
if (columnsForSkip == null) columnsForSkip = Collections.emptyList();
CSVParser csvParser = new CSVParserBuilder().withSeparator(',').withQuoteChar('\"').build();
CSVReader expectedCSVReader = new CSVReaderBuilder(new FileReader(expectedFile)).withCSVParser(csvParser).build();
@ -199,7 +650,7 @@ public class ReportServiceTest {
int actualIdx = actualValueForColumn.get(expectedHeader);
String expected = expectedLines[expectedIdx];
String actual = actualLines[actualIdx];
assertEquals(expected, actual);
assertEquals(expected, actual, expectedHeader);
}
} while (true);
@ -207,14 +658,17 @@ public class ReportServiceTest {
actualCSVReader.close();
}
@PostConstruct
private void init() {
ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId();
Long TEST_EXECUTION_FOND_ID = 888L;
testExecutionFond.setId(TEST_EXECUTION_FOND_ID);
Long TEST_EXCHANGE_EXECUTION_ID_1 = 777L;
testExecutionFond.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_1);
testExecutionFond.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_1);
testExecutionFond.setTradingDate(TEST_TRADING_DATE_1);
Long TEST_TRADING_CLEARING_REGISTRY_ID_1 = 777L;
testExecutionFond.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
testExecutionFond.setMarket(TEST_MARKET_1);
testExecutionFond.setPrice(TEST_PRICE_1);
@ -222,27 +676,43 @@ public class ReportServiceTest {
testExecutionFond.setQuantity(TEST_QUANTITY_1);
testExecutionFond.setInterestAmount(TEST_INTEREST_AMOUNT_1);
testExecutionFond.setSide(TEST_SIDE_1);
String TEST_SETTLEMENT_CURRENCY_1 = "test-settlement-currency-1";
testExecutionFond.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_1);
Long TEST_COMPANY_ID_1 = 1007L;
testExecutionFond.setCompanyId(TEST_COMPANY_ID_1);
Long TEST_DURATION_1 = 2007L;
testExecutionFond.setDuration(TEST_DURATION_1);
String TEST_SECURITY_FULL_NAME_1 = "test-security-full-name-1";
testExecutionFond.setSecurityFullName(TEST_SECURITY_FULL_NAME_1);
String TEST_SECURITY_SYMBOL_1 = "test-security-symbol-1";
testExecutionFond.setSecuritySymbol(TEST_SECURITY_SYMBOL_1);
Long TEST_SECURITY_ID_1 = 3007L;
testExecutionFond.setSecurityId(TEST_SECURITY_ID_1);
Long TEST_COUNTER_PARTY_ID_1 = 4007L;
testExecutionFond.setCounterPartyId(TEST_COUNTER_PARTY_ID_1);
testExecutionFond.setCoverageStatus(TEST_COVERAGE_STATUS_1);
testExecutionFond.setSessionId(TEST_SESSION_ID_1);
testExecutionFond.setClearingDate(TEST_CLEARING_DATE_1);
Long TEST_EXCHANGE_ORDER_ID = 20007L;
testExecutionFond.setExchangeOrderId(TEST_EXCHANGE_ORDER_ID);
testExecutionFond.setSettlementAmount(TEST_SETTLEMENT_AMOUNT);
String TEST_COMMENT = "test-comment";
testExecutionFond.setComment(TEST_COMMENT);
Long TEST_CLIENT_CODE_ID = 222222L;
testExecutionFond.setClientCodeId(TEST_CLIENT_CODE_ID);
String TEST_SETTLEMENT_CODE = "test-settlement-code";
testExecutionFond.setSettlementCode(TEST_SETTLEMENT_CODE);
testExecutionFond.setSettlementDate(TEST_SETTLEMENT_DATE);
testExecutionFond.setExchangeExecutionMicroseconds(TEST_EXCHANGE_EXECUTION_MICROSECONDS);
testExecutionFond.setCreated(Instant.now());
Long TEST_EXECUTION_DEPOSIT_ID = 777L;
testExecutionDeposit.setId(TEST_EXECUTION_DEPOSIT_ID);
Long TEST_EXCHANGE_EXECUTION_ID_2 = 888L;
testExecutionDeposit.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_2);
testExecutionDeposit.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_2);
testExecutionDeposit.setTradingDate(TEST_TRADING_DATE_2);
Long TEST_TRADING_CLEARING_REGISTRY_ID_2 = 888L;
testExecutionDeposit.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
testExecutionDeposit.setMarket(TEST_MARKET_2);
testExecutionDeposit.setPrice(TEST_PRICE_2);
@ -250,12 +720,19 @@ public class ReportServiceTest {
testExecutionDeposit.setQuantity(TEST_QUANTITY_2);
testExecutionDeposit.setInterestAmount(TEST_INTEREST_AMOUNT_2);
testExecutionDeposit.setSide(TEST_SIDE_2);
String TEST_SETTLEMENT_CURRENCY_2 = "test-settlement-currency-2";
testExecutionDeposit.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_2);
Long TEST_COMPANY_ID_2 = 1008L;
testExecutionDeposit.setCompanyId(TEST_COMPANY_ID_2);
Long TEST_DURATION_2 = 2008L;
testExecutionDeposit.setDuration(TEST_DURATION_2);
String TEST_SECURITY_FULL_NAME_2 = "test-security-full-name-2";
testExecutionDeposit.setSecurityFullName(TEST_SECURITY_FULL_NAME_2);
String TEST_SECURITY_SYMBOL_2 = "test-security-symbol-2";
testExecutionDeposit.setSecuritySymbol(TEST_SECURITY_SYMBOL_2);
Long TEST_SECURITY_ID_2 = 3008L;
testExecutionDeposit.setSecurityId(TEST_SECURITY_ID_2);
Long TEST_COUNTER_PARTY_ID_2 = 4008L;
testExecutionDeposit.setCounterPartyId(TEST_COUNTER_PARTY_ID_2);
testExecutionDeposit.setCoverageStatus(TEST_COVERAGE_STATUS_2);
testExecutionDeposit.setSessionId(TEST_SESSION_ID_2);
@ -264,8 +741,11 @@ public class ReportServiceTest {
testExecutionDeposit.setSecondLegAmount(TEST_SECOND_LEG_AMOUNT);
testExecutionDeposit.setFirstLegSettlementDate(TEST_FIRST_LEG_SETTLEMENT_DATE);
testExecutionDeposit.setSecondLegSettlementDate(TEST_SECOND_LEG_SETTLEMENT_DATE);
String TEST_FIRST_LEG_SETTLEMENT_CODE = "test-first-leg-settlement-code";
testExecutionDeposit.setFirstLegSettlementCode(TEST_FIRST_LEG_SETTLEMENT_CODE);
String TEST_SECOND_LEG_SETTLEMENT_CODE = "test-second-leg-settlement-code";
testExecutionDeposit.setSecondLegSettlementCode(TEST_SECOND_LEG_SETTLEMENT_CODE);
String TEST_CONTRACT = "test_contract";
testExecutionDeposit.setContract(TEST_CONTRACT);
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
@ -276,9 +756,11 @@ public class ReportServiceTest {
testCompany_1.setWorkflowStatus(WorkflowStatus.Active.getKey());
testCompany_1.setId(TEST_COMPANY_ID_1);
String TEST_COMPANY_FULLNAME_1 = "test-company-fullname-1";
testCompany_1.setFullName(TEST_COMPANY_FULLNAME_1);
testCompany_2.setWorkflowStatus(WorkflowStatus.Active.getKey());
testCompany_2.setId(TEST_COMPANY_ID_2);
String TEST_COMPANY_FULLNAME_2 = "test-company-fullname-2";
testCompany_2.setFullName(TEST_COMPANY_FULLNAME_2);
testCompanyHouse.setId(1L);
testCompanyHouse.setFullName("COMPANY_HOUSE");
@ -289,36 +771,83 @@ public class ReportServiceTest {
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
Long TEST_REGISTRY_ID_1 = 999L;
testRegistry_1.setId(TEST_REGISTRY_ID_1);
testRegistry_1.setCompanyId(TEST_COMPANY_ID_1);
testRegistry_1.setSecurityId(TEST_SECURITY_ID_1);
Long TEST_PAYMT_ID_1 = 222L;
testRegistry_1.setPaymentId(TEST_PAYMT_ID_1);
String TEST_TRADING_CLEARING_REGISTRY_1 = "test-trading-clearing-registry-1";
testRegistry_1.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_1);
Long TEST_MONEY_ACCOUNT_1 = 11L;
testRegistry_1.setAccountId(TEST_MONEY_ACCOUNT_1);
String TEST_REGISTRY_CODE_1 = "test-registry-code-1";
testRegistry_1.setRegistryCode(TEST_REGISTRY_CODE_1);
testRegistry_1.setOpenBalance(TEST_OPEN_BALANCE_1);
testRegistry_1.setCloseBalance(TEST_CLOSE_BALANCE_1);
testRegistry_1.setCredit(TEST_CREDIT_1);
testRegistry_1.setDebit(TEST_DEBIT_1);
testRegistry_1.setClearingDate(TEST_START_CLEARING_DATE);
testRegistry_1.setUpdated(Instant.now());
Long TEST_REGISTRY_ID_2 = 666L;
testRegistry_2.setId(TEST_REGISTRY_ID_2);
testRegistry_2.setCompanyId(TEST_COMPANY_ID_2);
testRegistry_2.setSecurityId(TEST_SECURITY_ID_2);
Long TEST_PAYMT_ID_2 = 333L;
testRegistry_2.setPaymentId(TEST_PAYMT_ID_2);
String TEST_TRADING_CLEARING_REGISTRY_2 = "test-trading-clearing-registry-2";
testRegistry_2.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_2);
Long TEST_MONEY_ACCOUNT_2 = 12L;
testRegistry_2.setAccountId(TEST_MONEY_ACCOUNT_2);
String TEST_REGISTRY_CODE_2 = "test-registry-code-2";
testRegistry_2.setRegistryCode(TEST_REGISTRY_CODE_2);
testRegistry_2.setOpenBalance(TEST_OPEN_BALANCE_2);
testRegistry_2.setCloseBalance(TEST_CLOSE_BALANCE_2);
testRegistry_2.setCredit(TEST_CREDIT_2);
testRegistry_2.setDebit(TEST_DEBIT_2);
testRegistry_2.setClearingDate(TEST_END_CLEARING_DATE);
testRegistry_2.setUpdated(Instant.now());
testRegistryForCompanyId_1.setCompanyId(TEST_COMPANY_ID_1);
testRegistryForCompanyId_1.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_1);
testRegistryForCompanyId_1.setUpdated(Instant.now());
testRegistryForCompanyId_2.setCompanyId(TEST_COMPANY_ID_2);
testRegistryForCompanyId_2.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_2);
registryImdg.insert(testRegistryForCompanyId_1);
registryImdg.insert(testRegistryForCompanyId_2);
testRegistryForCompanyId_2.setUpdated(Instant.now());
tm_tRegistry_1.setRegistryCode("TM_T");
tm_tRegistry_1.setBalance(BigDecimal.valueOf(779L));
tm_tRegistry_1.setUpdated(Instant.now());
om_tRegistry_1.setRegistryCode("OM_T");
om_tRegistry_1.setBalance(BigDecimal.valueOf(2L));
om_tRegistry_1.setUpdated(Instant.now());
ts_tRegistry_1.setRegistryCode("TS_T");
ts_tRegistry_1.setBalance(BigDecimal.valueOf(889L));
ts_tRegistry_1.setUpdated(Instant.now());
os_tRegistry_1.setRegistryCode("OS_T");
os_tRegistry_1.setBalance(BigDecimal.valueOf(1L));
os_tRegistry_1.setUpdated(Instant.now());
tm_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
om_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
ts_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
os_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
tm_tRegistry_2.setRegistryCode("TM_T");
tm_tRegistry_2.setBalance(BigDecimal.valueOf(779L));
tm_tRegistry_2.setUpdated(Instant.now());
om_tRegistry_2.setRegistryCode("OM_T");
om_tRegistry_2.setBalance(BigDecimal.valueOf(2L));
om_tRegistry_2.setUpdated(Instant.now());
ts_tRegistry_2.setRegistryCode("TS_T");
ts_tRegistry_2.setBalance(BigDecimal.valueOf(889L));
ts_tRegistry_2.setUpdated(Instant.now());
os_tRegistry_2.setRegistryCode("OS_T");
os_tRegistry_2.setBalance(BigDecimal.valueOf(1L));
os_tRegistry_2.setUpdated(Instant.now());
tm_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
om_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
ts_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
os_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
registryImdg.insert(testRegistryForCompanyId_1);
registryImdg.insert(testRegistryForCompanyId_2);
registryImdg.insert(tm_tRegistry_1);
registryImdg.insert(om_tRegistry_1);
registryImdg.insert(ts_tRegistry_1);
@ -327,12 +856,18 @@ public class ReportServiceTest {
registryImdg.insert(om_tRegistry_2);
registryImdg.insert(ts_tRegistry_2);
registryImdg.insert(os_tRegistry_2);
registryImdg.insert(testRegistry_1);
registryImdg.insert(testRegistry_2);
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
testListing_1.setSecurityId(TEST_SECURITY_ID_1);
testListing_1.setLotSize(TEST_LOT_SIZE_1);
String TEST_TRADING_CURRENCY_1 = "test-trading-currency-1";
testListing_1.setTradingCurrency(TEST_TRADING_CURRENCY_1);
testListing_2.setSecurityId(TEST_SECURITY_ID_2);
testListing_2.setLotSize(TEST_LOT_SIZE_2);
String TEST_TRADING_CURRENCY_2 = "test-trading-currency-2";
testListing_2.setTradingCurrency(TEST_TRADING_CURRENCY_2);
listingImdg.insert(testListing_1);
listingImdg.insert(testListing_2);
@ -349,81 +884,45 @@ public class ReportServiceTest {
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
testTradingClearingRegistry_1.setId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
testTradingClearingRegistry_1.setMoneyAccountId(TEST_MONEY_ACCOUNT_1);
Long TEST_DEPO_ACCOUNT_1 = 13L;
testTradingClearingRegistry_1.setDepoAccountId(TEST_DEPO_ACCOUNT_1);
tradingClearingRegistryImdg.insert(testTradingClearingRegistry_1);
testTradingClearingRegistry_2.setId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
testTradingClearingRegistry_2.setMoneyAccountId(TEST_MONEY_ACCOUNT_2);
Long TEST_DEPO_ACCOUNT_2 = 14L;
testTradingClearingRegistry_2.setDepoAccountId(TEST_DEPO_ACCOUNT_2);
tradingClearingRegistryImdg.insert(testTradingClearingRegistry_2);
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
testStatement_1.setAddresseeId(TEST_COMPANY_ID_1);
testStatement_1.setCreated(Instant.now());
testStatement_2.setAddresseeId(TEST_COMPANY_ID_2);
testStatement_2.setCreated(Instant.now());
statementImdg.insert(testStatement_1);
statementImdg.insert(testStatement_2);
paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
testPaymentInstruction_1.setId(TEST_PAYMT_ID_1);
testPaymentInstruction_1.setCreditLeg_direction(InOutDirection.out.getKey());
testPaymentInstruction_1.setPaymentDate(Instant.now());
testPaymentInstruction_2.setId(TEST_PAYMT_ID_2);
testPaymentInstruction_2.setCreditLeg_direction(InOutDirection.out.getKey());
testPaymentInstruction_2.setPaymentDate(Instant.now());
paymentInstructionImdg.insert(testPaymentInstruction_1);
paymentInstructionImdg.insert(testPaymentInstruction_2);
sTradeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
testSTrade.setTradeNum(testExecutionFond.getExchangeExecutionId());
testSTrade.setOperation(testExecutionFond.getSide());
String TEST_SETTLE_CODE = "test-settle-code";
testSTrade.setSettleCode(TEST_SETTLE_CODE);
String TEST_CLASS_CODE = "test-class-code";
testSTrade.setClassCode(TEST_CLASS_CODE);
sTradeImdg.insert(testSTrade);
}
private final Long TEST_EXCHANGE_EXECUTION_ID_1 = 777L;
private final Long TEST_EXCHANGE_EXECUTION_ID_2 = 888L;
private final Instant TEST_EXCHANGE_EXECUTION_TIME_1 = Instant.ofEpochMilli(777777777777L);
private final Instant TEST_EXCHANGE_EXECUTION_TIME_2 = Instant.ofEpochMilli(888888888888L);
private final LocalDate TEST_TRADING_DATE_1 = LocalDate.now().minus(10, ChronoUnit.DAYS);
private final LocalDate TEST_TRADING_DATE_2 = LocalDate.now().minus(20, ChronoUnit.DAYS);
private final Long TEST_TRADING_CLEARING_REGISTRY_ID_1 = 777L;
private final Long TEST_TRADING_CLEARING_REGISTRY_ID_2 = 888L;
private final String TEST_MARKET_1 = Market.fond.getKey();
private final String TEST_MARKET_2 = Market.mkrs.getKey();
private final BigDecimal TEST_PRICE_1 = BigDecimal.valueOf(77L);
private final BigDecimal TEST_PRICE_2 = BigDecimal.valueOf(88L);
private final BigDecimal TEST_LOTS_1 = BigDecimal.valueOf(777L);
private final BigDecimal TEST_LOTS_2 = BigDecimal.valueOf(888L);
private final BigDecimal TEST_QUANTITY_1 = BigDecimal.valueOf(7777L);
private final BigDecimal TEST_QUANTITY_2 = BigDecimal.valueOf(8888L);
private final BigDecimal TEST_INTEREST_AMOUNT_1 = BigDecimal.valueOf(77777L);
private final BigDecimal TEST_INTEREST_AMOUNT_2 = BigDecimal.valueOf(88888L);
private final String TEST_SIDE_1 = Side.SELL.getKey();
private final String TEST_SIDE_2 = Side.BUY.getKey();
private final String TEST_SETTLEMENT_CURRENCY_1 = "test-settlement-currency-1";
private final String TEST_SETTLEMENT_CURRENCY_2 = "test-settlement-currency-2";
private final Long TEST_COMPANY_ID_1 = 1007L;
private final Long TEST_COMPANY_ID_2 = 1008L;
private final String TEST_COMPANY_FULLNAME_1 = "test-company-fullname-1";
private final String TEST_COMPANY_FULLNAME_2 = "test-company-fullname-2";
private final Long TEST_DURATION_1 = 2007L;
private final Long TEST_DURATION_2 = 2008L;
private final String TEST_SECURITY_FULL_NAME_1 = "test-security-full-name-1";
private final String TEST_SECURITY_FULL_NAME_2 = "test-security-full-name-2";
private final String TEST_SECURITY_SYMBOL_1 = "test-security-symbol-1";
private final String TEST_SECURITY_SYMBOL_2 = "test-security-symbol-2";
private final Long TEST_SECURITY_ID_1 = 3007L;
private final Long TEST_SECURITY_ID_2 = 3008L;
private final Long TEST_COUNTER_PARTY_ID_1 = 4007L;
private final Long TEST_COUNTER_PARTY_ID_2 = 4008L;
private final String TEST_COVERAGE_STATUS_1 = Allowed.ALLOWED.getKey();
private final String TEST_COVERAGE_STATUS_2 = Allowed.DENIED.getKey();
private final Long TEST_SESSION_ID_1 = 10007L;
private final Long TEST_SESSION_ID_2 = 10008L;
private final LocalDate TEST_CLEARING_DATE_1 = LocalDate.now().minus(30, ChronoUnit.DAYS);
private final LocalDate TEST_CLEARING_DATE_2 = LocalDate.now().minus(40, ChronoUnit.DAYS);
private final Long TEST_EXCHANGE_ORDER_ID = 20007L;
private final BigDecimal TEST_SETTLEMENT_AMOUNT = BigDecimal.valueOf(7777777L);
private final String TEST_COMMENT = "test-comment";
private final Long TEST_CLIENT_CODE_ID = 222222L;
private final String TEST_SETTLEMENT_CODE = "test-settlement-code";
private final LocalDate TEST_SETTLEMENT_DATE = LocalDate.now().minus(22, ChronoUnit.DAYS);
private final Instant TEST_EXCHANGE_EXECUTION_MICROSECONDS = Instant.now().minus(777L, ChronoUnit.SECONDS);
private final BigDecimal TEST_FIRST_LEG_AMOUNT = BigDecimal.valueOf(1L);
private final BigDecimal TEST_SECOND_LEG_AMOUNT = BigDecimal.valueOf(2L);
private final LocalDate TEST_FIRST_LEG_SETTLEMENT_DATE = LocalDate.now().minus(1, ChronoUnit.DAYS);
private final LocalDate TEST_SECOND_LEG_SETTLEMENT_DATE = LocalDate.now().minus(2, ChronoUnit.DAYS);
private final String TEST_FIRST_LEG_SETTLEMENT_CODE = "test-first-leg-settlement-code";
private final String TEST_SECOND_LEG_SETTLEMENT_CODE = "test-second-leg-settlement-code";
private final String TEST_CONTRACT = "test_contract";
private final String TEST_TRADING_CLEARING_REGISTRY_1 = "test-trading-clearing-registry-1";
private final String TEST_TRADING_CLEARING_REGISTRY_2 = "test-trading-clearing-registry-2";
private final BigDecimal TEST_LOT_SIZE_1 = BigDecimal.valueOf(12L);
private final BigDecimal TEST_LOT_SIZE_2 = BigDecimal.valueOf(34L);
private final BigDecimal TEST_NOMINAL_1 = BigDecimal.valueOf(333L);
private final BigDecimal TEST_NOMINAL_2 = BigDecimal.valueOf(444L);
private final BigDecimal TEST_COUPON_1 = BigDecimal.valueOf(3333L);
private final BigDecimal TEST_COUPON_2 = BigDecimal.valueOf(4444L);
private final Long TEST_MONEY_ACCOUNT_1 = 11L;
private final Long TEST_MONEY_ACCOUNT_2 = 12L;
private final Long TEST_DEPO_ACCOUNT_1 = 13L;
private final Long TEST_DEPO_ACCOUNT_2 = 14L;
private void clearTestDir() throws IOException {
FileUtils.deleteDirectory(outFolder);
outFolder.mkdir();
}
}

View file

@ -0,0 +1,2 @@
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
"888","3007","777","07.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
1 id securityId tradeNo tradeDate tradeTime settleDate settleCode price quanity value
2 888 3007 777 07.05.2023 17.05.2023 17.05.2023 test-settle-code 1000 7777 7777777

View file

@ -0,0 +1,2 @@
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
"888","3007","777","17.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
1 id securityId tradeNo tradeDate tradeTime settleDate settleCode price quanity value
2 888 3007 777 17.05.2023 17.05.2023 17.05.2023 test-settle-code 1000 7777 7777777

View file

@ -0,0 +1,2 @@
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
"888","3007","777","27.05.2023","17.05.2023","27.05.2023","test-settle-code","1000","7777","7777777"
1 id securityId tradeNo tradeDate tradeTime settleDate settleCode price quanity value
2 888 3007 777 27.05.2023 17.05.2023 27.05.2023 test-settle-code 1000 7777 7777777

View file

@ -0,0 +1,2 @@
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
"888","3007","777","27.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
1 id securityId tradeNo tradeDate tradeTime settleDate settleCode price quanity value
2 888 3007 777 27.05.2023 17.05.2023 17.05.2023 test-settle-code 1000 7777 7777777

View file

@ -0,0 +1 @@
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
1 id securityId tradeNo tradeDate tradeTime settleDate settleCode price quanity value

View file

@ -0,0 +1,3 @@
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
"888","16.05.2023","20:45:22","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","16.04.2023","16.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","06.05.2023","24.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
"777","16.05.2023","20:45:25","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10007","06.04.2023","06.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","26.04.2023","14.05.2023","Y","14.05.2023","88","","34","888","","1","","","","","1","","777","888"
1 id doc_date doc_time doc_name doc_type clearingHouse firmId firName session_id clearing_date clearing_time trdAccId account depo_account currency tr_id securityId tr_buySell tr_date tr_execDate exec_status repaym_date tr_price nominal lot_value tr_lot tr_quantity tr_value tr_accruedint accruedint tr_clrComm tr_exhComm cash_liability depo_liability cash_netto depo_netto
2 888 16.05.2023 20:45:22 Отчет об обязательствах/требованиях Участника клиринга KS_FIRMID_LIABILITIES COMPANY_HOUSE 1007 test-company-fullname-1 10007 16.04.2023 16.04.2023 test-trading-clearing-registry-1 11 13 test-settlement-currency-1 777 3007 S 06.05.2023 24.04.2023 1000 333 12 777 7777 7777777 3333 0 7777777 7777 777 888
3 777 16.05.2023 20:45:25 Отчет об обязательствах/требованиях Участника клиринга KS_FIRMID_LIABILITIES COMPANY_HOUSE 1008 test-company-fullname-2 10007 06.04.2023 06.04.2023 test-trading-clearing-registry-2 12 14 test-settlement-currency-2 888 3008 B 26.04.2023 14.05.2023 Y 14.05.2023 88 34 888 1 1 777 888

View file

@ -0,0 +1,3 @@
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
"999","17.05.2023","12:10:51","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:10:50","77777","17.05.2023T12:10:50"
"666","17.05.2023","12:10:51","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:10:50","99999","17.05.2023T12:10:50"
1 id doc_date doc_time doc_name doc_type clearingHouse firmId firName trdAccId account currency registry_code registry_name open_balance change_balance add_withdraw close_balance remarks add_sum add_time withdraw_sum withdraw_time
2 999 17.05.2023 12:10:51 Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга KS_FIRMID_ASSETS COMPANY_HOUSE 1007 test-company-fullname-1 test-trading-clearing-registry-1 11 test-trading-currency-1 999 test-registry-code-1 3 777 700000 780 777777 17.05.2023T12:10:50 77777 17.05.2023T12:10:50
3 666 17.05.2023 12:10:51 Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга KS_FIRMID_ASSETS COMPANY_HOUSE 1008 test-company-fullname-2 test-trading-clearing-registry-2 12 test-trading-currency-2 666 test-registry-code-2 2 888 900000 890 999999 17.05.2023T12:10:50 99999 17.05.2023T12:10:50

View file

@ -0,0 +1,3 @@
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
"888","17.05.2023","10:51:13","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","17.04.2023","17.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","07.05.2023","25.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
"777","17.05.2023","10:51:13","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10008","07.04.2023","07.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","27.04.2023","15.05.2023","Y","15.05.2023","88","","34","888","","1","","","","","1","","777","888"
1 id doc_date doc_time doc_name doc_type clearingHouse firmId firName session_id clearing_date clearing_time trdAccId account depo_account currency tr_id securityId tr_buySell tr_date tr_execDate exec_status repaym_date tr_price nominal lot_value tr_lot tr_quantity tr_value tr_accruedint accruedint tr_clrComm tr_exhComm cash_liability depo_liability cash_netto depo_netto
2 888 17.05.2023 10:51:13 Отчет об обязательствах/требованиях Участника клиринга KS_FIRMID_LIABILITIES COMPANY_HOUSE 1007 test-company-fullname-1 10007 17.04.2023 17.04.2023 test-trading-clearing-registry-1 11 13 test-settlement-currency-1 777 3007 S 07.05.2023 25.04.2023 1000 333 12 777 7777 7777777 3333 0 7777777 7777 777 888
3 777 17.05.2023 10:51:13 Отчет об обязательствах/требованиях Участника клиринга KS_FIRMID_LIABILITIES COMPANY_HOUSE 1008 test-company-fullname-2 10008 07.04.2023 07.04.2023 test-trading-clearing-registry-2 12 14 test-settlement-currency-2 888 3008 B 27.04.2023 15.05.2023 Y 15.05.2023 88 34 888 1 1 777 888

View file

@ -0,0 +1,3 @@
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
"999","17.05.2023","12:18:01","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:18:01","77777","17.05.2023T12:18:01"
"666","17.05.2023","12:18:01","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:18:01","99999","17.05.2023T12:18:01"
1 id doc_date doc_time doc_name doc_type clearingHouse firmId firName trdAccId account currency registry_code registry_name open_balance change_balance add_withdraw close_balance remarks add_sum add_time withdraw_sum withdraw_time
2 999 17.05.2023 12:18:01 Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга KS_FIRMID_ASSETS COMPANY_HOUSE 1007 test-company-fullname-1 test-trading-clearing-registry-1 11 test-trading-currency-1 999 test-registry-code-1 3 777 700000 780 777777 17.05.2023T12:18:01 77777 17.05.2023T12:18:01
3 666 17.05.2023 12:18:01 Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга KS_FIRMID_ASSETS COMPANY_HOUSE 1008 test-company-fullname-2 test-trading-clearing-registry-2 12 test-trading-currency-2 666 test-registry-code-2 2 888 900000 890 999999 17.05.2023T12:18:01 99999 17.05.2023T12:18:01

View file

@ -1,3 +1,3 @@
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
"1","16.05.2023","20:45:22","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","16.04.2023","16.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","06.05.2023","24.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
"2","16.05.2023","20:45:25","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10007","06.04.2023","06.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","26.04.2023","14.05.2023","N","14.05.2023","88","","34","888","","1","","","","","1","","777","888"
888,"17.05.2023","10:58:08","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","17.04.2023","17.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","07.05.2023","25.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
777,"17.05.2023","10:58:08","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10008","07.04.2023","07.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","27.04.2023","15.05.2023",Y,"15.05.2023","88","","34","888","","1","","","","","1","","777","888"
1 id doc_date doc_time doc_name doc_type clearingHouse firmId firName session_id clearing_date clearing_time trdAccId account depo_account currency tr_id securityId tr_buySell tr_date tr_execDate exec_status repaym_date tr_price nominal lot_value tr_lot tr_quantity tr_value tr_accruedint accruedint tr_clrComm tr_exhComm cash_liability depo_liability cash_netto depo_netto
2 1 888 16.05.2023 17.05.2023 20:45:22 10:58:08 Отчет об обязательствах/требованиях Участника клиринга KS_FIRMID_LIABILITIES COMPANY_HOUSE 1007 test-company-fullname-1 10007 16.04.2023 17.04.2023 16.04.2023 17.04.2023 test-trading-clearing-registry-1 11 13 test-settlement-currency-1 777 3007 S 06.05.2023 07.05.2023 24.04.2023 25.04.2023 1000 333 12 777 7777 7777777 3333 0 7777777 7777 777 888
3 2 777 16.05.2023 17.05.2023 20:45:25 10:58:08 Отчет об обязательствах/требованиях Участника клиринга KS_FIRMID_LIABILITIES COMPANY_HOUSE 1008 test-company-fullname-2 10007 10008 06.04.2023 07.04.2023 06.04.2023 07.04.2023 test-trading-clearing-registry-2 12 14 test-settlement-currency-2 888 3008 B 26.04.2023 27.04.2023 14.05.2023 15.05.2023 N Y 14.05.2023 15.05.2023 88 34 888 1 1 777 888

View file

@ -0,0 +1,3 @@
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
"999","17.05.2023","12:25:42","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:25:42","77777","17.05.2023T12:25:42"
"666","17.05.2023","12:25:42","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:25:42","99999","17.05.2023T12:25:42"
1 id doc_date doc_time doc_name doc_type clearingHouse firmId firName trdAccId account currency registry_code registry_name open_balance change_balance add_withdraw close_balance remarks add_sum add_time withdraw_sum withdraw_time
2 999 17.05.2023 12:25:42 Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга KS_FIRMID_ASSETS COMPANY_HOUSE 1007 test-company-fullname-1 test-trading-clearing-registry-1 11 test-trading-currency-1 999 test-registry-code-1 3 777 700000 780 777777 17.05.2023T12:25:42 77777 17.05.2023T12:25:42
3 666 17.05.2023 12:25:42 Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга KS_FIRMID_ASSETS COMPANY_HOUSE 1008 test-company-fullname-2 test-trading-clearing-registry-2 12 test-trading-currency-2 666 test-registry-code-2 2 888 900000 890 999999 17.05.2023T12:25:42 99999 17.05.2023T12:25:42

View file

@ -0,0 +1,2 @@
id,securityId,tradeNo,tradeDate,settleCode
"888","3007","777","07.05.2023","test-class-code"
1 id securityId tradeNo tradeDate settleCode
2 888 3007 777 07.05.2023 test-class-code