Commit ea2bb30c authored by steurwadkar's avatar steurwadkar

F17ABAS001 source code commit


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@106471 ce508802-f39f-4f6c-b175-0d175dae99d5
parent d1019d4e
......@@ -5,6 +5,10 @@ import java.util.List;
public class CDNDetails
{
public String taxPayerAction;
public String checksum;
public String cdnNoteType;
public String cdNoteNumber;
......
......@@ -26,7 +26,7 @@ public class Invoice
public String shippingPortCode;
public String shippingBillNum;
public double shippingBillNum;
public Date shippingBillDt;
......
......@@ -981,7 +981,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invoice.idt = rs.getDate("DOC_DATE");
invoice.val = rs.getDouble("AMOUNT");
invoice.shippingPortCode = checkNullandTrim(rs.getString("ORDER_NO"));
invoice.shippingBillNum = checkNullandTrim(rs.getString("LR_NO"));
invoice.shippingBillNum = getDoubleValue(rs.getString("LR_NO"));
invoice.shippingBillDt = rs.getDate("LR_DATE");
invoice.items = invLineItems;
......@@ -1404,6 +1404,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
Date startTime = new Date();
HttpRequest saveGstr1Req = Unirest.put(String.format("%s%s", GSP_API_URL, GSTR1_URL_V3))
.header("Content-Type", APPLICATION_JSON)
.header("clientid", clientId)
......@@ -1634,6 +1636,15 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
retString = getError(errMsg, "GSTAPIERR", conn);
}
Date endTime = new Date();
long diff = startTime.getTime() - endTime.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000);
System.out.println("DIFFERANCE IN TIME FOR SAVE GSTR1 IN HH:MM:SS ["+diffHours +":"+diffMinutes+":"+diffSeconds+"]");
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
......@@ -2434,6 +2445,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invoice.pos = posStateCode;
invoice.rchrg = "Y".equalsIgnoreCase(rs.getString("REVERSE_CHRG"));
invoice.items = invLineItems;
invoice.taxPayerAction = checkNullandTrim(rs.getString("SUBMISSION_TYPE"));
invoice.checksum = checkNullandTrim(rs.getString("DOC_CHECKSUM"));
invoices.add(invoice);
......@@ -2578,6 +2591,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnDetails.isPreGSTInvoice = true;
}
cdnDetails.items = invLineItems;
cdnDetails.taxPayerAction = checkNullandTrim(rs.getString("SUBMISSION_TYPE"));
cdnDetails.checksum = checkNullandTrim(rs.getString("DOC_CHECKSUM"));
cdnDetailsList.add(cdnDetails);
......@@ -2591,6 +2606,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
}
if("IMPG".equalsIgnoreCase(udfStr1))
{
String sezGSTIN = "";
lineSql = " SELECT GST_RATE, SUM(TAXABLE_AMT) AS TAXABLE_AMT, SUM(IGST_AMT) AS IGST_AMT, SUM(CGST_AMT) AS CGST_AMT, SUM(SGST_AMT) AS SGST_AMT, SUM(CESS_AMT) AS CESS_AMT, "
+ " ITC_TYPE, SUM(ITC_IGST) AS ITC_IGST, SUM(ITC_CGST) AS ITC_CGST, SUM(ITC_SGST) AS ITC_SGST, SUM(ITC_CESS) AS ITC_CESS "
+ " FROM GST_DATA_DET "
......@@ -2630,8 +2647,16 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
}
impg = new IMPG();
impg.isSezImport = true;//TODO need to confirm exact value
impg.sezGSTIN = checkNullandTrim(rs.getString("TAX_REG_NO"));
sezGSTIN = checkNullandTrim(rs.getString("TAX_REG_NO"));
impg.sezGSTIN = sezGSTIN;
if(sezGSTIN.length()>0)
{
impg.isSezImport = true;
}
else
{
impg.isSezImport = false;
}
impg.billOfEntryNo = checkNullandTrim(rs.getString("DOC_NO"));
impg.billOfEntryDate = rs.getDate("DOC_DATE");
impg.amount = rs.getDouble("AMOUNT");
......@@ -2996,6 +3021,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
Date startTime = new Date();
HttpRequest saveGstr2Req = Unirest.put(String.format("%s%s", GSP_API_URL, GSTR2_URL_V3))
.header("Content-Type", APPLICATION_JSON)
.header("clientid", clientId)
......@@ -3226,6 +3253,15 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
retString = getError(errMsg, "GSTAPIERR", conn);
}
Date endTime = new Date();
long diff = startTime.getTime() - endTime.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000);
System.out.println("DIFFERANCE IN TIME FOR SAVE GSTR2 IN HH:MM:SS ["+diffHours +":"+diffMinutes+":"+diffSeconds+"]");
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
......@@ -3553,6 +3589,14 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
List<ITCData> itcRevDataList = new ArrayList<ITCData>();
List<ITCData> itcInelgDataList = new ArrayList<ITCData>();
List<InwardSuppliesDetails> inwardSuppliesList = new ArrayList<InwardSuppliesDetails>();
String transactionId = UUID.randomUUID().toString().replaceAll("-", "");
String gspAuthString = "", gspAuthSignature = "", callStatus = "", gstr3bData = "", gstr3bRek = "", responseId = "", gspAuthStringRet = "",
gspAuthSignatureRet = "", retStatsData = "", retStatsRek = "", retStatusCallStatus = "", retStatusResponseJsonStr = "", errMsg = "",
responseJsonStr = "", loginCode = "", chgTerm = "";
APICallData apiRetStatsCallData = null;
ArrayList<APICallData> retStatAPICallList = new ArrayList<APICallData>();
try
{
OutwardSuppliesDetails outwardSuppliesDetails = new OutwardSuppliesDetails();
......@@ -3699,9 +3743,281 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
ObjectMapper objectMapper = new ObjectMapper();
String gstr3bJsonPayloadStr = objectMapper.writeValueAsString(gstr3b);
String json = objectMapper.writeValueAsString(gstr3b);
System.out.println("jsonPaylaod to save GSTR3B ["+json+"]");
loginCode = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginCode");
chgTerm = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "chgTerm");
byte[] jsonBase64 = Base64.getEncoder().encode(json.getBytes());
String encryptedPayload = aesEncryption.encryptEK(jsonBase64, authSek);
HMac hmac = new HMac(new SHA256Digest());
byte[] resBuf = new byte[hmac.getMacSize()];
hmac.init(new KeyParameter(authSek));
hmac.update(jsonBase64, 0, jsonBase64.length);
hmac.doFinal(resBuf, 0);
JSONObject gstr3bHeaderObj = new JSONObject();
gstr3bHeaderObj.put("action", "RETSAVE");
gstr3bHeaderObj.put("data", encryptedPayload);
gstr3bHeaderObj.put("hmac", new String(Base64.getEncoder().encode(resBuf)));
long timeStamp = new Timestamp().getDateTime();
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpRequest saveGstr3bReq = Unirest.post(String.format("%s%s", GSP_API_URL, GSTR3B_URL_V3))
.header("Content-Type", APPLICATION_JSON)
.header("clientid", clientId)
.header("client-secret", clientSecret)
.header("txn",transactionId)
.header("state-cd", stateCode)
.header("auth-token", authToken)
.header("gstin", gstin)
.header("username", userName)
.header("ret_period", periodCode)
.header("ip-usr", ipAddress)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.body(new JsonNode(gstr3bHeaderObj.toString()))
.getHttpRequest();
System.out.println("SAVE GSTR3B url["+saveGstr3bReq.getUrl()+"]");
System.out.println("SAVE GSTR3B method["+saveGstr3bReq.getHttpMethod()+"]");
System.out.println("SAVE GSTR3B request header["+saveGstr3bReq.getHeaders()+"]");
System.out.println("SAVE GSTR3B request payload["+IOUtils.toString(saveGstr3bReq.getBody().getEntity().getContent())+"]");
HttpResponse<JsonNode> gstr3bResp = saveGstr3bReq.asJson();
System.out.println(String.format("gstr3bResp Request : Status[%s] Response[%s]", gstr3bResp.getStatus(), gstr3bResp.getBody()));
System.out.println("gstr3bJsonPayloadStr["+gstr3bJsonPayloadStr+"]");
if (gstr3bResp.getStatus() == 200)
{
JSONObject gstr3bRespObj = gstr3bResp.getBody().getObject();
if(gstr3bRespObj.has("data") && gstr3bRespObj.has("rek"))
{
callStatus = "1";
gstr3bData = gstr3bRespObj.getString("data");
gstr3bRek = gstr3bRespObj.getString("rek");
byte[] apiEKGstr3b = aesEncryption.decrypt(gstr3bRek, authSek);
String gstr3bRespJsoninBase64 = new String(aesEncryption.decrypt(gstr3bData, apiEKGstr3b));
byte[] gstr3bRespJsonInBytes = aesEncryption.decodeBase64StringTOByte(gstr3bRespJsoninBase64);
JSONObject gstr3bTransIdRespObj = new JSONObject(new String(gstr3bRespJsonInBytes));
String transId = gstr3bTransIdRespObj.getString("reference_id");
responseId = transId;
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);
HttpRequest retStatusReq = Unirest.get(String.format("%s%s", GSP_API_URL, GSTR_URL_V3))
.queryString("action","RETSTATUS")
.queryString("gstin", gstin)
.queryString("ret_period", periodCode)
.queryString("ref_id",transId)
.header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
.header("clientid", clientId)
.header("client-secret", clientSecret)
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
.header("X-Asp-Auth-Token", gspAuthStringRet)
.header("X-Asp-Auth-Signature", gspAuthSignatureRet)
.getHttpRequest();
System.out.println("RETSTATUS url["+retStatusReq.getUrl()+"]");
System.out.println("RETSTATUS method["+retStatusReq.getHttpMethod()+"]");
System.out.println("RETSTATUS request header["+retStatusReq.getHeaders()+"]");
HttpResponse<JsonNode> retStatusResp = retStatusReq.asJson();
System.out.println(String.format("retStatusResp Request : Status[%s] Response[%s]", retStatusResp.getStatus(), retStatusResp.getBody()));
if (retStatusResp.getStatus() == 200)
{
JSONObject retStatsRespObj = retStatusResp.getBody().getObject();
if(retStatsRespObj.has("data") && retStatsRespObj.has("rek"))
{
retStatsData = retStatsRespObj.getString("data");
retStatsRek = retStatsRespObj.getString("rek");
byte[] apiEKRetstats = aesEncryption.decrypt(retStatsRek, authSek);
String retStatsRespJsoninBase64 = new String(aesEncryption.decrypt(retStatsData, apiEKRetstats));
byte[] retStatsRespJsonInBytes = aesEncryption.decodeBase64StringTOByte(retStatsRespJsoninBase64);
JSONObject retStatsJsonData = new JSONObject(new String(retStatsRespJsonInBytes));
System.out.println( "retStatsJsonData["+retStatsJsonData+"]");
if("IP".equalsIgnoreCase((String)retStatsJsonData.get("status_cd")))
{
retStatusCallStatus = "0";
retStatusResponseJsonStr = "IP";
}
else if("P".equalsIgnoreCase((String)retStatsJsonData.get("status_cd")))
{
retStatusCallStatus = "1";
isRetStatusError = true;
}
else if("PE".equalsIgnoreCase((String)retStatsJsonData.get("status_cd")))
{
retStatusCallStatus = "2";
errMsg = getRetStatusErrMsg(retStatsJsonData);
retStatusResponseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
isRetStatusError = true;
}
else if("ER".equalsIgnoreCase(retStatsJsonData.getString("status_cd")))
{
retStatusCallStatus = "2";
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);
isRetStatusError = true;
}
else
{
retStatusCallStatus = "2";
if(retStatsJsonData.has("status_cd"))
{
errMsg = "Message : "+retStatsJsonData.getString("status_cd")+" \nError code : "+retStatsJsonData.getString("status_cd");
}
retStatusResponseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
isRetStatusError = true;
}
}
else
{
retStatusCallStatus = "2";
JSONObject errorJSON = retStatusResp.getBody().getObject().getJSONObject("error");
retStatusResponseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
isRetStatusError = true;
}
}
else if(retStatusResp.getStatus() == 500)
{
retStatusCallStatus = "2";
errMsg = "Message : Error occurred at GSTN server \nResponse code : "+retStatusResp.getStatus();
retStatusResponseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
isRetStatusError = true;
}
else
{
retStatusCallStatus = "2";
JSONObject errorJSON = retStatusResp.getBody().getObject().getJSONObject("error");
retStatusResponseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
isRetStatusError = true;
}
apiRetStatsCallData = new APICallData();
apiRetStatsCallData.setPeriodCode(periodCode);
apiRetStatsCallData.setCallDate(new Date());
apiRetStatsCallData.setSiteCode(siteCode);
apiRetStatsCallData.setUserId(loginCode);
apiRetStatsCallData.setCallType("RETSTATUS");
apiRetStatsCallData.setRecType("3");
apiRetStatsCallData.setNoOfRecords(0);
apiRetStatsCallData.setCallStatus(retStatusCallStatus);
apiRetStatsCallData.setResponseId("");
apiRetStatsCallData.setResponseJsonStr(retStatusResponseJsonStr);
apiRetStatsCallData.setChgUser(loginCode);
apiRetStatsCallData.setChgDate(new Date());
apiRetStatsCallData.setChgTerm(chgTerm);
retStatAPICallList.add(apiRetStatsCallData);
if(isRetStatusError)
{
break;
}
else
{
continue;
}
}
}
else
{
callStatus = "2";
JSONObject errorJSON = gstr3bResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
else if(gstr3bResp.getStatus() == 500)
{
callStatus = "2";
errMsg = "Message : Error occurred at GSTN server \nResponse code : "+gstr3bResp.getStatus();
responseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
}
else
{
callStatus = "2";
JSONObject errorJSON = gstr3bResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("RETSAVE");
apiCallData.setRecType("3");
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
apiCallData.setResponseId(responseId);
apiCallData.setResponseJsonStr(responseJsonStr);
apiCallData.setChgUser(loginCode);
apiCallData.setChgDate(new Date());
apiCallData.setChgTerm(chgTerm);
gstCommonUtil.updateAPICallLogHistory(apiCallData, null);
if(retStatAPICallList.size()>0)
{
for(APICallData eachAPICallData : retStatAPICallList)
{
gstCommonUtil.updateAPICallLogHistory(eachAPICallData, null);
}
}
}
catch(Exception e)
{
......@@ -5053,6 +5369,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
System.out.print(eachRowCnt + ",");
}
System.out.println("");
}
catch (Exception e)
{
......@@ -5139,7 +5456,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
for(int i=0; i<eachInvErrorJsonArry.length(); i++)
{
JSONObject tempJsonObj = (JSONObject) eachInvErrorJsonArry.get(i);
JSONObject tempJsonObj = eachInvErrorJsonArry.getJSONObject(i);
retString += tempJsonObj.getString("error_msg")+"\n";
if(tempJsonObj.has("ty") && tempJsonObj.has("hsn_sc"))
{
......@@ -5153,6 +5470,18 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
retString += " Doc No. : "+tempJsonObj.optString("doc_num")+ " Doc Dt. : "+tempJsonObj.optString("doc_dt")+ " Inv Type : "+tempJsonObj.optString("typ")+"\n";
}
else if(tempJsonObj.has("inv"))
{
JSONArray tempInvJsonArry = tempJsonObj.getJSONArray("inv");
for(int j=0; j<tempInvJsonArry.length(); j++)
{
JSONObject tempInvJsonObj = tempInvJsonArry.getJSONObject(j);
if(tempInvJsonObj.has("inum") && tempInvJsonObj.has("idt"))
{
retString += " Invoice No. : "+tempInvJsonObj.optString("inum")+ " Invoice Dt. : "+tempInvJsonObj.optString("idt")+"\n";
}
}
}
}
}
catch(Exception e)
......@@ -5671,5 +6000,27 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
return null;
}
}
private double getDoubleValue(String input)
{
double value = 0.0;
try
{
if(input == null)
{
value = 0.0;
}
else
{
value = Double.valueOf(checkNullandTrim(input));
}
System.out.println("retutn value["+value+"]");
}
catch(Exception e)
{
System.out.println("GSTDataSubmitWizPos.getDoubleValue()["+e.getMessage()+"]");
e.printStackTrace();
}
return value;
}
}
......@@ -47,9 +47,9 @@ abstract class BaseSerializer<T extends BaseData> extends JsonSerializer<T>
{
json.writeStringField("sbpcode",inv.shippingPortCode);
}
if(inv.shippingBillNum != null)
if(inv.shippingBillNum >= 0)
{
json.writeStringField("sbnum", inv.shippingBillNum);
json.writeNumberField("sbnum", inv.shippingBillNum);
}
if(inv.shippingBillDt != null)
{
......
......@@ -52,6 +52,14 @@ public class CDNRSerializer extends JsonSerializer<CDNR>
json.writeStringField("rsn", cdnDetails.reason);
}
json.writeStringField("p_gst", cdnDetails.isPreGSTInvoice ? "Y" : "N");
if(cdnDetails.taxPayerAction != null)
{
json.writeStringField("flag", cdnDetails.taxPayerAction);
}
if(cdnDetails.checksum != null && cdnDetails.checksum.trim().length() > 0)
{
json.writeStringField("chksum", cdnDetails.checksum);
}
writeCDNLineItems(cdnDetails, json);
......
......@@ -15,7 +15,7 @@ public class EXPSerializer extends BaseSerializer<EXP>
{
json.writeStartObject();
json.writeStringField("ex_tp", exp.exportType);
json.writeStringField("exp_typ", exp.exportType);
writeInvoices(exp, json);
json.writeEndObject();
......
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