|
|
|
@ -18,11 +18,13 @@ import com.mfsys.uco.repository.GLAccountMasterTransactionTrailRepository;
|
|
|
|
import com.mfsys.uco.repository.TransactionTrailRepository;
|
|
|
|
import com.mfsys.uco.repository.TransactionTrailRepository;
|
|
|
|
import lombok.Data;
|
|
|
|
import lombok.Data;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
|
|
|
import org.hibernate.Transaction;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
@ -90,7 +92,9 @@ public class TransactionService {
|
|
|
|
String tranid = extractTranNumber(List.of(transactionId.get("arguments")));
|
|
|
|
String tranid = extractTranNumber(List.of(transactionId.get("arguments")));
|
|
|
|
transactionTrail.setSgtSentGntrnumber(tranid);
|
|
|
|
transactionTrail.setSgtSentGntrnumber(tranid);
|
|
|
|
transactionTrail.setBatAcnttranSend(true);
|
|
|
|
transactionTrail.setBatAcnttranSend(true);
|
|
|
|
|
|
|
|
if(Objects.nonNull(transactionRequest.getCmpRefcode())) {
|
|
|
|
transactionTrail.setCmpRefcode(tranid + transactionRequest.getCmpRefcode());
|
|
|
|
transactionTrail.setCmpRefcode(tranid + transactionRequest.getCmpRefcode());
|
|
|
|
|
|
|
|
}
|
|
|
|
transactionTrail.setDrMbmBkmsbalance(MapValueExtractorUtil.getValueAsBigDecimal(response, "mbmBkmsbalance"));
|
|
|
|
transactionTrail.setDrMbmBkmsbalance(MapValueExtractorUtil.getValueAsBigDecimal(response, "mbmBkmsbalance"));
|
|
|
|
transactionTrailRepository.save(transactionTrail);
|
|
|
|
transactionTrailRepository.save(transactionTrail);
|
|
|
|
return response;
|
|
|
|
return response;
|
|
|
|
@ -105,6 +109,20 @@ public class TransactionService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<TransactionTrail> fetchPendingCrTransactions(String porOrgacode, String mbmBkmsnumber) {
|
|
|
|
public List<TransactionTrail> fetchPendingCrTransactions(String porOrgacode, String mbmBkmsnumber) {
|
|
|
|
|
|
|
|
List<TransactionTrail> 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<TransactionTrail> findPendingCrTransactions(String porOrgacode , String mbmBkmsnumber)
|
|
|
|
|
|
|
|
{
|
|
|
|
Optional<List<TransactionTrail>> optionalTransactions = transactionTrailRepository.findByPorOrgacodeAndCrMbmBkmsnumberAndBatAcnttranReceivedFalse(porOrgacode, mbmBkmsnumber);
|
|
|
|
Optional<List<TransactionTrail>> optionalTransactions = transactionTrailRepository.findByPorOrgacodeAndCrMbmBkmsnumberAndBatAcnttranReceivedFalse(porOrgacode, mbmBkmsnumber);
|
|
|
|
return optionalTransactions.orElseGet(Collections::emptyList);
|
|
|
|
return optionalTransactions.orElseGet(Collections::emptyList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -120,9 +138,11 @@ public class TransactionService {
|
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
|
Optional<TransactionTrail> transactionTrail = transactionTrailRepository.findById(Math.toIntExact(cashOutTransactionRequest.getId()));
|
|
|
|
Optional<TransactionTrail> transactionTrail = transactionTrailRepository.findById(Math.toIntExact(cashOutTransactionRequest.getId()));
|
|
|
|
if (transactionTrail.isPresent()) {
|
|
|
|
if (transactionTrail.isPresent()) {
|
|
|
|
|
|
|
|
if(Objects.nonNull(cashOutTransactionRequest.getCmpRefcode())) {
|
|
|
|
if (!(transactionTrail.get().getSgtSentGntrnumber() + cashOutTransactionRequest.getCmpRefcode()).equals(transactionTrail.get().getCmpRefcode())) {
|
|
|
|
if (!(transactionTrail.get().getSgtSentGntrnumber() + cashOutTransactionRequest.getCmpRefcode()).equals(transactionTrail.get().getCmpRefcode())) {
|
|
|
|
throw new ReferenceNumberNotValidException();
|
|
|
|
throw new ReferenceNumberNotValidException();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
transactionTrail.get().setCrSgtGntramt(BigDecimal.valueOf(convertFromPKR(transactionTrail.get().getCrPcrCurrcode(),Double.valueOf(String.valueOf(transactionTrail.get().getDrSgtGntramt())),transactionTrail.get().getPorOrgacode())));;
|
|
|
|
transactionTrail.get().setCrSgtGntramt(BigDecimal.valueOf(convertFromPKR(transactionTrail.get().getCrPcrCurrcode(),Double.valueOf(String.valueOf(transactionTrail.get().getDrSgtGntramt())),transactionTrail.get().getPorOrgacode())));;
|
|
|
|
CoreCashOutTransaction cashOutTransaction = CoreCashOutTransaction.builder()
|
|
|
|
CoreCashOutTransaction cashOutTransaction = CoreCashOutTransaction.builder()
|
|
|
|
.crPcrCurrcode(transactionTrail.get().getCrPcrCurrcode())
|
|
|
|
.crPcrCurrcode(transactionTrail.get().getCrPcrCurrcode())
|
|
|
|
|