Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java
This commit is contained in:
commit
0e8ea7b595
4 changed files with 103 additions and 64 deletions
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
|
||||
<meta version="2.4.0.10">
|
||||
<meta version="2.4.0.11">
|
||||
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
|
||||
<!--Здесь словари-->
|
||||
<enums>
|
||||
|
|
@ -1150,8 +1150,8 @@
|
|||
<operationStatus type="12" name="Cтатус обработки" shortname="Статус" searchable="true" sortable="true" link="operationStatus"/>
|
||||
</operation>
|
||||
<paymentInstruction name="Платежные поручения" destination="payment-instructions" class="ru.clearing.classes.statics.data.payment.PaymentInstruction" table="payment_instruction">
|
||||
<senderId type="1" name="Наименование участника отправителя" shortname="Отправитель" searchable="true" sortable="true" link="company"/>
|
||||
<addresseeId type="1" name="Наименование участника получателя" shortname="Получатель" searchable="true" sortable="true" link="company"/>
|
||||
<senderId type="1" name="Наименование участника отправителя" shortname="Отправитель" searchable="true" sortable="true" link="company" linkCode="shortName"/>
|
||||
<addresseeId type="1" name="Наименование участника получателя" shortname="Получатель" searchable="true" sortable="true" link="company" linkCode="shortName"/>
|
||||
<adresseeBic type="2" length="255" name="Банковский идентификационный код (БИК) получателя" shortname="БИК получателя" searchable="true" sortable="true" visible="true"/>
|
||||
<payeeBankName type="2" length="255" name="Наименование банка отправителя" shortname="Банк отправителя" searchable="true" sortable="true" visible="true"/>
|
||||
<payeeBic type="2" length="255" name="Банковский идентификационный код (БИК) отправителя" shortname="БИК отправителя" searchable="true" sortable="true" visible="true"/>
|
||||
|
|
@ -1171,7 +1171,7 @@
|
|||
<debitLeg_direction field="debitLegDirection" type="1" name="Направление получателя" shortname="Направление получателя" searchable="true" sortable="true" link="inOutDirection" ignore="true"/>
|
||||
<creditLeg_currencyCode field="creditLegCurrencyCode" type="12" name="Код валюты отправителя" shortname="Валюта отправителя" searchable="true" sortable="true" visible="true" link="currency"/>
|
||||
<debitLeg_currencyCode field="debitLegCurrencyCode" type="12" name="Код валюты получателя" shortname="Валюта получателя" searchable="true" sortable="true" visible="true" link="currency"/>
|
||||
<transactionStatus type="12" name="Cтатус транзакции" shortname="Статус" searchable="true" sortable="true" visible="true" link="transactionStatus"/>
|
||||
<transactionStatus type="12" name="Cтатус транзакции" shortname="Статус" searchable="true" sortable="true" visible="true" link="transactionStatus" ignore="true"/>
|
||||
<documentNumber type="2" length="255" name="Номер документа в сторонней системе" shortname="Номер РО" searchable="true" sortable="true"/>
|
||||
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
|
||||
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import org.springframework.stereotype.Service;
|
|||
import ru.clearing.classes.statics.data.account.Account;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
|
|
@ -28,6 +29,8 @@ import java.util.*;
|
|||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||
|
||||
/*
|
||||
todo использовать так:
|
||||
paymentInstructionCreator.createAndSavePaymentInstructions()
|
||||
|
|
@ -50,6 +53,7 @@ public class PaymentInstructionCreator {
|
|||
protected final Imdg<Account> accountImdg;
|
||||
protected final Imdg<PaymentInstruction> paymentInstructionImdg;
|
||||
protected final Imdg<LiabilitiesClaimsMoney> liabilitiesClaimsMoneyImdg;
|
||||
protected final Imdg<ExecutionDeposit> executionDepositImdg;
|
||||
|
||||
protected AtomicLong documentNumberId = new AtomicLong(0L); // порядковый номер (сквозной по всем компаниям за день
|
||||
protected LocalDate documentNumberResetAt;
|
||||
|
|
@ -62,11 +66,13 @@ public class PaymentInstructionCreator {
|
|||
this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||
this.paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
||||
this.liabilitiesClaimsMoneyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsMoney, LiabilitiesClaimsMoney.class);
|
||||
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||
this.idGenerator = imdgProvider.getImdgIdGenerator();
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.2.2. Выполнить Создание paymentInstruction по liabilitiesClaimsAssets
|
||||
*
|
||||
* @return Созданные PaymentInstruction, может быть несколько. Они уже сохранены в IMDG.
|
||||
*/
|
||||
public List<PaymentInstruction> createAndSavePaymentInstructions(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||
|
|
@ -109,13 +115,13 @@ public class PaymentInstructionCreator {
|
|||
payment2.setSenderId(SPVB_ID); // СПВБ
|
||||
|
||||
payment1.setAddresseeId(SPVB_ID); // СПВБ
|
||||
String sqlLCA = String.format("securityId = %s and companyId <> %s",
|
||||
String sqlLCA = String.format("securityId = %s and companyId != %s",
|
||||
liabilitiesClaimsAssets.getSecurityId(), liabilitiesClaimsAssets.getCompanyId());
|
||||
LiabilitiesClaimsAssets counterLiabilitiesClaimsAssets = liabilitiesClaimsAssetsImdg.getSingleObjectBySQL(sqlLCA);
|
||||
if (counterLiabilitiesClaimsAssets == null) {
|
||||
log.warn("Counter LiabilitiesClaimsAssets not found for : {}", sqlLCA);
|
||||
ExecutionDeposit counterExecutionDeposit = executionDepositImdg.getSingleObjectBySQL(sqlLCA);
|
||||
if (counterExecutionDeposit == null) {
|
||||
log.warn("Counter ExecutionDeposit not found for : {}", sqlLCA);
|
||||
} else {
|
||||
payment2.setAddresseeId(counterLiabilitiesClaimsAssets.getCompanyId());
|
||||
payment2.setAddresseeId(counterExecutionDeposit.getCompanyId());
|
||||
}
|
||||
|
||||
String symbol1 = selectSymbolValue(payment1.getAddresseeId(), CompanySymbol.BIC);
|
||||
|
|
@ -233,13 +239,13 @@ public class PaymentInstructionCreator {
|
|||
|
||||
payment1.setSenderId(SPVB_ID); // СПВБ
|
||||
|
||||
String sqlLCA = String.format("securityId = %s and companyId <> %s",
|
||||
String sqlLCA = String.format("securityId = %s and companyId != %s",
|
||||
liabilitiesClaimsAssets.getSecurityId(), liabilitiesClaimsAssets.getCompanyId());
|
||||
LiabilitiesClaimsAssets counterLiabilitiesClaimsAssets = liabilitiesClaimsAssetsImdg.getSingleObjectBySQL(sqlLCA);
|
||||
if (counterLiabilitiesClaimsAssets == null) {
|
||||
log.warn("Counter LiabilitiesClaimsAssets not found for : {}", sqlLCA);
|
||||
ExecutionDeposit counterExecutionDeposit = executionDepositImdg.getSingleObjectBySQL(sqlLCA);
|
||||
if (counterExecutionDeposit == null) {
|
||||
log.warn("Counter ExecutionDeposit not found for : {}", sqlLCA);
|
||||
} else {
|
||||
payment1.setAddresseeId(counterLiabilitiesClaimsAssets.getCompanyId());
|
||||
payment1.setAddresseeId(counterExecutionDeposit.getCompanyId());
|
||||
}
|
||||
|
||||
String symbol1 = selectSymbolValue(payment1.getAddresseeId(), CompanySymbol.BIC);
|
||||
|
|
@ -414,6 +420,9 @@ public class PaymentInstructionCreator {
|
|||
}
|
||||
|
||||
protected String selectSymbolValue(Long companyId, CompanySymbol symbol) {
|
||||
if (companyId == null) {
|
||||
return null;
|
||||
}
|
||||
CompanySymbols cSymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companyId", companyId,
|
||||
"companySymbol", symbol.getKey()));
|
||||
|
|
@ -425,6 +434,9 @@ public class PaymentInstructionCreator {
|
|||
}
|
||||
|
||||
protected Account selectAccount(Long companyId, AccountType accountType, Status accountStatus, Allowed processingSign) {
|
||||
if (companyId == null) {
|
||||
return null;
|
||||
}
|
||||
Account account = accountImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"companyId", companyId,
|
||||
"accountType", accountType.getKey(),
|
||||
|
|
@ -439,29 +451,31 @@ public class PaymentInstructionCreator {
|
|||
* 2.2.2.1. Выполнить Изменение liabilitiesClaimsAssets по paymentInstruction.
|
||||
*/
|
||||
public void updateFieldLiabilitiesClaimsAssetsByPayment(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||
List<PaymentInstruction> paymentInstructions,
|
||||
Collection<ClearingCategory> clearingCategory) {
|
||||
AccountType accountType = IEnumKey.getEnumByKey(AccountType.class, liabilitiesClaimsAssets.getAccountType());
|
||||
PaymentInstruction paymentIAny=paymentInstructions.iterator().next();
|
||||
List<PaymentInstruction> paymentInstructions,
|
||||
Collection<ClearingCategory> clearingCategory) {
|
||||
|
||||
if ((clearingCategory.contains(ClearingCategory.I) && AccountType.Clrn.equals(accountType))
|
||||
|| (clearingCategory.contains(ClearingCategory.V) && AccountType.Info.equals(accountType))) {
|
||||
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal(paymentIAny.getCreditLegAmount());
|
||||
BigDecimal prevLQuantity = BigDecimalUtil.safeBD(liabilitiesClaimsAssets.getLiabilitiesQuantity());
|
||||
liabilitiesClaimsAssets.setLiabilitiesQuantity(prevLQuantity.subtract(amount));
|
||||
PaymentInstruction paymentIAny = paymentInstructions.iterator().next();
|
||||
|
||||
if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) {
|
||||
BigDecimal amount = bdFromLongSafe(paymentIAny.getCreditLegAmount());
|
||||
// При обновлении (по paymentInstruction и категория I и счет CLRN):=liabilitiesClaimsAssets.liabilitiesQuantity - paymentInstruction.creditLeg_amount
|
||||
// При обновлении (по paymentInstruction и категория V и счет INFO):=liabilitiesClaimsAssets.liabilitiesQuantity - paymentInstruction.creditLeg_amount
|
||||
amount = liabilitiesClaimsAssets.getLiabilitiesQuantity().subtract(amount);
|
||||
liabilitiesClaimsAssets.setLiabilitiesQuantity(amount);
|
||||
}
|
||||
if (clearingCategory.contains(ClearingCategory.B) && AccountType.Clrn.equals(accountType)) {
|
||||
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal(paymentIAny.getCreditLegAmount());
|
||||
if (clearingCategory.contains(ClearingCategory.B)) {
|
||||
BigDecimal amount = bdFromLongSafe(paymentIAny.getCreditLegAmount());
|
||||
// При обновлении (по paymentInstruction и категория B и счет CLRN): из paymentInstruction.creditLeg_amount
|
||||
liabilitiesClaimsAssets.setLiabilitiesQuantity(amount);
|
||||
}
|
||||
|
||||
if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) {
|
||||
BigDecimal amount = new BigDecimal((Long)paymentIAny.getDebitLegAmount());
|
||||
BigDecimal amount = bdFromLongSafe(paymentIAny.getDebitLegAmount());
|
||||
liabilitiesClaimsAssets.setClaimsQuantity(amount);
|
||||
}
|
||||
if (clearingCategory.contains(ClearingCategory.B)) {
|
||||
BigDecimal amount = new BigDecimal((Long)paymentIAny.getDebitLegAmount());
|
||||
amount = liabilitiesClaimsAssets.getClaimsQuantity().subtract(amount);
|
||||
BigDecimal amount = bdFromLongSafe(paymentIAny.getDebitLegAmount());
|
||||
amount = safeBD(liabilitiesClaimsAssets.getClaimsQuantity()).subtract(amount);
|
||||
liabilitiesClaimsAssets.setClaimsQuantity(amount);
|
||||
}
|
||||
|
||||
|
|
@ -478,56 +492,55 @@ 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,
|
||||
List<PaymentInstruction> paymentInstructions,
|
||||
Collection<ClearingCategory> clearingCategory) {
|
||||
boolean isFirstLeg,
|
||||
List<PaymentInstruction> paymentInstructions,
|
||||
Collection<ClearingCategory> clearingCategory) {
|
||||
final boolean isSecondLeg = !isFirstLeg;
|
||||
boolean modified = false;
|
||||
|
||||
PaymentInstruction paymentIAny=paymentInstructions.iterator().next();
|
||||
PaymentInstruction paymentIAny = paymentInstructions.iterator().next();
|
||||
|
||||
if ((clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V))) {
|
||||
BigDecimal amount = liabilitiesClaimsMoney.getLiabilitiesAmount().subtract(new BigDecimal((Long)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(new BigDecimal((Long)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;
|
||||
}
|
||||
|
||||
private BigDecimal bdFromLongSafe(Long l) {
|
||||
if (l == null) return BigDecimal.ZERO;
|
||||
return new BigDecimal(l);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue