формирование 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;
Collection<Registry> oAndT = loadLiabilitiesAndClaims(registry, sessionId);
Optional<Registry> dmx = searchDmx(registry, oAndT);
BigDecimal adjustByReturns;
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(),
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);
boolean isPositiveBalance = amount.compareTo(BigDecimal.ZERO) > 0;
if (amount.compareTo(BigDecimal.ZERO) == 0) {
@ -374,8 +376,10 @@ public class FormingPaymentInstructionAssetsAction extends AbstractSessionAction
}
ImdgPredicate dmxPrdct = pb.and(
pb.sql(RegistryCodeSqlBuilder.getInstance(DM_X).build()),
pb.equals("companyId", tOrO.getCounterPartyId()),
pb.equals("contract", tOrO.getContract()),
pb.or(
pb.equals("companyId", tOrO.getCounterPartyId()),
pb.equals("contract", tOrO.getContract())
),
pb.equals("registryStatus", RegistryStatus.OK.getKey())
);
log.debug("{}.id={}, searching DM*X by {}", asset.getRegistryCode(), asset.getId(), dmxPrdct);