Commit cb1fbef4 authored by Mohammed Dohadwala's avatar Mohammed Dohadwala

Added the logic for creating same number of contracts as the number of

stockists.
parent ab8142e9
package ibase.webitm.ejb.dis;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import ibase.utility.BaseLogger;
import ibase.utility.E12GenericUtility;
import ibase.webitm.ejb.ActionHandlerEJB;
import ibase.webitm.utility.ITMException;
import java.rmi.RemoteException;
import java.sql.Connection;
import javax.naming.InitialContext;
import ibase.system.config.AppConnectParm;
import ibase.system.config.ConnDriver;
import ibase.utility.BaseLogger;
import ibase.utility.GenericUtility;
import ibase.utility.UserInfoBean;
import ibase.webitm.ejb.ActionHandlerEJB;
import ibase.webitm.ejb.DBAccessEJB;
import ibase.webitm.ejb.MasterStatefulLocal;
import ibase.webitm.utility.ITMException;
/*
* Author : Gagan B.
* Date : 23-MAR-2026
* Purpose : To create Sales Contract Amendment Transaction from Sales Quotation Amendment Transaction.
*
* Columns which can be amended in Sales Quotation AMD
* sales_quot_amd.VALID_UPTO ------------- scontractamd.VALID_UPTO
* sales_quotdet_amd.QUANTITY ------------- scontractamddet.QUANTITY
* sales_quotdet_amd.RATE ------------- scontractamddet.RATE
*/
public class SalesContractAMDFromSalesQuotAMD extends ActionHandlerEJB
{
DBAccessEJB dbAccessEJB = new DBAccessEJB();
GenericUtility genericUtility = new GenericUtility();
// Detail1
public String generateTransXMLForHeader(String tranID, UserInfoBean userInfo)
{
BaseLogger.log("3", null, null, "generateTransXMLForHeader called. amd_no=[" + tranID + "]");
StringBuffer transXML = new StringBuffer();
String quotNo = "";
String validUpto = "";
String contractNo = "";
String fromDate = "";
try
{
quotNo = dbAccessEJB.getDBColumnValue("sales_quot_amd", "quot_no", "amd_no = '" + tranID + "'", userInfo.getTransDB());
BaseLogger.log("3", null, null, "quotNo=[" + quotNo + "]");
validUpto = dbAccessEJB.getDBColumnValue("sales_quot_amd", "valid_upto", "amd_no = '" + tranID + "'", userInfo.getTransDB());
BaseLogger.log("3", null, null, "validUpto=[" + validUpto + "]");
contractNo = dbAccessEJB.getDBColumnValue("scontract", "contract_no", "quot_no = '" + quotNo + "'", userInfo.getTransDB());
BaseLogger.log("3", null, null, "contractNo=[" + contractNo + "]");
fromDate = dbAccessEJB.getDBColumnValue("sales_quot_amd", "from_date", "amd_no = '" + tranID + "'", userInfo.getTransDB());
BaseLogger.log("3", null, null, "fromDate=[" + fromDate + "]");
}
catch (RemoteException | ITMException e)
{
BaseLogger.log("3", null, null, "Exception in generateTransXMLForHeader. [" + e.getMessage() + "]");
}
catch (Exception e)
{
BaseLogger.log("3", null, null, "Exception in generateTransXMLForHeader. [" + e.getMessage() + "]");
}
// transXML.append("<amd_no><![CDATA[" + tranID + "]]></amd_no>");
transXML.append("<valid_upto><![CDATA[" + dateFormatter(validUpto) + "]]></valid_upto>");
transXML.append("<eff_from><![CDATA[" + dateFormatter(fromDate) + "]]></eff_from>");
transXML.append("<contract_no><![CDATA[" + contractNo + "]]></contract_no>");
System.out.println("SalesContractAMD transXMLHeader [" + transXML + "]");
return transXML.toString();
}
//Detail2
public String generateTransXMLForDetail(String tranID, UserInfoBean userInfo)
{
BaseLogger.log("3", null, null, "generateTransXMLForDetail called. amd_no=[" + tranID + "]");
StringBuffer transXML = new StringBuffer();
String quotNo = "";
String lineNo = "";
String itemCode = "";
String quantity = "";
String rate = "";
String lineNoContract = "";
java.sql.Connection detailConn = null;
java.sql.PreparedStatement pstmt = null;
java.sql.ResultSet rs = null;
try
{
quotNo = dbAccessEJB.getDBColumnValue("sales_quot_amd", "quot_no", "amd_no = '" + tranID + "'",
userInfo.getTransDB());
BaseLogger.log("3", null, null, "quotNo=[" + quotNo + "]");
ConnDriver connDriver = new ConnDriver();
detailConn = connDriver.getConnectDB(userInfo.getTransDB());
pstmt = detailConn.prepareStatement(
"SELECT line_no, item_code, quantity, rate FROM sales_quotdet_amd WHERE quot_no = ? AND amd_no = ?");
pstmt.setString(1, quotNo);
pstmt.setString(2, tranID);
rs = pstmt.executeQuery();
while (rs.next())
{
lineNo = checkNull(rs.getString("line_no"));
itemCode = checkNull(rs.getString("item_code"));
quantity = checkNull(rs.getString("quantity"));
rate = checkNull(rs.getString("rate"));
BaseLogger.log("3", null, null, "lineNo=[" + lineNo + "] itemCode=[" + itemCode + "] quantity=[" + quantity + "] rate=[" + rate + "]");
// lineNoContract = dbAccessEJB.getDBColumnValue("scontractamddet",
// "line_no__contract",
// "amd_no = '" + tranID + "' AND line_no = '" + lineNo + "'",
// userInfo.getTransDB());
// BaseLogger.log("3", null, null, "lineNoContract=[" + lineNoContract + "]");
transXML.append("<Detail2 dbID='' domID='2' objContext='2' objName='scontract_amd'>");
transXML.append("<attribute IS_CHANGE='Y' pkNames='AMD_NO' selected='N' status='N' updateFlag='A'/>");
// transXML.append("<amd_no><![CDATA[" + tranID + "]]></amd_no>");
transXML.append("<line_no><![CDATA[" + lineNo + "]]></line_no>");
transXML.append("<item_code><![CDATA[" + itemCode + "]]></item_code>");
transXML.append("<quantity><![CDATA[" + quantity + "]]></quantity>");
transXML.append("<rate><![CDATA[" + rate + "]]></rate>");
transXML.append("<line_no__contract><![CDATA[" + lineNo + "]]></line_no__contract>");
transXML.append("</Detail2>");
}
}
catch (RemoteException | ITMException e)
{
BaseLogger.log("3", null, null, "Exception in generateTransXMLForDetail. [" + e.getMessage() + "]");
e.printStackTrace();
}
catch (Exception e)
{
BaseLogger.log("3", null, null, "Exception in generateTransXMLForDetail. [" + e.getMessage() + "]");
}
finally
{
try
{
if (rs != null) { rs.close(); rs = null; }
if (pstmt != null) { pstmt.close(); pstmt = null; }
if (detailConn != null) { detailConn.close(); detailConn = null; }
}
catch (Exception e) {}
}
System.out.println("SalesContractAMD transXMLDetail [" + transXML + "]");
return transXML.toString();
}
// Builds full processXML from header + detail and calls processRequest.
public String createSalesContractAMD(String transXMLHeader, String transXMLDetail, UserInfoBean userInfo) throws Exception
{
String result = "";
Connection connection = null;
BaseLogger.log("3", null, null, "Inside createSalesContractAMD..");
try
{
AppConnectParm appConnect = new AppConnectParm();
InitialContext initialContext = new InitialContext(appConnect.getProperty());
ConnDriver connDriver = new ConnDriver();
connection = connDriver.getConnectDB(userInfo.getTransDB());
StringBuffer processDynXmlString = new StringBuffer();
processDynXmlString.append("<DocumentRoot><description>Datawindow Root</description><group0>");
processDynXmlString.append("<description>Group0 description</description><Header0><description>Header0 members</description>");
processDynXmlString.append("<objName><![CDATA[scontract_amd]]></objName>");
processDynXmlString.append("<pageContext><![CDATA[1]]></pageContext>");
processDynXmlString.append("<objContext><![CDATA[1]]></objContext>");
processDynXmlString.append("<editFlag><![CDATA[A]]></editFlag>");
processDynXmlString.append("<focusedColumn><![CDATA[]]></focusedColumn>");
processDynXmlString.append("<action><![CDATA[SAVE]]></action>");
processDynXmlString.append("<elementName><![CDATA[]]></elementName>");
processDynXmlString.append("<keyValue><![CDATA[1]]></keyValue>");
processDynXmlString.append("<saveLevel><![CDATA[1]]></saveLevel>");
processDynXmlString.append("<forcedSave><![CDATA[false]]></forcedSave>");
processDynXmlString.append("<Detail1 dbID='' domID='1' objContext='1' objName='scontract_amd'>");
processDynXmlString.append("<attribute IS_CHANGE='Y' pkNames='AMD_NO' selected='N' status='N' updateFlag='A'/>");
processDynXmlString.append(transXMLHeader);
processDynXmlString.append("</Detail1>");
processDynXmlString.append(transXMLDetail);
processDynXmlString.append("</Header0></group0></DocumentRoot>");
String xmlString = processDynXmlString.toString();
BaseLogger.log("3", null, null, "Xml String.. " + xmlString);
MasterStatefulLocal masterStateful =
(MasterStatefulLocal) initialContext.lookup("ibase/MasterStatefulEJB/local");
String retString = masterStateful.processRequest(userInfo, xmlString, false, connection, "B", true);
result = retString;
BaseLogger.log("3", null, null, "createSalesContractAMD retString.." + result);
}
catch (Exception e)
{
BaseLogger.log("3", null, null, "Exception in createSalesContractAMD. [" + e.getMessage() + "]");
throw e;
}
finally
{
try
{
if (connection != null)
{
connection.close();
connection = null;
}
}
catch (Exception e)
{
BaseLogger.log("3", null, null, "Exception in createSalesContractAMD finally. [" + e.getMessage() + "]");
}
}
return result;
}
public String confirmCreateSalesContract(String tranID, String xtraParam, Connection conn) throws ITMException
{
BaseLogger.log("3", null, null, "=== SalesContractFromSalesQuot START ===");
String result = "";
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
if(conn == null)
{
ConnDriver connDriver = new ConnDriver();
conn = connDriver.getConnectDB(getUserInfo().getTransDB());
}
String userCode = genericUtility.getValueFromXTRA_PARAMS(xtraParam, "loginCode");
ibase.ejb.CommonDBAccessEJB commonDBAccessEJB = new ibase.ejb.CommonDBAccessEJB();
UserInfoBean userInfo = commonDBAccessEJB.createUserInfo(userCode);
String sql = "SELECT LINE_NO FROM SALES_QUOT_STOCKIST WHERE QUOT_NO=? ORDER BY LINE_NO";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, tranID);
rs = pstmt.executeQuery();
int iteration = 0;
while(rs.next()) // Loop
{
String lineNo = E12GenericUtility.checkNull(rs.getString("LINE_NO"));
BaseLogger.log("3", null, null, "confirmCreateSalesContractAMD called. amd_no=[" + tranID + "]");
String transXMLHeader = generateTransXMLForHeader(tranID, userInfo);
String transXMLDetail = generateTransXMLForDetail(tranID, userInfo);
BaseLogger.log("3", null, null, "DEBUG: Iter=" + iteration + " | tranID=" + tranID + " | lineNo=" + lineNo);
BaseLogger.log("3", null, null, "\n\n===\n" + "ITERATION: " + iteration + "\n" +"DETAIL1 \n" + "===\n" + transXMLHeader);
BaseLogger.log("3", null, null, "\n\n===\n" + "ITERATION: " + iteration + "\n" +"DETAIL2 \n" + "===\n" + transXMLDetail);
result = createSalesContractAMD(transXMLHeader, transXMLDetail, userInfo);
}
}
catch (Exception e)
{
BaseLogger.log("3", null, null, "Exception in confirmCreateSalesContractAMD. [" + e.getMessage() + "]");
throw new ITMException(e);
}
return result;
}
private String checkNull(String input)
{
return (input == null) ? "" : input;
}
private String dateFormatter(String inputDate)
{
try
{
java.text.SimpleDateFormat inputFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.text.SimpleDateFormat outputFormat = new java.text.SimpleDateFormat("dd/MM/yy HH:mm:ss");
return outputFormat.format(inputFormat.parse(inputDate));
}
catch (Exception e)
{
return inputDate;
}
}
}
\ No newline at end of file
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