diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java index 11ac7ba71..37c68b8f1 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java @@ -69,16 +69,17 @@ public class OrderCalculationService { ? calculationRubSums(registry, listing.getLotSize().intValue(), s, n) : calculationSums(registry, listing.getLotSize().intValue(), s, n); - SCrossRate rates = imdgQueryService.getSCrossRates(pair.getBaseCurrency(), LocalDate.now()); + long nextWorkDayDelta = n.longValue(); + Rates rates = imdgQueryService.getRate(pair.getBaseCurrency(), LocalDate.now().plusDays(nextWorkDayDelta)); BigDecimal quantityLot; BigDecimal price; if (SettleCode.T0 == settleCode) { quantityLot = result.sum3().abs(); - price = rates.getUnitRate().setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP); + price = rates.getValue().setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP); } else { quantityLot = result.sum5().abs(); BigDecimal delta = swapPriceCalcT1(pair.getBaseCurrency(), s, n, listing.getPrecision().intValue()); - price = rates.getUnitRate().add(delta).setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);; + price = rates.getValue().add(delta).setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);; } return new FinalCalculationResult(price, s, quantityLot, result);