SDF20
This commit is contained in:
parent
944d402c8d
commit
91d31132be
3 changed files with 19 additions and 5 deletions
|
|
@ -358,7 +358,7 @@ public class ValidationConfig {
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity , imdgMoneyMarketSecurity);
|
ctx.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity , imdgMoneyMarketSecurity);
|
||||||
ctx.addImdg(IMDGDistributedNames.Map_EquitySecurity , equitySecurityImdg);
|
ctx.addImdg(IMDGDistributedNames.Map_EquitySecurity , equitySecurityImdg);
|
||||||
return new ValidatorImpl<>(ctx,
|
return new ValidatorImpl<>(ctx,
|
||||||
Sdf20ValidationRule.Quantity,
|
Sdf20ValidationRule.Fields,
|
||||||
Sdf20ValidationRule.AccountPresent,
|
Sdf20ValidationRule.AccountPresent,
|
||||||
Sdf20ValidationRule.CompanyPresent,
|
Sdf20ValidationRule.CompanyPresent,
|
||||||
Sdf20ValidationRule.SecurityPresent,
|
Sdf20ValidationRule.SecurityPresent,
|
||||||
|
|
|
||||||
|
|
@ -84,11 +84,14 @@ public class Sdf20Executor {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
BigDecimal quantity = safeBD(BigDecimalUtil.parseLeadingZeroes(sDf20.getQuantity()));
|
BigDecimal quantity = safeBD(BigDecimalUtil.parseLeadingZeroes(sDf20.getQuantity()));
|
||||||
if ("ADDFREE".equalsIgnoreCase(sDf20.getOperationCode())) {
|
InOutDirection direction;
|
||||||
|
if (OperationCode.RECFREE.equalsByKey(sDf20.getOperationCode())) {
|
||||||
|
direction = InOutDirection.in;
|
||||||
quantity = quantity;
|
quantity = quantity;
|
||||||
} else if ("DELFREE".equals(sDf20.getOperationCode())) {
|
} else if (OperationCode.DELFREE.equalsByKey(sDf20.getOperationCode())) {
|
||||||
|
direction = InOutDirection.out;
|
||||||
quantity = quantity.negate();
|
quantity = quantity.negate();
|
||||||
}
|
} else direction = InOutDirection.in;
|
||||||
Registry ds_t = validator.getStored(ValidationStored.Sdf20Dst);
|
Registry ds_t = validator.getStored(ValidationStored.Sdf20Dst);
|
||||||
AssetTrio assets = validator.getStored(ValidationStored.Sdf20Ast);
|
AssetTrio assets = validator.getStored(ValidationStored.Sdf20Ast);
|
||||||
Company cmp = validator.getStored(ValidationStored.Sdf20Company);
|
Company cmp = validator.getStored(ValidationStored.Sdf20Company);
|
||||||
|
|
@ -127,6 +130,11 @@ public class Sdf20Executor {
|
||||||
ds_t.setRegistryStatus(RegistryStatus.OK.getKey());
|
ds_t.setRegistryStatus(RegistryStatus.OK.getKey());
|
||||||
ds_t.setUpdated(now);
|
ds_t.setUpdated(now);
|
||||||
as_t.setBalance(safeBD(as_t.getBalance()).add(quantity));
|
as_t.setBalance(safeBD(as_t.getBalance()).add(quantity));
|
||||||
|
if (direction.equals(InOutDirection.in)) {
|
||||||
|
as_t.setCredit(safeBD(as_t.getCredit()).add(quantity.abs()));
|
||||||
|
} else {
|
||||||
|
as_t.setDebit(safeBD(as_t.getDebit()).add(quantity.abs()));
|
||||||
|
}
|
||||||
as_t.setCheckBalance(BigDecimalUtil.parseLeadingZeroes(sDf20.getCloseBalance()));
|
as_t.setCheckBalance(BigDecimalUtil.parseLeadingZeroes(sDf20.getCloseBalance()));
|
||||||
as_t.setUpdated(now);
|
as_t.setUpdated(now);
|
||||||
rgsImdg.update(as_t);
|
rgsImdg.update(as_t);
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,12 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.service.AssetTrio;
|
import ru.spcex.clearing.service.AssetTrio;
|
||||||
import ru.spcex.clearing.service.RegistryManager;
|
import ru.spcex.clearing.service.RegistryManager;
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.OperationCode;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector;
|
import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.text.TextUtil;
|
import ru.spcex.platform.utils.text.TextUtil;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
|
@ -29,7 +31,7 @@ import static ru.spcex.platform.utils.number.BigDecimalUtil.parseLeadingZeroes;
|
||||||
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||||
|
|
||||||
public enum Sdf20ValidationRule implements IValidationRule<ImdgValidationContext<SDf20>> {
|
public enum Sdf20ValidationRule implements IValidationRule<ImdgValidationContext<SDf20>> {
|
||||||
Quantity() {
|
Fields() {
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<SDf20> context) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<SDf20> context) {
|
||||||
SDf20 validatedObject = context.getValidatedObject();
|
SDf20 validatedObject = context.getValidatedObject();
|
||||||
|
|
@ -40,6 +42,10 @@ public enum Sdf20ValidationRule implements IValidationRule<ImdgValidationContext
|
||||||
if (safeBD(qty).compareTo(BigDecimal.ZERO) < 0) {
|
if (safeBD(qty).compareTo(BigDecimal.ZERO) < 0) {
|
||||||
return of(ClearingError.WrongField, "quantity");
|
return of(ClearingError.WrongField, "quantity");
|
||||||
}
|
}
|
||||||
|
OperationCode opCde = IEnumKey.getEnumByKey(OperationCode.class, validatedObject.getOperationCode());
|
||||||
|
if (opCde == null) {
|
||||||
|
return of(ClearingError.WrongField, "operationCode");
|
||||||
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue