Commit cec6abfd authored by steurwadkar's avatar steurwadkar

F17ABAS001 source code commit


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@44325 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 75f7570c
...@@ -17,5 +17,9 @@ public class CDNDetails ...@@ -17,5 +17,9 @@ public class CDNDetails
public double val; public double val;
public String reason;
public boolean isPreGSTInvoice;
public List<InvLineItem> items; public List<InvLineItem> items;
} }
...@@ -24,5 +24,9 @@ public class CDNUR extends BaseData ...@@ -24,5 +24,9 @@ public class CDNUR extends BaseData
public double val; public double val;
public String reason;
public boolean isPreGSTInvoice;
public List<InvLineItem> items; public List<InvLineItem> items;
} }
...@@ -24,6 +24,8 @@ public class Invoice ...@@ -24,6 +24,8 @@ public class Invoice
public String invoiceType; public String invoiceType;
public String shippingPortCode;
public String shippingBillNum; public String shippingBillNum;
public Date shippingBillDt; public Date shippingBillDt;
......
...@@ -11,6 +11,7 @@ import java.sql.ResultSet; ...@@ -11,6 +11,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Base64;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
...@@ -20,6 +21,9 @@ import java.util.UUID; ...@@ -20,6 +21,9 @@ import java.util.UUID;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import org.bouncycastle.crypto.digests.SHA256Digest;
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.crypto.params.KeyParameter;
import org.json.JSONObject; import org.json.JSONObject;
import org.json.XML; import org.json.XML;
import org.w3c.dom.Document; import org.w3c.dom.Document;
...@@ -32,6 +36,7 @@ import com.mashape.unirest.http.Unirest; ...@@ -32,6 +36,7 @@ import com.mashape.unirest.http.Unirest;
import com.sun.jmx.snmp.Timestamp; import com.sun.jmx.snmp.Timestamp;
import ibase.utility.E12GenericUtility; import ibase.utility.E12GenericUtility;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ValidatorEJB; import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.ejb.fin.FinCommon; import ibase.webitm.ejb.fin.FinCommon;
import ibase.webitm.util.gst.AESEncryption; import ibase.webitm.util.gst.AESEncryption;
...@@ -320,14 +325,13 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -320,14 +325,13 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
valueXmlString.append("<gross_turnover><![CDATA[").append(grossTurnover).append( "]]></gross_turnover>"); valueXmlString.append("<gross_turnover><![CDATA[").append(grossTurnover).append( "]]></gross_turnover>");
valueXmlString.append("<otp><![CDATA[]]></otp>"); valueXmlString.append("<otp><![CDATA[]]></otp>");
valueXmlString.append("<app_key><![CDATA["+appKey+"]]></app_key>"); valueXmlString.append("<app_key><![CDATA["+appKey+"]]></app_key>");
valueXmlString.append("<returns_type><![CDATA[]]></returns_type>");
valueXmlString.append("</Detail1>" ); valueXmlString.append("</Detail1>" );
} }
break; break;
} }
case 2: case 2:
{ {
String otp = "", transactionId = "", authToken = "", sek = "", retXML = ""; String otp = "", transactionId = "", authToken = "", sek = "", retXML = "", errorXML = "", errMsg = "", returnType = "", action = "";
String gspAuthString = "", gspAuthSignature = ""; String gspAuthString = "", gspAuthSignature = "";
long timeStamp = new Timestamp().getDateTime(); long timeStamp = new Timestamp().getDateTime();
byte[] authSEK = null; byte[] authSEK = null;
...@@ -335,12 +339,55 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -335,12 +339,55 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
System.out.println(" -------- Inside itemchange case 2222222 ------------ "); System.out.println(" -------- Inside itemchange case 2222222 ------------ ");
if( currentColumn.trim().equalsIgnoreCase( "itm_default" )) if( currentColumn.trim().equalsIgnoreCase( "itm_default" ))
{ {
transactionId = UUID.randomUUID().toString().replaceAll("-", "");
gstinNo = checkNull(e12genericUtility.getColumnValue("gstin", dom1)); gstinNo = checkNull(e12genericUtility.getColumnValue("gstin", dom1));
periodCode = checkNull(e12genericUtility.getColumnValue("period_code", dom1)); periodCode = checkNull(e12genericUtility.getColumnValue("period_code", dom1));
stateCode = checkNull(e12genericUtility.getColumnValue("state_code", dom1)); stateCode = checkNull(e12genericUtility.getColumnValue("state_code", dom1));
userName = checkNull(e12genericUtility.getColumnValue("username", dom1)); userName = checkNull(e12genericUtility.getColumnValue("username", dom1));
returnType = checkNull(e12genericUtility.getColumnValue("returns_type", dom1));
action = checkNull(e12genericUtility.getColumnValue("action", dom1));
siteCode = checkNull(e12genericUtility.getColumnValue("site_code", dom1));
if("GSTR1".equalsIgnoreCase(returnType.trim()))
{
if("SUBMIT".equalsIgnoreCase(action.trim()))
{
boolean isPendingDataFound = false;
retXML = "<pending_data>";
sql = "SELECT DOC_NO, DOC_DATE, AMOUNT FROM GST_DATA_HDR WHERE REC_TYPE = '1' AND SUBMIT_STATUS = 'P' AND PRD_CODE = ? AND SITE_CODE = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, periodCode);
pstmt.setString(2, siteCode);
rs = pstmt.executeQuery();
while(rs.next())
{
isPendingDataFound = true;
retXML += "<data>";
retXML += "<doc_no><![CDATA["+checkNull(rs.getString("DOC_NO"))+"]]></doc_no>";
retXML += "<doc_date><![CDATA["+checkNull(rs.getString("DOC_DATE"))+"]]></doc_date>";
retXML += "<amount><![CDATA["+rs.getDouble("AMOUNT")+"]]></amount>";
retXML += "</data>";
}
if(pstmt!=null)
{
pstmt.close();
pstmt=null;
}
if(rs!=null)
{
rs.close();
rs=null;
}
retXML += "</pending_data>";
if(!isPendingDataFound)
{
retXML = "";
}
}
}
transactionId = UUID.randomUUID().toString().replaceAll("-", "");
appKey = checkNull(e12genericUtility.getColumnValue("app_key", dom1)); appKey = checkNull(e12genericUtility.getColumnValue("app_key", dom1));
appKeyInBytes = aesEncryption.decodeBase64StringTOByte(appKey); appKeyInBytes = aesEncryption.decodeBase64StringTOByte(appKey);
...@@ -374,7 +421,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -374,7 +421,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
System.out.println(String.format("authTokenResp Request : Status[%s] Response[%s]", authTokenResp.getStatus(), authTokenResp.getBody())); System.out.println(String.format("authTokenResp Request : Status[%s] Response[%s]", authTokenResp.getStatus(), authTokenResp.getBody()));
if (authTokenResp.getStatus() == 200) if(authTokenResp.getStatus() == 200)
{ {
JSONObject object = authTokenResp.getBody().getObject(); JSONObject object = authTokenResp.getBody().getObject();
if (object.has("auth_token") && object.has("sek") && object.has("status_cd") && Objects.equals(object.getString("status_cd"), "1")) if (object.has("auth_token") && object.has("sek") && object.has("status_cd") && Objects.equals(object.getString("status_cd"), "1"))
...@@ -385,8 +432,34 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -385,8 +432,34 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
authSEK = aesEncryption.decrypt(sek, appKeyInBytes); authSEK = aesEncryption.decrypt(sek, appKeyInBytes);
System.out.println("AuthSEK = "+ aesEncryption.encodeBase64String(authSEK)); System.out.println("AuthSEK = "+ aesEncryption.encodeBase64String(authSEK));
retXML = downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, authSEK); retXML += getGstr1Summary(authToken, stateCode, userName, gstinNo, periodCode, authSEK, appKeyEncryptedAndCoded, conn);
retXML += downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, authSEK);
}
else
{
JSONObject errorJSON = authTokenResp.getBody().getObject().getJSONObject("error");
if("AUTH4033".equalsIgnoreCase(errorJSON.getString("error_cd")))
{
errorXML = new ITMDBAccessEJB().getErrorString("","VTINVOTP","","",conn);
}
else
{
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
errorXML = getError(errMsg, "GSTAPIERR", conn);
}
}
} }
else if(authTokenResp.getStatus() == 500)
{
errMsg = "Message : Server error occurred at GSTN server \nResponse code : 500";
errorXML = getError(errMsg, "GSTAPIERR", conn);
}
else
{
JSONObject errorJSON = authTokenResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
errorXML = getError(errMsg, "GSTAPIERR", conn);
} }
valueXmlString.append("<Detail2 domID='1'>"); valueXmlString.append("<Detail2 domID='1'>");
...@@ -396,6 +469,10 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -396,6 +469,10 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
valueXmlString.append("<Detail2 domID='2'>"); valueXmlString.append("<Detail2 domID='2'>");
valueXmlString.append(retXML); valueXmlString.append(retXML);
valueXmlString.append("</Detail2>" ); valueXmlString.append("</Detail2>" );
if(errorXML.trim().length() > 0)
{
valueXmlString.append(errorXML);
}
} }
break; break;
} }
...@@ -469,7 +546,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -469,7 +546,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
@Override @Override
public String wfValData(Document currFormDataDom, Document hdrDataDom, Document allFormDataDom, String objContext, String editFlag, String xtraParams) throws RemoteException, ITMException public String wfValData(Document currFormDataDom, Document hdrDataDom, Document allFormDataDom, String objContext, String editFlag, String xtraParams) throws RemoteException, ITMException
{ {
String errString = "", userId = ""; String errString = "", userId = "", loginSiteCode = "";
StringBuffer errStringXml = new StringBuffer("<?xml version=\"1.0\"?>\r\n<Root><Errors>"); StringBuffer errStringXml = new StringBuffer("<?xml version=\"1.0\"?>\r\n<Root><Errors>");
int currentFormNo = 0; int currentFormNo = 0;
String sql = null; String sql = null;
...@@ -483,6 +560,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -483,6 +560,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
try try
{ {
userId = e12GenericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginCode" ); userId = e12GenericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginCode" );
loginSiteCode = e12GenericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginSiteCode" );
if (objContext != null && objContext.trim().length() > 0) if (objContext != null && objContext.trim().length() > 0)
{ {
currentFormNo = Integer.parseInt(objContext); currentFormNo = Integer.parseInt(objContext);
...@@ -494,6 +572,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -494,6 +572,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
{ {
case 1: case 1:
{ {
String returnType = "", action = "", periodCode = "";
NodeList parentList = null, childList = null; NodeList parentList = null, childList = null;
Node childNode = null; Node childNode = null;
String childNodeName = "", columnValue = ""; String childNodeName = "", columnValue = "";
...@@ -524,6 +603,16 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -524,6 +603,16 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errFields.add( childNodeName.toLowerCase() ); errFields.add( childNodeName.toLowerCase() );
} }
} }
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
} }
if("site_code".equalsIgnoreCase(childNodeName)) if("site_code".equalsIgnoreCase(childNodeName))
{ {
...@@ -539,14 +628,75 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -539,14 +628,75 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errFields.add( childNodeName.toLowerCase() ); errFields.add( childNodeName.toLowerCase() );
} }
} }
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
}
}
returnType = e12GenericUtility.getColumnValue("returns_type", hdrDataDom);
action = e12GenericUtility.getColumnValue("action", hdrDataDom);
periodCode = e12GenericUtility.getColumnValue("period_code", hdrDataDom);
System.out.println("returnType["+returnType+"] action["+action+"] periodCode["+periodCode+"]");
if("GSTR1".equalsIgnoreCase(returnType))
{
if("SUBMIT".equalsIgnoreCase(action))
{
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = '1' AND SUBMIT_STATUS = 'S' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, periodCode);
pstmt.setString(2, loginSiteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
if(rs.getInt("CNT") == 0)
{
errList.add( "VTNORECSAV" );
errFields.add("returns_type");
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
/*sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = '1' AND SUBMIT_STATUS = 'P' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, periodCode);
pstmt.setString(2, loginSiteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
if(rs.getInt("CNT") > 0)
{
errList.add( "VTRECSAPEN" );
errFields.add("returns_type");
}
}*/
} }
} }
break; break;
} }
/*case 2: case 2:
{ {
break; break;
}*/ }
} }
int errListSize = errList.size(); int errListSize = errList.size();
String errFldName = null; String errFldName = null;
...@@ -752,7 +902,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -752,7 +902,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
private String downloadGstr1Data (String gstinNo, String periodCode, String authToken, String userName, String stateCode, String appKeyEncryptedAndCoded, byte[] authSek) throws ITMException private String downloadGstr1Data (String gstinNo, String periodCode, String authToken, String userName, String stateCode, String appKeyEncryptedAndCoded, byte[] authSek) throws ITMException
{ {
StringBuffer retStringBuff = new StringBuffer(); StringBuffer retStringBuff = new StringBuffer();
String[] gstr1Section = {"B2B","B2CL","B2CS","CDNR","CDNUR","AT","TXP","NIL","EXP","HSNSUM"}; String[] gstr1Section = {"B2B","B2CL","B2CS","CDNR","AT","TXP","NIL","EXP","HSNSUM"};
String gspAuthString = "", gspAuthSignature = ""; String gspAuthString = "", gspAuthSignature = "";
try try
...@@ -815,21 +965,66 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -815,21 +965,66 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
retStringBuff.append("<b2cl_invoices>"); retStringBuff.append("<b2cl_invoices>");
retStringBuff.append(b2clXML); retStringBuff.append(b2clXML);
retStringBuff.append("</b2cl_invoices>"); retStringBuff.append("</b2cl_invoices>");
}
else if("B2CS".equalsIgnoreCase(action))
{
String b2csXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<b2cs_invoices>");
retStringBuff.append(b2csXML);
retStringBuff.append("</b2cs_invoices>");
}
else if("CDNR".equalsIgnoreCase(action))
{
String cdnrXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<cdnr_data>");
retStringBuff.append(cdnrXML);
retStringBuff.append("</cdnr_data>");
}
else if("AT".equalsIgnoreCase(action))
{
String atXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<at_data>");
retStringBuff.append(atXML);
retStringBuff.append("</at_data>");
}
else if("TXP".equalsIgnoreCase(action))
{
String txpXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<txp_data>");
retStringBuff.append(txpXML);
retStringBuff.append("</txp_data>");
}
else if("NIL".equalsIgnoreCase(action))
{
String nilXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<nil_data>");
retStringBuff.append(nilXML);
retStringBuff.append("</nil_data>");
}
else if("EXP".equalsIgnoreCase(action))
{
String expXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<exp_data>");
retStringBuff.append(expXML);
retStringBuff.append("</exp_data>");
}
else if("HSNSUM".equalsIgnoreCase(action))
{
String hsnSumXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<hsnsum_data>");
retStringBuff.append(hsnSumXML);
retStringBuff.append("</hsnsum_data>");
} }
} }
else else
{ {
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error"); JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
//errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
//retString = getError(errMsg, "GSTAPIERR", conn);
System.out.println("errorJSON["+errorJSON+"]"); System.out.println("errorJSON["+errorJSON+"]");
} }
} }
else else
{ {
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error"); JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
//errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
//retString = getError(errMsg, "GSTAPIERR", conn);
System.out.println("errorJSON["+errorJSON+"]"); System.out.println("errorJSON["+errorJSON+"]");
} }
} }
...@@ -843,6 +1038,81 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -843,6 +1038,81 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
System.out.println("final retStringBuff.toSting["+retStringBuff.toString()+"]"); System.out.println("final retStringBuff.toSting["+retStringBuff.toString()+"]");
return retStringBuff.toString(); return retStringBuff.toString();
} }
private String getGstr1Summary(String authToken, String stateCode, String userName, String gstin, String periodCode, byte[] authSek, String appKeyEncryptedAndCoded, Connection conn) throws ITMException
{
String retString = "";
String errMsg = "", gspAuthString = "", gspAuthSignature = "";
String transactionId = UUID.randomUUID().toString().replaceAll("-", "");
try
{
long timeStamp = new Timestamp().getDateTime();
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpResponse<JsonNode> getGstr1SumryResp = Unirest.get(String.format("%s%s", GSP_API_URL, GSTR1_URL_V2))//TODO need to change with version 0.3
.queryString("action","RETSUM")
.queryString("gstin", gstin)
.queryString("ret_period", periodCode)
.header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
.header("clientid", clientId)
.header("client-secret", clientSecret)
.header("ip-usr", ipAddress.getHostAddress())
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.asJson();
System.out.println(String.format("getGstr1SumryResp Request : Status[%s] Response[%s]", getGstr1SumryResp.getStatus(), getGstr1SumryResp.getBody()));
if (getGstr1SumryResp.getStatus() == 200)
{
JSONObject getGstr1SumryRespObj = getGstr1SumryResp.getBody().getObject();
if(getGstr1SumryRespObj.has("data") && getGstr1SumryRespObj.has("rek"))
{
String gstr1Sumrydata = getGstr1SumryRespObj.getString("data");
String gstr1Sumryrek = getGstr1SumryRespObj.getString("rek");
byte[] apiEK = aesEncryption.decrypt(gstr1Sumryrek, authSek);
String respJsoninBase64 = new String(aesEncryption.decrypt(gstr1Sumrydata, apiEK));
byte[] respJsonInBytes = aesEncryption.decodeBase64StringTOByte(respJsoninBase64);
JSONObject gstr1SumryJsonObj = new JSONObject(new String(respJsonInBytes));
retString = "<summary_data>" + XML.toString(gstr1SumryJsonObj) + "</summary_data>";
System.out.println("retString in getGstr1Summary["+retString+"]");
}
else
{
JSONObject errorJSON = getGstr1SumryResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
else
{
JSONObject errorJSON = getGstr1SumryResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
catch(Exception e)
{
System.out.println("GSTDataSubmitWiz.getGstr1Summary()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
}
return retString;
}
private String checkNull(String input) private String checkNull(String input)
{ {
if (input==null) if (input==null)
...@@ -895,4 +1165,26 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -895,4 +1165,26 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
} }
return msgType; return msgType;
} }
private String getError(String errMsg, String Code, Connection conn) throws ITMException, Exception
{
String mainStr ="";
try
{
String errString = "";
errString = new ITMDBAccessEJB().getErrorString("",Code,"","",conn);
String begPart = errString.substring(0,errString.indexOf("</description>"));
String endDesc = errString.substring(errString.indexOf("</description>"),errString.length());
mainStr = checkNull(begPart) + "<![CDATA[" +errMsg+ " ]]>" + checkNull(endDesc);
System.out.println("mainStr:::::::::::::::::: "+mainStr);
begPart = null;
}
catch(Exception e)
{
e.printStackTrace();
throw new ITMException(e);
}
return mainStr;
}
} }
...@@ -12,6 +12,7 @@ import java.sql.SQLException; ...@@ -12,6 +12,7 @@ import java.sql.SQLException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Base64; import java.util.Base64;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -203,7 +204,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -203,7 +204,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
public String postSave(String xmlStringAll, String dcrId, String editFlag, String xtraParams, Connection conn) throws RemoteException,ITMException public String postSave(String xmlStringAll, String dcrId, String editFlag, String xtraParams, Connection conn) throws RemoteException,ITMException
{ {
Document allXMLDom = null; Document allXMLDom = null;
NodeList detail1NList = null, detail1ChildNList = null; NodeList detail1NList = null, detail1ChildNList = null, detail2NList = null, detail2ChildNList = null;
String retString = "", nodeName = "", otp = "", stateCode = "", sek = "", returnsType = "", gstin = "", periodCode = "", grossTurnover = "", String retString = "", nodeName = "", otp = "", stateCode = "", sek = "", returnsType = "", gstin = "", periodCode = "", grossTurnover = "",
action = "", siteCode = "", gspAuthString = "", gspAuthSignature = ""; action = "", siteCode = "", gspAuthString = "", gspAuthSignature = "";
byte[] authSEK = null; byte[] authSEK = null;
...@@ -272,6 +273,24 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -272,6 +273,24 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
} }
} }
detail2NList = allXMLDom.getElementsByTagName("Detail2");
for(int i=0; i<detail2NList.getLength(); i++)
{
Node eachDetail2Node = detail2NList.item(i);
System.out.println("560101.domId["+eachDetail2Node.getAttributes().getNamedItem("domID")+"]");
detail2ChildNList = eachDetail2Node.getChildNodes();
for(int j=0; j<detail1ChildNList.getLength();j++)
{
Node eachDetail2Element = detail2ChildNList.item(j);
nodeName = eachDetail2Element.getNodeName();
}
}
System.out.println("returnsType["+returnsType+"] action ["+action+"]"); System.out.println("returnsType["+returnsType+"] action ["+action+"]");
appKeyInBytes = aesEncryption.decodeBase64StringTOByte(appKey); appKeyInBytes = aesEncryption.decodeBase64StringTOByte(appKey);
...@@ -383,7 +402,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -383,7 +402,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
PreparedStatement pstmt = null, linePstmt = null, refDataPstmt = null; PreparedStatement pstmt = null, linePstmt = null, refDataPstmt = null;
ResultSet rs = null, lineRs = null, refDataRs = null; ResultSet rs = null, lineRs = null, refDataRs = null;
String tranId = "", tranType = "", tranIdRef = "", ctin = "", posStateCode = "", posStateCodeStr = "", supplyType = ""; String tranId = "", tranType = "", tranIdRef = "", ctin = "", posStateCode = "", supplyType = "";
ArrayList<String> tranIdList = new ArrayList<String>(); ArrayList<String> tranIdList = new ArrayList<String>();
...@@ -429,11 +448,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -429,11 +448,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
try try
{ {
gstr1 = new GSTR1();
gstr1.gstin = gstin;
gstr1.financialPeriod = periodCode;
gstr1.grossTurnOver = Double.valueOf(grossTurnover);
sql = "SELECT * FROM GST_DATA_HDR WHERE PRD_CODE = ? AND SITE_CODE = ? AND SUBMIT_STATUS = 'P' AND REC_TYPE ='1'"; sql = "SELECT * FROM GST_DATA_HDR WHERE PRD_CODE = ? AND SITE_CODE = ? AND SUBMIT_STATUS = 'P' AND REC_TYPE ='1'";
pstmt = conn.prepareStatement(sql); pstmt = conn.prepareStatement(sql);
pstmt.setString(1, periodCode); pstmt.setString(1, periodCode);
...@@ -446,34 +460,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -446,34 +460,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
tranId = checkNullandTrim(rs.getString("TRAN_ID")); tranId = checkNullandTrim(rs.getString("TRAN_ID"));
tranType = checkNullandTrim(rs.getString("TRAN_TYPE")); tranType = checkNullandTrim(rs.getString("TRAN_TYPE"));
ctin = checkNullandTrim(rs.getString("TAX_REG_NO")); ctin = checkNullandTrim(rs.getString("TAX_REG_NO"));
posStateCodeStr = checkNullandTrim(rs.getString("STATE_CODE")); posStateCode = checkNullandTrim(rs.getString("GST_CODE"));
tranIdRef = checkNullandTrim(rs.getString("TRAN_ID__REF")); tranIdRef = checkNullandTrim(rs.getString("TRAN_ID__REF"));
System.out.println("tranId["+tranId+"] tranType["+tranType+"] ctin["+ctin+"] posStateCodeStr["+posStateCodeStr+"] tranIdRef["+tranIdRef+"]"); System.out.println("tranId["+tranId+"] tranType["+tranType+"] ctin["+ctin+"] posStateCode["+posStateCode+"] tranIdRef["+tranIdRef+"]");
if(posStateCodeStr.length() > 0)
{
lineSql = "SELECT GST_CODE FROM STATE WHERE STATE_CODE = ?";
linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, posStateCodeStr);
lineRs = linePstmt.executeQuery();
if(lineRs.next())
{
posStateCode = checkNullandTrim(lineRs.getString("GST_CODE")) ;
}
if(linePstmt != null)
{
linePstmt.close();
linePstmt = null;
}
if(lineRs != null)
{
lineRs.close();
lineRs = null;
}
}
invoices = new ArrayList<Invoice>(); invoices = new ArrayList<Invoice>();
invoice = new Invoice(); invoice = new Invoice();
...@@ -488,16 +478,19 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -488,16 +478,19 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
//tran_type : 01 = B2B invoices, 02 B2BA invoices //tran_type : 01 = B2B invoices, 02 B2BA invoices
if("01".equalsIgnoreCase(tranType) || "02".equalsIgnoreCase(tranType)) if("01".equalsIgnoreCase(tranType) || "02".equalsIgnoreCase(tranType))
{ {
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO "; lineSql = " SELECT (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END) AS 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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END)";
linePstmt = conn.prepareStatement(lineSql); linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId); linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery(); lineRs = linePstmt.executeQuery();
int lineNum = 0;
while(lineRs.next()) while(lineRs.next())
{ {
invLineItem = new InvLineItem(); invLineItem = new InvLineItem();
invLineItem.num = lineRs.getInt("LINE_NO"); invLineItem.num = ++lineNum;
invLineItem.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC"); invLineItem.rate = lineRs.getDouble("RATE");
invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT"); invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT");
invLineItem.iamt = lineRs.getDouble("IGST_AMT"); invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT"); invLineItem.camt = lineRs.getDouble("CGST_AMT");
...@@ -557,16 +550,19 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -557,16 +550,19 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invoice = new Invoice(); invoice = new Invoice();
invLineItems = new ArrayList<InvLineItem>(); invLineItems = new ArrayList<InvLineItem>();
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO "; lineSql = " SELECT (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END) AS 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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END)";
linePstmt = conn.prepareStatement(lineSql); linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId); linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery(); lineRs = linePstmt.executeQuery();
int lineNum = 0;
while(lineRs.next()) while(lineRs.next())
{ {
invLineItem = new InvLineItem(); invLineItem = new InvLineItem();
invLineItem.num = lineRs.getInt("LINE_NO"); invLineItem.num = ++lineNum;
invLineItem.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC"); invLineItem.rate = lineRs.getDouble("RATE");
invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT"); invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT");
invLineItem.iamt = lineRs.getDouble("IGST_AMT"); invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT"); invLineItem.camt = lineRs.getDouble("CGST_AMT");
...@@ -667,18 +663,46 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -667,18 +663,46 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
//tran_type : 07 = CDNR, 08 CDNRA //tran_type : 07 = CDNR, 08 CDNRA
if("07".equalsIgnoreCase(tranType) || "08".equalsIgnoreCase(tranType)) if("07".equalsIgnoreCase(tranType) || "08".equalsIgnoreCase(tranType))
{ {
String reason = "";
Calendar calendar = Calendar.getInstance();
calendar.set(2017, 07, 01);
Date gstStartDate = calendar.getTime();
refDataSql = "SELECT DESCR FROM GENCODES WHERE MOD_NAME = 'W_GSTR' AND FLD_NAME = 'REAS_CODE' AND FLD_VALUE = ?";
refDataPstmt = conn.prepareStatement(refDataSql);
refDataPstmt.setString(1, checkNullandTrim(rs.getString("REAS_CODE")));
refDataRs = refDataPstmt.executeQuery();
if(refDataRs.next())
{
reason = checkNullandTrim(refDataRs.getString("DESCR"));
}
if(refDataPstmt != null)
{
refDataPstmt.close();
refDataPstmt = null;
}
if(refDataRs != null)
{
refDataRs.close();
refDataRs = null;
}
if("07".equalsIgnoreCase(tranType)) if("07".equalsIgnoreCase(tranType))
{ {
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO"; lineSql = " SELECT (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END) AS 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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END)";
linePstmt = conn.prepareStatement(lineSql); linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId); linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery(); lineRs = linePstmt.executeQuery();
int lineNum = 0;
while(lineRs.next()) while(lineRs.next())
{ {
invLineItem = new InvLineItem(); invLineItem = new InvLineItem();
invLineItem.num = lineRs.getInt("LINE_NO"); invLineItem.num = ++lineNum;
invLineItem.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC"); invLineItem.rate = lineRs.getDouble("RATE");
invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT"); invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT");
invLineItem.iamt = lineRs.getDouble("IGST_AMT"); invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT"); invLineItem.camt = lineRs.getDouble("CGST_AMT");
...@@ -706,6 +730,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -706,6 +730,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnDetails.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV")); cdnDetails.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
cdnDetails.invoiceDate = rs.getDate("REF_DATE__INV"); cdnDetails.invoiceDate = rs.getDate("REF_DATE__INV");
cdnDetails.val = rs.getDouble("AMOUNT"); cdnDetails.val = rs.getDouble("AMOUNT");
cdnDetails.reason = reason;
if(rs.getDate("REF_DATE__INV").before(gstStartDate))
{
cdnDetails.isPreGSTInvoice = true;
}
cdnDetails.items = invLineItems; cdnDetails.items = invLineItems;
cdnDetailsList.add(cdnDetails); cdnDetailsList.add(cdnDetails);
...@@ -743,7 +772,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -743,7 +772,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
if("10".equalsIgnoreCase(tranType)) if("10".equalsIgnoreCase(tranType))
{ {
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO "; lineSql = " SELECT (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END) AS 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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END)";
linePstmt = conn.prepareStatement(lineSql); linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId); linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery(); lineRs = linePstmt.executeQuery();
...@@ -751,8 +783,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -751,8 +783,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
while(lineRs.next()) while(lineRs.next())
{ {
invLineItem = new InvLineItem(); invLineItem = new InvLineItem();
invLineItem.rate = lineRs.getDouble("RATE");
invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT"); invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT");
invLineItem.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC");
invLineItem.iamt = lineRs.getDouble("IGST_AMT"); invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT"); invLineItem.camt = lineRs.getDouble("CGST_AMT");
invLineItem.samt = lineRs.getDouble("SGST_AMT"); invLineItem.samt = lineRs.getDouble("SGST_AMT");
...@@ -774,6 +806,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -774,6 +806,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invoice.inum = rs.getString("DOC_NO"); invoice.inum = rs.getString("DOC_NO");
invoice.idt = rs.getDate("DOC_DATE"); invoice.idt = rs.getDate("DOC_DATE");
invoice.val = rs.getDouble("AMOUNT"); invoice.val = rs.getDouble("AMOUNT");
invoice.shippingPortCode = "560101";//TODO need to change harcoded value
invoice.shippingBillNum = checkNullandTrim(rs.getString("LR_NO")); invoice.shippingBillNum = checkNullandTrim(rs.getString("LR_NO"));
invoice.shippingBillDt = rs.getDate("LR_DATE"); invoice.shippingBillDt = rs.getDate("LR_DATE");
invoice.items = invLineItems; invoice.items = invLineItems;
...@@ -795,7 +828,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -795,7 +828,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
if("12".equalsIgnoreCase(tranType)) if("12".equalsIgnoreCase(tranType))
{ {
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO"; lineSql = " SELECT (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END) AS 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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END)";
linePstmt = conn.prepareStatement(lineSql); linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId); linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery(); lineRs = linePstmt.executeQuery();
...@@ -804,8 +840,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -804,8 +840,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{ {
invLineItem = new InvLineItem(); invLineItem = new InvLineItem();
invLineItem.rate = lineRs.getDouble("RATE");
invLineItem.taxval = rs.getDouble("AMOUNT"); invLineItem.taxval = rs.getDouble("AMOUNT");
invLineItem.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC");
invLineItem.iamt = lineRs.getDouble("IGST_AMT"); invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT"); invLineItem.camt = lineRs.getDouble("CGST_AMT");
invLineItem.samt = lineRs.getDouble("SGST_AMT"); invLineItem.samt = lineRs.getDouble("SGST_AMT");
...@@ -839,7 +875,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -839,7 +875,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{ {
invLineItems = new ArrayList<InvLineItem>(); invLineItems = new ArrayList<InvLineItem>();
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO"; lineSql = " SELECT (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END) AS 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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END)";
linePstmt = conn.prepareStatement(lineSql); linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId); linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery(); lineRs = linePstmt.executeQuery();
...@@ -848,8 +887,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -848,8 +887,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{ {
invLineItem = new InvLineItem(); invLineItem = new InvLineItem();
invLineItem.rate = lineRs.getDouble("RATE");
invLineItem.taxval = rs.getDouble("AMOUNT"); invLineItem.taxval = rs.getDouble("AMOUNT");
invLineItem.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC");
invLineItem.iamt = lineRs.getDouble("IGST_AMT"); invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT"); invLineItem.camt = lineRs.getDouble("CGST_AMT");
invLineItem.samt = lineRs.getDouble("SGST_AMT"); invLineItem.samt = lineRs.getDouble("SGST_AMT");
...@@ -877,19 +916,47 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -877,19 +916,47 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
atPaidList.add(at); atPaidList.add(at);
} }
//tran_type : 14 = CDNUR //tran_type : 16 = CDNUR
if("16".equalsIgnoreCase(tranType)) if("16".equalsIgnoreCase(tranType))
{ {
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO"; String reason = "";
Calendar calendar = Calendar.getInstance();
calendar.set(2017, 07, 01);
Date gstStartDate = calendar.getTime();
refDataSql = "SELECT DESCR FROM GENCODES WHERE MOD_NAME = 'W_GSTR' AND FLD_NAME = 'REAS_CODE' AND FLD_VALUE = ?";
refDataPstmt = conn.prepareStatement(refDataSql);
refDataPstmt.setString(1, checkNullandTrim(rs.getString("REAS_CODE")));
refDataRs = refDataPstmt.executeQuery();
if(refDataRs.next())
{
reason = checkNullandTrim(refDataRs.getString("DESCR"));
}
if(refDataPstmt != null)
{
refDataPstmt.close();
refDataPstmt = null;
}
if(refDataRs != null)
{
refDataRs.close();
refDataRs = null;
}
lineSql = " SELECT (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END) AS 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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY (CASE WHEN IGST_PERC IS NULL THEN 0 ELSE IGST_PERC END + CASE WHEN CGST_PERC IS NULL THEN 0 ELSE CGST_PERC END + CASE WHEN SGST_PERC IS NULL THEN 0 ELSE SGST_PERC END)";
linePstmt = conn.prepareStatement(lineSql); linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId); linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery(); lineRs = linePstmt.executeQuery();
int lineNum = 0;
while(lineRs.next()) while(lineRs.next())
{ {
invLineItem = new InvLineItem(); invLineItem = new InvLineItem();
invLineItem.num = lineRs.getInt("LINE_NO"); invLineItem.num = ++lineNum;
invLineItem.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC"); invLineItem.rate = lineRs.getDouble("RATE");
invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT"); invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT");
invLineItem.iamt = lineRs.getDouble("IGST_AMT"); invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT"); invLineItem.camt = lineRs.getDouble("CGST_AMT");
...@@ -918,6 +985,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -918,6 +985,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnur.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV")); cdnur.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
cdnur.invoiceDate = rs.getDate("REF_DATE__INV"); cdnur.invoiceDate = rs.getDate("REF_DATE__INV");
cdnur.val = rs.getDouble("AMOUNT"); cdnur.val = rs.getDouble("AMOUNT");
cdnur.reason = reason;
if(rs.getDate("REF_DATE__INV").before(gstStartDate))
{
cdnur.isPreGSTInvoice = true;
}
cdnur.items = invLineItems; cdnur.items = invLineItems;
cdnurList.add(cdnur); cdnurList.add(cdnur);
...@@ -936,6 +1008,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -936,6 +1008,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
rs = null; rs = null;
} }
if(isDataFound)
{
//HSN summary data will be sent every time //HSN summary data will be sent every time
sql = " SELECT GDD.GS_CODE, GDD.GS_DESCR, GDD.UNIT, SUM(GDD.QUANTITY) AS TOT_QTY, SUM(GDD.TAXABLE_AMT) AS TOT_TAXVAL," sql = " SELECT GDD.GS_CODE, GDD.GS_DESCR, GDD.UNIT, SUM(GDD.QUANTITY) AS TOT_QTY, SUM(GDD.TAXABLE_AMT) AS TOT_TAXVAL,"
+ " SUM(GDD.IGST_AMT) AS TOT_IAMT, SUM(CGST_AMT) AS TOT_CAMT, SUM(SGST_AMT) AS TOT_SAMT, SUM(CESS_AMT) AS TOT_CSAMT" + " SUM(GDD.IGST_AMT) AS TOT_IAMT, SUM(CGST_AMT) AS TOT_CAMT, SUM(SGST_AMT) AS TOT_SAMT, SUM(CESS_AMT) AS TOT_CSAMT"
...@@ -1003,6 +1077,12 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -1003,6 +1077,12 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
docIssuedList.add(docIssued); docIssuedList.add(docIssued);
//TODO need to change END //TODO need to change END
gstr1 = new GSTR1();
gstr1.gstin = gstin;
gstr1.financialPeriod = periodCode;
gstr1.grossTurnOver = Double.valueOf(grossTurnover);
gstr1.currentGrossTurnOver = 20000;//TODO need to calculate
if(b2bInvoiceList.size() > 0) if(b2bInvoiceList.size() > 0)
{ {
gstr1.b2b = b2bInvoiceList; gstr1.b2b = b2bInvoiceList;
...@@ -1064,9 +1144,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -1064,9 +1144,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
gstr1.docIssued = docIssuedList; gstr1.docIssued = docIssuedList;
} }
if(isDataFound)
{
String gspAuthString = "", gspAuthSignature = "", gspAuthStringRet = "", gspAuthSignatureRet = ""; String gspAuthString = "", gspAuthSignature = "", gspAuthStringRet = "", gspAuthSignatureRet = "";
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
...@@ -1319,7 +1396,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -1319,7 +1396,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
fileGstr1DataJsonObj.put("sid", "AMAPT8269L"); fileGstr1DataJsonObj.put("sid", "AMAPT8269L");
long timeStampFile = new Timestamp().getDateTime(); long timeStampFile = new Timestamp().getDateTime();
gspAuthStringFile = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin; gspAuthStringFile = clientId + ":" + transactionId + ":" + timeStampFile + ":" + gstin;
gspAuthSignatureFile = gspSignature.sign(gspAuthStringFile, aspPrivateKey); gspAuthSignatureFile = gspSignature.sign(gspAuthStringFile, aspPrivateKey);
HttpResponse<JsonNode> fileGstr1Resp = Unirest.post(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))
......
...@@ -42,6 +42,10 @@ abstract class BaseSerializer<T extends BaseData> extends JsonSerializer<T> ...@@ -42,6 +42,10 @@ abstract class BaseSerializer<T extends BaseData> extends JsonSerializer<T>
} }
else else
{ {
if(inv.shippingPortCode != null)
{
json.writeStringField("sbpcode",inv.shippingPortCode);
}
if(inv.shippingBillNum != null) if(inv.shippingBillNum != null)
{ {
json.writeStringField("sbnum", inv.shippingBillNum); json.writeStringField("sbnum", inv.shippingBillNum);
......
...@@ -47,6 +47,8 @@ public class CDNRSerializer extends JsonSerializer<CDNR> ...@@ -47,6 +47,8 @@ public class CDNRSerializer extends JsonSerializer<CDNR>
json.writeStringField("inum", cdnDetails.invoiceNumber); json.writeStringField("inum", cdnDetails.invoiceNumber);
json.writeStringField("idt", gstFmt.format(cdnDetails.invoiceDate)); json.writeStringField("idt", gstFmt.format(cdnDetails.invoiceDate));
json.writeNumberField("val", cdnDetails.val); json.writeNumberField("val", cdnDetails.val);
json.writeStringField("rsn", cdnDetails.reason);
json.writeStringField("p_gst", cdnDetails.isPreGSTInvoice ? "Y" : "N");
writeCDNLineItems(cdnDetails, json); writeCDNLineItems(cdnDetails, json);
......
...@@ -27,6 +27,8 @@ public class CDNURSerializer extends JsonSerializer<CDNUR> ...@@ -27,6 +27,8 @@ public class CDNURSerializer extends JsonSerializer<CDNUR>
json.writeStringField("inum", cdnur.invoiceNumber); json.writeStringField("inum", cdnur.invoiceNumber);
json.writeStringField("idt", gstFmt.format(cdnur.invoiceDate)); json.writeStringField("idt", gstFmt.format(cdnur.invoiceDate));
json.writeNumberField("val", cdnur.val); json.writeNumberField("val", cdnur.val);
json.writeStringField("rsn", cdnur.reason);
json.writeStringField("p_gst", cdnur.isPreGSTInvoice ? "Y" : "N");
writeLineItems(cdnur.items, json); writeLineItems(cdnur.items, json);
......
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