From 2f1d76241944a88cb49337de4c40ea61a45c5418 Mon Sep 17 00:00:00 2001 From: Raja Nabeel Date: Fri, 24 May 2024 16:57:24 +0500 Subject: [PATCH] commit --- .../com/mfsys/uco/model/TransactionTrail.java | 6 ++++- .../mfsys/uco/service/TransactionService.java | 26 ++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mfsys/uco/model/TransactionTrail.java b/src/main/java/com/mfsys/uco/model/TransactionTrail.java index ad18fc9..9be6f32 100644 --- a/src/main/java/com/mfsys/uco/model/TransactionTrail.java +++ b/src/main/java/com/mfsys/uco/model/TransactionTrail.java @@ -54,8 +54,12 @@ public class TransactionTrail { protected boolean batAcnttranReceived; @Column(name = "SGT_RECEIVEGNTRNUMBER", nullable = true, updatable = true, columnDefinition = FieldNameLength.CODE_500) protected String sgtReceiveGntrnumber; - @Column(name = "CMP_REFCODE", nullable = false, updatable = true, columnDefinition = FieldNameLength.CODE_500) + @Column(name = "CMP_REFCODE", nullable = true, updatable = true, columnDefinition = FieldNameLength.CODE_500) protected String cmpRefcode; + @Column(name = "EXP_SGT_GNTRDATE", nullable = true, updatable = false, columnDefinition = FieldNameLength.DATE) + protected LocalDate expSgtGntrdate; + @Transient + protected int daysToExpire; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; diff --git a/src/main/java/com/mfsys/uco/service/TransactionService.java b/src/main/java/com/mfsys/uco/service/TransactionService.java index 03dbbc5..1f13892 100644 --- a/src/main/java/com/mfsys/uco/service/TransactionService.java +++ b/src/main/java/com/mfsys/uco/service/TransactionService.java @@ -18,11 +18,13 @@ import com.mfsys.uco.repository.GLAccountMasterTransactionTrailRepository; import com.mfsys.uco.repository.TransactionTrailRepository; import lombok.Data; import lombok.RequiredArgsConstructor; +import org.hibernate.Transaction; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -90,7 +92,9 @@ public class TransactionService { String tranid = extractTranNumber(List.of(transactionId.get("arguments"))); transactionTrail.setSgtSentGntrnumber(tranid); transactionTrail.setBatAcnttranSend(true); - transactionTrail.setCmpRefcode(tranid+transactionRequest.getCmpRefcode()); + if(Objects.nonNull(transactionRequest.getCmpRefcode())) { + transactionTrail.setCmpRefcode(tranid + transactionRequest.getCmpRefcode()); + } transactionTrail.setDrMbmBkmsbalance(MapValueExtractorUtil.getValueAsBigDecimal(response, "mbmBkmsbalance")); transactionTrailRepository.save(transactionTrail); return response; @@ -105,6 +109,20 @@ public class TransactionService { } public List fetchPendingCrTransactions(String porOrgacode, String mbmBkmsnumber) { + List transactionTrails = findPendingCrTransactions(porOrgacode,mbmBkmsnumber); + + if(!transactionTrails.isEmpty()){ + transactionTrails.stream().forEach(t -> { + LocalDate datePlus14Days = t.getDrSgtGntrdate().plusDays(14); + t.setExpSgtGntrdate((datePlus14Days.minusDays(ChronoUnit.DAYS.between(LocalDate.now(),datePlus14Days)))); + t.setDaysToExpire(Math.toIntExact(ChronoUnit.DAYS.between(LocalDate.now(), datePlus14Days))); + }); + } + return transactionTrails; + } + + public List findPendingCrTransactions(String porOrgacode , String mbmBkmsnumber) + { Optional> optionalTransactions = transactionTrailRepository.findByPorOrgacodeAndCrMbmBkmsnumberAndBatAcnttranReceivedFalse(porOrgacode, mbmBkmsnumber); return optionalTransactions.orElseGet(Collections::emptyList); } @@ -120,8 +138,10 @@ public class TransactionService { Map response = new HashMap<>(); Optional transactionTrail = transactionTrailRepository.findById(Math.toIntExact(cashOutTransactionRequest.getId())); if (transactionTrail.isPresent()) { - if(!(transactionTrail.get().getSgtSentGntrnumber()+cashOutTransactionRequest.getCmpRefcode()).equals(transactionTrail.get().getCmpRefcode())){ - throw new ReferenceNumberNotValidException(); + if(Objects.nonNull(cashOutTransactionRequest.getCmpRefcode())) { + if (!(transactionTrail.get().getSgtSentGntrnumber() + cashOutTransactionRequest.getCmpRefcode()).equals(transactionTrail.get().getCmpRefcode())) { + throw new ReferenceNumberNotValidException(); + } } transactionTrail.get().setCrSgtGntramt(BigDecimal.valueOf(convertFromPKR(transactionTrail.get().getCrPcrCurrcode(),Double.valueOf(String.valueOf(transactionTrail.get().getDrSgtGntramt())),transactionTrail.get().getPorOrgacode())));; CoreCashOutTransaction cashOutTransaction = CoreCashOutTransaction.builder()