diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java index 4b2172031..07ac2f0f6 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java @@ -238,8 +238,8 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing }); updateOrderFieldsByListing(orderT0, listingT0); updateOrderFieldsByListing(orderT1, listingT1); - orderT0.setPrice(rateT0.getValue()); - orderT1.setPrice(BigDecimalUtil.safeSumBD(swap.getPrice(), rateT1.getValue())); + orderT0.setPrice(rateT0.getValue().setScale(listingT0.getPrecision().intValue(), RoundingMode.HALF_UP)); + orderT1.setPrice(BigDecimalUtil.safeSumBD(swap.getPrice(), rateT1.getValue()).setScale(listingT1.getPrecision().intValue(), RoundingMode.HALF_UP)); return pair; } @@ -280,7 +280,11 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing swap.setListingId(listing.getId()); swap.setOvernightType(OvernightType.SWAP.getKey()); swap.setMarket(market.getCode()); - swap.setPrice(safeBD(spotT1.getPrice()).subtract(safeBD(spotT0.getPrice()))); + BigDecimal price = safeBD(spotT1.getPrice()) + .subtract(safeBD(spotT0.getPrice())) + .setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP); + + swap.setPrice(price); if (rates != null) { rateValue = rates.getValue().setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);