From 444215580fdaff2e62f0c4c0cb683f0d8f1fcdbd Mon Sep 17 00:00:00 2001 From: Raja Nabeel Date: Tue, 21 May 2024 03:17:21 +0500 Subject: [PATCH] commit add money done --- src/main/java/com/mfsys/uco/UCOURI.java | 1 + .../uco/controller/TransactionController.java | 10 ++-- .../dto/GLAccontTranasctionRequestModel.java | 33 ++++++++++++ .../uco/model/GLAccountMasterTransaction.java | 52 +++++++++++++++++++ ...countMasterTransactionTrailRepository.java | 13 +++++ .../mfsys/uco/service/TransactionService.java | 42 ++++++++++++++- 6 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/mfsys/uco/dto/GLAccontTranasctionRequestModel.java create mode 100644 src/main/java/com/mfsys/uco/model/GLAccountMasterTransaction.java create mode 100644 src/main/java/com/mfsys/uco/repository/GLAccountMasterTransactionTrailRepository.java diff --git a/src/main/java/com/mfsys/uco/UCOURI.java b/src/main/java/com/mfsys/uco/UCOURI.java index 0033c9b..d99c7d3 100644 --- a/src/main/java/com/mfsys/uco/UCOURI.java +++ b/src/main/java/com/mfsys/uco/UCOURI.java @@ -17,6 +17,7 @@ public interface UCOURI { String GET_DR_TRANSACTION_PIN = "/sendDrTranOtpAndVerifyTranPin"; String RESEND_GET_DR_TRANSACTION_PIN = "/resendDrTranOtp"; String SUBMIT_DR_TRANSACTION = "/submitDrTransaction"; + String SUBMIT_ADD_MONEY_GL_ACC_DR_TRANSACTION = "/submitGLAccontAddMoneyTranasction"; String CURRENCY_EVALUATION = "/getEvaluatedCurrency"; String SUBMIT_CR_TRANSACTION = "/submitCrTransaction"; String PENDING_CR_TRANSACTION = "/fetchPendingCredittransaction"; diff --git a/src/main/java/com/mfsys/uco/controller/TransactionController.java b/src/main/java/com/mfsys/uco/controller/TransactionController.java index b48d981..d2bd398 100644 --- a/src/main/java/com/mfsys/uco/controller/TransactionController.java +++ b/src/main/java/com/mfsys/uco/controller/TransactionController.java @@ -1,11 +1,8 @@ package com.mfsys.uco.controller; import com.mfsys.uco.UCOURI; -import com.mfsys.uco.dto.CashInTransactionRequest; -import com.mfsys.uco.dto.CashOutTransactionRequest; -import com.mfsys.uco.dto.EvaluatedCurrencyReponse; +import com.mfsys.uco.dto.*; import com.mfsys.uco.dto.Transaction.TransactionOtpRequestModel; -import com.mfsys.uco.dto.TransactionPinResponseModel; import com.mfsys.uco.model.TransactionTrail; import com.mfsys.uco.service.TransactionService; import lombok.RequiredArgsConstructor; @@ -35,6 +32,11 @@ public class TransactionController { return transactionService.cashInTransaction(transactionRequest); } + @PostMapping(UCOURI.SUBMIT_ADD_MONEY_GL_ACC_DR_TRANSACTION) + public Map addMoneyGlAccTransaction(@RequestBody GLAccontTranasctionRequestModel glAccontTranasctionRequestModel) { + return transactionService.glAccountTransaction(glAccontTranasctionRequestModel); + } + @PostMapping(UCOURI.SUBMIT_CR_TRANSACTION) public Map cashOutTransaction(@RequestBody CashOutTransactionRequest transactionRequest) { return transactionService.cashOutTransaction(transactionRequest); diff --git a/src/main/java/com/mfsys/uco/dto/GLAccontTranasctionRequestModel.java b/src/main/java/com/mfsys/uco/dto/GLAccontTranasctionRequestModel.java new file mode 100644 index 0000000..f33e4c0 --- /dev/null +++ b/src/main/java/com/mfsys/uco/dto/GLAccontTranasctionRequestModel.java @@ -0,0 +1,33 @@ +package com.mfsys.uco.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GLAccontTranasctionRequestModel { + private String porOrgacode; + private String pctCstycode; + private String channelCode; + private String cmpCustcode; + private String drPcaGlaccode; + private String drPcaGlacdesc; + private String crMbmBkmsnumber; + private String crMbmBkmstitle; + private String crPcrCurrcode; + private String crPcrCurrdesc; + private String crPcrCurrshort; + private String sgtGntrnarration; + private String dmpProdCode; + private String transType; + private String notificationId; + private String transMode; + private double sgtGntramtfc; + private String otdTrancomment; + private String obpPincode; + private String pinType; +} diff --git a/src/main/java/com/mfsys/uco/model/GLAccountMasterTransaction.java b/src/main/java/com/mfsys/uco/model/GLAccountMasterTransaction.java new file mode 100644 index 0000000..7f6e1d1 --- /dev/null +++ b/src/main/java/com/mfsys/uco/model/GLAccountMasterTransaction.java @@ -0,0 +1,52 @@ +package com.mfsys.uco.model; + +import com.mfsys.comm.util.FieldNameLength; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity(name = "BN_MS_GA_UCOGENERALTRANSACTIONTRAIL") +@Table(name = "BN_MS_GA_UCOGENERAALTRANSACTIONTRAIL") +public class GLAccountMasterTransaction { + + @Column(name = "POR_ORGACODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.POR_ORGACODE) + protected String porOrgacode; + @Column(name = "DR_PCA_GLACODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.ACCOUNT_NUMBER) + protected String drPcaGlaccode; + @Column(name = "CR_MBM_BKMSNUMBER", nullable = false, updatable = false, columnDefinition = FieldNameLength.ACCOUNT_NUMBER) + protected String crMbmBkmsnumber; + @Column(name = "DMP_PRODCODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.DMP_PRODCODE) + protected String dmpProdcode; + @Column(name = "DR_PCA_GLADESC", nullable = false, updatable = true, columnDefinition = FieldNameLength.ACCOUNT_TITLE) + protected String drPcaGlacdesc; + @Column(name = "CMP_CUSTCODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.CUSTOMER_CODE) + protected String cmpCustcode; + @Column(name = "CR_MBM_BKMSTITLE", nullable = false, updatable = true, columnDefinition = FieldNameLength.ACCOUNT_TITLE) + protected String crMbmBkmstitle; + @Column(name = "SGT_SENTGNTRNUMBER", nullable = false, updatable = false, columnDefinition = FieldNameLength.CODE_500) + protected String sgtSentGntrnumber; + @Column(name = "DR_SGT_GNTRDATE", nullable = false, updatable = false, columnDefinition = FieldNameLength.DATE) + protected LocalDate drSgtGntrdate; + @Column(name = "SGT_GNTRAMT", nullable = false, updatable = false, columnDefinition = FieldNameLength.AMOUNT_REAL) + protected BigDecimal sgtGntramt = BigDecimal.ZERO; + @Column(name = "DR_SGT_GNTRAMT", nullable = false, updatable = false, columnDefinition = FieldNameLength.AMOUNT_REAL) + protected BigDecimal drSgtGntramt = BigDecimal.ZERO; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Column(name = "CR_PCR_CURRSHORT", nullable = false, columnDefinition = FieldNameLength.DESCRIPTION_LONG) + private String crPcrCurrshort; + @Column(name = "CR_PCR_CURRDESC", nullable = false, columnDefinition = FieldNameLength.DESCRIPTION_LONG) + private String crPcrCurrdesc; + @Column(name = "CR_PCR_CURRCODE", columnDefinition = FieldNameLength.PCR_CURRCODE) + private String crPcrCurrcode; +} diff --git a/src/main/java/com/mfsys/uco/repository/GLAccountMasterTransactionTrailRepository.java b/src/main/java/com/mfsys/uco/repository/GLAccountMasterTransactionTrailRepository.java new file mode 100644 index 0000000..d47c07f --- /dev/null +++ b/src/main/java/com/mfsys/uco/repository/GLAccountMasterTransactionTrailRepository.java @@ -0,0 +1,13 @@ +package com.mfsys.uco.repository; + +import com.mfsys.uco.model.GLAccountMasterTransaction; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + + +@Repository +public interface GLAccountMasterTransactionTrailRepository extends JpaRepository { + + + +} diff --git a/src/main/java/com/mfsys/uco/service/TransactionService.java b/src/main/java/com/mfsys/uco/service/TransactionService.java index 28a40c1..b23f3c6 100644 --- a/src/main/java/com/mfsys/uco/service/TransactionService.java +++ b/src/main/java/com/mfsys/uco/service/TransactionService.java @@ -10,8 +10,10 @@ import com.mfsys.uco.dto.Transaction.TransactionOtpRequestModel; import com.mfsys.uco.exception.SameCrDrAccountExistsException; import com.mfsys.uco.model.CustomerProfile; import com.mfsys.uco.model.CustomerProfileId; +import com.mfsys.uco.model.GLAccountMasterTransaction; import com.mfsys.uco.model.TransactionTrail; import com.mfsys.uco.repository.CustomerProfileRepository; +import com.mfsys.uco.repository.GLAccountMasterTransactionTrailRepository; import com.mfsys.uco.repository.TransactionTrailRepository; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -36,6 +38,8 @@ public class TransactionService { private final TransactionTrailRepository transactionTrailRepository; private final UcoAccountService ucoAccountService; private final WebClientDepositService webClientDepositService; + private final GLAccountMasterTransactionTrailRepository glAccountMasterTransactionTrailRepository; + public TransactionPinResponseModel sendOtpAndValidateTranPin(TransactionOtpRequestModel transactionOtpRequestModel, boolean isResendOtp) { CustomerProfile customerProfile = verifyOldPinAndGetCmpProfile(transactionOtpRequestModel.getPorOrgacode(), @@ -88,6 +92,7 @@ public class TransactionService { return response; } + private void validation(CashInTransactionRequest transactionRequest) { if (transactionRequest.getCrMbmBkmsnumber().equals(transactionRequest.getDrMbmBkmsnumber())) { throw new SameCrDrAccountExistsException(); @@ -192,7 +197,6 @@ public class TransactionService { public double convertToPKR(String fromcrCurrcode, double amount, String porOrgacode) { -// List> exchangeRateList = (List>) ucoAccountService.fetchExchangeRate(porOrgacode); // Changed to List List exchangeRateModelList = fetchExchangeRate(porOrgacode); String baseCurrencyCode = exchangeRateModelList.stream() @@ -235,4 +239,40 @@ public class TransactionService { .orElseThrow(() -> new RuntimeException("Product Not Found")); } + public Map glAccountTransaction(GLAccontTranasctionRequestModel glAccontTranasctionRequestModel) { + Map response = new HashMap<>(); + notificationService.verifyOtpViaOtpId(glAccontTranasctionRequestModel.getNotificationId(),glAccontTranasctionRequestModel.getPinType(),glAccontTranasctionRequestModel.getObpPincode()); + CoreCashOutTransaction cashOutTransaction = CoreCashOutTransaction.builder() + .pcaGlaccode(glAccontTranasctionRequestModel.getDrPcaGlaccode()) + .crMbmBkmsnumber(glAccontTranasctionRequestModel.getCrMbmBkmsnumber()) + .otdTrancomment(glAccontTranasctionRequestModel.getOtdTrancomment()) + .porOrgacode(glAccontTranasctionRequestModel.getPorOrgacode()) + .accSgtGntramtfc(BigDecimal.valueOf(glAccontTranasctionRequestModel.getSgtGntramtfc())) + .sgtGntramtfc(BigDecimal.valueOf(convertToPKR(glAccontTranasctionRequestModel.getCrPcrCurrcode(),glAccontTranasctionRequestModel.getSgtGntramtfc(),glAccontTranasctionRequestModel.getPorOrgacode()))) + .crPcrCurrcode(glAccontTranasctionRequestModel.getCrPcrCurrcode()) + .build(); + + response = (Map) webClientDepositService.postTransaction(cashOutTransaction, UCOURI.BANKING_CASH_OUT, glAccontTranasctionRequestModel.getPorOrgacode()); + Map transactionId = (Map) response.get("FuncReturnDetail"); + + GLAccountMasterTransaction glAccountMasterTransaction = GLAccountMasterTransaction.builder() + .porOrgacode(glAccontTranasctionRequestModel.getPorOrgacode()) + .cmpCustcode(glAccontTranasctionRequestModel.getCmpCustcode()) + .crMbmBkmsnumber(glAccontTranasctionRequestModel.getCrMbmBkmsnumber()) + .crMbmBkmstitle(glAccontTranasctionRequestModel.getCrMbmBkmstitle()) + .crPcrCurrcode(glAccontTranasctionRequestModel.getCrPcrCurrcode()) + .crPcrCurrdesc(glAccontTranasctionRequestModel.getCrPcrCurrdesc()) + .crPcrCurrshort(glAccontTranasctionRequestModel.getCrPcrCurrshort()) + .drPcaGlaccode(glAccontTranasctionRequestModel.getDrPcaGlaccode()) + .drPcaGlacdesc(glAccontTranasctionRequestModel.getDrPcaGlacdesc()) + .dmpProdcode(glAccontTranasctionRequestModel.getDmpProdCode()) + .sgtGntramt(BigDecimal.valueOf(glAccontTranasctionRequestModel.getSgtGntramtfc())) + .drSgtGntramt(BigDecimal.valueOf(glAccontTranasctionRequestModel.getSgtGntramtfc())) + .drSgtGntrdate(LocalDate.now()) + .sgtSentGntrnumber(extractTranNumber(List.of(transactionId.get("arguments")))) + .build(); + + glAccountMasterTransactionTrailRepository.save(glAccountMasterTransaction); + return response; + } }