http://jira.mfd.msk:8088/browse/CLS-189 PaymentInstructionCreator правка заполнения LiabilitiesClaimsMoney для 2 ног
This commit is contained in:
parent
f60bfdd318
commit
f13bfbf9ac
3 changed files with 52 additions and 33 deletions
|
|
@ -125,4 +125,23 @@ public class LiabilitiesClaimsMoney extends BusinessObject {
|
||||||
public void setClearingDate(LocalDate clearingDate) {
|
public void setClearingDate(LocalDate clearingDate) {
|
||||||
this.clearingDate = clearingDate;
|
this.clearingDate = clearingDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "LiabilitiesClaimsMoney{" +
|
||||||
|
"companyId=" + companyId +
|
||||||
|
", accountId=" + accountId +
|
||||||
|
", accountType='" + accountType + '\'' +
|
||||||
|
", account='" + account + '\'' +
|
||||||
|
", liabilitiesAmount=" + liabilitiesAmount +
|
||||||
|
", claimsAmount=" + claimsAmount +
|
||||||
|
", settlementDate=" + settlementDate +
|
||||||
|
", tradingDate=" + tradingDate +
|
||||||
|
", currency='" + currency + '\'' +
|
||||||
|
", tradingCode='" + tradingCode + '\'' +
|
||||||
|
", shortName='" + shortName + '\'' +
|
||||||
|
", fullName='" + fullName + '\'' +
|
||||||
|
", clearingDate=" + clearingDate +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -208,6 +208,7 @@ public class Clearing {
|
||||||
wrapperFirstLegCreated.firstLegCreated = lcmFirstLeg;
|
wrapperFirstLegCreated.firstLegCreated = lcmFirstLeg;
|
||||||
});
|
});
|
||||||
Optional<LiabilitiesClaimsMoney> lcmSecondLegFound = lbltsClmsMoneyCreator.searchLcmByRefundDate(lca.getAccountId(), lca.getCompanyId(), lca.getRefundDate());
|
Optional<LiabilitiesClaimsMoney> lcmSecondLegFound = lbltsClmsMoneyCreator.searchLcmByRefundDate(lca.getAccountId(), lca.getCompanyId(), lca.getRefundDate());
|
||||||
|
var wrapperSecondLegCreated = new Object() {LiabilitiesClaimsMoney secondLegCreated;};
|
||||||
lcmSecondLegFound.ifPresentOrElse(lcm -> {
|
lcmSecondLegFound.ifPresentOrElse(lcm -> {
|
||||||
log.trace("LiabilitiesClaimsMoney second leg {} was found", lcm.getId());
|
log.trace("LiabilitiesClaimsMoney second leg {} was found", lcm.getId());
|
||||||
lbltsClmsMoneyCreator.updateSecondLegLcm(lcm, lca, category);
|
lbltsClmsMoneyCreator.updateSecondLegLcm(lcm, lca, category);
|
||||||
|
|
@ -216,6 +217,7 @@ public class Clearing {
|
||||||
LiabilitiesClaimsMoney lcmSecondLeg = lbltsClmsMoneyCreator.createSecondLegLcm(lca, category);
|
LiabilitiesClaimsMoney lcmSecondLeg = lbltsClmsMoneyCreator.createSecondLegLcm(lca, category);
|
||||||
liabilitiesClaimsMoneyImdg.insert(lcmSecondLeg);
|
liabilitiesClaimsMoneyImdg.insert(lcmSecondLeg);
|
||||||
log.trace("LiabilitiesClaimsMoney second leg {} was created", lcmSecondLeg.getId());
|
log.trace("LiabilitiesClaimsMoney second leg {} was created", lcmSecondLeg.getId());
|
||||||
|
wrapperSecondLegCreated.secondLegCreated = lcmSecondLeg;
|
||||||
});
|
});
|
||||||
lbltsClmsAssetsCreator.updateLca(lca, lcmFirstLegFound.orElse(wrapperFirstLegCreated.firstLegCreated));
|
lbltsClmsAssetsCreator.updateLca(lca, lcmFirstLegFound.orElse(wrapperFirstLegCreated.firstLegCreated));
|
||||||
liabilitiesClaimsAssetsImdg.update(lca);
|
liabilitiesClaimsAssetsImdg.update(lca);
|
||||||
|
|
@ -225,10 +227,15 @@ public class Clearing {
|
||||||
paymentInstructionCreator.updateFieldLiabilitiesClaimsAssetsByPayment(lca, paymentInstructions, Collections.singleton(category));
|
paymentInstructionCreator.updateFieldLiabilitiesClaimsAssetsByPayment(lca, paymentInstructions, Collections.singleton(category));
|
||||||
liabilitiesClaimsAssetsImdg.update(lca);
|
liabilitiesClaimsAssetsImdg.update(lca);
|
||||||
var firstLegLiabilitiesClaimsMoney = lcmFirstLegFound.orElseGet(() -> wrapperFirstLegCreated.firstLegCreated);
|
var firstLegLiabilitiesClaimsMoney = lcmFirstLegFound.orElseGet(() -> wrapperFirstLegCreated.firstLegCreated);
|
||||||
|
var secondLegLiabilitiesClaimsMoney = lcmSecondLegFound.orElseGet(() -> wrapperSecondLegCreated.secondLegCreated);
|
||||||
log.trace("updating LiabilitiesClaimsMoney by payment");
|
log.trace("updating LiabilitiesClaimsMoney by payment");
|
||||||
paymentInstructionCreator.updateFieldLiabilitiesClaimsMoneyByPayment(firstLegLiabilitiesClaimsMoney, paymentInstructions, Collections.singleton(category));
|
log.trace("firstLegLiabilitiesClaimsMoney: {}; secondLegLiabilitiesClaimsMoney: {}", firstLegLiabilitiesClaimsMoney, secondLegLiabilitiesClaimsMoney);
|
||||||
|
paymentInstructionCreator.updateFieldLiabilitiesClaimsMoneyByPayment(firstLegLiabilitiesClaimsMoney, true, paymentInstructions, Collections.singleton(category));
|
||||||
liabilitiesClaimsMoneyImdg.update(firstLegLiabilitiesClaimsMoney);
|
liabilitiesClaimsMoneyImdg.update(firstLegLiabilitiesClaimsMoney);
|
||||||
log.trace("LiabilitiesClaimsMoney first leg {} was updated", firstLegLiabilitiesClaimsMoney.getId());
|
paymentInstructionCreator.updateFieldLiabilitiesClaimsMoneyByPayment(secondLegLiabilitiesClaimsMoney, false, paymentInstructions, Collections.singleton(category));
|
||||||
|
liabilitiesClaimsMoneyImdg.update(secondLegLiabilitiesClaimsMoney);
|
||||||
|
log.trace("LiabilitiesClaimsMoney first leg {}, second leg {} was updated", firstLegLiabilitiesClaimsMoney.getId(), secondLegLiabilitiesClaimsMoney.getId());
|
||||||
|
log.trace("firstLegLiabilitiesClaimsMoney: {}; secondLegLiabilitiesClaimsMoney: {}", firstLegLiabilitiesClaimsMoney, secondLegLiabilitiesClaimsMoney);
|
||||||
execDeposit.setSessionId(clearingSessionId);
|
execDeposit.setSessionId(clearingSessionId);
|
||||||
execDeposit.setUpdated(Instant.now());
|
execDeposit.setUpdated(Instant.now());
|
||||||
executionDepositImdg.update(execDeposit);
|
executionDepositImdg.update(execDeposit);
|
||||||
|
|
|
||||||
|
|
@ -490,57 +490,50 @@ public class PaymentInstructionCreator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 2.2.2.2. Выполнить Изменение liabilitiesClaimsMoney по paymentInstruction.
|
* 2.2.2.2. Выполнить Изменение liabilitiesClaimsMoney по paymentInstruction.
|
||||||
*/
|
* Обновление liabilitiesClaimsMoney первой/второй ноги по liabilitiesClaimsAssets
|
||||||
public LiabilitiesClaimsMoney updateLiabilitiesClaimsMoneyByPaymentInstruction(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
|
||||||
List<PaymentInstruction> paymentInstructions,
|
|
||||||
Collection<ClearingCategory> clearingCategory) {
|
|
||||||
Long lmId = liabilitiesClaimsAssets.getLiabilitiesClaimsMoneyId();
|
|
||||||
log.debug("Update LiabilitiesClaimsMoney[{}] by paymentInstructions {}", lmId, paymentInstructions.stream().map(SpcexObjectBase::getId).collect(Collectors.toList()));
|
|
||||||
LiabilitiesClaimsMoney liabilitiesClaimsMoney = liabilitiesClaimsMoneyImdg.getSingleObjectByID(lmId); // update data for update
|
|
||||||
if (liabilitiesClaimsMoney == null) {
|
|
||||||
throw new RuntimeException("IMDG not found LiabilitiesClaimsMoney.id=" + lmId);
|
|
||||||
}
|
|
||||||
if (!Objects.equals(liabilitiesClaimsMoney.getSettlementDate(), liabilitiesClaimsAssets.getSettlementDate())) {
|
|
||||||
log.warn("Date not match: LiabilitiesClaimsMoney[{}].settlementDate={} and LiabilitiesClaimsAssets[{}].settlementDate={}. It is first leg?",
|
|
||||||
liabilitiesClaimsMoney.getId(), liabilitiesClaimsMoney.getSettlementDate(), liabilitiesClaimsAssets.getId(), liabilitiesClaimsAssets.getSettlementDate()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
updateFieldLiabilitiesClaimsMoneyByPayment(liabilitiesClaimsMoney, paymentInstructions, clearingCategory);
|
|
||||||
|
|
||||||
liabilitiesClaimsMoneyImdg.update(liabilitiesClaimsMoney);
|
|
||||||
return liabilitiesClaimsMoney;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Обновление liabilitiesClaimsMoney первой ноги по liabilitiesClaimsAssets
|
|
||||||
*
|
*
|
||||||
* @param liabilitiesClaimsMoney обновить этот объект (firstLeg)
|
* @param liabilitiesClaimsMoney обновить этот объект (firstLeg)
|
||||||
|
* @param isFirstLeg true - первая, false вторая
|
||||||
* @param paymentInstructions
|
* @param paymentInstructions
|
||||||
* @param clearingCategory
|
* @param clearingCategory
|
||||||
* @return были внесены изменения в liabilitiesClaimsMoney
|
* @return были внесены изменения в liabilitiesClaimsMoney
|
||||||
*/
|
*/
|
||||||
public boolean updateFieldLiabilitiesClaimsMoneyByPayment(LiabilitiesClaimsMoney liabilitiesClaimsMoney,
|
public boolean updateFieldLiabilitiesClaimsMoneyByPayment(LiabilitiesClaimsMoney liabilitiesClaimsMoney,
|
||||||
|
boolean isFirstLeg,
|
||||||
List<PaymentInstruction> paymentInstructions,
|
List<PaymentInstruction> paymentInstructions,
|
||||||
Collection<ClearingCategory> clearingCategory) {
|
Collection<ClearingCategory> clearingCategory) {
|
||||||
|
final boolean isSecondLeg = !isFirstLeg;
|
||||||
boolean modified = false;
|
boolean modified = false;
|
||||||
|
|
||||||
PaymentInstruction paymentIAny = paymentInstructions.iterator().next();
|
PaymentInstruction paymentIAny = paymentInstructions.iterator().next();
|
||||||
|
|
||||||
if ((clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V))) {
|
if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) {
|
||||||
BigDecimal amount = liabilitiesClaimsMoney.getLiabilitiesAmount().subtract(bdFromLongSafe(paymentIAny.getCreditLegAmount()));
|
if (isFirstLeg) {
|
||||||
liabilitiesClaimsMoney.setLiabilitiesAmount(amount);
|
BigDecimal amount = safeBD(liabilitiesClaimsMoney.getLiabilitiesAmount()).subtract(bdFromLongSafe(paymentIAny.getCreditLegAmount()));
|
||||||
modified = true;
|
liabilitiesClaimsMoney.setLiabilitiesAmount(amount);
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
if (isSecondLeg) {
|
||||||
|
// liabilitiesAmount не меняется
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((clearingCategory.contains(ClearingCategory.B))) {
|
if (clearingCategory.contains(ClearingCategory.B)) {
|
||||||
BigDecimal amount = liabilitiesClaimsMoney.getClaimsAmount().subtract(bdFromLongSafe(paymentIAny.getDebitLegAmount()));
|
if (isFirstLeg) {
|
||||||
liabilitiesClaimsMoney.setClaimsAmount(amount);
|
// liabilitiesAmount не меняется ;
|
||||||
modified = true;
|
}
|
||||||
|
if (isSecondLeg) {
|
||||||
|
BigDecimal amount = safeBD(liabilitiesClaimsMoney.getClaimsAmount()).subtract(bdFromLongSafe(paymentIAny.getDebitLegAmount()));
|
||||||
|
liabilitiesClaimsMoney.setClaimsAmount(amount);
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (modified) {
|
if (modified) {
|
||||||
liabilitiesClaimsMoney.setUpdated(Instant.now());
|
liabilitiesClaimsMoney.setUpdated(Instant.now());
|
||||||
}
|
}
|
||||||
|
log.debug("updateFieldLiabilitiesClaimsMoneyByPayment: isFirstLeg={}, isSecondLeg={}, modified={}, LiabilitiesClaimsMoney.id={}",
|
||||||
|
isFirstLeg, isSecondLeg, modified, liabilitiesClaimsMoney.getId());
|
||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue