From 82fdb03b7f41be33d140195294334022f686450b Mon Sep 17 00:00:00 2001 From: Raja Nabeel Date: Wed, 15 May 2024 15:41:31 +0500 Subject: [PATCH] 1. Fetch Exchange Rate 2. List of currencies/products 3. List of GL accounts 4. Signup level product specific account opening. --- .../DepositUcoProductController.java | 33 +++++++++ .../com/mfsys/uco/model/ChartOfAccount.java | 29 ++++++++ .../com/mfsys/uco/model/ChartOfAccountId.java | 71 +++++++++++++++++++ .../java/com/mfsys/uco/model/Product.java | 32 +++++++++ .../java/com/mfsys/uco/model/ProductId.java | 67 +++++++++++++++++ .../repository/ChartOfAccountRepository.java | 18 +++++ .../DepositUcoProductsRepository.java | 18 +++++ .../service/DepositUcoProductsService.java | 29 ++++++++ 8 files changed, 297 insertions(+) create mode 100644 src/main/java/com/mfsys/uco/controller/DepositUcoProductController.java create mode 100644 src/main/java/com/mfsys/uco/model/ChartOfAccount.java create mode 100644 src/main/java/com/mfsys/uco/model/ChartOfAccountId.java create mode 100644 src/main/java/com/mfsys/uco/model/Product.java create mode 100644 src/main/java/com/mfsys/uco/model/ProductId.java create mode 100644 src/main/java/com/mfsys/uco/repository/ChartOfAccountRepository.java create mode 100644 src/main/java/com/mfsys/uco/repository/DepositUcoProductsRepository.java create mode 100644 src/main/java/com/mfsys/uco/service/DepositUcoProductsService.java diff --git a/src/main/java/com/mfsys/uco/controller/DepositUcoProductController.java b/src/main/java/com/mfsys/uco/controller/DepositUcoProductController.java new file mode 100644 index 0000000..6fed237 --- /dev/null +++ b/src/main/java/com/mfsys/uco/controller/DepositUcoProductController.java @@ -0,0 +1,33 @@ +package com.mfsys.uco.controller; + + +import com.mfsys.uco.UCOURI; +import com.mfsys.uco.model.ChartOfAccount; +import com.mfsys.uco.model.Product; +import com.mfsys.uco.model.TransactionTrail; +import com.mfsys.uco.service.DepositUcoProductsService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +public class DepositUcoProductController { + + private final DepositUcoProductsService depositUcoProductsService; + + @GetMapping(UCOURI.FETCH_UCO_DEPOSIT_PRODUCTS) + public List getUcoDepositProducts( + @RequestParam String porOrgacode) { + return depositUcoProductsService.fetchDepositUcoProducts(porOrgacode); + } + + @GetMapping(UCOURI.FETCH_UCO_GLS) + public List getUcoGls( + @RequestParam String porOrgacode) { + return depositUcoProductsService.fetchUcoGls(porOrgacode); + } +} diff --git a/src/main/java/com/mfsys/uco/model/ChartOfAccount.java b/src/main/java/com/mfsys/uco/model/ChartOfAccount.java new file mode 100644 index 0000000..9f45b74 --- /dev/null +++ b/src/main/java/com/mfsys/uco/model/ChartOfAccount.java @@ -0,0 +1,29 @@ +package com.mfsys.uco.model; + +import com.mfsys.comm.util.FieldNameLength; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +@Data +@RequiredArgsConstructor +@Entity(name = "PR_GL_CA_ACCOUNT") +@Table(name = "PR_GL_CA_ACCOUNT") +@IdClass(ChartOfAccountId.class) +public class ChartOfAccount { + @Id + @Column(name = "POR_ORGACODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.POR_ORGACODE) + private String porOrgacode; + + @Id + @Column(name = "PCA_GLACCODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.PCA_GLACCODE) + private String pcaGlaccode; + + @Column(name = "PCA_GLACDESC", nullable = false, columnDefinition = FieldNameLength.PCA_GLACDESC) + private String pcaGlacdesc; + + @Column(name = "PCA_GLACSHORT", nullable = false, columnDefinition = FieldNameLength.PCA_GLACDESC) + private String pcaGlacshort; + +} diff --git a/src/main/java/com/mfsys/uco/model/ChartOfAccountId.java b/src/main/java/com/mfsys/uco/model/ChartOfAccountId.java new file mode 100644 index 0000000..3794641 --- /dev/null +++ b/src/main/java/com/mfsys/uco/model/ChartOfAccountId.java @@ -0,0 +1,71 @@ +package com.mfsys.uco.model; + +import java.io.Serializable; + +public class ChartOfAccountId implements Serializable { + + private static final long serialVersionUID = 1L; + + private String porOrgacode; + private String pcaGlaccode; + + public ChartOfAccountId(String porOrgacode, String pcaGlaccode) { + super(); + this.porOrgacode = porOrgacode; + this.pcaGlaccode = pcaGlaccode; + } + + public ChartOfAccountId() { + super(); + } + + public String getPorOrgacode() { + return porOrgacode; + } + + public void setPorOrgacode(String porOrgacode) { + this.porOrgacode = porOrgacode; + } + + public String getPcaGlaccode() { + return pcaGlaccode; + } + + public void setPcaGlaccode(String pcaGlaccode) { + this.pcaGlaccode = pcaGlaccode; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((pcaGlaccode == null) ? 0 : pcaGlaccode.hashCode()); + result = prime * result + ((porOrgacode == null) ? 0 : porOrgacode.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ChartOfAccountId other = (ChartOfAccountId) obj; + if (pcaGlaccode == null) { + if (other.pcaGlaccode != null) + return false; + } else if (!pcaGlaccode.equals(other.pcaGlaccode)) + return false; + if (porOrgacode == null) { + if (other.porOrgacode != null) + return false; + } else if (!porOrgacode.equals(other.porOrgacode)) + return false; + return true; + } + + + +} diff --git a/src/main/java/com/mfsys/uco/model/Product.java b/src/main/java/com/mfsys/uco/model/Product.java new file mode 100644 index 0000000..b2ae3ad --- /dev/null +++ b/src/main/java/com/mfsys/uco/model/Product.java @@ -0,0 +1,32 @@ +package com.mfsys.uco.model; + +import com.mfsys.comm.util.FieldNameLength; +import jakarta.persistence.*; +import lombok.Data; + +@IdClass(ProductId.class) +@Data +@Entity(name ="BN_PD_DP_DEPOSITUCOPRODUCT") +@Table(name ="BN_PD_DP_DEPOSITUCOPRODUCT") +public class Product { + @Id + @Column(name = "POR_ORGACODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.POR_ORGACODE) + private String porOrgacode; + + @Id + @Column(name = "DMP_PRODCODE", nullable = false, updatable = false, columnDefinition = FieldNameLength.DMP_PRODCODE) + private String dmpProdcode; + + @Column(name = "DMP_PRODDESC", nullable = false, columnDefinition = FieldNameLength.DESCRIPTION_LONG) + private String dmpProddesc; + + @Column(name = "DMP_PRODSHORT", nullable = false, columnDefinition = FieldNameLength.DESCRIPTION_SHORT) + private String dmpProdshort; + + @Column(name = "PCR_CURRCODE", nullable = false, columnDefinition = FieldNameLength.PCR_CURRCODE) + private String pcrCurrcode; + + @Column(name = "DMP_PRODACTIVE", nullable = false, columnDefinition = FieldNameLength.BOOLEAN_BIT) + private boolean dmpProdactive=true; + +} diff --git a/src/main/java/com/mfsys/uco/model/ProductId.java b/src/main/java/com/mfsys/uco/model/ProductId.java new file mode 100644 index 0000000..70b1630 --- /dev/null +++ b/src/main/java/com/mfsys/uco/model/ProductId.java @@ -0,0 +1,67 @@ +package com.mfsys.uco.model; + +import java.io.Serializable; + +public class ProductId implements Serializable { + + private static final long serialVersionUID = 1L; + private String porOrgacode; + private String dmpProdcode; + + public ProductId() { + + } + + public ProductId(String porOrgacode, String dmpProdcode) { + this.porOrgacode = porOrgacode; + this.dmpProdcode = dmpProdcode; + } + + public String getPorOrgacode() { + return porOrgacode; + } + + public void setPorOrgacode(String porOrgacode) { + this.porOrgacode = porOrgacode; + } + + public String getdmpProdcode() { + return dmpProdcode; + } + + public void setdmpProdcode(String dmpProdcode) { + this.dmpProdcode = dmpProdcode; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((dmpProdcode == null) ? 0 : dmpProdcode.hashCode()); + result = prime * result + ((porOrgacode == null) ? 0 : porOrgacode.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ProductId other = (ProductId) obj; + if (dmpProdcode == null) { + if (other.dmpProdcode != null) + return false; + } else if (!dmpProdcode.equals(other.dmpProdcode)) + return false; + if (porOrgacode == null) { + if (other.porOrgacode != null) + return false; + } else if (!porOrgacode.equals(other.porOrgacode)) + return false; + return true; + } + +} diff --git a/src/main/java/com/mfsys/uco/repository/ChartOfAccountRepository.java b/src/main/java/com/mfsys/uco/repository/ChartOfAccountRepository.java new file mode 100644 index 0000000..2cae223 --- /dev/null +++ b/src/main/java/com/mfsys/uco/repository/ChartOfAccountRepository.java @@ -0,0 +1,18 @@ +package com.mfsys.uco.repository; + +import com.mfsys.uco.model.ChartOfAccount; +import com.mfsys.uco.model.ChartOfAccountId; +import com.mfsys.uco.model.Product; +import com.mfsys.uco.model.ProductId; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ChartOfAccountRepository extends JpaRepository { + @Query("SELECT p FROM PR_GL_CA_ACCOUNT p WHERE p.porOrgacode = :porOrgacode") + List fetchBankGls(String porOrgacode); + +} diff --git a/src/main/java/com/mfsys/uco/repository/DepositUcoProductsRepository.java b/src/main/java/com/mfsys/uco/repository/DepositUcoProductsRepository.java new file mode 100644 index 0000000..7520dc2 --- /dev/null +++ b/src/main/java/com/mfsys/uco/repository/DepositUcoProductsRepository.java @@ -0,0 +1,18 @@ +package com.mfsys.uco.repository; + +import com.mfsys.uco.model.Product; +import com.mfsys.uco.model.ProductId; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public interface DepositUcoProductsRepository extends JpaRepository { + @Query("SELECT p FROM BN_PD_DP_DEPOSITUCOPRODUCT p WHERE p.porOrgacode = :porOrgacode AND p.dmpProdactive = true") + List fetchAllUcoActiveProducts(String porOrgacode); + + +} diff --git a/src/main/java/com/mfsys/uco/service/DepositUcoProductsService.java b/src/main/java/com/mfsys/uco/service/DepositUcoProductsService.java new file mode 100644 index 0000000..0d3aae2 --- /dev/null +++ b/src/main/java/com/mfsys/uco/service/DepositUcoProductsService.java @@ -0,0 +1,29 @@ +package com.mfsys.uco.service; + +import com.mfsys.uco.model.ChartOfAccount; +import com.mfsys.uco.model.Product; +import com.mfsys.uco.model.TransactionTrail; +import com.mfsys.uco.repository.ChartOfAccountRepository; +import com.mfsys.uco.repository.DepositUcoProductsRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class DepositUcoProductsService { + + private final DepositUcoProductsRepository depositUcoProductsRepository; + private final ChartOfAccountRepository chartOfAccountRepository; + + + public List fetchDepositUcoProducts(String porOrgacode) { + return depositUcoProductsRepository.fetchAllUcoActiveProducts(porOrgacode); + } + + + public List fetchUcoGls(String porOrgacode) { + return chartOfAccountRepository.fetchBankGls(porOrgacode); + } +}