формирование PaymentInstruction, для возврата депозитов: не учитывать суммы возвратов в PaymentInstruction при наличии DM*X

This commit is contained in:
ialbert 2025-08-01 17:23:07 +03:00
parent 81a39b9dbe
commit 28d07fcd3d

View file

@ -191,17 +191,19 @@ public class FormingPaymentInstructionAssetsAction extends AbstractSessionAction
BigDecimal amount; BigDecimal amount;
Collection<Registry> oAndT = loadLiabilitiesAndClaims(registry, sessionId); Collection<Registry> oAndT = loadLiabilitiesAndClaims(registry, sessionId);
Optional<Registry> dmx = searchDmx(registry, oAndT); Optional<Registry> dmx = searchDmx(registry, oAndT);
BigDecimal adjustByReturns;
if (dmx.isPresent()) { if (dmx.isPresent()) {
log.debug("{}.id={} found {}.id={}, skipping PaymentInstruction creation", log.debug("{}.id={} found {}.id={}, adjusted sum by deposit return = 0",
registry.getRegistryCode(), registry.getId(), registry.getRegistryCode(), registry.getId(),
dmx.get().getRegistryCode(), dmx.get().getId()); dmx.get().getRegistryCode(), dmx.get().getId());
continue; adjustByReturns = BigDecimal.ZERO;
} else {
adjustByReturns = adjustAmountByReturns(oAndT);
log.debug("{}.id={} adjust by returns value {}",
registry.getRegistryCode(),
registry.getId(),
adjustByReturns);
} }
BigDecimal adjustByReturns = adjustAmountByReturns(oAndT);
log.debug("{}.id={} adjust by returns value {}",
registry.getRegistryCode(),
registry.getId(),
adjustByReturns);
amount = safeBD(registry.getBalance()).add(adjustByReturns); amount = safeBD(registry.getBalance()).add(adjustByReturns);
boolean isPositiveBalance = amount.compareTo(BigDecimal.ZERO) > 0; boolean isPositiveBalance = amount.compareTo(BigDecimal.ZERO) > 0;
if (amount.compareTo(BigDecimal.ZERO) == 0) { if (amount.compareTo(BigDecimal.ZERO) == 0) {
@ -374,8 +376,10 @@ public class FormingPaymentInstructionAssetsAction extends AbstractSessionAction
} }
ImdgPredicate dmxPrdct = pb.and( ImdgPredicate dmxPrdct = pb.and(
pb.sql(RegistryCodeSqlBuilder.getInstance(DM_X).build()), pb.sql(RegistryCodeSqlBuilder.getInstance(DM_X).build()),
pb.equals("companyId", tOrO.getCounterPartyId()), pb.or(
pb.equals("contract", tOrO.getContract()), pb.equals("companyId", tOrO.getCounterPartyId()),
pb.equals("contract", tOrO.getContract())
),
pb.equals("registryStatus", RegistryStatus.OK.getKey()) pb.equals("registryStatus", RegistryStatus.OK.getKey())
); );
log.debug("{}.id={}, searching DM*X by {}", asset.getRegistryCode(), asset.getId(), dmxPrdct); log.debug("{}.id={}, searching DM*X by {}", asset.getRegistryCode(), asset.getId(), dmxPrdct);