Logic Modification

This commit is contained in:
Paramita Pahari 2024-09-06 18:05:06 +05:30
parent 90c19e7d49
commit 407de7bf7a
2 changed files with 95 additions and 34 deletions

View File

@ -0,0 +1,41 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package TDS_Calculate;
/**
*
* @author 1121947
*/
public class ID_Type {
private String idNo ;
private String IDType;
public String getIdNo() {
return idNo;
}
public void setIdNo(String idNo) {
this.idNo = idNo;
}
public String getIDType() {
return IDType;
}
public void setIDType(String IDType) {
this.IDType = IDType;
}
public ID_Type(String idNo, String IDType) {
this.idNo = idNo;
this.IDType = IDType;
}
}

View File

@ -36,10 +36,10 @@ public class TDS_Calculation {
//System.out.println(hSize);
//Get the PAN Data
Map<String, String> identificationData = fetchPANDetails(depAccountsDetails);
Map<String, ID_Type> identificationData = fetchPANDetails(depAccountsDetails);
//print the fetched data
// for (Map.Entry<String, String> panDetails : identificationData.entrySet()) {
// System.out.println("cif_no: " + panDetails.getKey() + "ID Type:" + panDetails.getValue());
// System.out.println("cif_no: " + panDetails.getKey() + " having ID Type:" + panDetails.getValue());
// }
//Get the 15GH/PAN details as per the customerNumber from the Previous method
@ -50,7 +50,7 @@ public class TDS_Calculation {
//String accNo = (String) accountDetails.get("KEY_1");
//Caclculate the Projected amount.
// calculateProjectedAmount(accountDetails);
calculateProjectedAmount(accountDetails);
//System.out.println("Projected amount for the account:" + accNo + " " + ProjectedAmt);
//insertProjectedAmount(accNo, ProjectedAmt, prodCode);
}
@ -66,7 +66,7 @@ public class TDS_Calculation {
+ "DA.INTT_PAID,DP.PROD_CODE,DA.INTT_SOP_DATE,DA.INTT_EOP_DATE,DA.TERM_VALUE,DA.MAT_VALUE,DA.MAT_DT,DA.TERM_LENGTH,\n"
+ "DA.NXT_DUE_DATE,DA.INTT_PROJECTED,dp.INTT_PAYOUT_FREQ FROM DEP_ACCOUNT DA ,dep_product dp\n"
+ "where DA.DEP_PROD_ID=dp.ID and substr(dp.prod_code,1,1) in ('2','3') and substr(DA.GL_CLASS_CODE,9,2)='14'\n"
+ "and DA.CURR_STATUS ='O' and DA.PACS_ID in ('02000','07190','07544') group by DA.KEY_1,DA.PACS_ID,DA.CURR_STATUS,DA.CUSTOMER_NO,DA.ACCT_OPEN_DT,\n"
+ "and DA.CURR_STATUS ='O' and DA.PACS_ID in ('07190') group by DA.KEY_1,DA.PACS_ID,DA.CURR_STATUS,DA.CUSTOMER_NO,DA.ACCT_OPEN_DT,\n"
+ "DA.INTT_PAID,DA.INTT_SOP_DATE,DA.INTT_EOP_DATE,DA.TERM_VALUE,DA.MAT_VALUE,DA.MAT_DT,DA.TERM_LENGTH,\n"
+ "DA.NXT_DUE_DATE,DA.INTT_PROJECTED,dp.INTT_PAYOUT_FREQ,DP.PROD_CODE";
PreparedStatement preparedStatement = conn.prepareStatement(depAccountSql);
@ -102,7 +102,7 @@ public class TDS_Calculation {
return depAccountsDetails;
}
private static void checkIdentificationAvailability(List<Map<String, Object>> depAccountsDetails, Map<String, String> identificationData) {
private static void checkIdentificationAvailability(List<Map<String, Object>> depAccountsDetails, Map<String, ID_Type> identificationData) {
String formType = null;
String birth_date = null;
@ -114,8 +114,12 @@ public class TDS_Calculation {
Double INTT_PAID = (Double) acc.get("INTT_PAID");
String PACS_ID = (String) acc.get("PACS_ID");
String ID_TYPE = identificationData.get(CIF_No);
//System.out.println("ID TYPE is: " + ID_TYPE);
ID_Type id_data = identificationData.get(CIF_No);
String id_num = id_data.getIdNo();
String ID_TYPE = id_data.getIDType();
System.out.println("ID TYPE is: " + ID_TYPE + " for cif no:" + CIF_No + " and ID_NO: " + id_num);
// LocalDate birthDt = null;
String bDaySql = "SELECT TO_CHAR(TO_DATE(BIRTH_DATE,'DD-MM-YYYY'),'DD-MM-YYYY') AS BIRTH_DATE FROM KYC_HDR WHERE CIF_NO = ?";
@ -158,13 +162,11 @@ public class TDS_Calculation {
//System.out.println("Processing done");
e.printStackTrace();
}
}catch (Exception e) {
//System.out.println("Processing done");
e.printStackTrace();
} catch (Exception e) {
//System.out.println("Processing done");
e.printStackTrace();
}
}
} catch (Exception ex) {
@ -174,7 +176,7 @@ public class TDS_Calculation {
public static void PanAvailability(String KEY_1, Double INTT_PAID, String CIF_No, String formType, String PACS_ID) {
System.out.println("CIF No:" + CIF_No + " is having Pan " + " with Form Type " + formType + " and interest Paid:" + INTT_PAID + " for PACS ID: " + PACS_ID);
System.out.println("CIF No:" + CIF_No + " is having Pan " + " with Form Type " + formType + " and interest Paid:" + INTT_PAID + " for PACS ID: " + PACS_ID + " of the a/c no: " + KEY_1);
double thresold_G = 250000;
double thresold_H = 300000;
double thresold = 0.0;
@ -266,7 +268,7 @@ public class TDS_Calculation {
insertSmt.executeQuery();
// Need to insert the deducted amount into corresponding GL.
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
} else {
System.out.println("Interest Paid didn't cross the thresold for YES PAN having FORM_ID:" + FORM_ID);
}
@ -274,14 +276,13 @@ public class TDS_Calculation {
//This block is for calculating TDS for more than 10000 due to 15g/h availability
System.out.println("FORM ID for not having 15g/h:" + FORM_ID);
if (formType.equalsIgnoreCase("H")) {
thresold = 50000;
} else if (formType.equalsIgnoreCase("G")) {
thresold = 40000;
}
System.out.println("NO 15G/H available for YES PAN setting thresold: " +thresold);
System.out.println("NO 15G/H available for YES PAN setting thresold: " + thresold);
if (INTT_PAID != null && INTT_PAID > thresold) {
System.out.println("The account number: " + KEY_1 + " has crossed the thresold:" + INTT_PAID + " having CIF No: " + CIF_No);
@ -312,7 +313,7 @@ public class TDS_Calculation {
insertSmt.executeQuery();
// Need to insert the deducted amount into corresponding GL.
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
} else {
System.out.println("Interest Paid did not cross the thresold for YES PAN having FORM_ID:" + FORM_ID);
}
@ -328,7 +329,7 @@ public class TDS_Calculation {
}
public static void PanNotAvailability(String KEY_1, Double INTT_PAID, String CIF_No, String formType, String PACS_ID) {
System.out.println("CIF No:" + CIF_No + " is not having Pan " + " with Form Type " + formType + " and interest Paid:" + INTT_PAID + " for PACS ID: " + PACS_ID);
System.out.println("CIF No:" + CIF_No + " is not having Pan " + " with Form Type " + formType + " and interest Paid:" + INTT_PAID + " for PACS ID: " + PACS_ID + " of the a/c no: " + KEY_1);
double thresold_G = 250000;
double thresold_H = 300000;
@ -367,7 +368,7 @@ public class TDS_Calculation {
if (formResultSet.next()) {
FORM_ID = formResultSet.getInt("FORM_ID");
System.out.println("Form Id is for NO PAN..........................." + FORM_ID);
System.out.println("Form Id is for NO PAN..........................." + FORM_ID);
}
//System.out.println("FORM ID:" + FORM_ID);
@ -420,7 +421,7 @@ public class TDS_Calculation {
insertSmt.executeQuery();
// Need to insert the deducted amount into corresponding GL.
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
} else {
System.out.println("Interest Paid did not cross the thresold for NO PAN having FORM_ID:" + FORM_ID);
}
@ -436,7 +437,7 @@ public class TDS_Calculation {
}
if (INTT_PAID != null && INTT_PAID > thresold) {
System.out.println("The account number: " + KEY_1 + " has crossed the thresold:" + INTT_PAID + " having CIF No: " + CIF_No+ " for NO PAN");
System.out.println("The account number: " + KEY_1 + " has crossed the thresold:" + INTT_PAID + " having CIF No: " + CIF_No + " for NO PAN");
//Calculate the TDS.//Here TDS will be 10% as PAN is avaiable
System.out.println("Interest Paid: " + INTT_PAID);
@ -464,7 +465,7 @@ public class TDS_Calculation {
insertSmt.executeQuery();
// Need to insert the deducted amount into corresponding GL.
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
insrtGLTransaction(KEY_1, PACS_ID, INTT_PAID, tds_amount);
} else {
System.out.println("Interest Paid did not cross the thresold for NO PAN having FORM_ID:" + FORM_ID);
}
@ -544,9 +545,10 @@ public class TDS_Calculation {
}
}
private static Map<String, String> fetchPANDetails(List<Map<String, Object>> depAccountsDetails) {
private static Map<String, ID_Type> fetchPANDetails(List<Map<String, Object>> depAccountsDetails) {
Map<String, ID_Type> PanData = new HashMap<>();
Map<String, String> PanData = new HashMap<>();
List<String> cif_No = new ArrayList<>();
// String formType = null;
@ -571,7 +573,8 @@ public class TDS_Calculation {
//System.out.println("batch cif no:" + batchCifNos);
//Create a list of CIF No.
StringBuilder stringbuilder = new StringBuilder("SELECT CIF_NO,ID_NO,ID_TYPE,BIRTH_DATE FROM KYC_DETAILS where CIF_NO IN(");
StringBuilder stringbuilder = new StringBuilder("SELECT KH.CIF_NO as CIF_NO,KD.ID_NO as ID_NO,m.DOCUMENT_DTL as ID_TYPE,KH.BIRTH_DATE as BIRTH_DATE from KYC_HDR KH,"
+ "PACS_MASTER PM,kyc_dtl KD,kyc_document_mst m where KH.PACS_ID=PM.PACS_ID and KH.CIF_NO = KD.CIF_NO and KD.kyc_document_mst_id = m.id AND KH.CIF_NO in (");
for (int i = 0; i < batchCifNos.size(); i++) {
stringbuilder.append("?");
if (i < batchCifNos.size() - 1) {
@ -590,17 +593,34 @@ public class TDS_Calculation {
ResultSet resultSet = preparedstatement.executeQuery();
// Create a map to store CIF and their corresponding selected ID type
// Store the PAN No in the map
while (resultSet.next()) {
String cifNo = resultSet.getString("CIF_NO");
//String panNo = resultSet.getString("ID_NO");
// System.out.println("CIF No: " + cifNo);
String id_No = resultSet.getString("ID_NO");
// System.out.println("CIF No: " + cifNo);
String ID_Type = resultSet.getString("ID_TYPE");
//panavailable = true;
// System.out.println("ID Type: " + ID_Type);
// System.out.println("ID Type: " + ID_Type);
// Map<String, ID_Type> panData = new HashMap<>();
PanData.put(cifNo, ID_Type);
// PanData.put(cifNo, ID_Type);
// Check if the CIF number is already processed
if (!PanData.containsKey(cifNo)) {
PanData.put(cifNo, new ID_Type(id_No, ID_Type));
} else {
// If the CIF number is already processed, prefer PAN
if ("PAN CARD".equalsIgnoreCase(ID_Type)) {
PanData.put(cifNo, new ID_Type(id_No, ID_Type)); // Overwrite if PAN is found
}
}
}
// print the map data
for (Map.Entry<String, ID_Type> entry : PanData.entrySet()) {
System.out.println("CIF No: " + entry.getKey() + ", ID No: " + entry.getValue().getIdNo() + ", ID Type: " + entry.getValue().getIDType());
}
}
} catch (Exception e) {
e.printStackTrace();