diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java index c33e58358..b7f28edd0 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java @@ -227,7 +227,7 @@ public class Clearing { Optional lcmFirstLegFound = lbltsClmsMoneyCreator.searchLcmBySettlementDate(lcaFirstLeg.getAccountId(), lcaFirstLeg.getCompanyId(), lcaFirstLeg.getSettlementDate()); LiabilitiesClaimsMoney lcmFirstLeg = orElse(lcmFirstLegFound).ifPresentOrElse(lcm -> { log.trace("LiabilitiesClaimsMoney first leg {} was found", lcm.getId()); - lbltsClmsMoneyCreator.updateFirstLegLcm(lcm, lcaFirstLeg, category); + lbltsClmsMoneyCreator.updateFirstLegLcm(lcm, lcaFirstLeg, execDeposit, category); liabilitiesClaimsMoneyImdg.update(lcm); }, () -> { LiabilitiesClaimsMoney lcm = lbltsClmsMoneyCreator.createFirstLegLcm(lcaFirstLeg, category); @@ -238,7 +238,7 @@ public class Clearing { Optional lcmSecondLegFound = lbltsClmsMoneyCreator.searchLcmBySettlementDate(lcaSecondLeg.getAccountId(), lcaSecondLeg.getCompanyId(), lcaSecondLeg.getSettlementDate()); LiabilitiesClaimsMoney lcmSecondLeg = orElse(lcmSecondLegFound).ifPresentOrElse(lcm -> { log.trace("LiabilitiesClaimsMoney second leg {} was found", lcm.getId()); - lbltsClmsMoneyCreator.updateSecondLegLcm(lcm, lcaSecondLeg, category); + lbltsClmsMoneyCreator.updateSecondLegLcm(lcm, lcaSecondLeg, execDeposit, category); liabilitiesClaimsMoneyImdg.update(lcm); }, () -> { LiabilitiesClaimsMoney lcm = lbltsClmsMoneyCreator.createSecondLegLcm(lcaSecondLeg, category); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java index 57b4e3bd0..ea549408f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.service.builder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +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.spcex.clearing.imdg.IMDGDistributedNames; @@ -35,15 +36,23 @@ public class LiabilitiesClaimsMoneyCreator { } public void updateFirstLegLcm(LiabilitiesClaimsMoney liabilitiesClaimsMoney, - LiabilitiesClaimsAssets liabilitiesClaimsAssets, ClearingCategory category) { - BigDecimal prevLAmount = safeBD(liabilitiesClaimsMoney.getLiabilitiesAmount()); - BigDecimal prevClaimsAmount = safeBD(liabilitiesClaimsMoney.getClaimsAmount()); - BigDecimal lcaLiabilitiesQuantity = safeBD(liabilitiesClaimsAssets.getLiabilitiesQuantity()); - BigDecimal lcaClaimsQuantity = safeBD(liabilitiesClaimsAssets.getClaimsQuantity()); - log.trace("update first leg lcm {} by lca {}: prevLAmount={}, prevClaimsAmount={}, lcaLiabilitiesQuantity={}, lcaClaimsQuantity={}", - liabilitiesClaimsMoney.getId(), liabilitiesClaimsAssets.getId(), prevLAmount, prevClaimsAmount, lcaLiabilitiesQuantity, lcaClaimsQuantity); - liabilitiesClaimsMoney.setLiabilitiesAmount(prevLAmount.add(lcaLiabilitiesQuantity)); - liabilitiesClaimsMoney.setClaimsAmount(prevClaimsAmount.add(lcaClaimsQuantity)); + LiabilitiesClaimsAssets liabilitiesClaimsAssets, ExecutionDeposit execDeposit, ClearingCategory category) { + boolean catI = ClearingCategory.I.equals(category); + boolean catV = ClearingCategory.V.equals(category); + boolean catB = ClearingCategory.B.equals(category); + BigDecimal execFirstLegAmount = safeBD(execDeposit.getFirstLegAmount()); + if (catI || catV) { + BigDecimal prevLAmount = safeBD(liabilitiesClaimsMoney.getLiabilitiesAmount()); + log.trace("update first leg lcm {} by lca {}: prevLAmount={}, execFirstLegAmount={}", + liabilitiesClaimsMoney.getId(), liabilitiesClaimsAssets.getId(), prevLAmount, execFirstLegAmount); + liabilitiesClaimsMoney.setLiabilitiesAmount(prevLAmount.add(execFirstLegAmount)); + } + if (catB) { + BigDecimal prevClaimsAmount = safeBD(liabilitiesClaimsMoney.getClaimsAmount()); + log.trace("update first leg lcm {} by lca {}: prevClaimsAmount={}, execFirstLegAmount={}", + liabilitiesClaimsMoney.getId(), liabilitiesClaimsAssets.getId(), prevClaimsAmount, execFirstLegAmount); + liabilitiesClaimsMoney.setClaimsAmount(prevClaimsAmount.add(execFirstLegAmount)); + } } @@ -97,14 +106,22 @@ public class LiabilitiesClaimsMoneyCreator { return lcm; } - public void updateSecondLegLcm(LiabilitiesClaimsMoney lcm, LiabilitiesClaimsAssets lca, ClearingCategory category) { - BigDecimal prevLiabilitiesAmount = safeBD(lcm.getLiabilitiesAmount()); - BigDecimal prevClaimsAmount = safeBD(lcm.getClaimsAmount()); - BigDecimal lcaLiabilitiesQuantity = safeBD(lca.getLiabilitiesQuantity()); - BigDecimal lcaClaimsQuantity = safeBD(lca.getClaimsQuantity()); - log.trace("update second leg lcm {} by lca {}: prevLiabilitiesAmount={}, prevClaimsAmount={}, lcaLiabilitiesQuantity={}, lcaClaimsQuantity={}", - lcm.getId(), lca.getId(), prevLiabilitiesAmount, prevClaimsAmount, lcaLiabilitiesQuantity, lcaClaimsQuantity); - lcm.setLiabilitiesAmount(prevLiabilitiesAmount.add(lcaLiabilitiesQuantity)); - lcm.setClaimsAmount(prevClaimsAmount.add(lcaClaimsQuantity)); + public void updateSecondLegLcm(LiabilitiesClaimsMoney lcm, LiabilitiesClaimsAssets lca, ExecutionDeposit execDeposit, ClearingCategory category) { + boolean catI = ClearingCategory.I.equals(category); + boolean catV = ClearingCategory.V.equals(category); + boolean catB = ClearingCategory.B.equals(category); + BigDecimal execSecondLegAmount = safeBD(execDeposit.getSecondLegAmount()); + if (catI || catV) { + BigDecimal prevClaimsAmount = safeBD(lcm.getClaimsAmount()); + log.trace("update second leg lcm {} by lca {}: prevClaimsAmount={}, execSecondLegAmount={}", + lcm.getId(), lca.getId(), prevClaimsAmount, execSecondLegAmount); + lcm.setClaimsAmount(prevClaimsAmount.add(execSecondLegAmount)); + } + if (catB) { + BigDecimal prevLiabilitiesAmount = safeBD(lcm.getLiabilitiesAmount()); + log.trace("update second leg lcm {} by lca {}: prevLiabilitiesAmount={}, execSecondLegAmount={}", + lcm.getId(), lca.getId(), prevLiabilitiesAmount, execSecondLegAmount); + lcm.setLiabilitiesAmount(prevLiabilitiesAmount.add(execSecondLegAmount)); + } } }