diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java index 465dbbb81..7f54edb19 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java @@ -68,6 +68,7 @@ public class PaymentInstructionCreator { /** * 2.2.2. Выполнить Создание paymentInstruction по liabilitiesClaimsAssets + * * @return Созданные PaymentInstruction, может быть несколько. Они уже сохранены в IMDG. */ public List createAndSavePaymentInstructions(LiabilitiesClaimsAssets liabilitiesClaimsAssets, @@ -446,30 +447,30 @@ public class PaymentInstructionCreator { * 2.2.2.1. Выполнить Изменение liabilitiesClaimsAssets по paymentInstruction. */ public void updateFieldLiabilitiesClaimsAssetsByPayment(LiabilitiesClaimsAssets liabilitiesClaimsAssets, - List paymentInstructions, - Collection clearingCategory) { + List paymentInstructions, + Collection clearingCategory) { - PaymentInstruction paymentIAny=paymentInstructions.iterator().next(); + 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()); + 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)) { - BigDecimal amount = paymentIAny.getCreditLegAmount() == null ? BigDecimal.ZERO : new BigDecimal((Long)paymentIAny.getCreditLegAmount()); + 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()); + BigDecimal amount = bdFromLongSafe(paymentIAny.getDebitLegAmount()); amount = liabilitiesClaimsAssets.getClaimsQuantity().subtract(amount); liabilitiesClaimsAssets.setClaimsQuantity(amount); } @@ -510,26 +511,27 @@ public class PaymentInstructionCreator { /** * Обновление liabilitiesClaimsMoney первой ноги по liabilitiesClaimsAssets + * * @param liabilitiesClaimsMoney обновить этот объект (firstLeg) * @param paymentInstructions * @param clearingCategory * @return были внесены изменения в liabilitiesClaimsMoney */ public boolean updateFieldLiabilitiesClaimsMoneyByPayment(LiabilitiesClaimsMoney liabilitiesClaimsMoney, - List paymentInstructions, - Collection clearingCategory) { + List paymentInstructions, + Collection clearingCategory) { 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())); + BigDecimal amount = liabilitiesClaimsMoney.getLiabilitiesAmount().subtract(bdFromLongSafe(paymentIAny.getCreditLegAmount())); liabilitiesClaimsMoney.setLiabilitiesAmount(amount); modified = true; } if ((clearingCategory.contains(ClearingCategory.B))) { - BigDecimal amount = liabilitiesClaimsMoney.getClaimsAmount().subtract(new BigDecimal((Long)paymentIAny.getDebitLegAmount())); + BigDecimal amount = liabilitiesClaimsMoney.getClaimsAmount().subtract(bdFromLongSafe(paymentIAny.getDebitLegAmount())); liabilitiesClaimsMoney.setClaimsAmount(amount); modified = true; } @@ -539,4 +541,9 @@ public class PaymentInstructionCreator { } return modified; } + + private BigDecimal bdFromLongSafe(Long l) { + if (l == null) return BigDecimal.ZERO; + return new BigDecimal(l); + } }