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 previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
||||
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||
accountBalance.setUpdated(Instant.now());
|
||||
log.trace("updateAccountCategoryIClrn: {}", accountBalance.getId());
|
||||
accountBalanceImdg.update(accountBalance);
|
||||
|
|
@ -137,7 +139,9 @@ public class AccountBalanceService {
|
|||
AccountBalance accountBalance = loadAccountBalance(AccountType.Tran);
|
||||
log.trace("updating AccountBalance {} I TRAN", accountBalance.getId());
|
||||
BigDecimal previousDebitAmount = safeBD(accountBalance.getDebitAmount());
|
||||
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||
accountBalance.setDebitAmount(previousDebitAmount.add(firstLegAmount.abs()));
|
||||
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||
accountBalance.setUpdated(Instant.now());
|
||||
log.trace("updateAccountCategoryITran: {}", accountBalance.getId());
|
||||
accountBalanceImdg.update(accountBalance);
|
||||
|
|
@ -149,9 +153,11 @@ public class AccountBalanceService {
|
|||
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
||||
BigDecimal changeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
||||
BigDecimal balanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setChangeBalanceAmount(changeBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setBalanceAmount(balanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||
accountBalance.setUpdated(Instant.now());
|
||||
log.trace("updateAccountCategoryVInfo: {}", accountBalance.getId());
|
||||
accountBalanceImdg.update(accountBalance);
|
||||
|
|
@ -163,9 +169,11 @@ public class AccountBalanceService {
|
|||
BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
||||
BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount());
|
||||
BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||
accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount));
|
||||
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||
accountBalance.setUpdated(Instant.now());
|
||||
log.trace("updateAccountCategoryVAnlt: {}", accountBalance.getId());
|
||||
accountBalanceImdg.update(accountBalance);
|
||||
|
|
@ -177,9 +185,11 @@ public class AccountBalanceService {
|
|||
BigDecimal debitAmount = safeBD(accountBalance.getDebitAmount());
|
||||
BigDecimal prevFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount());
|
||||
BigDecimal prevBalanceAmount = safeBD(accountBalance.getBalanceAmount());
|
||||
BigDecimal previousCreditAmount = safeBD(accountBalance.getCreditAmount());
|
||||
accountBalance.setDebitAmount(plus(debitAmount, firstLegAmount.abs()));
|
||||
accountBalance.setFreeBalanceAmount(plus(prevFreeBalanceAmount, firstLegAmount));
|
||||
accountBalance.setBalanceAmount(plus(prevBalanceAmount, firstLegAmount));
|
||||
accountBalance.setCreditAmount(previousCreditAmount.add(firstLegAmount.abs()));
|
||||
accountBalance.setUpdated(Instant.now());
|
||||
log.trace("updateAccountCategoryBClrn: {}", accountBalance.getId());
|
||||
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.ImdgId;
|
||||
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 java.math.BigDecimal;
|
||||
|
|
@ -346,7 +348,7 @@ public class PaymentInstructionCreator {
|
|||
|
||||
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.setDebitLegAmount(amount);
|
||||
|
||||
|
|
@ -439,19 +441,17 @@ public class PaymentInstructionCreator {
|
|||
public void updateFieldLiabilitiesClaimsAssetsByPayment(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||
List<PaymentInstruction> paymentInstructions,
|
||||
Collection<ClearingCategory> clearingCategory) {
|
||||
|
||||
AccountType accountType = IEnumKey.getEnumByKey(AccountType.class, liabilitiesClaimsAssets.getAccountType());
|
||||
PaymentInstruction paymentIAny=paymentInstructions.iterator().next();
|
||||
|
||||
if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) {
|
||||
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal((Long)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.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));
|
||||
}
|
||||
if (clearingCategory.contains(ClearingCategory.B)) {
|
||||
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal((Long)paymentIAny.getCreditLegAmount());
|
||||
// При обновлении (по paymentInstruction и категория B и счет CLRN): из paymentInstruction.creditLeg_amount
|
||||
if (clearingCategory.contains(ClearingCategory.B) && AccountType.Clrn.equals(accountType)) {
|
||||
BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal(paymentIAny.getCreditLegAmount());
|
||||
liabilitiesClaimsAssets.setLiabilitiesQuantity(amount);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|||
* CLEARING_CATEGORY_DICTIONARY
|
||||
*/
|
||||
public enum ClearingCategory implements IEnumKey {
|
||||
undefined(UNDEFINED_VALUE),
|
||||
C("C"), // Категория «Ц» - Банк России
|
||||
B("B"), // Категория «Б» - Кредитная организация ДР
|
||||
F("F"), // Категория «Ф» - Участник рынка РЦБ
|
||||
|
|
|
|||
|
|
@ -56,6 +56,19 @@ public interface IEnumKey extends Serializable {
|
|||
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) {
|
||||
return enumVal == null ? null : enumVal.getKey();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue