This commit is contained in:
parent
4beff10362
commit
5b70542ff7
1 changed files with 17 additions and 9 deletions
|
|
@ -1,6 +1,5 @@
|
||||||
package ru.spcex.clearing.service.execution;
|
package ru.spcex.clearing.service.execution;
|
||||||
|
|
||||||
import static java.lang.String.format;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -10,6 +9,7 @@ import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import static java.lang.String.format;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.slf4j.event.Level;
|
import org.slf4j.event.Level;
|
||||||
|
|
@ -299,14 +299,9 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
||||||
eFond.setMarket(sTrades.getClassCode());
|
eFond.setMarket(sTrades.getClassCode());
|
||||||
|
|
||||||
BigDecimal price = sTrades.getPrice();
|
BigDecimal price = sTrades.getPrice();
|
||||||
if (InstrumentType.DGCT.equalsByKey(security.getInstrumentType())) {
|
if (!InstrumentType.DGCT.equalsByKey(security.getInstrumentType())) {
|
||||||
DigitalCertificateSecurity dcs = (DigitalCertificateSecurity) security;
|
eFond.setPrice(price);
|
||||||
BigDecimal baseUnitSize = BigDecimal.valueOf(Optional.ofNullable(dcs.getBaseUnitSize()).orElse(0L));
|
|
||||||
price = safeBD(sTrades.getPrice())
|
|
||||||
.multiply(safeBD(dcs.getNominalValue()))
|
|
||||||
.multiply(baseUnitSize);
|
|
||||||
}
|
}
|
||||||
eFond.setPrice(price);
|
|
||||||
eFond.setLots(sTrades.getQty());
|
eFond.setLots(sTrades.getQty());
|
||||||
eFond.setQuantity(sTrades.getQtyPcs());
|
eFond.setQuantity(sTrades.getQtyPcs());
|
||||||
{
|
{
|
||||||
|
|
@ -342,7 +337,20 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
||||||
eFond.setQuantity(qty);
|
eFond.setQuantity(qty);
|
||||||
BigDecimal settlementAmount = BigDecimal.ZERO;
|
BigDecimal settlementAmount = BigDecimal.ZERO;
|
||||||
if (InstrumentType.DGCT.equalsByKey(security.getInstrumentType())) {
|
if (InstrumentType.DGCT.equalsByKey(security.getInstrumentType())) {
|
||||||
settlementAmount = qty.multiply(eFond.getPrice()).setScale(2, RoundingMode.HALF_UP);
|
DigitalCertificateSecurity dcs = (DigitalCertificateSecurity) security;
|
||||||
|
BigDecimal baseUnitSize = BigDecimal.valueOf(Optional.ofNullable(dcs.getBaseUnitSize()).orElse(0L));
|
||||||
|
int precision;
|
||||||
|
if (listing != null && listing.getPrecision() != null) {
|
||||||
|
precision = listing.getPrecision().intValue();
|
||||||
|
} else {
|
||||||
|
precision = 2;
|
||||||
|
}
|
||||||
|
price = safeBD(sTrades.getPrice())
|
||||||
|
.multiply(safeBD(dcs.getNominalValue()))
|
||||||
|
.multiply(baseUnitSize)
|
||||||
|
.setScale(precision, RoundingMode.HALF_UP);
|
||||||
|
eFond.setPrice(price);
|
||||||
|
settlementAmount = qty.multiply(price).setScale(2, RoundingMode.HALF_UP);
|
||||||
} else if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
|
} else if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
|
||||||
FixedIncomeSecurity fixedIncome = (FixedIncomeSecurity) security;
|
FixedIncomeSecurity fixedIncome = (FixedIncomeSecurity) security;
|
||||||
BigDecimal nominalValue;
|
BigDecimal nominalValue;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue