Commit 67ec3b66 authored by steurwadkar's avatar steurwadkar

F17ABAS001 source code commit


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@106202 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 9e248de7
package ibase.webitm.ejb.gst;
import java.io.InputStream;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.rmi.RemoteException;
import java.security.PrivateKey;
import java.sql.Connection;
......@@ -493,7 +491,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("GET_"+action);
apiCallData.setCallType("AUTHTOKEN");
apiCallData.setRecType(recType);
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
......@@ -1135,7 +1133,15 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
byte[] getrespJsonInBytes = aesEncryption.decodeBase64StringTOByte(getrespJsoninBase64);
String getjsonData = new String(getrespJsonInBytes);
responseJsonStr = getjsonData;
if(getjsonData.length() > 500)
{
responseJsonStr = getjsonData.substring(0,499);//TODO need to change column size value is too large
}
else
{
responseJsonStr = getjsonData;//TODO need to change column size value is too large
}
System.out.println("json response["+getjsonData+"] for ["+action+"]");
if("B2B".equalsIgnoreCase(action))
......@@ -1296,7 +1302,6 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
if(getGstr1SumryRespObj.has("data") && getGstr1SumryRespObj.has("rek"))
{
callStatus = "1";
responseJsonStr = getGstr1SumryRespObj.toString();
String gstr1Sumrydata = getGstr1SumryRespObj.getString("data");
String gstr1Sumryrek = getGstr1SumryRespObj.getString("rek");
......@@ -1308,6 +1313,15 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
JSONObject gstr1SumryJsonObj = new JSONObject(new String(respJsonInBytes));
if(new String(respJsonInBytes).length() > 500)
{
responseJsonStr = new String(respJsonInBytes).substring(0,499);//TODO need to change column size value is too large
}
else
{
responseJsonStr = new String(respJsonInBytes);//TODO need to change column size value is too large
}
retString = "<summary_data>" + XML.toString(gstr1SumryJsonObj) + "</summary_data>";
......
package ibase.webitm.ejb.gst;
import java.io.InputStream;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.rmi.RemoteException;
import java.security.PrivateKey;
import java.sql.Connection;
......@@ -15,6 +13,7 @@ import java.util.Base64;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
......@@ -77,6 +76,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
private String AUTH_TOKEN_URL_V2 = "";
private String GSTR1_URL_V2 = "";
private String GSTR2_URL_V2 = "";
private String GSTR_URL_V3 = "";
private String GSTR1_URL_V3 = "";
private String GSTR2_URL_V3 = "";
private final String APPLICATION_JSON = "application/json";
......@@ -149,6 +149,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
GSTR2_URL_V2 = rs.getString("SERVICE_URI");
}
break;
case "gstr_url_v3" :
{
GSTR_URL_V3 = rs.getString("SERVICE_URI");
}
break;
case "gstr1_url_v3" :
{
GSTR1_URL_V3 = rs.getString("SERVICE_URI");
......@@ -281,7 +286,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
System.out.println("returnsType["+returnsType+"] action ["+action+"]");
if("SUBMIT".equalsIgnoreCase(action))
if("SUBMIT".equalsIgnoreCase(action) || "FILE".equalsIgnoreCase(action))
{
detail2NList = allXMLDom.getElementsByTagName("Detail2");
detail2ChildNList = detail2NList.item(0).getChildNodes();
......@@ -331,6 +336,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
System.out.println("AUTHTOKEN request url ["+String.format("%s%s", GSP_API_URL, AUTH_TOKEN_URL_V2)+"]");
HttpResponse<JsonNode> authTokenResp = Unirest.post(String.format("%s%s", GSP_API_URL, AUTH_TOKEN_URL_V2))
.header("Content-Type",APPLICATION_JSON)
.header("clientid", clientId)
......@@ -338,7 +345,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
.header("state-cd", stateCode)
.header("ip-usr", ipAddress)
.header("txn", transactionId)
.header("app_key", appKeyEncryptedAndCoded)
//.header("app_key", appKeyEncryptedAndCoded)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.body(new JsonNode(authTokenReq.toString()))
......@@ -399,7 +406,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
if("GETINV".equalsIgnoreCase(action))
{
retString = getGstr2Invoices(authToken, stateCode, userName, gstin, periodCode, siteCode, authSEK, xtraParams, conn);
retString = downloadGstr2Invoices(authToken, stateCode, userName, gstin, periodCode, siteCode, authSEK, xtraParams, conn);
}
}
}
......@@ -696,7 +703,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
String reason = "";
Calendar calendar = Calendar.getInstance();
calendar.set(2017, 07, 01);
calendar.set(2017, 06, 01);
Date gstStartDate = calendar.getTime();
refDataSql = "SELECT DESCR FROM GENCODES WHERE MOD_NAME = 'W_GSTR' AND FLD_NAME = 'REAS_CODE' AND FLD_VALUE = ?";
......@@ -951,7 +958,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
String reason = "", customerType = "", refTranType = "";
Calendar calendar = Calendar.getInstance();
calendar.set(2017, 07, 01);
calendar.set(2017, 06, 01);
Date gstStartDate = calendar.getTime();
refDataSql = "SELECT DESCR FROM GENCODES WHERE MOD_NAME = 'W_GSTR' AND FLD_NAME = 'REAS_CODE' AND FLD_VALUE = ?";
......@@ -1274,7 +1281,9 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpResponse<JsonNode> gstr1Resp = Unirest.put(String.format("%s/%s", GST_API_URL, GSTR1_URL_V3))
System.out.println("RETSAVE request url ["+String.format("%s%s", GSP_API_URL, GSTR1_URL_V3)+"]");
HttpResponse<JsonNode> gstr1Resp = Unirest.put(String.format("%s%s", GSP_API_URL, GSTR1_URL_V3))
.header("Content-Type", APPLICATION_JSON)
.header("clientid", clientId)
.header("client-secret", clientSecret)
......@@ -1285,7 +1294,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
.header("username", userName)
.header("ret_period", periodCode)
.header("ip-usr", ipAddress)
.header("app_key", appKeyEncryptedAndCoded)
//.header("app_key", appKeyEncryptedAndCoded)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.body(new JsonNode(gstr1HeaderObj.toString()))
......@@ -1316,13 +1325,17 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
System.out.println("transId to getStatus["+transId+"]");
boolean isRetStatusError = false;
while(true)
{
long timeStampRet = new Timestamp().getDateTime();
gspAuthStringRet = clientId + ":" + transactionId + ":" + timeStampRet + ":" + gstin;
gspAuthSignatureRet = gspSignature.sign(gspAuthStringRet, aspPrivateKey);
HttpResponse<JsonNode> retStatusResp = Unirest.get(String.format("%s/%s", GSP_API_URL, GSTR1_URL_V3))
System.out.println("RETSTATUS request url ["+String.format("%s%s", GSP_API_URL, GSTR_URL_V3)+"]");
HttpResponse<JsonNode> retStatusResp = Unirest.get(String.format("%s%s", GSP_API_URL, GSTR_URL_V3))
.queryString("action","RETSTATUS")
.queryString("gstin", gstin)
.queryString("ret_period", periodCode)
......@@ -1334,7 +1347,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
//.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
......@@ -1374,7 +1387,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
updateSubmissionStatus(tranIdList, conn);
}
break;
isRetStatusError = true;
}
else if("PE".equalsIgnoreCase((String)retStatsJsonData.get("status_cd")))
{
......@@ -1382,15 +1395,23 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
errMsg = getRetStatusErrMsg(retStatsJsonData);
retStatusResponseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
break;
isRetStatusError = true;
}
else if("ER".equalsIgnoreCase(retStatsJsonData.getString("status_cd")))
{
retStatusCallStatus = "2";
errMsg = "Message : "+retStatsJsonData.getString("error_msg")+" \nError code : "+retStatsJsonData.getString("errorCd");
if(retStatsJsonData.has("error_report"))
{
JSONObject errorJSON = retStatsJsonData.getJSONObject("error_report");
if(errorJSON.has("error_msg") && errorJSON.has("error_cd"))
{
errMsg = "Message : "+errorJSON.getString("error_msg")+" \nError code : "+errorJSON.getString("error_cd");
}
}
retStatusResponseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
break;
isRetStatusError = true;
}
}
else
......@@ -1400,7 +1421,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
retStatusResponseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
break;
isRetStatusError = true;
}
}
else
......@@ -1410,7 +1431,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
retStatusResponseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
break;
isRetStatusError = true;
}
APICallData apiCallData = new APICallData();
......@@ -1429,6 +1450,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
apiCallData.setChgTerm(chgTerm);
gstCommonUtil.updateAPICallLogHistory(apiCallData, null);
if(isRetStatusError)
{
break;
}
}
}
else
......@@ -1492,7 +1518,9 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpResponse<JsonNode> getGstr1SumryResp = Unirest.get(String.format("%s/%s", GSP_API_URL, GSTR1_URL_V3))
System.out.println("RETSUM request url ["+String.format("%s%s", GSP_API_URL, GSTR1_URL_V3)+"]");
HttpResponse<JsonNode> getGstr1SumryResp = Unirest.get(String.format("%s%s", GSP_API_URL, GSTR1_URL_V3))
.queryString("action","RETSUM")
.queryString("gstin", gstin)
.queryString("ret_period", periodCode)
......@@ -1503,7 +1531,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
//.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
......@@ -1561,7 +1589,9 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthStringFile = clientId + ":" + transactionId + ":" + timeStampFile + ":" + gstin;
gspAuthSignatureFile = gspSignature.sign(gspAuthStringFile, aspPrivateKey);
HttpResponse<JsonNode> fileGstr1Resp = Unirest.post(String.format("%s/%s", GSP_API_URL, GSTR1_URL_V3))
System.out.println("RETFILE request url ["+String.format("%s%s", GSP_API_URL, GSTR1_URL_V3)+"]");
HttpResponse<JsonNode> fileGstr1Resp = Unirest.post(String.format("%s%s", GSP_API_URL, GSTR1_URL_V3))
.header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
.header("clientid", clientId)
......@@ -1569,7 +1599,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
//.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
......@@ -1713,7 +1743,9 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpResponse<JsonNode> gstr1SubmitResp = Unirest.post(String.format("%s/%s", GSP_API_URL, GSTR1_URL_V3))
System.out.println("RETSUBMIT request url ["+String.format("%s%s", GSP_API_URL, GSTR1_URL_V3)+"]");
HttpResponse<JsonNode> gstr1SubmitResp = Unirest.post(String.format("%s%s", GSP_API_URL, GSTR1_URL_V3))
.header("Content-Type", APPLICATION_JSON)
.header("action", "RETSUBMIT")
.header("state-cd", stateCode)
......@@ -1722,7 +1754,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
//.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
......@@ -1797,7 +1829,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
return retString;
}
private String getGstr2Invoices(String authToken, String stateCode, String userName, String gstin, String periodCode, String siteCode, byte[] authSEK, String xtraParams, Connection conn) throws ITMException
private String downloadGstr2Invoices(String authToken, String stateCode, String userName, String gstin, String periodCode, String siteCode, byte[] authSEK, String xtraParams, Connection conn) throws ITMException
{
String retString = "";
String errMsg = "", gspAuthString = "", gspAuthSignature = "";
......@@ -1817,7 +1849,9 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpResponse<JsonNode> getGstr2InvoicesResp = Unirest.get(String.format("%s/%s", GST_API_URL, GSTR2_URL_V3))
System.out.println("GET "+action+" request url ["+String.format("%s%s", GSP_API_URL, GSTR2_URL_V3)+"]");
HttpResponse<JsonNode> getGstr2InvoicesResp = Unirest.get(String.format("%s%s", GSP_API_URL, GSTR2_URL_V3))
.queryString("action", action)
.queryString("gstin", gstin)
.queryString("ret_period", periodCode)
......@@ -1828,7 +1862,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
//.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
......@@ -1859,7 +1893,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
if("B2B".equalsIgnoreCase(action))
{
saveB2BInvoiceData(siteCode, gstr2InvoiceJsonObj, conn);
insertB2BInvoiceData(stateCode, siteCode, gstr2InvoiceJsonObj, conn);
}
else if("IMPG".equalsIgnoreCase(action))
{
insertIMGInvoiceData(stateCode, siteCode, gstr2InvoiceJsonObj, conn);
}
......@@ -1909,7 +1947,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
return retString;
}
private void saveB2BInvoiceData(String siteCode, JSONObject gstr2InvoiceJsonObj, Connection conn) throws ITMException
private void insertB2BInvoiceData(String stateCode, String siteCode, JSONObject gstr2InvoiceJsonObj, Connection conn) throws ITMException
{
JSONArray b2bInvArry = new JSONArray();
JSONObject b2bJsonObj = new JSONObject();
......@@ -1917,22 +1955,88 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
JSONObject b2bInvJsonObj = new JSONObject();
JSONArray b2bInvLineItmsArry = new JSONArray();
JSONObject b2bInvLineItemObj = new JSONObject();
String tranId = "", cptyGSTIN = "", iNum = "", iDate = "", reversCharge = "", docCheckSum = "", gstStateCode = "";
String tranId = "", cptyGSTIN = "", iNum = "", iDate = "", reversCharge = "", docCheckSum = "", pos = "", invType = "", tranType = "";
String itcType = "";
int lineNo;
double amount = 0.0, lineAmt = 0.0, irt = 0.0, iamt = 0.0, crt = 0.0, camt = 0.0, srt = 0.0, samt = 0.0, csrt = 0.0, csamt = 0.0, rate = 0.0;
double itcIGSTAmt = 0.0, itcCGSTAmt = 0.0;
double itcIGSTTaxAmt = 0.0, itcCGSTTaxAmt = 0.0, itcSGSTTaxAmt = 0.0, itcCSGSTTaxAmt =0.0;
String hdrSql = "", detSql = "";
PreparedStatement hdrPstmt = null, detPstmt = null;
List<String> hdrColumnList = new ArrayList<String>(), hdrDataTypeList = new ArrayList<String>(), hdrDataList = null;
List<String> detColumnList = new ArrayList<String>(), detDataTypeList = new ArrayList<String>();
List<List<String>> detDataList = null;
try
{
hdrColumnList.add("TRAN_ID");
hdrColumnList.add("TRAN_DATE");
hdrColumnList.add("REC_TYPE");
hdrColumnList.add("TRAN_TYPE");
hdrColumnList.add("GST_CODE");
hdrColumnList.add("SUBMIT_STATUS");
hdrColumnList.add("DOC_CHECKSUM");
hdrColumnList.add("DOC_NO");
hdrColumnList.add("DOC_DATE");
hdrColumnList.add("AMOUNT");
hdrColumnList.add("REVERSE_CHRG");
hdrColumnList.add("TAX_REG_NO");
hdrColumnList.add("SITE_CODE");
hdrColumnList.add("DOC_TYPE");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("TIMESTAMP");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("TIMESTAMP");
hdrDataTypeList.add("DOUBLE");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
detColumnList.add("TRAN_ID");
detColumnList.add("LINE_NO");
detColumnList.add("TAXABLE_AMT");
detColumnList.add("IGST_PERC");
detColumnList.add("IGST_AMT");
detColumnList.add("CGST_PERC");
detColumnList.add("CGST_AMT");
detColumnList.add("SGST_PERC");
detColumnList.add("SGST_AMT");
detColumnList.add("CESS_PERC");
detColumnList.add("CESS_AMT");
detColumnList.add("ITC_TYPE");
detColumnList.add("ITC_IGST");
detColumnList.add("ITC_CGST");
detColumnList.add("ITC_SGST");
detColumnList.add("ITC_CESS");
detDataTypeList.add("STRING");
detDataTypeList.add("INT");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("STRING");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
b2bInvArry = gstr2InvoiceJsonObj.getJSONArray("b2b");
for(int i = 0; i < b2bInvArry.length(); i++)
{
b2bJsonObj = b2bInvArry.getJSONObject(i);
cptyGSTIN = b2bJsonObj.getString("ctin");
......@@ -1940,6 +2044,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
for(int j=0; j<b2bInvJsonArry.length(); j++)
{
hdrDataList = new ArrayList<String>();
b2bInvJsonObj = b2bInvJsonArry.getJSONObject(j);
iNum = b2bInvJsonObj.getString("inum");
......@@ -1947,35 +2052,40 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
amount = b2bInvJsonObj.getDouble("val");
docCheckSum = b2bInvJsonObj.getString("chksum");
reversCharge = b2bInvJsonObj.getString("rchrg");
gstStateCode = b2bInvJsonObj.getString("pos");
pos = b2bInvJsonObj.getString("pos");
invType = b2bInvJsonObj.getString("inv_typ");
tranId = generateTranId("w_gstr_purc","","",conn);
hdrSql = "INSERT INTO GST_DATA_HDR (TRAN_ID, TRAN_DATE, REC_TYPE, TRAN_TYPE, GST_CODE, SUBMIT_STATUS, DOC_CHECKSUM, DOC_NO, DOC_DATE, AMOUNT, REVERSE_CHRG, TAX_REG_NO, SITE_CODE) "
+ "VALUES (?,?,'2','01',?,'D',?,?,?,?,?,?,?)";
hdrPstmt = conn.prepareStatement(hdrSql);
hdrPstmt.setString(1, tranId);
hdrPstmt.setString(2, new SimpleDateFormat(new E12GenericUtility().getApplDateFormat()).format(new Date()));
hdrPstmt.setString(3, gstStateCode);
hdrPstmt.setString(4, docCheckSum);
hdrPstmt.setString(5, iNum);
hdrPstmt.setString(6, iDate);
hdrPstmt.setDouble(7, amount);
hdrPstmt.setString(8, reversCharge);
hdrPstmt.setString(9, cptyGSTIN);
hdrPstmt.setString(10, siteCode);
if("Y".equalsIgnoreCase(reversCharge))
{
tranType = "02";
}
else
{
tranType = "01";
}
int hdrCnt = hdrPstmt.executeUpdate();
tranId = generateTranId("w_gstr_purc","","",conn);
System.out.println("GST_DATA_HDR insert count ["+hdrCnt+"]");
hdrDataList.add(tranId);
hdrDataList.add(e12GenericUtility.getValidDateString(new Date(), e12GenericUtility.getDBDateFormat()));
hdrDataList.add("2");
hdrDataList.add(tranType);
hdrDataList.add(pos);
hdrDataList.add("D");
hdrDataList.add(docCheckSum);
hdrDataList.add(iNum);
hdrDataList.add(iDate);
hdrDataList.add(String.valueOf(amount));
hdrDataList.add(reversCharge);
hdrDataList.add(cptyGSTIN);
hdrDataList.add(siteCode);
hdrDataList.add(invType);
detDataList = new ArrayList<List<String>>();
List<String> tempList = new ArrayList<String>();
b2bInvLineItmsArry = b2bInvJsonObj.getJSONArray("itms");
detSql = "INSERT INTO GST_DATA_DET (TRAN_ID, LINE_NO, LINE_TYPE, GS_CODE, TAXABLE_AMT, IGST_PERC, IGST_AMT, CGST_PERC, CGST_AMT, SGST_PERC, SGST_AMT, CESS_PERC, CESS_AMT) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)";
detPstmt = conn.prepareStatement(detSql);
for(int k=0; k<b2bInvLineItmsArry.length(); k++)
{
b2bInvLineItemObj = b2bInvLineItmsArry.getJSONObject(k);
......@@ -1991,39 +2101,217 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
samt = tempJSONObj.getDouble("samt");
csamt = tempJSONObj.getDouble("csamt");
if(stateCode.trim().equalsIgnoreCase(pos.trim()))
{
irt = rate;
}
else
{
crt = rate/2;
srt = rate/2;
}
tempJSONObj = b2bInvLineItemObj.getJSONObject("itc");
detPstmt.setString(1, tranId);
detPstmt.setInt(2, lineNo);
detPstmt.setDouble(5, lineAmt);
detPstmt.setDouble(6, irt);
detPstmt.setDouble(7, iamt);
detPstmt.setDouble(8, crt);
detPstmt.setDouble(9, camt);
detPstmt.setDouble(10, srt);
detPstmt.setDouble(11, samt);
detPstmt.setDouble(12, csrt);
detPstmt.setDouble(13, csamt);
itcType = tempJSONObj.getString("elg");
itcIGSTTaxAmt = tempJSONObj.getDouble("tx_i");
itcCGSTTaxAmt = tempJSONObj.getDouble("tx_c");
itcSGSTTaxAmt = tempJSONObj.getDouble("tx_s");
itcCSGSTTaxAmt = tempJSONObj.getDouble("tx_cs");
detPstmt.addBatch();
detPstmt.clearParameters();
tempList = new ArrayList<String>();
tempList.add(tranId);
tempList.add(String.valueOf(lineNo));
tempList.add(String.valueOf(lineAmt));
tempList.add(String.valueOf(irt));
tempList.add(String.valueOf(iamt));
tempList.add(String.valueOf(crt));
tempList.add(String.valueOf(camt));
tempList.add(String.valueOf(srt));
tempList.add(String.valueOf(samt));
tempList.add(String.valueOf(csrt));//TODO computation of cess rate is pending as data is summarised on rate
tempList.add(String.valueOf(csamt));
tempList.add(itcType);
tempList.add(String.valueOf(itcIGSTTaxAmt));
tempList.add(String.valueOf(itcCGSTTaxAmt));
tempList.add(String.valueOf(itcSGSTTaxAmt));
tempList.add(String.valueOf(itcCSGSTTaxAmt));
}
detDataList.add(tempList);
}
int[] detCnt = detPstmt.executeBatch();
insertGSTHdrDetData(hdrColumnList, hdrDataTypeList, hdrDataList, detColumnList, detDataTypeList, detDataList, conn);
}
System.out.print("GST_DATA_DET insert count");
for(int eachRowCnt : detCnt)
}
catch (Exception e)
{
System.out.print(eachRowCnt + ",");
System.out.println("GSTDataSubmitWizPos.insertB2BInvoiceData()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
}
}
private void insertIMGInvoiceData(String stateCode, String siteCode, JSONObject gstr2InvoiceJsonObj, Connection conn) throws ITMException
{
JSONArray imgInvoiceArry = new JSONArray();
JSONObject imgJsonObj = new JSONObject();
JSONArray imgInvLineItmsArry = new JSONArray();
JSONObject imgInvLineItemObj = new JSONObject();
String tranId = "", isSezImport = "", supplierGSTIN = "", billOfEntry = "", billOfEntryDtStr = "", checkSum = "", portCode = "", itcType = "",
tranType = "", docType = "";
int lineNo = 0;
double billOfEntryAmt = 0.0, rate = 0.0, igstAmt = 0.0, taxableValue = 0.0, cessAmt = 0.0, itcIGSTAmt = 0.0, itcCessAmt = 0.0, cessrt = 0.0;
List<String> hdrColumnList = new ArrayList<String>(), hdrDataTypeList = new ArrayList<String>(), hdrDataList = null;
List<String> detColumnList = new ArrayList<String>(), detDataTypeList = new ArrayList<String>();
List<List<String>> detDataList = null;
try
{
hdrColumnList.add("TRAN_ID");
hdrColumnList.add("TRAN_DATE");
hdrColumnList.add("REC_TYPE");
hdrColumnList.add("TRAN_TYPE");
hdrColumnList.add("SUBMIT_STATUS");
hdrColumnList.add("DOC_CHECKSUM");
hdrColumnList.add("LR_NO");
hdrColumnList.add("LR_DATE");
hdrColumnList.add("AMOUNT");
hdrColumnList.add("TAX_REG_NO");
hdrColumnList.add("SITE_CODE");
hdrColumnList.add("DOC_TYPE");
hdrColumnList.add("ORDER_NO");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("TIMESTAMP");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("DOUBLE");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
hdrDataTypeList.add("STRING");
detColumnList.add("TRAN_ID");
detColumnList.add("LINE_NO");
detColumnList.add("TAXABLE_AMT");
detColumnList.add("IGST_PERC");
detColumnList.add("IGST_AMT");
detColumnList.add("CESS_PERC");
detColumnList.add("CESS_AMT");
detColumnList.add("ITC_TYPE");
detColumnList.add("ITC_IGST");
detColumnList.add("ITC_CESS");
detDataTypeList.add("STRING");
detDataTypeList.add("INT");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("STRING");
detDataTypeList.add("DOUBLE");
detDataTypeList.add("DOUBLE");
imgInvoiceArry = gstr2InvoiceJsonObj.getJSONArray("imp_g");
for(int i=0; i<imgInvoiceArry.length(); i++)
{
imgJsonObj = imgInvoiceArry.getJSONObject(i);
isSezImport = imgJsonObj.getString("is_sez");
supplierGSTIN = imgJsonObj.getString("stin");
billOfEntry = imgJsonObj.getString("boe_num");
billOfEntryDtStr = imgJsonObj.getString("boe_dt");
billOfEntryAmt = imgJsonObj.getDouble("boe_val");
checkSum = imgJsonObj.getString("chksum");
portCode = imgJsonObj.getString("port_code");
if("Y".equalsIgnoreCase(isSezImport))
{
tranType = "06";
}
else
{
tranType = "05";
}
catch (Exception e)
tranId = generateTranId("w_gstr_purc","","",conn);
detDataList = new ArrayList<List<String>>();
List<String> tempList = new ArrayList<String>();
imgInvLineItmsArry = imgJsonObj.getJSONArray("itms");
for(int j=0; j< imgInvLineItmsArry.length(); j++)
{
imgInvLineItemObj = imgInvLineItmsArry.getJSONObject(j);
lineNo = imgInvLineItemObj.getInt("num");
rate = imgInvLineItemObj.getDouble("rt");
taxableValue = imgInvLineItemObj.getDouble("txval");
igstAmt = imgInvLineItemObj.getDouble("iamt");
cessAmt = imgInvLineItemObj.getDouble("csamt");
itcType = imgInvLineItemObj.getString("elg");
itcIGSTAmt = imgInvLineItemObj.getDouble("tx_i");
itcCessAmt = imgInvLineItemObj.getDouble("tx_cs");
if(igstAmt > 0)
{
docType = "SEWP";
}
else
{
System.out.println("GSTDataSubmitWizPos.saveDownloadedData()["+e.getMessage()+"]");
docType = "SEWOP";
}
tempList.add(tranId);
tempList.add(String.valueOf(lineNo));
tempList.add(String.valueOf(taxableValue));
tempList.add(String.valueOf(rate));
tempList.add(String.valueOf(igstAmt));
tempList.add(String.valueOf(cessrt));//TODO computation of cess rate is pending as data is summarised on rate
tempList.add(String.valueOf(cessAmt));
tempList.add(itcType);
tempList.add(String.valueOf(itcIGSTAmt));
tempList.add(String.valueOf(itcCessAmt));
}
detDataList.add(tempList);
hdrDataList = new ArrayList<String>();
hdrDataList.add(tranId);
hdrDataList.add(e12GenericUtility.getValidDateString(new Date(), e12GenericUtility.getDBDateFormat()));
hdrDataList.add("2");
hdrDataList.add(tranType);
hdrDataList.add("D");
hdrDataList.add(checkSum);
hdrDataList.add(billOfEntry);
hdrDataList.add(billOfEntryDtStr);
hdrDataList.add(String.valueOf(billOfEntryAmt));
hdrDataList.add(supplierGSTIN);
hdrDataList.add(siteCode);
hdrDataList.add(docType);
hdrDataList.add(portCode);
}
insertGSTHdrDetData(hdrColumnList, hdrDataTypeList, hdrDataList, detColumnList, detDataTypeList, detDataList, conn);
}
catch(Exception e)
{
System.out.println("GSTDataSubmitWizPos.insertIMGInvoiceData()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
}
......@@ -2036,7 +2324,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
try
{
updateSql = "UPDATE GST_DATA_HDR SET SUBMISSION_STATUS = ?, SUBMISSION_DATE = ? WHERE TRAN_ID = ?";
updateSql = "UPDATE GST_DATA_HDR SET SUBMIT_STATUS = ?, SUBMIT_DATE = ? WHERE TRAN_ID = ?";
pstmtUpd = conn.prepareStatement(updateSql);
for(String tranId : tranIdList)
......@@ -2242,6 +2530,183 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
return invoice;
}
private void insertGSTHdrDetData(List<String> hdrColumnList, List<String> hdrDataTypeList, List<String> hdrDataList, List<String> detColumnList, List<String> detDataTypeList, List<List<String>> detDataList, Connection conn) throws ITMException
{
boolean isError = false;
PreparedStatement hdrPstmt = null, detPstmt = null;
int hdrInsertCnt = 0;
int[] detInsertCntArray = null;
String hdrInsertSql = "", detInsertSql = "";
StringBuffer hdrInsertSqlBuff = new StringBuffer();
StringBuffer detInsertSqlBuff = new StringBuffer();
try
{
hdrInsertSqlBuff.append("INSERT INTO GST_DATA_HDR (");
for(String columnName : hdrColumnList)
{
hdrInsertSqlBuff.append(columnName+",");
}
hdrInsertSqlBuff.deleteCharAt(hdrInsertSqlBuff.length()-1);
hdrInsertSqlBuff.append(") VALUES (");
for(int i=0; i<hdrColumnList.size(); i++)
{
hdrInsertSqlBuff.append("?,");
}
hdrInsertSqlBuff.deleteCharAt(hdrInsertSqlBuff.length()-1);
hdrInsertSqlBuff.append(")");
hdrInsertSql = hdrInsertSqlBuff.toString();
System.out.println("hdrInsertSql["+hdrInsertSql+"]");
hdrPstmt = conn.prepareStatement(hdrInsertSql);
for(int i=0; i<hdrDataTypeList.size(); i++)
{
String dataType = hdrDataTypeList.get(i);
if("STRING".equalsIgnoreCase(dataType))
{
hdrPstmt.setString(i+1, hdrDataList.get(i));
}
else if("TIMESTAMP".equalsIgnoreCase(dataType))
{
String timestampStr = hdrDataList.get(i);
java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf(e12GenericUtility.getValidDateString(timestampStr, e12GenericUtility.getDBDateFormat()));
hdrPstmt.setTimestamp(i+1, timestamp);
}
else if("DOUBLE".equalsIgnoreCase(dataType))
{
hdrPstmt.setDouble(i+1, Double.valueOf(hdrDataList.get(i)));
}
else if("INT".equalsIgnoreCase(dataType))
{
hdrPstmt.setInt(i+1, Integer.valueOf(hdrDataList.get(i)));
}
}
hdrInsertCnt = hdrPstmt.executeUpdate();
System.out.println("GST_DATA_HDR insert count["+hdrInsertCnt+"]");
if(hdrPstmt != null)
{
hdrPstmt.close();
hdrPstmt = null;
}
detInsertSqlBuff.append("INSERT INTO GST_DATA_DET (");
for(String columnName : detColumnList)
{
detInsertSqlBuff.append(columnName+",");
}
detInsertSqlBuff.deleteCharAt(detInsertSqlBuff.length()-1);
detInsertSqlBuff.append(") VALUES (");
for(int i=0; i<detColumnList.size(); i++)
{
detInsertSqlBuff.append("?,");
}
detInsertSqlBuff.deleteCharAt(detInsertSqlBuff.length()-1);
detInsertSqlBuff.append(")");
detInsertSql = detInsertSqlBuff.toString();
System.out.println("detInsertSql["+detInsertSql+"]");
detPstmt = conn.prepareStatement(detInsertSql);
for(List<String> eachDetList : detDataList)
{
for(int i=0; i<detDataTypeList.size(); i++)
{
String dataType = detDataTypeList.get(i);
if("STRING".equalsIgnoreCase(dataType))
{
detPstmt.setString(i+1, eachDetList.get(i));
}
else if("TIMESTAMP".equalsIgnoreCase(dataType))
{
String timestampStr = eachDetList.get(i);
java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf(e12GenericUtility.getValidDateString(timestampStr, e12GenericUtility.getDBDateFormat()));
detPstmt.setTimestamp(i+1, timestamp);
}
else if("DOUBLE".equalsIgnoreCase(dataType))
{
detPstmt.setDouble(i+1, Double.valueOf(eachDetList.get(i)));
}
else if("INT".equalsIgnoreCase(dataType))
{
detPstmt.setInt(i+1, Integer.valueOf(eachDetList.get(i)));
}
}
detPstmt.addBatch();
detPstmt.clearParameters();
}
detInsertCntArray = detPstmt.executeBatch();
System.out.print("GST_DATA_DET insert count");
for(int eachRowCnt : detInsertCntArray)
{
System.out.print(eachRowCnt + ",");
}
if(detPstmt != null)
{
detPstmt.close();
detPstmt = null;
}
}
catch(SQLException se)
{
isError = true;
System.out.println("GSTDataSubmitWizPos.insertGSTHdrDetData()["+se.getMessage()+"]");
se.printStackTrace();
throw new ITMException(se);
}
catch (Exception e)
{
isError = true;
System.out.println("GSTDataSubmitWizPos.insertGSTHdrDetData()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
if(isError)
{
if(hdrPstmt != null)
{
hdrPstmt.close();
hdrPstmt = null;
}
if(detPstmt != null)
{
detPstmt.close();
detPstmt = null;
}
}
}
catch(SQLException se)
{
System.out.println("GSTDataSubmitWizPos.insertGSTHdrDetData()["+se.getMessage()+"]");
se.printStackTrace();
}
}
}
private static String checkNullandTrim(String input)
{
if (input==null)
......
......@@ -36,7 +36,10 @@ public class HSNSerializer extends BaseSerializer<HSN>
json.writeNumberField("num", hsnDetails.num);
json.writeStringField("hsn_sc", hsnDetails.itemOrServiceCode);
if(hsnDetails.description != null && hsnDetails.description.trim().length()>0)
{
json.writeStringField("desc", hsnDetails.description);
}
json.writeStringField("uqc", hsnDetails.unitOfMeasure);
json.writeNumberField("qty", hsnDetails.quantity);
json.writeNumberField("val", hsnDetails.totalAmount);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment