This commit is contained in:
parent
8415cfd243
commit
d1b9543d35
4 changed files with 35 additions and 11 deletions
|
|
@ -125,9 +125,11 @@ public class AccountBalanceService {
|
||||||
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
||||||
BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
||||||
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||||
|
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||||
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
||||||
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
|
||||||
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
|
||||||
|
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||||
accountBalance.setUpdated(Instant.now());
|
accountBalance.setUpdated(Instant.now());
|
||||||
log.trace("updateAccountCategoryIClrn: {}", accountBalance.getId());
|
log.trace("updateAccountCategoryIClrn: {}", accountBalance.getId());
|
||||||
accountBalanceImdg.update(accountBalance);
|
accountBalanceImdg.update(accountBalance);
|
||||||
|
|
@ -137,7 +139,9 @@ public class AccountBalanceService {
|
||||||
AccountBalance accountBalance = loadAccountBalance(AccountType.Tran);
|
AccountBalance accountBalance = loadAccountBalance(AccountType.Tran);
|
||||||
log.trace("updating AccountBalance {} I TRAN", accountBalance.getId());
|
log.trace("updating AccountBalance {} I TRAN", accountBalance.getId());
|
||||||
BigDecimal previousDebitAmount = safeBD(accountBalance.getDebitAmount());
|
BigDecimal previousDebitAmount = safeBD(accountBalance.getDebitAmount());
|
||||||
|
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||||
accountBalance.setDebitAmount(previousDebitAmount.add(firstLegAmount.abs()));
|
accountBalance.setDebitAmount(previousDebitAmount.add(firstLegAmount.abs()));
|
||||||
|
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||||
accountBalance.setUpdated(Instant.now());
|
accountBalance.setUpdated(Instant.now());
|
||||||
log.trace("updateAccountCategoryITran: {}", accountBalance.getId());
|
log.trace("updateAccountCategoryITran: {}", accountBalance.getId());
|
||||||
accountBalanceImdg.update(accountBalance);
|
accountBalanceImdg.update(accountBalance);
|
||||||
|
|
@ -149,9 +153,11 @@ public class AccountBalanceService {
|
||||||
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
||||||
BigDecimal changeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
BigDecimal changeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
||||||
BigDecimal balanceAmount = safeBD(accountBalance.getBalanceAmount());
|
BigDecimal balanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||||
|
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||||
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
||||||
accountBalance.setChangeBalanceAmount(changeBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setChangeBalanceAmount(changeBalanceAmount.subtract(firstLegAmount));
|
||||||
accountBalance.setBalanceAmount(balanceAmount.subtract(firstLegAmount));
|
accountBalance.setBalanceAmount(balanceAmount.subtract(firstLegAmount));
|
||||||
|
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||||
accountBalance.setUpdated(Instant.now());
|
accountBalance.setUpdated(Instant.now());
|
||||||
log.trace("updateAccountCategoryVInfo: {}", accountBalance.getId());
|
log.trace("updateAccountCategoryVInfo: {}", accountBalance.getId());
|
||||||
accountBalanceImdg.update(accountBalance);
|
accountBalanceImdg.update(accountBalance);
|
||||||
|
|
@ -163,9 +169,11 @@ public class AccountBalanceService {
|
||||||
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
||||||
BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
||||||
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||||
|
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||||
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
||||||
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
|
||||||
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
|
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
|
||||||
|
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||||
accountBalance.setUpdated(Instant.now());
|
accountBalance.setUpdated(Instant.now());
|
||||||
log.trace("updateAccountCategoryVAnlt: {}", accountBalance.getId());
|
log.trace("updateAccountCategoryVAnlt: {}", accountBalance.getId());
|
||||||
accountBalanceImdg.update(accountBalance);
|
accountBalanceImdg.update(accountBalance);
|
||||||
|
|
@ -177,9 +185,11 @@ public class AccountBalanceService {
|
||||||
BigDecimal debitAmount = safeBD(accountBalance.getDebitAmount());
|
BigDecimal debitAmount = safeBD(accountBalance.getDebitAmount());
|
||||||
BigDecimal prevFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
BigDecimal prevFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
||||||
BigDecimal prevBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
BigDecimal prevBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||||
|
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||||
accountBalance.setDebitAmount(plus(debitAmount, firstLegAmount.abs()));
|
accountBalance.setDebitAmount(plus(debitAmount, firstLegAmount.abs()));
|
||||||
accountBalance.setFreeBalanceAmount(plus(prevFreeBalanceAmount, firstLegAmount));
|
accountBalance.setFreeBalanceAmount(plus(prevFreeBalanceAmount, firstLegAmount));
|
||||||
accountBalance.setBalanceAmount(plus(prevBalanceAmount, firstLegAmount));
|
accountBalance.setBalanceAmount(plus(prevBalanceAmount, firstLegAmount));
|
||||||
|
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||||
accountBalance.setUpdated(Instant.now());
|
accountBalance.setUpdated(Instant.now());
|
||||||
log.trace("updateAccountCategoryBClrn: {}", accountBalance.getId());
|
log.trace("updateAccountCategoryBClrn: {}", accountBalance.getId());
|
||||||
accountBalanceImdg.update(accountBalance);
|
accountBalanceImdg.update(accountBalance);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ import ru.spcex.platform.enumeration.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
||||||
import ru.spcex.platform.utils.time.TimeUtil;
|
import ru.spcex.platform.utils.time.TimeUtil;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -346,7 +348,7 @@ public class PaymentInstructionCreator {
|
||||||
|
|
||||||
payment1.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate());
|
payment1.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate());
|
||||||
|
|
||||||
Long amount = liabilitiesClaimsAssets.getLiabilitiesQuantity() == null ? null : liabilitiesClaimsAssets.getLiabilitiesQuantity().abs().longValue();
|
Long amount = liabilitiesClaimsAssets.getClaimsQuantity() == null ? null : liabilitiesClaimsAssets.getClaimsQuantity().abs().longValue();
|
||||||
payment1.setCreditLegAmount(amount);
|
payment1.setCreditLegAmount(amount);
|
||||||
payment1.setDebitLegAmount(amount);
|
payment1.setDebitLegAmount(amount);
|
||||||
|
|
||||||
|
|
@ -439,19 +441,17 @@ public class PaymentInstructionCreator {
|
||||||
public void updateFieldLiabilitiesClaimsAssetsByPayment(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
public void updateFieldLiabilitiesClaimsAssetsByPayment(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||||
List<PaymentInstruction> paymentInstructions,
|
List<PaymentInstruction> paymentInstructions,
|
||||||
Collection<ClearingCategory> clearingCategory) {
|
Collection<ClearingCategory> clearingCategory) {
|
||||||
|
AccountType accountType = IEnumKey.getEnumByKey(AccountType.class, liabilitiesClaimsAssets.getAccountType());
|
||||||
PaymentInstruction paymentIAny=paymentInstructions.iterator().next();
|
PaymentInstruction paymentIAny=paymentInstructions.iterator().next();
|
||||||
|
|
||||||
if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) {
|
if ((clearingCategory.contains(ClearingCategory.I) && AccountType.Clrn.equals(accountType))
|
||||||
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal((Long)paymentIAny.getCreditLegAmount());
|
|| (clearingCategory.contains(ClearingCategory.V) && AccountType.Info.equals(accountType))) {
|
||||||
// При обновлении (по paymentInstruction и категория I и счет CLRN):=liabilitiesClaimsAssets.liabilitiesQuantity - paymentInstruction.creditLeg_amount
|
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal(paymentIAny.getCreditLegAmount());
|
||||||
// При обновлении (по paymentInstruction и категория V и счет INFO):=liabilitiesClaimsAssets.liabilitiesQuantity - paymentInstruction.creditLeg_amount
|
BigDecimal prevLQuantity = BigDecimalUtil.safeBD(liabilitiesClaimsAssets.getLiabilitiesQuantity());
|
||||||
amount = liabilitiesClaimsAssets.getLiabilitiesQuantity().subtract(amount);
|
liabilitiesClaimsAssets.setLiabilitiesQuantity(prevLQuantity.subtract(amount));
|
||||||
liabilitiesClaimsAssets.setLiabilitiesQuantity(amount);
|
|
||||||
}
|
}
|
||||||
if (clearingCategory.contains(ClearingCategory.B)) {
|
if (clearingCategory.contains(ClearingCategory.B) && AccountType.Clrn.equals(accountType)) {
|
||||||
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal((Long)paymentIAny.getCreditLegAmount());
|
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal(paymentIAny.getCreditLegAmount());
|
||||||
// При обновлении (по paymentInstruction и категория B и счет CLRN): из paymentInstruction.creditLeg_amount
|
|
||||||
liabilitiesClaimsAssets.setLiabilitiesQuantity(amount);
|
liabilitiesClaimsAssets.setLiabilitiesQuantity(amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
* CLEARING_CATEGORY_DICTIONARY
|
* CLEARING_CATEGORY_DICTIONARY
|
||||||
*/
|
*/
|
||||||
public enum ClearingCategory implements IEnumKey {
|
public enum ClearingCategory implements IEnumKey {
|
||||||
|
undefined(UNDEFINED_VALUE),
|
||||||
C("C"), // Категория «Ц» - Банк России
|
C("C"), // Категория «Ц» - Банк России
|
||||||
B("B"), // Категория «Б» - Кредитная организация ДР
|
B("B"), // Категория «Б» - Кредитная организация ДР
|
||||||
F("F"), // Категория «Ф» - Участник рынка РЦБ
|
F("F"), // Категория «Ф» - Участник рынка РЦБ
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,19 @@ public interface IEnumKey extends Serializable {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static <T extends Enum<T> & IEnumKey> T getEnumByKeyOrUndefined(Class<T> enumClass, String key) {
|
||||||
|
T enumByKey = getEnumByKey(enumClass, key);
|
||||||
|
return enumByKey == null ? getUndefined(enumClass) : enumByKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
static <T extends Enum<T> & IEnumKey> T getUndefined(Class<T> enumClass) {
|
||||||
|
T enumByKey = getEnumByKey(enumClass, UNDEFINED_VALUE);
|
||||||
|
if (enumByKey == null) {
|
||||||
|
throw new IllegalArgumentException("Undefined value not found in enum " + enumClass);
|
||||||
|
}
|
||||||
|
return enumByKey;
|
||||||
|
}
|
||||||
|
|
||||||
static String getKeyOrNull(IEnumKey enumVal) {
|
static String getKeyOrNull(IEnumKey enumVal) {
|
||||||
return enumVal == null ? null : enumVal.getKey();
|
return enumVal == null ? null : enumVal.getKey();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue