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) {
|
||||
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;
|
||||
});
|
||||
Optional<LiabilitiesClaimsMoney> lcmSecondLegFound = lbltsClmsMoneyCreator.searchLcmByRefundDate(lca.getAccountId(), lca.getCompanyId(), lca.getRefundDate());
|
||||
var wrapperSecondLegCreated = new Object() {LiabilitiesClaimsMoney secondLegCreated;};
|
||||
lcmSecondLegFound.ifPresentOrElse(lcm -> {
|
||||
log.trace("LiabilitiesClaimsMoney second leg {} was found", lcm.getId());
|
||||
lbltsClmsMoneyCreator.updateSecondLegLcm(lcm, lca, category);
|
||||
|
|
@ -216,6 +217,7 @@ public class Clearing {
|
|||
LiabilitiesClaimsMoney lcmSecondLeg = lbltsClmsMoneyCreator.createSecondLegLcm(lca, category);
|
||||
liabilitiesClaimsMoneyImdg.insert(lcmSecondLeg);
|
||||
log.trace("LiabilitiesClaimsMoney second leg {} was created", lcmSecondLeg.getId());
|
||||
wrapperSecondLegCreated.secondLegCreated = lcmSecondLeg;
|
||||
});
|
||||
lbltsClmsAssetsCreator.updateLca(lca, lcmFirstLegFound.orElse(wrapperFirstLegCreated.firstLegCreated));
|
||||
liabilitiesClaimsAssetsImdg.update(lca);
|
||||
|
|
@ -225,10 +227,15 @@ public class Clearing {
|
|||
paymentInstructionCreator.updateFieldLiabilitiesClaimsAssetsByPayment(lca, paymentInstructions, Collections.singleton(category));
|
||||
liabilitiesClaimsAssetsImdg.update(lca);
|
||||
var firstLegLiabilitiesClaimsMoney = lcmFirstLegFound.orElseGet(() -> wrapperFirstLegCreated.firstLegCreated);
|
||||
var secondLegLiabilitiesClaimsMoney = lcmSecondLegFound.orElseGet(() -> wrapperSecondLegCreated.secondLegCreated);
|
||||
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);
|
||||
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.setUpdated(Instant.now());
|
||||
executionDepositImdg.update(execDeposit);
|
||||
|
|
|
|||
|
|
@ -490,57 +490,50 @@ public class PaymentInstructionCreator {
|
|||
|
||||
/**
|
||||
* 2.2.2.2. Выполнить Изменение liabilitiesClaimsMoney по paymentInstruction.
|
||||
*/
|
||||
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
|
||||
* Обновление liabilitiesClaimsMoney первой/второй ноги по liabilitiesClaimsAssets
|
||||
*
|
||||
* @param liabilitiesClaimsMoney обновить этот объект (firstLeg)
|
||||
* @param isFirstLeg true - первая, false вторая
|
||||
* @param paymentInstructions
|
||||
* @param clearingCategory
|
||||
* @return были внесены изменения в liabilitiesClaimsMoney
|
||||
*/
|
||||
public boolean updateFieldLiabilitiesClaimsMoneyByPayment(LiabilitiesClaimsMoney liabilitiesClaimsMoney,
|
||||
boolean isFirstLeg,
|
||||
List<PaymentInstruction> paymentInstructions,
|
||||
Collection<ClearingCategory> clearingCategory) {
|
||||
final boolean isSecondLeg = !isFirstLeg;
|
||||
boolean modified = false;
|
||||
|
||||
PaymentInstruction paymentIAny = paymentInstructions.iterator().next();
|
||||
|
||||
if ((clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V))) {
|
||||
BigDecimal amount = liabilitiesClaimsMoney.getLiabilitiesAmount().subtract(bdFromLongSafe(paymentIAny.getCreditLegAmount()));
|
||||
liabilitiesClaimsMoney.setLiabilitiesAmount(amount);
|
||||
modified = true;
|
||||
if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) {
|
||||
if (isFirstLeg) {
|
||||
BigDecimal amount = safeBD(liabilitiesClaimsMoney.getLiabilitiesAmount()).subtract(bdFromLongSafe(paymentIAny.getCreditLegAmount()));
|
||||
liabilitiesClaimsMoney.setLiabilitiesAmount(amount);
|
||||
modified = true;
|
||||
}
|
||||
if (isSecondLeg) {
|
||||
// liabilitiesAmount не меняется
|
||||
}
|
||||
}
|
||||
|
||||
if ((clearingCategory.contains(ClearingCategory.B))) {
|
||||
BigDecimal amount = liabilitiesClaimsMoney.getClaimsAmount().subtract(bdFromLongSafe(paymentIAny.getDebitLegAmount()));
|
||||
liabilitiesClaimsMoney.setClaimsAmount(amount);
|
||||
modified = true;
|
||||
if (clearingCategory.contains(ClearingCategory.B)) {
|
||||
if (isFirstLeg) {
|
||||
// liabilitiesAmount не меняется ;
|
||||
}
|
||||
if (isSecondLeg) {
|
||||
BigDecimal amount = safeBD(liabilitiesClaimsMoney.getClaimsAmount()).subtract(bdFromLongSafe(paymentIAny.getDebitLegAmount()));
|
||||
liabilitiesClaimsMoney.setClaimsAmount(amount);
|
||||
modified = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (modified) {
|
||||
liabilitiesClaimsMoney.setUpdated(Instant.now());
|
||||
}
|
||||
log.debug("updateFieldLiabilitiesClaimsMoneyByPayment: isFirstLeg={}, isSecondLeg={}, modified={}, LiabilitiesClaimsMoney.id={}",
|
||||
isFirstLeg, isSecondLeg, modified, liabilitiesClaimsMoney.getId());
|
||||
return modified;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue