Commit d8422bc9 authored by steurwadkar's avatar steurwadkar

F17ABAS001 GST API integration wizard soucr code commit

git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@139909 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 94fb4cdd
......@@ -7,6 +7,8 @@ import ibase.webitm.util.gst.NilInwardSerializer;
@JsonSerialize(using = NilInwardSerializer.class)
public class NilInwardSupplies
{
public String taxPayerAction;
public InterNilSupplies interNilSupplies;
public IntraNilSupplies intraNilSupplies;
......
......@@ -1062,16 +1062,8 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTNOGSDATA";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'S' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
......@@ -1086,16 +1078,8 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTSUBALRDY";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'R' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
......@@ -1110,18 +1094,9 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTFILALRDY";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
}
if("SUBMIT".equalsIgnoreCase(dataAction))
else if("SUBMIT".equalsIgnoreCase(dataAction))
{
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'S' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
......@@ -1137,16 +1112,8 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTSUBALRDY";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'T' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
......@@ -1161,16 +1128,8 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTNORECSAV";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'R' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
......@@ -1185,18 +1144,9 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTFILALRDY";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
}
if("FILE".equalsIgnoreCase(dataAction))
else if("FILE".equalsIgnoreCase(dataAction))
{
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'S' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
......@@ -1212,16 +1162,8 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTGSTSUBPN";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'R' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
......@@ -1236,18 +1178,9 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTGSTFILE";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
}
if("GETINV".equalsIgnoreCase(dataAction) && !"GSTR2A".equalsIgnoreCase(recordType))
else if("GETINV".equalsIgnoreCase(dataAction) && !"GSTR2A".equalsIgnoreCase(recordType))
{
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS IN ('T','S','R') AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
......@@ -1263,16 +1196,88 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTNORECSAV";
}
}
if(pstmt!=null)
closeResources(rs, pstmt);
}
else if("DELETE".equalsIgnoreCase(dataAction))
{
int saveRecCnt = 0;
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'T' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
pstmt.setString(2, periodCode);
pstmt.setString(3, siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
pstmt.close();
pstmt = null;
saveRecCnt = rs.getInt("CNT");
if(saveRecCnt == 0)
{
isDataError = true;
errorCode = "VTNORECDEL";
}
}
if(rs!=null)
closeResources(rs, pstmt);
if(saveRecCnt == 0)
{
rs.close();
rs = null;
int pendRecDnt = 0;
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'P' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
pstmt.setString(2, periodCode);
pstmt.setString(3, siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
pendRecDnt = rs.getInt("CNT");
if(pendRecDnt == 0)
{
isDataError = true;
errorCode = "VTNDGSDATA";
}
else
{
isDataError = true;
errorCode = "VTPENGSDAT";
}
}
closeResources(rs, pstmt);
}
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'S' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
pstmt.setString(2, periodCode);
pstmt.setString(3, siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
if(rs.getInt("CNT") > 0)
{
isDataError = true;
errorCode = "VTSUBALRDY";
}
}
closeResources(rs, pstmt);
sql = "SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = 'R' AND PRD_CODE = ? AND SITE_CODE = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, recType);
pstmt.setString(2, periodCode);
pstmt.setString(3, siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
if(rs.getInt("CNT") > 0)
{
isDataError = true;
errorCode = "VTFILALRDY";
}
}
closeResources(rs, pstmt);
}
if(!isDataError)
......@@ -1366,16 +1371,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
{
dataErrMsg = rs.getString("MSG_DESCR");
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
retResponseXML = "<root><message><![CDATA[Message : "+dataErrMsg+"]]></message></root>";
}
......@@ -1415,16 +1411,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
stateCode = checkNull(rs.getString("GST_CODE"));
stateDescr = checkNull(rs.getString("DESCR"));
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
retResponseXML = "<root><Detail1>"
+ "<site_descr><![CDATA["+siteDescr+"]]></site_descr>"
......@@ -1457,16 +1444,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
errorCode = "VTNOGSDATA";
}
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
{
rs.close();
rs = null;
}
closeResources(rs, pstmt);
if(!isDataError)
{
......@@ -1484,12 +1462,12 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
{
dataErrMsg = rs.getString("MSG_DESCR");
}
if(pstmt!=null)
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs!=null)
if(rs != null)
{
rs.close();
rs = null;
......@@ -1510,6 +1488,16 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
{
try
{
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
if(!conn.isClosed() && conn != null)
{
conn.close();
......
......@@ -532,7 +532,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
if("SAVE".equalsIgnoreCase(action))
{
retString = createGstr1Json( siteCode, grossTurnover, currentYearTurnover, xtraParams, conn);
retString = createGstr1Json( siteCode, grossTurnover, currentYearTurnover, xtraParams, conn);
}
else if ("SUBMIT".equalsIgnoreCase(action))
{
......@@ -542,6 +542,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
retString = fileGstr("1", summaryData, signedData, panNo, aadhaarNo, signMethod, xtraParams, conn);
}
else if("DELETE".equalsIgnoreCase(action))
{
retString = createDeleteGstr1Json( siteCode, grossTurnover, currentYearTurnover, xtraParams, conn);
}
}
else if("GSTR2A".equalsIgnoreCase(returnsType))
{
......@@ -568,6 +572,10 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
retString = fileGstr("2", summaryData, signedData, panNo, aadhaarNo, signMethod, xtraParams, conn);
}
else if("DELETE".equalsIgnoreCase(action))
{
retString = createDeleteGstr2Json( siteCode, xtraParams, conn);
}
}
else if("GSTR3B".equalsIgnoreCase(returnsType))
{
......@@ -926,7 +934,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnDetails.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
cdnDetails.invoiceDate = rs.getDate("REF_DATE__INV");
cdnDetails.val = rs.getDouble("AMOUNT");
cdnDetails.reason = checkNullandTrim(rs.getString("REAS_CODE"));
//cdnDetails.reason = checkNullandTrim(rs.getString("REAS_CODE"));
cdnDetails.reason = "07-Others";//TODO sending hardcoded reason value, difficult to determine as per GSTN reason list
if(rs.getDate("REF_DATE__INV").before(gstStartDate))
{
cdnDetails.isPreGSTInvoice = true;
......@@ -1186,7 +1195,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnur.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
cdnur.invoiceDate = rs.getDate("REF_DATE__INV");
cdnur.val = rs.getDouble("AMOUNT");
cdnur.reason = checkNullandTrim(rs.getString("REAS_CODE"));
//cdnur.reason = checkNullandTrim(rs.getString("REAS_CODE"));
cdnur.reason = "07-Others";//TODO sending hardcoded reason value, difficult to determine as per GSTN reason list
if(rs.getDate("REF_DATE__INV").before(gstStartDate))
{
cdnur.isPreGSTInvoice = true;
......@@ -1408,147 +1418,932 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
docDetails.serialNumber = 4;
docDetails.docs = docsList;
docDetailsList.add(docDetails);
docDetailsList.add(docDetails);
}
docsList = new ArrayList<Docs>();
sql = " SELECT MIN(DOC_NO) FROM_NO, MAX(DOC_NO) TO_NO, COUNT(1) TOT_CNT"
+ " FROM GST_DATA_HDR WHERE SITE_CODE = ? AND PRD_CODE = ? AND REC_TYPE = ?"
+ " AND TRAN_TYPE IN ('29','31')";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, siteCode);
pstmt.setString(2, periodCode);
pstmt.setString(3, "1");
rs = pstmt.executeQuery();
if(rs.next())
{
if(rs.getInt("TOT_CNT") > 0)
{
Docs docs = new Docs();
docs.docNum = 1;
docs.fromSerialNo = checkNullandTrim(rs.getString("FROM_NO"));
docs.toSerialNo = checkNullandTrim(rs.getString("TO_NO"));
docs.totalNo = rs.getInt("TOT_CNT");
docs.cancelNo = 0;
docs.toatlNetIssued = rs.getInt("TOT_CNT");
docsList.add(docs);
}
}
closeResources(rs, pstmt);
if(docsList.size() > 0)
{
DocDetails docDetails = new DocDetails();
docDetails.serialNumber = 5;
docDetails.docs = docsList;
docDetailsList.add(docDetails);
}
if(docDetailsList.size() > 0)
{
docIssued = new DocIssued();
docIssued.docDetails = docDetailsList;
}
gstr1 = new GSTR1();
gstr1.gstin = gstin;
gstr1.financialPeriod = periodCode;
gstr1.grossTurnOver = Double.valueOf(grossTurnover);
gstr1.currentGrossTurnOver = Double.valueOf(currentYearTurnover);
if(b2bInvoiceList.size() > 0)
{
gstr1.b2b = b2bInvoiceList;
}
if(b2clInvoiceList.size() > 0)
{
gstr1.b2cl = b2clInvoiceList;
}
if(b2claInvoiceList.size() > 0)
{
gstr1.b2cla = b2claInvoiceList;
}
if(b2csInvoiceList.size() > 0)
{
gstr1.b2cs = b2csInvoiceList;
}
if(b2csaInvoiceList.size() > 0)
{
gstr1.b2csa = b2csaInvoiceList;
}
if(cdnrList.size() > 0)
{
gstr1.cdnr = cdnrList;
}
if(cdnraList.size() > 0)
{
gstr1.cdnra = cdnraList;
}
if(atList.size() > 0)
{
gstr1.at = atList;
}
if(ataList.size() > 0)
{
gstr1.ata = ataList;
}
if(expInvoiceList.size() > 0)
{
gstr1.exp = expInvoiceList;
}
if(atPaidList.size() > 0)
{
gstr1.txpd = atPaidList;
}
if(cdnurList.size() > 0)
{
gstr1.cdnur = cdnurList;
}
if(nil != null)
{
gstr1.nil = nil;
}
if(hsn != null)
{
gstr1.hsn = hsn;
}
if(docIssued != null)
{
gstr1.docIssued = docIssued;
}
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(gstr1);
System.out.println("jsonPayload to SAVE GSTR1["+json+"]");
Date payloadEndTime = new Date();
long payloadDiff = payloadEndTime.getTime() - payloadStartTime.getTime();
long payloadDiffSeconds = payloadDiff / 1000 % 60;
long payloadDiffMinutes = payloadDiff / (60 * 1000) % 60;
long payloadDiffHours = payloadDiff / (60 * 60 * 1000);
System.out.println("DIFFERANCE IN TIME FOR PAYLOAD CREATION GSTR1 IN HH:MM:SS ["+payloadDiffHours +":"+payloadDiffMinutes+":"+payloadDiffSeconds+"]");
retString = saveGSTRData(json, noOfRecords, tranIdList, "1", conn, xtraParams);
}
}
catch (Exception e)
{
System.out.println("GSTDataSubmitWizPos.saveGstr1()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
}
return retString;
}
private String createDeleteGstr1Json(String siteCode, String grossTurnover, String currentYearTurnover, String xtraParams, Connection conn) throws ITMException
{
String retString = "";
int noOfRecords = 0;
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 = "";
ArrayList<String> tranIdList = new ArrayList<String>();
Map<String, ArrayList<Invoice>> invoicesHMap = new HashMap<String, ArrayList<Invoice>>();
Map<String, Object> invTypObjHMap = new HashMap<String, Object>();
ArrayList<B2B> b2bInvoiceList = new ArrayList<B2B>();
ArrayList<B2CL> b2clInvoiceList = new ArrayList<B2CL>();
ArrayList<B2CLA> b2claInvoiceList = new ArrayList<B2CLA>();
ArrayList<B2CS> b2csInvoiceList = new ArrayList<B2CS>();
ArrayList<B2CSA> b2csaInvoiceList = new ArrayList<B2CSA>();
ArrayList<CDNR> cdnrList = new ArrayList<CDNR>();
ArrayList<CDNRA> cdnraList = new ArrayList<CDNRA>();
ArrayList<AT> atList = new ArrayList<AT>();
ArrayList<ATA> ataList = new ArrayList<ATA>();
ArrayList<EXP> expInvoiceList = new ArrayList<EXP>();
ArrayList<AT> atPaidList = new ArrayList<AT>();
ArrayList<CDNUR> cdnurList = new ArrayList<CDNUR>();
ArrayList<InvLineItem> invLineItems = null;
ArrayList<Invoice> invoices = null;
ArrayList<CDNDetails> cdnDetailsList = null;
GSTR1 gstr1 = null;
Invoice invoice = null;
InvLineItem invLineItem = null;
B2B b2b = null;
B2CL b2cl = null;
B2CS b2cs = null;
CDNR cdnr = null;
CDNDetails cdnDetails = null;
AT at = null;
EXP exp = null;
CDNUR cdnur = null;
Nil nil = null;
try
{
sql = "SELECT * FROM GST_DATA_HDR WHERE PRD_CODE = ? AND SITE_CODE = ? AND SUBMIT_STATUS = 'T' AND REC_TYPE ='1'";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, periodCode);
pstmt.setString(2, siteCode);
rs = pstmt.executeQuery();
while(rs.next())
{
++noOfRecords;
isDataFound = true;
tranId = checkNullandTrim(rs.getString("TRAN_ID"));
tranType = checkNullandTrim(rs.getString("TRAN_TYPE"));
ctin = checkNullandTrim(rs.getString("TAX_REG_NO"));
posStateCode = checkNullandTrim(rs.getString("GST_CODE"));
tranIdRef = checkNullandTrim(rs.getString("TRAN_ID__REF"));
System.out.println("in deleteGstr1 tranId["+tranId+"] tranType["+tranType+"] ctin["+ctin+"] posStateCode["+posStateCode+"] tranIdRef["+tranIdRef+"]");
invoices = new ArrayList<Invoice>();
invoice = new Invoice();
invLineItems = new ArrayList<InvLineItem>();
cdnDetailsList = new ArrayList<CDNDetails>();
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+"~"+udfStr1);
}
//tran_type : 01,02,03,08,09,10 = B2B invoices
if("B2B".equalsIgnoreCase(udfStr1))
{
invoice.inum = rs.getString("DOC_NO");
invoice.idt = rs.getDate("DOC_DATE");
invoice.taxPayerAction = "D";
invoices.add(invoice);
invoicesHMap.put(ctin+"~"+udfStr1, invoices);
if("B2B".equalsIgnoreCase(udfStr1))
{
b2b = new B2B();
if(invTypObjHMap.containsKey(ctin+"~"+udfStr1))
{
b2b = (B2B)invTypObjHMap.get(ctin+"~"+udfStr1);
if(b2bInvoiceList.contains(b2b))
{
int index = b2bInvoiceList.indexOf(b2b);
b2bInvoiceList.remove(index);
}
}
b2b.ctin = ctin;
b2b.isReverseCharge = true;
b2b.invoices = invoices;
invTypObjHMap.put(ctin+"~"+udfStr1, b2b);
b2bInvoiceList.add(b2b);
}
}
//tran_type : 04, 05 = B2CL invoices
if("B2CL".equalsIgnoreCase(udfStr1))
{
invoices = new ArrayList<Invoice>();
invoice = new Invoice();
invLineItems = new ArrayList<InvLineItem>();
invoice.inum = checkNullandTrim(rs.getString("DOC_NO"));
invoice.idt = rs.getDate("DOC_DATE");
invoice.taxPayerAction = "D";
invoices.add(invoice);
if("B2CL".equalsIgnoreCase(udfStr1))
{
b2cl = new B2CL();
b2cl.isReverseCharge = false;
b2cl.stateCode = posStateCode;
b2cl.invoices = invoices;
b2clInvoiceList.add(b2cl);
}
}
//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 ";
linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery();
while(lineRs.next())
{
if("B2CS".equalsIgnoreCase(udfStr1))
{
b2cs = new B2CS();
b2cs.supplyType = udfStr2;
b2cs.typ = udfStr3;
b2cs.pos = posStateCode;
b2cs.rate = lineRs.getDouble("GST_RATE");
b2cs.taxPayerAction = "D";
b2csInvoiceList.add(b2cs);
}
}
if(linePstmt != null)
{
linePstmt.close();
linePstmt = null;
}
if(lineRs != null)
{
lineRs.close();
lineRs = null;
}
}
//tran_type : 29,30 = CDNR, 33,34 = CDNRA
if("CDNR".equalsIgnoreCase(udfStr1) || "CDNRA".equalsIgnoreCase(udfStr1))
{
if("CDNR".equalsIgnoreCase(udfStr1))
{
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 "
+ " FROM GST_DATA_DET "
+ " WHERE TRAN_ID = ? "
+ " GROUP BY GST_RATE";
linePstmt = conn.prepareStatement(lineSql);
linePstmt.setString(1, tranId);
lineRs = linePstmt.executeQuery();
int lineNum = 0;
while(lineRs.next())
{
invLineItem = new InvLineItem();
invLineItem.num = ++lineNum;
invLineItem.rate = lineRs.getDouble("GST_RATE");
invLineItem.taxval = lineRs.getDouble("TAXABLE_AMT");
invLineItem.iamt = lineRs.getDouble("IGST_AMT");
invLineItem.camt = lineRs.getDouble("CGST_AMT");
invLineItem.samt = lineRs.getDouble("SGST_AMT");
invLineItem.csamt = lineRs.getDouble("CESS_AMT");
invLineItems.add(invLineItem);
}
if(linePstmt != null)
{
linePstmt.close();
linePstmt = null;
}
if(lineRs != null)
{
lineRs.close();
lineRs = null;
}
cdnDetails = new CDNDetails();
cdnDetails.cdNoteNumber = checkNullandTrim(rs.getString("DOC_NO"));
cdnDetails.cdNoteDate = rs.getDate("DOC_DATE");
cdnDetails.taxPayerAction = "D";
cdnDetailsList.add(cdnDetails);
cdnr = new CDNR();
cdnr.isReverseCharge = false;
cdnr.ctin = ctin;
cdnr.cdnDetails = cdnDetailsList;
cdnrList.add(cdnr);
}
}
//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("EXP".equalsIgnoreCase(udfStr1))
{
invoice.inum = rs.getString("DOC_NO");
invoice.idt = rs.getDate("DOC_DATE");
invoice.taxPayerAction = "D";
invoices.add(invoice);
exp = new EXP();
exp.isReverseCharge = false;
exp.exportType = udfStr2;
exp.invoices = invoices;
expInvoiceList.add(exp);
}
}
//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("AT".equalsIgnoreCase(udfStr1))
{
at = new AT();
at.isReverseCharge = false;
at.recType = "1";
at.pos = posStateCode;
at.supplyType = udfStr2;
at.taxPayerAction = "D";
atList.add(at);
}
}
//tran_type : 43,44 = Advance Tax paid and tran_type : 47,48 Advance Tax paid amendments
if("TXP".equalsIgnoreCase(udfStr1))
{
at = new AT();
at.isReverseCharge = false;
at.recType = "1";
at.pos = posStateCode;
at.supplyType = udfStr2;
at.taxPayerAction = "D";
atPaidList.add(at);
}
//tran_type : 31,32 = CDNUR and tran_type : 35,36 = CDNURA
if("CDNUR".equalsIgnoreCase(udfStr1))
{
String customerType = "", refTranType = "";
Calendar calendar = Calendar.getInstance();
calendar.set(2017, 06, 01);
Date gstStartDate = calendar.getTime();
cdnur = new CDNUR();
cdnur.isReverseCharge = false;
if(rs.getDate("REF_DATE__INV").after(gstStartDate))
{
refDataSql = "SELECT TRAN_TYPE FROM GST_DATA_HDR WHERE DOC_NO = ? ";
refDataPstmt = conn.prepareStatement(refDataSql);
refDataPstmt.setString(1, checkNullandTrim(rs.getString("REF_ID__INV")));
refDataRs = refDataPstmt.executeQuery();
if(refDataRs.next())
{
refTranType = checkNullandTrim(refDataRs.getString("TRAN_TYPE"));
}
if(refDataPstmt != null)
{
refDataPstmt.close();
refDataPstmt = null;
}
if(refDataRs != null)
{
refDataRs.close();
refDataRs = null;
}
if(refTranType != null && refTranType.trim().length() > 0)
{
if("04".equalsIgnoreCase(refTranType) || "05".equalsIgnoreCase(refTranType))
{
customerType = "B2CL";
}
else if("06".equalsIgnoreCase(refTranType))
{
customerType = "EXPWP";
}
else if("07".equalsIgnoreCase(refTranType))
{
customerType = "EXPWOP";
}
}
}
cdnur.recType = "1";
cdnur.customerType = customerType;
cdnur.cdNoteNumber = checkNullandTrim(rs.getString("DOC_NO"));
cdnur.cdNoteDate = rs.getDate("DOC_DATE");
cdnur.taxPayerAction = "D";
cdnurList.add(cdnur);
}
tranIdList.add(tranId);
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
if(isDataFound)
{
int nilDataCnt = 0;
sql = " SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = ? AND PRD_CODE = ? AND SITE_CODE = ?"
+ " AND TRAN_TYPE IN ('15','16','17','18','19','20','21','22','23','24','25','26')";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "1");
pstmt.setString(2, "T");
pstmt.setString(3, periodCode);
pstmt.setString(4, siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
nilDataCnt = rs.getInt("CNT");
System.out.println("nilDataCnt["+nilDataCnt+"]");
if(nilDataCnt > 0)
{
nil = new Nil();
nil.taxPayerAction = "D";
}
}
closeResources(rs, pstmt);
gstr1 = new GSTR1();
gstr1.gstin = gstin;
gstr1.financialPeriod = periodCode;
gstr1.grossTurnOver = Double.valueOf(grossTurnover);
gstr1.currentGrossTurnOver = Double.valueOf(currentYearTurnover);
if(b2bInvoiceList.size() > 0)
{
gstr1.b2b = b2bInvoiceList;
}
if(b2clInvoiceList.size() > 0)
{
gstr1.b2cl = b2clInvoiceList;
}
if(b2claInvoiceList.size() > 0)
{
gstr1.b2cla = b2claInvoiceList;
}
if(b2csInvoiceList.size() > 0)
{
gstr1.b2cs = b2csInvoiceList;
}
if(b2csaInvoiceList.size() > 0)
{
gstr1.b2csa = b2csaInvoiceList;
}
if(cdnrList.size() > 0)
{
gstr1.cdnr = cdnrList;
}
if(cdnraList.size() > 0)
{
gstr1.cdnra = cdnraList;
}
if(atList.size() > 0)
{
gstr1.at = atList;
}
if(ataList.size() > 0)
{
gstr1.ata = ataList;
}
if(expInvoiceList.size() > 0)
{
gstr1.exp = expInvoiceList;
}
if(atPaidList.size() > 0)
{
gstr1.txpd = atPaidList;
}
if(cdnurList.size() > 0)
{
gstr1.cdnur = cdnurList;
}
if(nil != null)
{
gstr1.nil = nil;
}
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(gstr1);
System.out.println("jsonPayload to DELETE GSTR1["+json+"]");
retString = deleteDataFromGSTN(json, noOfRecords, tranIdList, "1", xtraParams, conn);
}
}
catch (Exception e)
{
System.out.println("GSTDataSubmitWizPos.createDeleteGstr1Json()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
}
return retString;
}
private String createDeleteGstr2Json(String siteCode, String xtraParams, Connection conn) throws ITMException
{
String retString = "";
int noOfRecords = 0;
boolean isDataFound = false;
String udfStr1 = "", udfStr2 = "", udfStr3 = "";
String sql = "", lineSql = "";
PreparedStatement pstmt = null, linePstmt = null;
ResultSet rs = null, lineRs = null;
String tranId = "", tranType = "", tranIdRef = "", ctin = "", posStateCode = "";
ArrayList<String> tranIdList = new ArrayList<String>();
Map<String, ArrayList<Invoice>> invoicesHMap = new HashMap<String, ArrayList<Invoice>>();
Map<String, Object> invTypObjHMap = new HashMap<String, Object>();
ArrayList<B2B> b2bInvoiceList = new ArrayList<B2B>();
ArrayList<B2BUR> b2burInvoiceList = new ArrayList<B2BUR>();
ArrayList<CDNR> cdnrList = new ArrayList<CDNR>();
ArrayList<IMPG> impgList = new ArrayList<IMPG>();
ArrayList<IMPS> impsList = new ArrayList<IMPS>();
ArrayList<AT> txiList = new ArrayList<AT>();
ArrayList<AT> txpdList = new ArrayList<AT>();
ArrayList<CDNUR> cdnurList = new ArrayList<CDNUR>();
ArrayList<Invoice> invoices = null;
ArrayList<CDNDetails> cdnDetailsList = null;
GSTR2 gstr2 = null;
Invoice invoice = null;
B2B b2b = null;
B2BUR b2bur = null;
CDNR cdnr = null;
CDNDetails cdnDetails = null;
IMPG impg = null;
IMPS imps = null;
AT at = null;
CDNUR cdnur = null;
NilInwardSupplies nilInwardSupplies = null;
try
{
sql = "SELECT * FROM GST_DATA_HDR WHERE PRD_CODE = ? AND SITE_CODE = ? AND SUBMIT_STATUS = 'T' AND REC_TYPE ='2'";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, periodCode);
pstmt.setString(2, siteCode);
rs = pstmt.executeQuery();
while(rs.next())
{
++noOfRecords;
isDataFound = true;
tranId = checkNullandTrim(rs.getString("TRAN_ID"));
tranType = checkNullandTrim(rs.getString("TRAN_TYPE"));
ctin = checkNullandTrim(rs.getString("TAX_REG_NO"));
posStateCode = checkNullandTrim(rs.getString("GST_CODE"));
tranIdRef = checkNullandTrim(rs.getString("TRAN_ID__REF"));
System.out.println("in deleteGstr2 tranId["+tranId+"] tranType["+tranType+"] ctin["+ctin+"] posStateCode["+posStateCode+"] tranIdRef["+tranIdRef+"]");
invoices = new ArrayList<Invoice>();
invoice = new Invoice();
cdnDetailsList = new ArrayList<CDNDetails>();
lineSql = "SELECT UDF_STR1, UDF_STR2, UDF_STR3 FROM GENCODES WHERE MOD_NAME = 'W_GSTR_PURC' 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"));
System.out.println("udfStr1["+udfStr1+"] udfStr2["+udfStr2+"] udfStr3["+udfStr3+"]");
}
if(linePstmt!=null)
{
linePstmt.close();
linePstmt=null;
}
if(lineRs!=null)
{
lineRs.close();
lineRs=null;
}
if(invoicesHMap.containsKey(ctin+"~"+udfStr1))
{
invoices = invoicesHMap.get(ctin+"~"+udfStr1);
}
//tran_type : 01 = B2B invoices
if("B2B".equalsIgnoreCase(udfStr1))
{
invoice.inum = rs.getString("DOC_NO");
invoice.idt = rs.getDate("DOC_DATE");
invoice.taxPayerAction = "D";
invoices.add(invoice);
invoicesHMap.put(ctin+"~"+udfStr1, invoices);
if("B2B".equalsIgnoreCase(udfStr1))
{
b2b = new B2B();
if(invTypObjHMap.containsKey(ctin+"~"+udfStr1))
{
b2b = (B2B)invTypObjHMap.get(ctin+"~"+udfStr1);
if(b2bInvoiceList.contains(b2b))
{
int index = b2bInvoiceList.indexOf(b2b);
b2bInvoiceList.remove(index);
}
}
b2b.ctin = ctin;
b2b.isReverseCharge = true;
b2b.invoices = invoices;
invTypObjHMap.put(ctin+"~"+udfStr1, b2b);
b2bInvoiceList.add(b2b);
}
}
if("B2BUR".equalsIgnoreCase(udfStr1))
{
invoice.inum = rs.getString("DOC_NO");
invoice.idt = rs.getDate("DOC_DATE");
invoice.taxPayerAction = "D";
invoices.add(invoice);
if("B2BUR".equalsIgnoreCase(udfStr1))
{
b2bur = new B2BUR();
b2bur.invoices = invoices;
b2burInvoiceList.add(b2bur);
}
}
if("CDN".equalsIgnoreCase(udfStr1))
{
if("CDN".equalsIgnoreCase(udfStr1))
{
cdnDetails = new CDNDetails();
cdnDetails.taxPayerAction = "D";
cdnDetails.cdNoteNumber = checkNullandTrim(rs.getString("DOC_NO"));
cdnDetails.cdNoteDate = rs.getDate("DOC_DATE");
cdnDetailsList.add(cdnDetails);
cdnr = new CDNR();
cdnr.isReverseCharge = false;
cdnr.ctin = ctin;
cdnr.cdnDetails = cdnDetailsList;
cdnrList.add(cdnr);
}
}
if("IMP_G".equalsIgnoreCase(udfStr1))
{
impg = new IMPG();
impg.taxPayerAction = "D";
impg.billOfEntryNo = checkNullandTrim(rs.getString("LR_NO"));
impg.billOfEntryDate = rs.getDate("LR_DATE");
impgList.add(impg);
}
if("IMP_S".equalsIgnoreCase(udfStr1))
{
imps = new IMPS();
imps.taxPayerAction = "D";
imps.inum = checkNullandTrim(rs.getString("DOC_NO"));
imps.idt = rs.getDate("DOC_DATE");
impsList.add(imps);
}
if("TXPI".equalsIgnoreCase(udfStr1))
{
at = new AT();
at.isReverseCharge = false;
at.recType = "2";
at.taxPayerAction = "D";
at.pos = checkNullandTrim(rs.getString("GST_CODE"));
at.supplyType = udfStr2;
txiList.add(at);
}
if("TXPD".equalsIgnoreCase(udfStr1))
{
at = new AT();
at.isReverseCharge = false;
at.recType = "2";
at.taxPayerAction = "D";
at.pos = checkNullandTrim(rs.getString("GST_CODE"));
at.supplyType = udfStr2;
txpdList.add(at);
}
if("CDNUR".equalsIgnoreCase(udfStr1))
{
cdnur = new CDNUR();
cdnur.isReverseCharge = false;
cdnur.recType = "2";
cdnur.taxPayerAction = "D";
cdnur.cdNoteNumber = checkNullandTrim(rs.getString("DOC_NO"));
cdnur.cdNoteDate = rs.getDate("DOC_DATE");
cdnurList.add(cdnur);
}
docsList = new ArrayList<Docs>();
tranIdList.add(tranId);
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
if(isDataFound)
{
int nilDataCnt = 0;
sql = " SELECT MIN(DOC_NO) FROM_NO, MAX(DOC_NO) TO_NO, COUNT(1) TOT_CNT"
+ " FROM GST_DATA_HDR WHERE SITE_CODE = ? AND PRD_CODE = ? AND REC_TYPE = ?"
+ " AND TRAN_TYPE IN ('29','31')";
sql = " SELECT COUNT(1) AS CNT FROM GST_DATA_HDR WHERE REC_TYPE = ? AND SUBMIT_STATUS = ? AND PRD_CODE = ? AND SITE_CODE = ?"
+ " AND TRAN_TYPE IN ('18','19','20','21','22','23','24','25')";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, siteCode);
pstmt.setString(2, periodCode);
pstmt.setString(3, "1");
pstmt.setString(1, "2");
pstmt.setString(2, "T");
pstmt.setString(3, periodCode);
pstmt.setString(4, siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
if(rs.getInt("TOT_CNT") > 0)
nilDataCnt = rs.getInt("CNT");
System.out.println("nilDataCnt["+nilDataCnt+"]");
if(nilDataCnt > 0)
{
Docs docs = new Docs();
docs.docNum = 1;
docs.fromSerialNo = checkNullandTrim(rs.getString("FROM_NO"));
docs.toSerialNo = checkNullandTrim(rs.getString("TO_NO"));
docs.totalNo = rs.getInt("TOT_CNT");
docs.cancelNo = 0;
docs.toatlNetIssued = rs.getInt("TOT_CNT");
docsList.add(docs);
nilInwardSupplies = new NilInwardSupplies();
nilInwardSupplies.taxPayerAction = "D";
}
}
closeResources(rs, pstmt);
if(docsList.size() > 0)
{
DocDetails docDetails = new DocDetails();
docDetails.serialNumber = 5;
docDetails.docs = docsList;
docDetailsList.add(docDetails);
}
if(docDetailsList.size() > 0)
{
docIssued = new DocIssued();
docIssued.docDetails = docDetailsList;
}
gstr1 = new GSTR1();
gstr1.gstin = gstin;
gstr1.financialPeriod = periodCode;
gstr1.grossTurnOver = Double.valueOf(grossTurnover);
gstr1.currentGrossTurnOver = Double.valueOf(currentYearTurnover);
gstr2 = new GSTR2();
gstr2.gstin = gstin;
gstr2.financialPeriod = periodCode;
if(b2bInvoiceList.size() > 0)
{
gstr1.b2b = b2bInvoiceList;
}
if(b2clInvoiceList.size() > 0)
{
gstr1.b2cl = b2clInvoiceList;
}
if(b2claInvoiceList.size() > 0)
{
gstr1.b2cla = b2claInvoiceList;
}
if(b2csInvoiceList.size() > 0)
{
gstr1.b2cs = b2csInvoiceList;
gstr2.b2b = b2bInvoiceList;
}
if(b2csaInvoiceList.size() > 0)
if(b2burInvoiceList.size() > 0)
{
gstr1.b2csa = b2csaInvoiceList;
gstr2.b2bur = b2burInvoiceList;
}
if(cdnrList.size() > 0)
{
gstr1.cdnr = cdnrList;
}
if(cdnraList.size() > 0)
{
gstr1.cdnra = cdnraList;
}
if(atList.size() > 0)
{
gstr1.at = atList;
}
if(ataList.size() > 0)
{
gstr1.ata = ataList;
gstr2.cdnr = cdnrList;
}
if(expInvoiceList.size() > 0)
if(impgList.size() > 0)
{
gstr1.exp = expInvoiceList;
gstr2.impg = impgList;
}
if(atPaidList.size() > 0)
if(impsList.size()>0)
{
gstr1.txpd = atPaidList;
gstr2.imps = impsList;
}
if(cdnurList.size() > 0)
if(nilInwardSupplies != null)
{
gstr1.cdnur = cdnurList;
gstr2.nil = nilInwardSupplies;
}
if(nil != null)
if(txiList.size()>0)
{
gstr1.nil = nil;
gstr2.txi = txiList;
}
if(hsn != null)
if(txpdList.size()>0)
{
gstr1.hsn = hsn;
gstr2.txpd = txpdList;
}
if(docIssued != null)
if(cdnurList.size()>0)
{
gstr1.docIssued = docIssued;
gstr2.cdnur = cdnurList;
}
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(gstr1);
System.out.println("jsonPayload to SAVE GSTR1["+json+"]");
Date payloadEndTime = new Date();
ObjectMapper objectMapper = new ObjectMapper();
long payloadDiff = payloadEndTime.getTime() - payloadStartTime.getTime();
long payloadDiffSeconds = payloadDiff / 1000 % 60;
long payloadDiffMinutes = payloadDiff / (60 * 1000) % 60;
long payloadDiffHours = payloadDiff / (60 * 60 * 1000);
String json = objectMapper.writeValueAsString(gstr2);
System.out.println("DIFFERANCE IN TIME FOR PAYLOAD CREATION GSTR1 IN HH:MM:SS ["+payloadDiffHours +":"+payloadDiffMinutes+":"+payloadDiffSeconds+"]");
System.out.println("jsonPayload to delete GSTR2["+json+"]");
retString = saveGSTRData(json, noOfRecords, tranIdList, "1", conn, xtraParams);
retString = deleteDataFromGSTN(json, noOfRecords, tranIdList, "2", xtraParams, conn);
}
}
catch (Exception e)
catch(Exception e)
{
System.out.println("GSTDataSubmitWizPos.saveGstr1()["+e.getMessage()+"]");
System.out.println("GSTDataSubmitWizPos.createDeleteGstr2Json()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
throw new ITMException (e);
}
return retString;
}
private String submitGstr(String recType, String xtraParams,Connection conn) throws ITMException
......@@ -1647,7 +2442,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
responseId = transId;
System.out.println("transId to getStatus after SUBMIT call["+transId+"]");
retString = getSaveSubmitStatus(transId, null ,recType, xtraParams, conn);
retString = getSaveSubmitStatus(transId, null ,recType, "S", xtraParams, conn);
}
else
{
......@@ -1738,13 +2533,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
byte[] jsonBase64 = Base64.getEncoder().encode(summaryData.toString().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);
if("D".equalsIgnoreCase(signMethod))
{
signType = "DSC";
......@@ -1759,7 +2547,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
JSONObject fileGstrDataJsonObj = new JSONObject();
fileGstrDataJsonObj.put("action", "RETFILE");
fileGstrDataJsonObj.put("data", encryptedPayload);
fileGstrDataJsonObj.put("hmac", new String(Base64.getEncoder().encode(resBuf)));
fileGstrDataJsonObj.put("sign", signedData);
fileGstrDataJsonObj.put("st", signType);
fileGstrDataJsonObj.put("sid", signId);
......@@ -1853,7 +2640,152 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
return retString;
}
private String getSaveSubmitStatus(String transId, ArrayList<String> tranIdList, String recType, String xtraParams, Connection conn) throws ITMException
private String deleteDataFromGSTN (String jsonPayload, int noOfRecodrs, ArrayList<String> tranIdList, String recType, String xtraParams, Connection conn) throws ITMException
{
String retString = "";
String RETURN_URL = "", siteCode = "", loginCode = "", chgTerm = "";
String gspAuthString = "", gspAuthSignature = "";
String transactionId = "";
String errMsg = "", callStatus = "", responseId = "", responseJsonStr = "", gstrData = "", gstrRek = "";
try
{
if("1".equalsIgnoreCase(recType))
{
RETURN_URL = GSTR1_URL;
}
else if("2".equalsIgnoreCase(recType))
{
RETURN_URL = GSTR2_URL;
}
siteCode = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginSiteCode");
loginCode = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginCode");
chgTerm = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "chgTerm");
transactionId = UUID.randomUUID().toString().replaceAll("-", "");
long timeStamp = new Timestamp().getDateTime();
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
byte[] jsonBase64 = Base64.getEncoder().encode(jsonPayload.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 gstrHeaderObj = new JSONObject();
gstrHeaderObj.put("action", "RETSAVE");
gstrHeaderObj.put("data", encryptedPayload);
gstrHeaderObj.put("hmac", new String(Base64.getEncoder().encode(resBuf)));
HttpRequest deleteGstrReq = Unirest.put(String.format("%s%s", BASE_API_URL, RETURN_URL))
.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(gstrHeaderObj.toString()))
.getHttpRequest();
System.out.println("DELETE GSTR"+recType+" url["+deleteGstrReq.getUrl()+"]");
System.out.println("DELETE GSTR"+recType+" method["+deleteGstrReq.getHttpMethod()+"]");
System.out.println("DELETE GSTR"+recType+" request header["+deleteGstrReq.getHeaders()+"]");
System.out.println("DELETE GSTR"+recType+" request payload["+IOUtils.toString(deleteGstrReq.getBody().getEntity().getContent())+"]");
HttpResponse<JsonNode> gstrResp = deleteGstrReq.asJson();
System.out.println(String.format("gstrResp Request : Status[%s] Response[%s]", gstrResp.getStatus(), gstrResp.getBody()));
if (gstrResp.getStatus() == 200)
{
JSONObject gstrRespObj = gstrResp.getBody().getObject();
if(gstrRespObj.has("data") && gstrRespObj.has("rek"))
{
callStatus = "1";
gstrData = gstrRespObj.getString("data");
gstrRek = gstrRespObj.getString("rek");
byte[] apiEKGstr = aesEncryption.decrypt(gstrRek, authSEK);
String gstrRespJsoninBase64 = new String(aesEncryption.decrypt(gstrData, apiEKGstr));
byte[] gstrRespJsonInBytes = aesEncryption.decodeBase64StringTOByte(gstrRespJsoninBase64);
JSONObject gstrTransIdRespObj = new JSONObject(new String(gstrRespJsonInBytes));
String transId = gstrTransIdRespObj.getString("reference_id");
responseId = transId;
System.out.println("transId to getStatus["+transId+"]");
retString = getSaveSubmitStatus(transId, tranIdList ,recType, "D", xtraParams, conn);
}
else
{
callStatus = "2";
JSONObject errorJSON = gstrResp.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(gstrResp.getStatus() == 500)
{
callStatus = "2";
errMsg = "Message : Error occurred at GSTN server \nResponse code : "+gstrResp.getStatus();
responseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
}
else
{
callStatus = "2";
JSONObject errorJSON = gstrResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
catch(Exception e)
{
System.out.println("GSTDataSubmitWizPos.deleteDataFromGSTN()["+e.getMessage()+"]");
e.printStackTrace();
throw new ITMException(e);
}
finally
{
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("RETDELETE");
apiCallData.setRecType(recType);
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);
}
return retString;
}
private String getSaveSubmitStatus(String transId, ArrayList<String> tranIdList, String recType, String actionFlag, String xtraParams, Connection conn) throws ITMException
{
String retString = "", errMsg = "";
String transactionId = "", retStatsData = "", retStatsRek= "", retStatusCallStatus = "", retStatusResponseJsonStr = "";
......@@ -1932,7 +2864,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
retStatusCallStatus = "1";
if(tranIdList != null && tranIdList.size() > 0)
{
updateSubmissionStatus(tranIdList, conn);
updateSubmissionStatus(tranIdList, actionFlag, conn);
}
else
{
......@@ -2023,6 +2955,11 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
isLoopBreak = true;
}
if(retStatusResponseJsonStr.length() > 500)
{
retStatusResponseJsonStr = retStatusResponseJsonStr.substring(0, 500);
}
apiRetStatsCallData = new APICallData();
apiRetStatsCallData.setPeriodCode(periodCode);
apiRetStatsCallData.setCallDate(new Date());
......@@ -2692,7 +3629,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnDetails.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
cdnDetails.invoiceDate = rs.getDate("REF_DATE__INV");
cdnDetails.val = rs.getDouble("AMOUNT");
cdnDetails.reason = checkNullandTrim(rs.getString("REAS_CODE"));
//cdnDetails.reason = checkNullandTrim(rs.getString("REAS_CODE"));
cdnDetails.reason = "07-Others";//TODO sending hardcoded reason value, difficult to determine as per GSTN reason list
if(rs.getDate("REF_DATE__INV").before(gstStartDate))
{
cdnDetails.isPreGSTInvoice = true;
......@@ -2966,7 +3904,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
cdnur.invoiceNumber = checkNullandTrim(rs.getString("REF_ID__INV"));
cdnur.invoiceDate = rs.getDate("REF_DATE__INV");
cdnur.val = rs.getDouble("AMOUNT");
cdnur.reason = checkNullandTrim(rs.getString("REAS_CODE"));
//cdnur.reason = checkNullandTrim(rs.getString("REAS_CODE"));
cdnur.reason = "07-Others";//TODO sending hardcoded reason value, difficult to determine as per GSTN reason list
if(rs.getDate("REF_DATE__INV").before(gstStartDate))
{
cdnur.isPreGSTInvoice = true;
......@@ -5549,19 +6488,27 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
throw new ITMException(e);
}
}*/
private void updateSubmissionStatus(ArrayList<String> tranIdList, Connection conn) throws ITMException
private void updateSubmissionStatus(ArrayList<String> tranIdList, String actionFlag, Connection conn) throws ITMException
{
String updateSql = "";
String updateSql = "", submitStatus = "";
PreparedStatement pstmtUpd = null;
try
{
if("S".equalsIgnoreCase(actionFlag))
{
submitStatus = "T";
}
else if("D".equalsIgnoreCase(actionFlag))
{
submitStatus = "P";
}
updateSql = "UPDATE GST_DATA_HDR SET SUBMIT_STATUS = ?, SUBMIT_DATE = ? WHERE TRAN_ID = ?";
pstmtUpd = conn.prepareStatement(updateSql);
for(String tranId : tranIdList)
{
pstmtUpd.setString(1, "T");
pstmtUpd.setString(1, submitStatus);
pstmtUpd.setTimestamp(2, java.sql.Timestamp.valueOf(e12GenericUtility.getValidDateString(new Date(), e12GenericUtility.getDBDateTimeFormat())));
pstmtUpd.setString(3, tranId);
......@@ -5625,7 +6572,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
for(String eachSectionName : secKeys)
{
retString += "Section : "+eachSectionName.toUpperCase()+"\n";
retString += "Section : "+eachSectionName.toUpperCase()+"\n\r";
JSONArray eachSecErrJsonArry = errorJsonObj.getJSONArray(eachSectionName);
......@@ -5669,7 +6616,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{
retString += " Credit/Debit No. : "+eachSecErrJsonObj.getString("nt_num")+ " Credit/Debit Dt. : "+eachSecErrJsonObj.getString("nt_dt");
}
retString += "\n";
retString += "\n\r";
}
}
}
......@@ -5921,7 +6868,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
String gspAuthString = "", gspAuthSignature = "", transactionId = "", RETURN_URL = "", errMsg = "", callStatus = "", responseId = "",
responseJsonStr = "",loginCode = "", chgTerm = "", siteCode = "", gstrData = "", gstrRek = "";
Date restSaveEndTime = null;
int retStatusCallCnt = 0;
long diffStatus = 0L;
try
......@@ -6027,7 +6973,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
System.out.println("DIFFERANCE IN TIME FOR RETSAVE GSTR1 ["+gstin+"] IN HH:MM:SS ["+retSaveDiffHours +":"+retSaveDiffMinutes+":"+retSaveDiffSeconds+"]");
retString = getSaveSubmitStatus(transId, tranIdList ,recType, xtraParams, conn);
retString = getSaveSubmitStatus(transId, tranIdList ,recType, "S", xtraParams, conn);
}
else
{
......@@ -6054,7 +7000,6 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
retString = getError(errMsg, "GSTAPIERR", conn);
}
System.out.println("total retStatusCallCnt ["+retStatusCallCnt+"]");
Date endTime = new Date();
long diff = endTime.getTime() - startTime.getTime();
......
......@@ -16,10 +16,19 @@ public class ATSerializer extends BaseSerializer<AT>
{
json.writeStartObject();
json.writeStringField("pos", at.pos);
json.writeStringField("sply_ty", at.supplyType);
writeLineItems(at, json);
if(at.taxPayerAction != null && "D".equalsIgnoreCase(at.taxPayerAction))
{
json.writeStringField("flag", at.taxPayerAction);
json.writeStringField("pos", at.pos);
json.writeStringField("sply_ty", at.supplyType);
}
else
{
json.writeStringField("pos", at.pos);
json.writeStringField("sply_ty", at.supplyType);
writeLineItems(at, json);
}
json.writeEndObject();
}
......
......@@ -15,35 +15,31 @@ public class B2CSSerializer extends BaseSerializer<B2CS>
{
json.writeStartObject();
if(b2cs.taxPayerAction!= null)
if(b2cs.taxPayerAction!= null && "D".equalsIgnoreCase(b2cs.taxPayerAction))
{
json.writeStringField("flag", b2cs.taxPayerAction);
json.writeStringField("sply_ty", b2cs.supplyType);
json.writeStringField("typ", b2cs.typ);
json.writeStringField("pos", b2cs.pos);
json.writeNumberField("rt", b2cs.rate);
}
json.writeStringField("sply_ty", b2cs.supplyType);
json.writeNumberField("txval", b2cs.txval);
json.writeStringField("typ", b2cs.typ);
if(b2cs.etin!=null)
{
json.writeStringField("etin", b2cs.etin);
}
json.writeStringField("pos", b2cs.pos);
json.writeNumberField("rt", b2cs.rate);
if(b2cs.iamt > 0)
else
{
json.writeStringField("sply_ty", b2cs.supplyType);
json.writeNumberField("txval", b2cs.txval);
json.writeStringField("typ", b2cs.typ);
if(b2cs.etin!=null)
{
json.writeStringField("etin", b2cs.etin);
}
json.writeStringField("pos", b2cs.pos);
json.writeNumberField("rt", b2cs.rate);
json.writeNumberField("iamt", b2cs.iamt);
}
if(b2cs.camt > 0)
{
json.writeNumberField("camt", b2cs.camt);
}
if(b2cs.samt > 0)
{
json.writeNumberField("samt", b2cs.samt);
}
if(b2cs.csamt > 0)
{
json.writeNumberField("csamt", b2cs.csamt);
}
json.writeEndObject();
}
}
......@@ -34,13 +34,17 @@ abstract class BaseSerializer<T extends BaseData> extends JsonSerializer<T>
{
json.writeStartObject();
if( (inv.taxPayerAction != null) && ("A".equalsIgnoreCase(inv.taxPayerAction) || "M".equalsIgnoreCase(inv.taxPayerAction) || "D".equalsIgnoreCase(inv.taxPayerAction)) )
if( (inv.taxPayerAction != null) && ("A".equalsIgnoreCase(inv.taxPayerAction) || "M".equalsIgnoreCase(inv.taxPayerAction)) )
{
json.writeStringField("flag", inv.taxPayerAction);
}
if ( inv.taxPayerAction != null && "D".equalsIgnoreCase(inv.taxPayerAction))
{
json.writeStringField("flag", inv.taxPayerAction);
json.writeStringField("inum", inv.inum);
json.writeStringField("idt", gstFmt.format(inv.idt));
json.writeStringField("chksum", inv.checksum);
}
}
else
{
if(inv.shippingPortCode != null)
......
......@@ -41,28 +41,36 @@ public class CDNRSerializer extends JsonSerializer<CDNR>
{
json.writeStartObject();
json.writeStringField("ntty", cdnDetails.cdnNoteType);
json.writeStringField("nt_num", cdnDetails.cdNoteNumber);
json.writeStringField("nt_dt", gstFmt.format(cdnDetails.cdNoteDate));
json.writeStringField("inum", cdnDetails.invoiceNumber);
json.writeStringField("idt", gstFmt.format(cdnDetails.invoiceDate));
json.writeNumberField("val", cdnDetails.val);
if(cdnDetails.reason != null && cdnDetails.reason.trim().length()>0)
{
json.writeStringField("rsn", cdnDetails.reason);
}
json.writeStringField("p_gst", cdnDetails.isPreGSTInvoice ? "Y" : "N");
if(cdnDetails.taxPayerAction != null && cdnDetails.taxPayerAction.length() > 0)
if(cdnDetails.taxPayerAction != null && "D".equalsIgnoreCase(cdnDetails.taxPayerAction))
{
json.writeStringField("flag", cdnDetails.taxPayerAction);
json.writeStringField("nt_num", cdnDetails.cdNoteNumber);
json.writeStringField("nt_dt", gstFmt.format(cdnDetails.cdNoteDate));
}
if(cdnDetails.checksum != null && cdnDetails.checksum.trim().length() > 0)
else
{
json.writeStringField("chksum", cdnDetails.checksum);
json.writeStringField("ntty", cdnDetails.cdnNoteType);
json.writeStringField("nt_num", cdnDetails.cdNoteNumber);
json.writeStringField("nt_dt", gstFmt.format(cdnDetails.cdNoteDate));
json.writeStringField("inum", cdnDetails.invoiceNumber);
json.writeStringField("idt", gstFmt.format(cdnDetails.invoiceDate));
json.writeNumberField("val", cdnDetails.val);
if(cdnDetails.reason != null && cdnDetails.reason.trim().length()>0)
{
json.writeStringField("rsn", cdnDetails.reason);
}
json.writeStringField("p_gst", cdnDetails.isPreGSTInvoice ? "Y" : "N");
if(cdnDetails.taxPayerAction != null && cdnDetails.taxPayerAction.length() > 0)
{
json.writeStringField("flag", cdnDetails.taxPayerAction);
}
if(cdnDetails.checksum != null && cdnDetails.checksum.trim().length() > 0)
{
json.writeStringField("chksum", cdnDetails.checksum);
}
writeCDNLineItems(cdnDetails, json);
}
writeCDNLineItems(cdnDetails, json);
json.writeEndObject();
}
catch(Exception e)
......
......@@ -32,19 +32,29 @@ public class CDNURSerializer extends JsonSerializer<CDNUR>
json.writeStringField("rtin", cdnur.receiverGSTIN);
}
}
json.writeStringField("ntty", cdnur.cdnNoteType);
json.writeStringField("nt_num", cdnur.cdNoteNumber);
json.writeStringField("nt_dt", gstFmt.format(cdnur.cdNoteDate));
json.writeStringField("inum", cdnur.invoiceNumber);
json.writeStringField("idt", gstFmt.format(cdnur.invoiceDate));
json.writeNumberField("val", cdnur.val);
if(cdnur.reason != null && cdnur.reason.trim().length() > 0)
if(cdnur.taxPayerAction != null && "D".equalsIgnoreCase(cdnur.taxPayerAction))
{
json.writeStringField("rsn", cdnur.reason);
json.writeStringField("flag", cdnur.taxPayerAction);
json.writeStringField("nt_num", cdnur.cdNoteNumber);
json.writeStringField("nt_dt", gstFmt.format(cdnur.cdNoteDate));
}
else
{
json.writeStringField("ntty", cdnur.cdnNoteType);
json.writeStringField("nt_num", cdnur.cdNoteNumber);
json.writeStringField("nt_dt", gstFmt.format(cdnur.cdNoteDate));
json.writeStringField("inum", cdnur.invoiceNumber);
json.writeStringField("idt", gstFmt.format(cdnur.invoiceDate));
json.writeNumberField("val", cdnur.val);
if(cdnur.reason != null && cdnur.reason.trim().length() > 0)
{
json.writeStringField("rsn", cdnur.reason);
}
json.writeStringField("p_gst", cdnur.isPreGSTInvoice ? "Y" : "N");
writeLineItems(cdnur.items, json);
}
json.writeStringField("p_gst", cdnur.isPreGSTInvoice ? "Y" : "N");
writeLineItems(cdnur.items, json);
json.writeEndObject();
}
......
......@@ -20,34 +20,36 @@ public class DocSerializer extends BaseSerializer<DocIssued>
{
json.writeStringField("flag", docIssued.taxPayerAction);
}
json.writeFieldName("doc_det");
json.writeStartArray();
for(DocDetails docDetail : docIssued.docDetails)
else
{
json.writeStartObject();
json.writeNumberField("doc_num", docDetail.serialNumber);
json.writeFieldName("docs");
json.writeFieldName("doc_det");
json.writeStartArray();
for(Docs doc : docDetail.docs)
for(DocDetails docDetail : docIssued.docDetails)
{
json.writeStartObject();
json.writeNumberField("doc_num", docDetail.serialNumber);
json.writeNumberField("num", doc.docNum);
json.writeStringField("from", doc.fromSerialNo);
json.writeStringField("to", doc.toSerialNo);
json.writeNumberField("totnum", doc.totalNo);
json.writeNumberField("cancel", doc.cancelNo);
json.writeNumberField("net_issue", doc.toatlNetIssued);
json.writeFieldName("docs");
json.writeStartArray();
for(Docs doc : docDetail.docs)
{
json.writeStartObject();
json.writeNumberField("num", doc.docNum);
json.writeStringField("from", doc.fromSerialNo);
json.writeStringField("to", doc.toSerialNo);
json.writeNumberField("totnum", doc.totalNo);
json.writeNumberField("cancel", doc.cancelNo);
json.writeNumberField("net_issue", doc.toatlNetIssued);
json.writeEndObject();
}
json.writeEndArray();
json.writeEndObject();
}
json.writeEndArray();
json.writeEndObject();
}
json.writeEndArray();
json.writeEndObject();
}
}
......@@ -16,22 +16,31 @@ public class HSNSerializer extends BaseSerializer<HSN>
{
json.writeStartObject();
if("1".equalsIgnoreCase(hsn.recType))
if(hsn.taxPayerAction != null && "D".equalsIgnoreCase(hsn.taxPayerAction))
{
json.writeFieldName("data");
json.writeStringField("flag", hsn.taxPayerAction);
}
else if("2".equalsIgnoreCase(hsn.recType))
else
{
json.writeFieldName("det");
}
json.writeStartArray();
if("1".equalsIgnoreCase(hsn.recType))
{
json.writeFieldName("data");
}
else if("2".equalsIgnoreCase(hsn.recType))
{
json.writeFieldName("det");
}
json.writeStartArray();
for(HSNDetails hsnDetails : hsn.hsnDetails)
{
writeEachHSN(hsnDetails, json);
}
json.writeEndArray();
for(HSNDetails hsnDetails : hsn.hsnDetails)
{
writeEachHSN(hsnDetails, json);
}
json.writeEndArray();
}
json.writeEndObject();
}
......
......@@ -23,62 +23,70 @@ public class IMPGSerializer extends JsonSerializer<IMPG>
{
json.writeStartObject();
json.writeStringField("is_sez", impg.isSezImport ? "Y" : "N");
if(impg.isSezImport)
if(impg.taxPayerAction != null && "D".equalsIgnoreCase(impg.taxPayerAction))
{
json.writeStringField("stin", impg.sezGSTIN);
json.writeStringField("flag", impg.taxPayerAction);
json.writeStringField("boe_num", impg.billOfEntryNo);
json.writeStringField("boe_dt", gstFmt.format(impg.billOfEntryDate));
}
json.writeStringField("boe_num", impg.billOfEntryNo);
json.writeStringField("boe_dt", gstFmt.format(impg.billOfEntryDate));
json.writeNumberField("boe_val", impg.amount);
json.writeStringField("port_code", impg.portCode);
json.writeFieldName("itms");
json.writeStartArray();
for(InvLineItem li : impg.items)
else
{
json.writeStartObject();
json.writeNumberField("num", li.num);
json.writeNumberField("txval", li.taxval);
json.writeNumberField("rt", li.rate);
if(li.iamt > 0.0)
{
json.writeNumberField("iamt", li.iamt);
}
if(li.camt > 0.0)
{
json.writeNumberField("camt", li.camt);
}
if(li.samt > 0.0)
{
json.writeNumberField("samt", li.samt);
}
if(li.csamt > 0.0)
{
json.writeNumberField("csamt", li.csamt);
}
json.writeStringField("elg", li.itcType);
json.writeNumberField("tx_i", li.igstInputTax);
if(li.cgstInputTax > 0.0)
json.writeStringField("is_sez", impg.isSezImport ? "Y" : "N");
if(impg.isSezImport)
{
json.writeNumberField("tx_c", li.cgstInputTax);
json.writeStringField("stin", impg.sezGSTIN);
}
if(li.sgstInputTax > 0.0)
json.writeStringField("boe_num", impg.billOfEntryNo);
json.writeStringField("boe_dt", gstFmt.format(impg.billOfEntryDate));
json.writeNumberField("boe_val", impg.amount);
json.writeStringField("port_code", impg.portCode);
json.writeFieldName("itms");
json.writeStartArray();
for(InvLineItem li : impg.items)
{
json.writeNumberField("tx_s", li.sgstInputTax);
json.writeStartObject();
json.writeNumberField("num", li.num);
json.writeNumberField("txval", li.taxval);
json.writeNumberField("rt", li.rate);
if(li.iamt > 0.0)
{
json.writeNumberField("iamt", li.iamt);
}
if(li.camt > 0.0)
{
json.writeNumberField("camt", li.camt);
}
if(li.samt > 0.0)
{
json.writeNumberField("samt", li.samt);
}
if(li.csamt > 0.0)
{
json.writeNumberField("csamt", li.csamt);
}
json.writeStringField("elg", li.itcType);
json.writeNumberField("tx_i", li.igstInputTax);
if(li.cgstInputTax > 0.0)
{
json.writeNumberField("tx_c", li.cgstInputTax);
}
if(li.sgstInputTax > 0.0)
{
json.writeNumberField("tx_s", li.sgstInputTax);
}
json.writeNumberField("tx_cs", li.cessInputTax);
json.writeEndObject();
}
json.writeNumberField("tx_cs", li.cessInputTax);
json.writeEndObject();
json.writeEndArray();
}
json.writeEndArray();
json.writeEndObject();
}
catch(Exception e)
......
......@@ -21,57 +21,65 @@ public class IMPSSerializer extends JsonSerializer<IMPS>
{
json.writeStartObject();
json.writeStringField("inum", imps.inum);
json.writeStringField("idt", gstFmt.format(imps.idt));
json.writeNumberField("ival", imps.val);
json.writeStringField("pos", imps.pos);
json.writeFieldName("itms");
json.writeStartArray();
for(InvLineItem li : imps.items)
if(imps.taxPayerAction != null && "D".equalsIgnoreCase(imps.taxPayerAction))
{
json.writeStringField("flag", imps.taxPayerAction);
json.writeStringField("inum", imps.inum);
json.writeStringField("idt", gstFmt.format(imps.idt));
}
else
{
json.writeStartObject();
json.writeStringField("inum", imps.inum);
json.writeStringField("idt", gstFmt.format(imps.idt));
json.writeNumberField("ival", imps.val);
json.writeStringField("pos", imps.pos);
json.writeNumberField("num", li.num);
json.writeNumberField("txval", li.taxval);
json.writeNumberField("rt", li.rate);
if(li.iamt > 0.0)
{
json.writeNumberField("iamt", li.iamt);
}
if(li.camt > 0.0)
{
json.writeNumberField("camt", li.camt);
}
if(li.samt > 0.0)
{
json.writeNumberField("samt", li.samt);
}
if(li.csamt > 0.0)
{
json.writeNumberField("csamt", li.csamt);
}
json.writeStringField("elg", li.itcType);
json.writeNumberField("tx_i", li.igstInputTax);
if(li.cgstInputTax > 0.0)
{
json.writeNumberField("tx_c", li.cgstInputTax);
}
if(li.sgstInputTax > 0.0)
json.writeFieldName("itms");
json.writeStartArray();
for(InvLineItem li : imps.items)
{
json.writeNumberField("tx_s", li.sgstInputTax);
json.writeStartObject();
json.writeNumberField("num", li.num);
json.writeNumberField("txval", li.taxval);
json.writeNumberField("rt", li.rate);
if(li.iamt > 0.0)
{
json.writeNumberField("iamt", li.iamt);
}
if(li.camt > 0.0)
{
json.writeNumberField("camt", li.camt);
}
if(li.samt > 0.0)
{
json.writeNumberField("samt", li.samt);
}
if(li.csamt > 0.0)
{
json.writeNumberField("csamt", li.csamt);
}
json.writeStringField("elg", li.itcType);
json.writeNumberField("tx_i", li.igstInputTax);
if(li.cgstInputTax > 0.0)
{
json.writeNumberField("tx_c", li.cgstInputTax);
}
if(li.sgstInputTax > 0.0)
{
json.writeNumberField("tx_s", li.sgstInputTax);
}
json.writeNumberField("tx_cs", li.cessInputTax);
json.writeEndObject();
}
json.writeNumberField("tx_cs", li.cessInputTax);
json.writeEndObject();
json.writeEndArray();
}
json.writeEndArray();
json.writeEndObject();
}
......
......@@ -16,30 +16,36 @@ public class NilInwardSerializer extends JsonSerializer<NilInwardSupplies>
{
json.writeStartObject();
if(nilInwardSupplies.interNilSupplies != null)
if(nilInwardSupplies.taxPayerAction != null && "D".equalsIgnoreCase(nilInwardSupplies.taxPayerAction))
{
json.writeFieldName("inter");
json.writeStartObject();
json.writeNumberField("cpddr", nilInwardSupplies.interNilSupplies.compoundSuppliesAmt);
json.writeNumberField("exptdsply", nilInwardSupplies.interNilSupplies.exempetedSuppliesAmt);
json.writeNumberField("ngsply", nilInwardSupplies.interNilSupplies.nonGSTSuppliesAmt);
json.writeNumberField("nilsply", nilInwardSupplies.interNilSupplies.nilSuppliesAmt);
json.writeEndObject();
json.writeStringField("flag", nilInwardSupplies.taxPayerAction);
}
if(nilInwardSupplies.intraNilSupplies != null)
else
{
json.writeFieldName("intra");
if(nilInwardSupplies.interNilSupplies != null)
{
json.writeFieldName("inter");
json.writeStartObject();
json.writeNumberField("cpddr", nilInwardSupplies.interNilSupplies.compoundSuppliesAmt);
json.writeNumberField("exptdsply", nilInwardSupplies.interNilSupplies.exempetedSuppliesAmt);
json.writeNumberField("ngsply", nilInwardSupplies.interNilSupplies.nonGSTSuppliesAmt);
json.writeNumberField("nilsply", nilInwardSupplies.interNilSupplies.nilSuppliesAmt);
json.writeEndObject();
}
json.writeStartObject();
json.writeNumberField("cpddr", nilInwardSupplies.intraNilSupplies.compoundSuppliesAmt);
json.writeNumberField("exptdsply", nilInwardSupplies.intraNilSupplies.exempetedSuppliesAmt);
json.writeNumberField("ngsply", nilInwardSupplies.intraNilSupplies.nonGSTSuppliesAmt);
json.writeNumberField("nilsply", nilInwardSupplies.intraNilSupplies.nilSuppliesAmt);
json.writeEndObject();
if(nilInwardSupplies.intraNilSupplies != null)
{
json.writeFieldName("intra");
json.writeStartObject();
json.writeNumberField("cpddr", nilInwardSupplies.intraNilSupplies.compoundSuppliesAmt);
json.writeNumberField("exptdsply", nilInwardSupplies.intraNilSupplies.exempetedSuppliesAmt);
json.writeNumberField("ngsply", nilInwardSupplies.intraNilSupplies.nonGSTSuppliesAmt);
json.writeNumberField("nilsply", nilInwardSupplies.intraNilSupplies.nilSuppliesAmt);
json.writeEndObject();
}
}
json.writeEndObject();
}
}
......@@ -16,16 +16,23 @@ public class NilSerializer extends BaseSerializer<Nil>
{
json.writeStartObject();
json.writeFieldName("inv");
json.writeStartArray();
if(nil.taxPayerAction != null && "D".equalsIgnoreCase(nil.taxPayerAction))
{
json.writeStringField("flag", nil.taxPayerAction);
}
else
{
json.writeFieldName("inv");
json.writeStartArray();
for(Invoice inv : nil.invoices)
{
writeInvoice(inv, json);
}
json.writeEndArray();
for(Invoice inv : nil.invoices)
{
writeInvoice(inv, json);
}
json.writeEndArray();
}
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