Commit dc5cd898 authored by steurwadkar's avatar steurwadkar

F17ABAS001 source code commit


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@106160 ce508802-f39f-4f6c-b175-0d175dae99d5
parent f6e47871
......@@ -428,8 +428,6 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
authSEK = aesEncryption.decrypt(sek, appKeyInBytes);
System.out.println("AuthSEK = "+ aesEncryption.encodeBase64String(authSEK));
retXML += getGstr1Summary(authToken, stateCode, userName, gstinNo, periodCode, authSEK, appKeyEncryptedAndCoded, conn);
retXML += downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, authSEK);
}
else
{
......@@ -448,7 +446,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
}
else if(authTokenResp.getStatus() == 500)
{
errMsg = "Message : Server error occurred at GSTN server \nResponse code : 500";
errMsg = "Message : Error occurred at GSTN server \nResponse code : 500";
errorXML = getError(errMsg, "GSTAPIERR", conn);
}
else
......@@ -457,6 +455,19 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
errorXML = getError(errMsg, "GSTAPIERR", conn);
}
if("GSTR1".equalsIgnoreCase(returnType))
{
if("SUBMIT".equalsIgnoreCase(action))
{
retXML += getGstr1Summary(authToken, stateCode, userName, gstinNo, periodCode, authSEK, appKeyEncryptedAndCoded, conn);
retXML += downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, authSEK);
}
else if("FILE".equalsIgnoreCase(action))
{
retXML += getGstr1Summary(authToken, stateCode, userName, gstinNo, periodCode, authSEK, appKeyEncryptedAndCoded, conn);
}
}
valueXmlString.append("<Detail2 domID='1'>");
valueXmlString.append("<auth_token><![CDATA["+ authToken +"]]></auth_token>");
......@@ -646,6 +657,32 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
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 = 'T' 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;
}
}
if("FILE".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);
......@@ -670,6 +707,29 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
rs.close();
rs = null;
}
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = '1' AND SUBMIT_STATUS = 'R' 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( "VTGSTFILE" );
errFields.add("returns_type");
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
}
}
break;
......@@ -884,7 +944,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
{
StringBuffer retStringBuff = new StringBuffer();
String[] gstr1Section = {"B2B","B2CL","B2CS","CDNR","AT","TXP","NIL","EXP","HSNSUM"};
String[] gstr1Section = {"B2B","B2CL","B2CS","CDNR","AT","TXP","NIL","EXP","HSNSUM","CDNUR"};
String gspAuthString = "", gspAuthSignature = "";
try
......@@ -962,6 +1022,13 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
retStringBuff.append(cdnrXML);
retStringBuff.append("</cdnr_data>");
}
else if("CDNUR".equalsIgnoreCase(action))
{
String cdnurXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<cdnur_data>");
retStringBuff.append(cdnurXML);
retStringBuff.append("</cdnur_data>");
}
else if("AT".equalsIgnoreCase(action))
{
String atXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
......@@ -1083,7 +1150,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
else
{
JSONObject errorJSON = getGstr1SumryResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
......
......@@ -417,11 +417,12 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
boolean isDataFound = false;
String udfStr1 = "", udfStr2 = "", udfStr3 = "";
String sql = "", lineSql = "", refDataSql = "";
PreparedStatement pstmt = null, linePstmt = null, refDataPstmt = null;
ResultSet rs = null, lineRs = null, refDataRs = null;
String tranId = "", tranType = "", tranIdRef = "", ctin = "", posStateCode = "", supplyType = "";
String tranId = "", tranType = "", tranIdRef = "", ctin = "", posStateCode = "";
ArrayList<String> tranIdList = new ArrayList<String>();
......@@ -489,13 +490,36 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invLineItems = new ArrayList<InvLineItem>();
cdnDetailsList = new ArrayList<CDNDetails>();
if(invoicesHMap.containsKey(ctin+"~"+tranType))
lineSql = "SELECT UDF_STR1, UDF_STR2, UDF_STR3 FROM GENCODES WHERE MOD_NAME='W_GSTR' AND FLD_NAME='TRAN_TYPE' AND FLD_VALUE = ? ";
linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranType);
lineRs = linePstmt.executeQuery();
if(lineRs.next())
{
udfStr1 = checkNullandTrim(lineRs.getString("UDF_STR1"));
udfStr2 = checkNullandTrim(lineRs.getString("UDF_STR2"));
udfStr3 = checkNullandTrim(lineRs.getString("UDF_STR3"));
}
if(linePstmt!=null)
{
linePstmt.close();
linePstmt=null;
}
if(lineRs!=null)
{
lineRs.close();
lineRs=null;
}
if(invoicesHMap.containsKey(ctin+"~"+udfStr1))
{
invoices = invoicesHMap.get(ctin+"~"+tranType);
invoices = invoicesHMap.get(ctin+"~"+udfStr1);
}
//tran_type : 01 = B2B invoices, 02 B2BA invoices
if("01".equalsIgnoreCase(tranType) || "02".equalsIgnoreCase(tranType))
//tran_type : 01,02,03,08,09,10 = B2B invoices
if("B2B".equalsIgnoreCase(udfStr1))
{
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 "
......@@ -532,22 +556,22 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invoice.inum = rs.getString("DOC_NO");
invoice.idt = rs.getDate("DOC_DATE");
invoice.val = rs.getDouble("AMOUNT");
invoice.invoiceType = udfStr2;
invoice.pos = posStateCode;
invoice.invoiceType = checkNullandTrim(rs.getString("DOC_TYPE"));
invoice.rchrg = "Y".equalsIgnoreCase(rs.getString("REVERSE_CHRG"));
invoice.etin = rs.getString("ECOM_REG_NO");
invoice.items = invLineItems;
invoices.add(invoice);
invoicesHMap.put(ctin+"~"+tranType, invoices);
invoicesHMap.put(ctin+"~"+udfStr1, invoices);
if("01".equalsIgnoreCase(tranType))
if("B2B".equalsIgnoreCase(udfStr1))
{
b2b = new B2B();
if(invTypObjHMap.containsKey(ctin+"~"+tranType))
if(invTypObjHMap.containsKey(ctin+"~"+udfStr1))
{
b2b = (B2B)invTypObjHMap.get(ctin+"~"+tranType);
b2b = (B2B)invTypObjHMap.get(ctin+"~"+udfStr1);
if(b2bInvoiceList.contains(b2b))
{
int index = b2bInvoiceList.indexOf(b2b);
......@@ -558,12 +582,12 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
b2b.isReverseCharge = true;
b2b.invoices = invoices;
invTypObjHMap.put(ctin+"~"+tranType, b2b);
invTypObjHMap.put(ctin+"~"+udfStr1, b2b);
b2bInvoiceList.add(b2b);
}
}
//tran_type : 03 = B2CL invoices, 04 B2CLA invoices
if("03".equalsIgnoreCase(tranType) || "04".equalsIgnoreCase(tranType))
//tran_type : 04, 05 = B2CL invoices
if("B2CL".equalsIgnoreCase(udfStr1))
{
invoices = new ArrayList<Invoice>();
invoice = new Invoice();
......@@ -609,7 +633,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invoices.add(invoice);
if("03".equalsIgnoreCase(tranType))
if("B2CL".equalsIgnoreCase(udfStr1))
{
b2cl = new B2CL();
b2cl.isReverseCharge = false;
......@@ -619,8 +643,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
b2clInvoiceList.add(b2cl);
}
}
//tran_type : 05 = B2CS invoices, 06 B2CSA invoices
if("05".equalsIgnoreCase(tranType) || "06".equalsIgnoreCase(tranType))
//tran_type : 11,12,13,14 = B2CS invoices, 37,38,39,40 = B2CSA invoices
if("B2CS".equalsIgnoreCase(udfStr1) || "B2CSA".equalsIgnoreCase(udfStr1))
{
lineSql = "SELECT * FROM GST_DATA_DET WHERE TRAN_ID = ? ORDER BY LINE_NO ";
......@@ -630,33 +654,13 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
while(lineRs.next())
{
if("05".equalsIgnoreCase(tranType))
if("05".equalsIgnoreCase(udfStr1))
{
b2cs = new B2CS();
refDataSql = "SELECT DESCR FROM GENCODES WHERE MOD_NAME = 'W_GSTR' AND FLD_NAME = 'SUPPLY_TYPE' AND FLD_VALUE = ?";
refDataPstmt = conn.prepareStatement(refDataSql);
refDataPstmt.setString(1, checkNullandTrim(lineRs.getString("SUPPLY_TYPE")));
refDataRs = refDataPstmt.executeQuery();
if(refDataRs.next())
{
supplyType = checkNullandTrim(refDataRs.getString("DESCR"));
}
if(refDataPstmt != null)
{
refDataPstmt.close();
refDataPstmt = null;
}
if(refDataRs != null)
{
refDataRs.close();
refDataRs = null;
}
b2cs.supplyType = checkNullandTrim(rs.getString("DOC_TYPE"));
b2cs.supplyType = udfStr2;
b2cs.txval = lineRs.getDouble("TAXABLE_AMT");
b2cs.typ = supplyType;
b2cs.typ = udfStr3;
b2cs.etin = rs.getString("ECOM_REG_NO");
b2cs.pos = posStateCode;
b2cs.rate = lineRs.getDouble("IGST_PERC")+lineRs.getDouble("CGST_PERC")+lineRs.getDouble("SGST_PERC");
......@@ -679,8 +683,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
lineRs = null;
}
}
//tran_type : 07 = CDNR, 08 CDNRA
if("07".equalsIgnoreCase(tranType) || "08".equalsIgnoreCase(tranType))
//tran_type : 29,30 = CDNR, 33,34 = CDNRA
if("CDNR".equalsIgnoreCase(udfStr1) || "CDNRA".equalsIgnoreCase(udfStr1))
{
String reason = "";
Calendar calendar = Calendar.getInstance();
......@@ -707,7 +711,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
refDataRs = null;
}
if("07".equalsIgnoreCase(tranType))
if("CDNR".equalsIgnoreCase(udfStr1))
{
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 "
......@@ -743,7 +747,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnDetails = new CDNDetails();
cdnDetails.cdnNoteType = checkNullandTrim(rs.getString("DOC_TYPE"));
cdnDetails.cdnNoteType = udfStr2;
cdnDetails.cdNoteNumber = checkNullandTrim(rs.getString("DOC_NO"));
cdnDetails.cdNoteDate = rs.getDate("DOC_DATE");
cdnDetails.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
......@@ -761,34 +765,34 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnr = new CDNR();
cdnr.isReverseCharge = false;
cdnr.ctin = ctin;
cdnr.customerFilingStatus = false;//TODO Need to change cfs value
cdnr.customerFilingStatus = false;//TODO Need to change cfs value hardcoded to false as no information available
cdnr.cdnDetails = cdnDetailsList;
cdnrList.add(cdnr);
}
}
//tran_type : 09 = Nil Supplies
if("09".equalsIgnoreCase(tranType))
//tran_type : 15,16,17,18,19,20,21,22,23,24,25,26 = Nil Supplies
/*if("NIL".equalsIgnoreCase(udfStr1))
{
invoice.supplyType = "INTRB2B"; //TODO need to change
invoice.supplyType = "INTRB2B";
invoice.totalNilAmount = rs.getDouble("AMOUNT");
invoice.totalExemptedAmount = 123.45; //TODO need to change
invoice.totalNonGSTAmout = 1258.5; //TODO need to change
invoice.totalExemptedAmount = 123.45;
invoice.totalNonGSTAmout = 1258.5;
invoices.add(invoice);
nil = new Nil();
nil.invoices = invoices;
}
//tran_type : 10 = Exports and tran_type : 11 = Exports amendments
if("10".equalsIgnoreCase(tranType) || "11".equalsIgnoreCase(tranType))
}*/
//tran_type : 06,07 = Exports and tran_type : 27,28 = Exports amendments
if("EXP".equalsIgnoreCase(udfStr1) || "EXPA".equalsIgnoreCase(udfStr1))
{
invoices = new ArrayList<Invoice>();
invoice = new Invoice();
invLineItems = new ArrayList<InvLineItem>();
if("10".equalsIgnoreCase(tranType))
if("EXP".equalsIgnoreCase(udfStr1))
{
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 "
......@@ -825,7 +829,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
invoice.inum = rs.getString("DOC_NO");
invoice.idt = rs.getDate("DOC_DATE");
invoice.val = rs.getDouble("AMOUNT");
invoice.shippingPortCode = "560101";//TODO need to change harcoded value
invoice.shippingPortCode = checkNullandTrim(rs.getString("ORDER_NO"));
invoice.shippingBillNum = checkNullandTrim(rs.getString("LR_NO"));
invoice.shippingBillDt = rs.getDate("LR_DATE");
invoice.items = invLineItems;
......@@ -834,18 +838,18 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
exp = new EXP();
exp.isReverseCharge = false;
exp.exportType = checkNullandTrim(rs.getString("DOC_TYPE"));
exp.exportType = udfStr2;
exp.invoices = invoices;
expInvoiceList.add(exp);
}
}
//tran_type : 12 = Advance Tax and tran_type : 13 = Adv. Tax amendments
if("12".equalsIgnoreCase(tranType) || "13".equalsIgnoreCase(tranType))
//tran_type : 41,42 = Advance Tax and tran_type : 45,46 = Adv. Tax amendments
if("AT".equalsIgnoreCase(udfStr1) || "ATA".equalsIgnoreCase(udfStr1))
{
invLineItems = new ArrayList<InvLineItem>();
if("12".equalsIgnoreCase(tranType))
if("AT".equalsIgnoreCase(udfStr1))
{
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 "
......@@ -883,14 +887,14 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
at.isReverseCharge = false;
at.pos = posStateCode;
at.supplyType = checkNullandTrim(rs.getString("DOC_TYPE"));
at.supplyType = udfStr2;
at.itms = invLineItems;
atList.add(at);
}
}
//tran_type : 14 = Advance Tax paid
if("14".equalsIgnoreCase(tranType))
//tran_type : 43,44 = Advance Tax paid and tran_type : 47,48 Advance Tax paid amendments
if("AT".equalsIgnoreCase(udfStr1))
{
invLineItems = new ArrayList<InvLineItem>();
......@@ -930,13 +934,13 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
at.isReverseCharge = false;
at.pos = posStateCode;
at.supplyType = checkNullandTrim(rs.getString("DOC_TYPE"));
at.supplyType = udfStr2;
at.itms = invLineItems;
atPaidList.add(at);
}
//tran_type : 16 = CDNUR
if("16".equalsIgnoreCase(tranType))
//tran_type : 31,32 = CDNUR and tran_type : 35,36 = CDNURA
if("CDNUR".equalsIgnoreCase(udfStr1))
{
String reason = "";
Calendar calendar = Calendar.getInstance();
......@@ -998,7 +1002,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnur = new CDNUR();
cdnur.isReverseCharge = false;
cdnur.customerType = "B2CL";//TODO need to change typ value
cdnur.cdnNoteType = checkNullandTrim(rs.getString("DOC_TYPE"));
cdnur.cdnNoteType = udfStr2;
cdnur.cdNoteNumber = checkNullandTrim(rs.getString("DOC_NO"));
cdnur.cdNoteDate = rs.getDate("DOC_DATE");
cdnur.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
......@@ -1029,15 +1033,48 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
if(isDataFound)
{
//NIL data summary
//tran_type : 15,16,17,18,19,20,21,22,23,24,25,26 = Nil Supplies
invoices = new ArrayList<Invoice>();
Invoice interB2BNilInv = getNilRateSummary("INTRB2B", "15", "16", "17", siteCode, periodCode, conn);
Invoice intraB2BNilInv = getNilRateSummary("INTRAB2B", "18", "19", "20", siteCode, periodCode, conn);
Invoice interB2CNilInv = getNilRateSummary("INTRB2C", "21", "22", "23", siteCode, periodCode, conn);
Invoice intraB2CNilInv = getNilRateSummary("INTRAB2C", "24", "25", "26", siteCode, periodCode, conn);
if(interB2BNilInv != null)
{
invoices.add(interB2BNilInv);
}
if(intraB2BNilInv != null)
{
invoices.add(intraB2BNilInv);
}
if(interB2CNilInv != null)
{
invoices.add(interB2CNilInv);
}
if(intraB2CNilInv != null)
{
invoices.add(intraB2CNilInv);
}
if(invoices.size() > 0)
{
nil = new Nil();
nil.invoices = invoices;
}
//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,"
+ " 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"
+ " FROM GST_DATA_HDR GDH, GST_DATA_DET GDD"
+ " WHERE GDH.TRAN_ID = GDD.TRAN_ID AND GDD.GS_CODE IS NOT NULL "
+ " AND GDH.PRD_CODE = ?"
+ " WHERE GDH.TRAN_ID = GDD.TRAN_ID AND GDD.GS_CODE IS NOT NULL AND GDH.REC_TYPE='1'"
+ " AND GDH.SITE_CODE = ? AND GDH.PRD_CODE = ?"
+ " GROUP BY GDD.GS_CODE, GDD.GS_DESCR, GDD.UNIT";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, periodCode);
pstmt.setString(1, siteCode);
pstmt.setString(2, periodCode);
rs = pstmt.executeQuery();
while (rs.next())
......@@ -1049,7 +1086,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
hsnDetails.description = checkNullandTrim(rs.getString("GS_DESCR"));
hsnDetails.unitOfMeasure = checkNullandTrim(rs.getString("UNIT"));
hsnDetails.quantity = rs.getDouble("TOT_QTY");
hsnDetails.totalAmount = rs.getDouble("TOT_TAXVAL"); // TODO need to change
hsnDetails.totalAmount = rs.getDouble("TOT_TAXVAL");
hsnDetails.totalTaxableAmount = rs.getDouble("TOT_TAXVAL");
hsnDetails.totalIGSTAmount = rs.getDouble("TOT_IAMT");
hsnDetails.totalCGSTAmount = rs.getDouble("TOT_CAMT");
......@@ -1076,7 +1113,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
}
//TODO need to change START
docDetails = new DocDetails();
/*docDetails = new DocDetails();
docDetails.docNum = 1;
docDetails.fromSerialNo = "1";
......@@ -1093,9 +1130,30 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
docIssued.docDescr = "Invoices for outward supply";
docIssued.docDetails = docDetailsList;
docIssuedList.add(docIssued);
docIssuedList.add(docIssued);*/
//TODO need to change END
/*double currentYearTurnOver = 0.0;
sql = "SELECT SUM(AMOUNT) AS AMOUNT FROM GST_DATA_HDR WHERE REC_TYPE = '1' AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
currentYearTurnOver = rs.getDouble("AMOUNT");
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}*/
gstr1 = new GSTR1();
gstr1.gstin = gstin;
gstr1.financialPeriod = periodCode;
......@@ -1190,7 +1248,7 @@ 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", GSP_API_URL, GSTR1_URL_V3))
HttpResponse<JsonNode> gstr1Resp = Unirest.put(String.format("%s/%s", GST_API_URL, GSTR1_URL_V3))
.header("Content-Type", APPLICATION_JSON)
.header("clientid", clientId)
.header("client-secret", clientSecret)
......@@ -1309,7 +1367,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
else
{
JSONObject errorJSON = retStatusResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
break;
}
......@@ -1325,7 +1383,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
else
{
JSONObject errorJSON = gstr1Resp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
......@@ -1477,7 +1535,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
else
{
JSONObject errorJSON = getGstr1SumryResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
......@@ -1567,7 +1625,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
else
{
JSONObject errorJSON = gstr1SubmitResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
......@@ -1584,54 +1642,73 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
String retString = "";
String errMsg = "", gspAuthString = "", gspAuthSignature = "";
ObjectMapper objectMapper = new ObjectMapper();
String[] gstr2Section = {"B2B","IMPG","IMPS","CDN","NIL","TXLI","TXP","B2BUR","ITCRVSL","CDNUR"};
String transactionId = UUID.randomUUID().toString().replaceAll("-", "");
try
{
long timeStamp = new Timestamp().getDateTime();
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpResponse<JsonNode> getGstr2InvoicesResp = Unirest.get(String.format("%s/%s", GSP_API_URL, GSTR2_URL_V3))
.queryString("action", "B2B")
.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("getGstr2InvoicesResp Request : Status[%s] Response[%s]", getGstr2InvoicesResp.getStatus(), getGstr2InvoicesResp.getBody()));
if (getGstr2InvoicesResp.getStatus() == 200)
{
JSONObject getGstr2InvoicesRespObj = getGstr2InvoicesResp.getBody().getObject();
if(getGstr2InvoicesRespObj.has("data") && getGstr2InvoicesRespObj.has("rek"))
for(String action : gstr2Section)
{
System.out.println("calling for ["+action+"]");
long timeStamp = new Timestamp().getDateTime();
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))
.queryString("action", action)
.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("getGstr2InvoicesResp Request : Status[%s] Response[%s]", getGstr2InvoicesResp.getStatus(), getGstr2InvoicesResp.getBody()));
if (getGstr2InvoicesResp.getStatus() == 200)
{
String gstr2InvoicesData = getGstr2InvoicesRespObj.getString("data");
String gstr2InvoicesRek = getGstr2InvoicesRespObj.getString("rek");
JSONObject getGstr2InvoicesRespObj = getGstr2InvoicesResp.getBody().getObject();
if(getGstr2InvoicesRespObj.has("data") && getGstr2InvoicesRespObj.has("rek"))
{
String gstr2InvoicesData = getGstr2InvoicesRespObj.getString("data");
String gstr2InvoicesRek = getGstr2InvoicesRespObj.getString("rek");
byte[] apiEK = aesEncryption.decrypt(gstr2InvoicesRek, authSEK);
String respJsoninBase64 = new String(aesEncryption.decrypt(gstr2InvoicesData, apiEK));
byte[] apiEK = aesEncryption.decrypt(gstr2InvoicesRek, authSEK);
String respJsoninBase64 = new String(aesEncryption.decrypt(gstr2InvoicesData, apiEK));
byte[] respJsonInBytes = aesEncryption.decodeBase64StringTOByte(respJsoninBase64);
JSONObject gstr2InvoiceJsonObj = new JSONObject(new String(respJsonInBytes));
byte[] respJsonInBytes = aesEncryption.decodeBase64StringTOByte(respJsoninBase64);
JSONObject gstr2InvoiceJsonObj = new JSONObject(new String(respJsonInBytes));
System.out.println("respJsonInBytes["+new String(respJsonInBytes)+"]");
saveDownloadedData(siteCode, gstr2InvoiceJsonObj, conn);
System.out.println("respJsonInBytes["+new String(respJsonInBytes)+"]");
if("B2B".equalsIgnoreCase(action))
{
/*B2B b2b = objectMapper.readValue(new String(respJsonInBytes), B2B.class);
System.out.println("b2b.ctin["+b2b.ctin+"]");*/
saveB2BInvoiceData(siteCode, gstr2InvoiceJsonObj, conn);
}
}
else
{
JSONObject errorJSON = getGstr2InvoicesResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
else
{
......@@ -1639,13 +1716,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
else
{
JSONObject errorJSON = getGstr2InvoicesResp.getBody().getObject().getJSONObject("error");
errMsg = "Message : "+errorJSON.getString("desc")+" \nError code : "+errorJSON.getString("code");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
}
catch(Exception e)
{
......@@ -1656,7 +1727,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
return retString;
}
private void saveDownloadedData(String siteCode,JSONObject gstr2InvoiceJsonObj, Connection conn) throws ITMException
private void saveB2BInvoiceData(String siteCode, JSONObject gstr2InvoiceJsonObj, Connection conn) throws ITMException
{
JSONArray b2bInvArry = new JSONArray();
JSONObject b2bJsonObj = new JSONObject();
......@@ -1664,15 +1735,15 @@ 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, stateCode="", gstStateCode;
String lineType, hsnSC;
String tranId = "", cptyGSTIN = "", iNum = "", iDate = "", reversCharge = "", docCheckSum = "", gstStateCode = "";
String itcType = "";
int lineNo;
double amount, lineAmt, irt, iamt, crt, camt, srt, samt, csrt, csamt;
String hdrSql, detSql, dataSql;
PreparedStatement hdrPstmt, detPstmt, dataPstmt;
ResultSet dataRs;
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;
String hdrSql = "", detSql = "";
PreparedStatement hdrPstmt = null, detPstmt = null;
try
{
......@@ -1695,35 +1766,15 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
docCheckSum = b2bInvJsonObj.getString("chksum");
reversCharge = b2bInvJsonObj.getString("rchrg");
gstStateCode = b2bInvJsonObj.getString("pos");
dataSql = "SELECT STATE_CODE FROM STATE WHERE GST_CODE = ? ";
dataPstmt = conn.prepareStatement(dataSql);
dataPstmt.setString(1, gstStateCode);
dataRs = dataPstmt.executeQuery();
if(dataRs.next())
{
stateCode = checkNullandTrim(dataRs.getString("STATE_CODE"));
}
if(dataPstmt != null)
{
dataPstmt.close();
dataPstmt = null;
}
if(dataRs != null)
{
dataRs.close();
dataRs = null;
}
tranId = generateTranId("w_gstr_purc","","",conn);
hdrSql = "INSERT INTO GST_DATA_HDR (TRAN_ID, TRAN_DATE, REC_TYPE, TRAN_TYPE, STATE_CODE, SUBMIT_STATUS, DOC_CHECKSUM, DOC_NO, DOC_DATE, AMOUNT, REVERSE_CHRG, TAX_REG_NO, SITE_CODE) "
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, stateCode);
hdrPstmt.setString(3, gstStateCode);
hdrPstmt.setString(4, docCheckSum);
hdrPstmt.setString(5, iNum);
hdrPstmt.setString(6, iDate);
......@@ -1751,22 +1802,17 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
JSONObject tempJSONObj = b2bInvLineItemObj.getJSONObject("itm_det");
lineType = tempJSONObj.getString("ty");
rate = tempJSONObj.getDouble("rt");
lineAmt = tempJSONObj.getDouble("txval");
hsnSC = tempJSONObj.getString("hsn_sc");
irt = tempJSONObj.getDouble("irt");
iamt = tempJSONObj.getDouble("iamt");
crt = tempJSONObj.getDouble("crt");
camt = tempJSONObj.getDouble("camt");
srt = tempJSONObj.getDouble("srt");
samt = tempJSONObj.getDouble("samt");
csrt = tempJSONObj.getDouble("csrt");
csamt = tempJSONObj.getDouble("csamt");
tempJSONObj = b2bInvLineItemObj.getJSONObject("itc");
detPstmt.setString(1, tranId);
detPstmt.setInt(2, lineNo);
detPstmt.setString(3, lineType);
detPstmt.setString(4, hsnSC);
detPstmt.setDouble(5, lineAmt);
detPstmt.setDouble(6, irt);
detPstmt.setDouble(7, iamt);
......@@ -1813,7 +1859,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
for(String tranId : tranIdList)
{
pstmtUpd.setString(1, "S");
pstmtUpd.setString(1, "T");
pstmtUpd.setString(2, new SimpleDateFormat(new E12GenericUtility().getApplDateFormat()).format(new Date()));
pstmtUpd.setString(3, tranId);
......@@ -1941,6 +1987,79 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
return retString;
}
private Invoice getNilRateSummary(String supplyType, String nilAmtTranType, String exmptAmtTranType, String nonGSTAmtTranType, String siteCode, String periodCode, Connection conn)
{
Invoice invoice = null;
double nilAmount = 0.0, exemtAmount = 0.0, nonGSTAmount = 0.0;
String sql= "";
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
sql = " SELECT TRAN_TYPE,SUM(AMOUNT) AS AMOUNT FROM GST_DATA_HDR "
+ " WHERE REC_TYPE = '1' AND TRAN_TYPE in (?,?,?) AND SITE_CODE = ? AND PRD_CODE = ?"
+ " GROUP BY TRAN_TYPE";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, nilAmtTranType);
pstmt.setString(2, exmptAmtTranType);
pstmt.setString(3, nonGSTAmtTranType);
pstmt.setString(4, siteCode);
pstmt.setString(5, periodCode);
rs = pstmt.executeQuery();
while(rs.next())
{
if(invoice == null)
{
invoice = new Invoice();
}
if(nilAmtTranType.equalsIgnoreCase(rs.getString("TRAN_TYPE")))
{
nilAmount = rs.getDouble("AMOUNT");
}
if(exmptAmtTranType.equalsIgnoreCase(rs.getString("TRAN_TYPE")))
{
exemtAmount = rs.getDouble("AMOUNT");
}
if(nonGSTAmtTranType.equalsIgnoreCase(rs.getString("TRAN_TYPE")))
{
nonGSTAmount = rs.getDouble("AMOUNT");
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
if(invoice != null)
{
invoice.supplyType = supplyType;
invoice.totalNilAmount = nilAmount;
invoice.totalExemptedAmount = exemtAmount;
invoice.totalNonGSTAmout = nonGSTAmount;
}
}
catch(Exception e)
{
System.out.println("GSTDataSubmitWizPos.getNilRateSummary()["+e.getMessage()+"]");
e.printStackTrace();
}
return invoice;
}
private static String checkNullandTrim(String input)
{
if (input==null)
......
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