Commit 0d1eb2a3 authored by SABURI PATEKAR's avatar SABURI PATEKAR

Fixed issue where RFQ Wizard detail screen was not loading all items for...

Fixed issue where RFQ Wizard detail screen was not loading all items for divisions with a large item count
parent 5dc5264f
package ibase.webitm.ejb.dis;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.system.config.AppConnectParm;
import ibase.system.config.ConnDriver;
import ibase.utility.BaseLogger;
import ibase.utility.CommonConstants;
import ibase.webitm.ejb.fin.*;
import ibase.webitm.ejb.mfg.MfgCommon;
import ibase.utility.E12GenericUtility;
import ibase.utility.UserInfoBean;
import ibase.webitm.utility.ITMException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.rmi.RemoteException;
import java.sql.*;
import java.text.DateFormat;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import javax.naming.InitialContext;
import org.w3c.dom.*;
public class ReqForQuotationWiz extends ValidatorEJB{
static int domID = 1;
@Override
public String itemChanged() throws RemoteException, ITMException
{
BaseLogger.log("3", getUserInfo(), null,"In ReqForQuotationWiz itemChanged1");
return "";
}
public String wfValData(String xmlString, String xmlString1,String xmlString2, String objContext, String editFlag, String xtraParams, String formName) throws RemoteException,ITMException
{
Document dom = null;
Document dom1 = null;
Document dom2 = null;
String errString = "";
try
{
System.out.println("wfValData DOM1:StrgBrandActWiz ["+xmlString+"]");
System.out.println("wfValData DOM2:StrgBrandActWiz ["+xmlString1+"]");
System.out.println("wfValData DOM3:StrgBrandActWiz ["+xmlString2+"]");
if(xmlString != null && xmlString.trim().length()!=0)
{
dom = parseString(xmlString);
}
else
{
System.out.println("xmlstring is null StrgBrandActWiz Validation");
}
if(xmlString1 != null && xmlString1.trim().length()!=0)
{
dom1 = parseString(xmlString1);
}
else
{
System.out.println("xmlstring1 is null StrgBrandActWiz Validation");
}
if(xmlString2 != null && xmlString2.trim().length()!=0)
{
dom2 = parseString(xmlString2);
}
else
{
System.out.println("xmlstring2 is null StrgBrandActWiz Validation");
}
System.out.println("Before call valdata StrgBrandActWiz");
errString = wfValData(dom,dom1,dom2,objContext,editFlag,xtraParams,formName);
}
catch(Exception e)
{
System.out.println("Exception : [StrgBrandActWiz Validation][wfValData(String xmlString)] : ==>\n"+e.getMessage());
}
return (errString);
}
public String wfValData(Document dom, Document dom1,Document dom2, String objContext, String editFlag, String xtraParams, String formName) throws RemoteException,ITMException
{
E12GenericUtility genericUtility = new ibase.utility.E12GenericUtility();
String userId = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"loginCode");
String logincode = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"loginCode");
String errString = "";
int currentFormNo = 0;
NodeList parentList = null;
NodeList childList = null;
Node parentNode = null;
Node childNode = null;
String childNodeName = "";
String columnValue = "";
Connection connectionObject = null;
PreparedStatement pstmt = null;
ResultSet rSet = null ;
ResultSet rs = null ;
String propDateValue = "";
int firstMonth = 01;
int lastMonth = 12;
ITMDBAccessEJB itmDBAccessLocal = null;
int noOfChilds = 0;
ArrayList prdList = new ArrayList();
String paramValue="";
ArrayList<String> errList = new ArrayList<String>();
ArrayList<String> errFields = new ArrayList<String>();
String errCode = "";
String errorType = "";
StringBuffer errStringXml = new StringBuffer("<?xml version = \"1.0\"?> \r\n <Root> <Errors>");
try
{
connectionObject = getConnection();
AppConnectParm appConnect = new AppConnectParm();
Properties p = appConnect.getProperty();
itmDBAccessLocal = new ITMDBAccessEJB();
String sql="";
System.out.println("wfValData objContext StrgBrandActWiz:: ["+objContext+"]");
if(objContext != null && objContext.trim().length()>0)
{
currentFormNo = Integer.parseInt(objContext);
}
switch ( currentFormNo )
{
case 1:
{
if( errString.indexOf( "<Errors>" ) == -1 )
{
parentList = dom.getElementsByTagName("Detail"+ currentFormNo);
int parentNodeListLength = parentList.getLength();
for (int prntCtr = 0; prntCtr < parentNodeListLength; prntCtr++ )
{
parentNode = parentList.item(prntCtr);
childList = parentNode.getChildNodes();
noOfChilds = childList.getLength();
for (int ctr = 0; ctr < noOfChilds; ctr++)
{
childNode = childList.item(ctr);
if( childNode.getNodeType() != Node.ELEMENT_NODE )
{
continue;
}
if ( childNode != null && childNode.getFirstChild() != null )
{
columnValue = childNode.getFirstChild().getNodeValue();
}
childNodeName = childNode.getNodeName();
BaseLogger.log("3", null, null, "ReqForQuotationWiz childNodeName [" + childNodeName + "]");
if( childNodeName.equalsIgnoreCase("cust_code") )
{
String custCode = checkNull(genericUtility.getColumnValue("cust_code", dom));
BaseLogger.log("3", null, null, "ReqForQuotationWiz custCode wfValData case 1 [" + custCode + "]");
String checkCustCodeSql = "select count(cust_code) as custCodeCount from customer where cust_code = ? and cust_type = 'R'";
PreparedStatement checkCustCodePs = connectionObject.prepareStatement(checkCustCodeSql);
checkCustCodePs.setString(1, custCode);
ResultSet checkCustCodeRs = checkCustCodePs.executeQuery();
while(checkCustCodeRs.next()) {
int custCodeCont = checkCustCodeRs.getInt("custCodeCount");
BaseLogger.log("3", null, null, "ReqForQuotationWiz custCode wfValData case 1 custCodeCont::[" + custCodeCont + "]");
if(custCodeCont<=0) {
//errString = getErrorString("cust_code", "VTCUST1", userId);
errCode="VTCUST1";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
if(checkCustCodeRs != null)
{
checkCustCodeRs.close();
checkCustCodeRs = null;
}
if(checkCustCodePs != null)
{
checkCustCodePs.close();
checkCustCodePs = null;
}
}
if( childNodeName.equalsIgnoreCase("quot_type") )
{
String customerCode = checkNull(genericUtility.getColumnValue("cust_code", dom));
String quotationtype = checkNull(genericUtility.getColumnValue("quot_type", dom));
BaseLogger.log("3", null, null, "ReqForQuotationIC quotationtype wfValData case 1 [" + quotationtype + "]");
if (quotationtype.equalsIgnoreCase("G"))
{
String quotationtypeSql = "select count(group_code) as customergroupcount from customer where group_code= ?";
PreparedStatement quotationtypePs = connectionObject.prepareStatement(quotationtypeSql);
quotationtypePs.setString(1, customerCode);
ResultSet quotationtypeRs = quotationtypePs.executeQuery();
while(quotationtypeRs.next())
{
int customergroupcount = quotationtypeRs.getInt("customergroupcount");
BaseLogger.log("3", null, null, "ReqForQuotationIC group_count wfValData case 1 quotationtypeRs::[" + customergroupcount + "]");
if(customergroupcount<=1)
{
errCode="INVCG";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
if(quotationtypeRs != null)
{
quotationtypeRs.close();
quotationtypeRs = null;
}
if(quotationtypePs != null)
{
quotationtypePs.close();
quotationtypePs = null;
}
}
}
if( childNodeName.equalsIgnoreCase("site_code") )
{
String siteCode = checkNull(genericUtility.getColumnValue("site_code", dom));
BaseLogger.log("3", null, null, "ReqForQuotationWiz siteCode wfValData case 1 [" + siteCode + "]");
String checkSiteCodeSql = "select count(site_code) as siteCodeCount from site where site_code = ?";
PreparedStatement checkSiteCodePs = connectionObject.prepareStatement(checkSiteCodeSql);
checkSiteCodePs.setString(1, siteCode);
ResultSet checkSiteCodeRs = checkSiteCodePs.executeQuery();
while(checkSiteCodeRs.next()) {
int siteCodeCont = checkSiteCodeRs.getInt("siteCodeCount");
BaseLogger.log("3", null, null, "ReqForQuotationWiz siteCode wfValData case 1 siteCodeCont::[" + siteCodeCont + "]");
if(siteCodeCont<=0) {
//errString = getErrorString("site_code", "VTSITCD1", userId);
errCode="VTSITCD1";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
if(checkSiteCodeRs != null)
{
checkSiteCodeRs.close();
checkSiteCodeRs = null;
}
if(checkSiteCodePs != null)
{
checkSiteCodePs.close();
checkSiteCodePs = null;
}
}
if( childNodeName.equalsIgnoreCase("sales_pers") )
{
String salesPerson = checkNull(genericUtility.getColumnValue("sales_pers", dom));
BaseLogger.log("3", null, null, "ReqForQuotationIC salesPerson wfValData case 1 [" + salesPerson + "]");
String salesPersonSql = "select count(SALES_PERS) as salesPersonCount from SALES_PERS where SALES_PERS = ?";
PreparedStatement salesPersonPs = connectionObject.prepareStatement(salesPersonSql);
salesPersonPs.setString(1, salesPerson);
ResultSet salesPersonRs = salesPersonPs.executeQuery();
while(salesPersonRs.next()) {
int salesPersonCount = salesPersonRs.getInt("salesPersonCount");
BaseLogger.log("3", null, null, "ReqForQuotationIC sales_pers wfValData case 1 salesPersonRs::[" + salesPersonCount + "]");
if(salesPersonCount<=0) {
errCode="VTSALPER";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
if(salesPersonRs != null)
{
salesPersonRs.close();
salesPersonRs = null;
}
if(salesPersonPs != null)
{
salesPersonPs.close();
salesPersonPs = null;
}
}
if( childNodeName.equalsIgnoreCase("item_ser") )
{
String itemSerStr = checkNull(genericUtility.getColumnValue("item_ser", dom));
BaseLogger.log("3", null, null, "ReqForQuotationWiz itemSerStr wfValData case 1 [" + itemSerStr + "]");
if (itemSerStr != null && itemSerStr.length() > 0) {
String[] itemSerArr = itemSerStr.split(",");
for (String itemSer : itemSerArr) {
BaseLogger.log("3", null, null, "ReqForQuotationWiz item_ser wfValData case 1 itemSer [" + itemSer + "]");
sql = "SELECT count(1) FROM itemser WHERE item_ser = ?";
pstmt = connectionObject.prepareStatement(sql);
pstmt.setString(1, itemSer.trim());
rs = pstmt.executeQuery();
long count = 0;
if (rs.next()) {
count = rs.getLong(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
if (count == 0) {
//errString = getErrorString("item_ser", "VTITEMSER1", userId);
errCode="VTITEMSER1";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
}
if( childNodeName.equalsIgnoreCase("valid_upto") )
{
String validUptoStr = checkNull(genericUtility.getColumnValue("valid_upto", dom));
BaseLogger.log("3", null, null, "ReqForQuotationIC validUptoStr wfValData case 1 [" + validUptoStr + "]");
if(isDateInvalid(validUptoStr))
{
//errString = getErrorString("valid_upto", "VTINUPTO", userId);
errCode="VTINUPTO";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
}//end of inner for loop
}//end of first for loop
}
break;
}
case 2:
{
if( errString.indexOf( "<Errors>" ) == -1 )
{
parentList = dom.getElementsByTagName("Detail"+ currentFormNo);
int parentNodeListLength = parentList.getLength();
for (int prntCtr = 0; prntCtr < parentNodeListLength; prntCtr++ )
{
parentNode = parentList.item(prntCtr);
childList = parentNode.getChildNodes();
noOfChilds = childList.getLength();
for (int ctr = 0; ctr < noOfChilds; ctr++)
{
childNode = childList.item(ctr);
if( childNode.getNodeType() != Node.ELEMENT_NODE )
{
continue;
}
if ( childNode != null && childNode.getFirstChild() != null )
{
columnValue = childNode.getFirstChild().getNodeValue();
}
childNodeName = childNode.getNodeName();
BaseLogger.log("3", null, null, "ReqForQuotationWiz childNodeName [" + childNodeName + "]");
if(childNodeName.trim().length()<=0) {
BaseLogger.log("3", null, null, "ReqForQuotationWiz detail 2 is blank");
}
if( childNodeName.equalsIgnoreCase("item_code") )
{
String[] itemSerArr = null;
String itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
String ptrFlag = checkNull(genericUtility.getColumnValue("ptr_flag", dom));
String itemSer = checkNull(genericUtility.getColumnValue("item_ser", dom1));
BaseLogger.log("3", null, null, "ReqForQuotationWiz itemCode wfValData case 2 itemSer:[" + itemSer + "]");
BaseLogger.log("3", null, null, "ReqForQuotationWiz itemCode wfValData case 2 ptrFlag:[" + ptrFlag + "]");
BaseLogger.log("3", null, null, "ReqForQuotationWiz itemCode wfValData case 2 [" + itemCode + "]");
if(itemSer != null && itemSer.trim().length() > 0)
{
itemSerArr = itemSer.split(",");
}
StringBuilder checkItemCodeSql = new StringBuilder(
"select count(item_code) as itemCodeCount from item where item_code = ?"
);
if(itemSerArr != null && itemSerArr.length > 0) {
checkItemCodeSql.append(" and item_ser IN (");
for(int i = 0; i < itemSerArr.length; i++) {
checkItemCodeSql.append("?");
if(i < itemSerArr.length - 1) {
checkItemCodeSql.append(",");
}
}
checkItemCodeSql.append(")");
}
String checkItemCodeSql1 = checkItemCodeSql.toString();
PreparedStatement checkItemCodePs = connectionObject.prepareStatement(checkItemCodeSql1);
// 9 Set first parameter (item_code)
int paramIndex = 1;
checkItemCodePs.setString(paramIndex++, itemCode);
// 9 Set IN clause parameters (item_ser)
if(itemSerArr != null && itemSerArr.length > 0) {
for(String ser : itemSerArr) {
checkItemCodePs.setString(paramIndex++, ser.trim());
}
}
ResultSet checkItemCodeRs = checkItemCodePs.executeQuery();
while(checkItemCodeRs.next()) {
int itemCodeCont = checkItemCodeRs.getInt("itemCodeCount");
BaseLogger.log("3", null, null, "ReqForQuotationWiz itemCode wfValData case 1 itemCodeCont::[" + itemCodeCont + "]");
if(itemCodeCont<=0 && !ptrFlag.equalsIgnoreCase("Y")) {
errCode="STKVALITNE";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
//errString = getErrorString("item_code", "STKVALITNE", userId);
}
}
if(checkItemCodeRs != null)
{
checkItemCodeRs.close();
checkItemCodeRs = null;
}
if(checkItemCodePs != null)
{
checkItemCodePs.close();
checkItemCodePs = null;
}
}
if(childNodeName.equalsIgnoreCase("qty_quot"))
{
String qtyStr = checkNull(genericUtility.getColumnValue("qty_quot", dom));
double qtyVal = (qtyStr == null || qtyStr.trim().length() == 0) ? 0 : Double.parseDouble(qtyStr.trim());
if(qtyVal < 0)
{
errCode = "VTQTYN";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
if(childNodeName.equalsIgnoreCase("rate_quot"))
{
String rateStr = checkNull(genericUtility.getColumnValue("rate_quot", dom));
double rateVal = (rateStr == null || rateStr.trim().length() == 0) ? 0 : Double.parseDouble(rateStr.trim());
if(rateVal < 0)
{
errCode = "VTRATENEG";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
}
/*
* if( childNodeName.equalsIgnoreCase("rate_quot") ) { String phyAttrVal = "";
* String itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
* String quotedRate = checkNull(genericUtility.getColumnValue("rate_quot",
* dom)); BaseLogger.log("3", null, null,
* "ReqForQuotationIC in condition itemCode wfValData quotedRate::: [" +
* quotedRate + "]");
*
* BaseLogger.log("3", null, null,
* "ReqForQuotationIC in condition itemCode wfValData itemCode::: [" + itemCode
* + "]"); String phyAttrValSql =
* "select PHY_ATTRIB_19 from item where item_code = ?"; PreparedStatement
* phyAttrValPs = connectionObject.prepareStatement(phyAttrValSql);
* phyAttrValPs.setString(1, itemCode); ResultSet phyAttrValRs =
* phyAttrValPs.executeQuery(); while(phyAttrValRs.next()) { phyAttrVal =
* checkNull(phyAttrValRs.getString("PHY_ATTRIB_19")); } BaseLogger.log("3",
* null, null,
* "ReqForQuotationIC in condition itemCode wfValData phyAttrVal::: [" +
* phyAttrVal + "]"); if(phyAttrVal.equalsIgnoreCase("SRNA")) {
* errCode="INEFSR"; errList.add(errCode);
* errFields.add(childNodeName.toLowerCase()); //errString =
* getErrorString("rate_quot", "INEFSR", userId); BaseLogger.log("3", null,
* null, "ReqForQuotationIC in PHY_ATTRIB_19 details null errString:: [" +
* errString + "]");
*
*
* }
*
* if(phyAttrValPs != null) { phyAttrValPs.close(); phyAttrValPs = null; }
* if(phyAttrValRs != null) { phyAttrValRs.close(); phyAttrValRs = null; }
*
* }
*/
//Removed the validation from Quoted Quantity as it can be zero
/*
* if( childNodeName.equalsIgnoreCase("qty_quot") ) { int qty = 0; String
* quotQuantity = checkNull(genericUtility.getColumnValue("qty_quot", dom));
* BaseLogger.log("3", null, null,
* "ReqForQuotationWiz qty_quot wfValData case 2 [" + quotQuantity + "]");
* if(quotQuantity != null && quotQuantity.trim().length() > 0) { qty =
* Integer.parseInt(quotQuantity);
*
* }
*
* if(qty<=0) { errString = getErrorString("qty_quot", "NULNQUAN", userId);
* BaseLogger.log("3", null, null,
* "ReqForQuotationWiz in qty_quot < 0 errString:: [" + errString + "]"); break;
* } }
*/
//Comment out the rate_quot validation block as this case handled by JS[Start]
/*
if( childNodeName.equalsIgnoreCase("rate_quot") )
{
int quotedRate = 0;
String rateQuot = checkNull(genericUtility.getColumnValue("rate_quot", dom));
BaseLogger.log("3", null, null, "ReqForQuotationWiz rate_quot wfValData case 2 [" + rateQuot + "]");
if(rateQuot != null && rateQuot.trim().length() > 0)
{
double quotedRateDouble = Double.parseDouble(rateQuot);
quotedRate = (int) quotedRateDouble;
// quotedRate = Integer.parseInt(rateQuot);
}
BaseLogger.log("3", null, null, "ReqForQuotationWiz rate_quot wfValData case 2 quotedRate::[" + quotedRate + "]");
if(quotedRate <= 0) {
errCode="NULNQRATE";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
if(quotedRate > 0) {
String competitorRate = checkNull(genericUtility.getColumnValue("competitor_rate", dom));
String competitorItem = checkNull(genericUtility.getColumnValue("competitor_item", dom));
String competitorName = checkNull(genericUtility.getColumnValue("competitor_name", dom));
BaseLogger.log("3", null, null, "ReqForQuotationWiz competitorRate wfValData [" + competitorRate + "]");
BaseLogger.log("3", null, null, "ReqForQuotationWiz competitorItem wfValData [" + competitorItem + "]");
BaseLogger.log("3", null, null, "ReqForQuotationWiz competitorNane wfValData [" + competitorName + "]");
// Check if any of the competitor fields are null or blank
if ((competitorRate == null || competitorRate.trim().isEmpty())
|| (competitorItem == null || competitorItem.trim().isEmpty())
|| (competitorName == null || competitorName.trim().isEmpty())) {
BaseLogger.log("3", null, null, "ReqForQuotationWiz in competitor details null ]");
//errString = getErrorString("ptr_flag", "COMPDETM", userId);
errCode="COMPDETM";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
BaseLogger.log("3", null, null, "ReqForQuotationWiz in competitor details null errString:: [" + errString + "]");
}
}
String itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
String phyAttrVal = "";
BaseLogger.log("3", null, null, "ReqForQuotationIC in condition itemCode wfValData itemCode::: [" + itemCode + "]");
String phyAttrValSql = "select PHY_ATTRIB_19 from item where item_code = ?";
PreparedStatement phyAttrValPs = connectionObject.prepareStatement(phyAttrValSql);
phyAttrValPs.setString(1, itemCode);
ResultSet phyAttrValRs = phyAttrValPs.executeQuery();
while(phyAttrValRs.next()) {
phyAttrVal = checkNull(phyAttrValRs.getString("PHY_ATTRIB_19"));
}
BaseLogger.log("3", null, null, "ReqForQuotationIC in condition itemCode wfValData phyAttrVal::: [" + phyAttrVal + "]");
if(phyAttrVal.equalsIgnoreCase("SRNA")) {
errString = getErrorString("rate_quot", "INVQR", userId);
BaseLogger.log("3", null, null, "ReqForQuotationIC in PHY_ATTRIB_19 details null errString:: [" + errString + "]");
break;
}
if(phyAttrValPs != null)
{
phyAttrValPs.close();
phyAttrValPs = null;
}
if(phyAttrValRs != null)
{
phyAttrValRs.close();
phyAttrValRs = null;
}
}
*/
//Comment out the rate_quot validation block as this case handled by JS[End]
//Added changes on 25-March-26 by Ajit [Start]
if( childNodeName.equalsIgnoreCase("unit") )
{
int unitCount = 0;
String unit = checkNull(genericUtility.getColumnValue("unit", dom));
BaseLogger.log("3", null, null, "ReqForQuotationIC in condition unit wfValData unit::: [" + unit + "]");
String unitCountSql = "select count(unit) as unitCount from uom where unit = ?";
PreparedStatement unitCountPs = connectionObject.prepareStatement(unitCountSql);
unitCountPs.setString(1, unit);
ResultSet unitCountRs = unitCountPs.executeQuery();
while(unitCountRs.next()) {
unitCount = unitCountRs.getInt("unitCount");
}
BaseLogger.log("3", null, null, "ReqForQuotationIC in condition unitCount::: [" + unitCount + "]");
if(unitCount <= 0) {
errCode="VTITEMUNIT";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
if(unitCountPs != null)
{
unitCountPs.close();
unitCountPs = null;
}
if(unitCountRs != null)
{
unitCountRs.close();
unitCountRs = null;
}
}
if( childNodeName.equalsIgnoreCase("pack_code") )
{
int packCodeCount = 0;
String packCode = checkNull(genericUtility.getColumnValue("pack_code", dom));
BaseLogger.log("3", null, null, "ReqForQuotationIC in condition unit wfValData packCode::: [" + packCode + "]");
String packCodeCountSql = "select count(pack_code) as packCodeCount from packing where pack_code = ?";
PreparedStatement packCodeCountPs = connectionObject.prepareStatement(packCodeCountSql);
packCodeCountPs.setString(1, packCode);
ResultSet packCodeCountRs = packCodeCountPs.executeQuery();
while(packCodeCountRs.next()) {
packCodeCount = packCodeCountRs.getInt("packCodeCount");
}
BaseLogger.log("3", null, null, "ReqForQuotationIC in condition unitCount::: [" + packCodeCount + "]");
if(packCodeCount <= 0) {
errCode="VTPCKCDM";
errList.add(errCode);
errFields.add(childNodeName.toLowerCase());
}
if(packCodeCountPs != null)
{
packCodeCountPs.close();
packCodeCountPs = null;
}
if(packCodeCountRs != null)
{
packCodeCountRs.close();
packCodeCountRs = null;
}
}
//Added changes on 25-March-26 by Ajit [End]
//end of Sales_pers Validation
}//end of inner for loop
}//end of first for loop
}//end of errorstring
break;
}
}//end of validation of first form
int errListSize = errList.size();
BaseLogger.log("3", getUserInfo(), null, "errListSize::::::::::"+errListSize);
int count = 0;
String errFldName = null;
if (errList != null && errListSize > 0)
{
for (count = 0; count < errListSize; count++)
{
errCode = errList.get(count);
errFldName = errFields.get(count);
BaseLogger.log("3", getUserInfo(), null, " testing :errCode .:" + errCode+"errString>>>>>>>>>"+errString);
errString = getErrorString(errFldName, errCode, userId);
errorType = errorType(conn, errCode);
if (errString.length() > 0)
{
String bifurErrString = errString.substring(errString.indexOf("<Errors>") + 8, errString.indexOf("<trace>"));
bifurErrString = bifurErrString + errString.substring(errString.indexOf("</trace>") + 8, errString.indexOf("</Errors>"));
errStringXml.append(bifurErrString);
errString = "";
}
if (errorType.equalsIgnoreCase("E"))
{
break;
}
}
errList.clear();
errList = null;
errFields.clear();
errFields = null;
errStringXml.append("</Errors> </Root> \r\n");
}//end of if for errList
else
{
errStringXml = new StringBuffer("");
}
errString = errStringXml.toString();
}//end of Try block wfvalData
catch(Exception e)
{
e.printStackTrace();
errString = "";
errString = genericUtility.createErrorString( e ) ;
String messageValue="",message = "";
if( errString.indexOf("<Errors>")!=-1 )
{
if( errString.length() > 0 )
{
String msgDescr = errString.substring(errString.indexOf("<description>")+("<description>").length(),errString.indexOf("</description>"));
messageValue = msgDescr.substring(msgDescr.indexOf("<![CDATA[")+("<![CDATA[").length(),msgDescr.indexOf("]"));
String messageDescr = errString.substring(errString.indexOf("<message>")+("<message>").length(),errString.indexOf("</message>"));
message = messageDescr.substring(messageDescr.indexOf("<![CDATA[")+("<![CDATA[").length(),messageDescr.indexOf("]"));
System.out.println("errorMessage==>"+messageValue);
StringBuffer valueXmlErrorString = new StringBuffer( "<?xmlversion=\"1.0\"?>\r\n<Root>\r\n<Header>\r\n<Errors>\r\n" );
valueXmlErrorString.append("<error id=\"INVDATA\" type=\"E\" column_name=\"\">");
valueXmlErrorString.append("<message><![CDATA[").append(message).append("]]></message>\r\n");
valueXmlErrorString.append("<description><![CDATA[").append(messageValue).append("]]></description>\r\n");
valueXmlErrorString.append("<type>E</type>\r\n");
valueXmlErrorString.append("<option></option>\r\n");
valueXmlErrorString.append("<time></time>\r\n");
valueXmlErrorString.append("<alarm></alarm>\r\n");
valueXmlErrorString.append("<source></source>\r\n");
valueXmlErrorString.append("<trace>Error : NO DATA</trace>\r\n");
valueXmlErrorString.append("<redirect>1</redirect>\r\n");
valueXmlErrorString.append("</error>\r\n");
valueXmlErrorString.append("</Errors>\r\n");
valueXmlErrorString.append("</Header>\r\n");
valueXmlErrorString.append( "</Root>\r\n" );
System.out.println( "\n****valueXmlErrorString :" + valueXmlErrorString.toString() + ":********" );
errString =valueXmlErrorString.toString();
}
}
}//end of catch after try in wfvaldata
finally
{
try
{
if(rSet !=null)
{
rSet.close();
rSet = null;
}
if (pstmt != null)
{
pstmt.close();
pstmt = null;
}
if( connectionObject != null && ! connectionObject.isClosed() )
{
connectionObject.close();
connectionObject = null;
}
}
catch(Exception e)
{
System.out.println( "Exception :StrgBrandActWiz wfvalData :==>\n"+e.getMessage());
errString = "";
errString = genericUtility.createErrorString( e ) ;
System.out.println( "errString ::" +errString + ":" );
String messageValue="",message = "";
if( errString.indexOf("<Errors>")!=-1 )
{
if( errString.length() > 0 )
{
String msgDescr = errString.substring(errString.indexOf("<description>")+("<description>").length(),errString.indexOf("</description>"));
messageValue = msgDescr.substring(msgDescr.indexOf("<![CDATA[")+("<![CDATA[").length(),msgDescr.indexOf("]"));
String messageDescr = errString.substring(errString.indexOf("<message>")+("<message>").length(),errString.indexOf("</message>"));
message = messageDescr.substring(messageDescr.indexOf("<![CDATA[")+("<![CDATA[").length(),messageDescr.indexOf("]"));
System.out.println("errorMessage==>"+messageValue);
StringBuffer valueXmlErrorString = new StringBuffer( "<?xmlversion=\"1.0\"?>\r\n<Root>\r\n<Header>\r\n<Errors>\r\n" );
valueXmlErrorString.append("<error id=\"INVDATA\" type=\"E\" column_name=\"\">");
valueXmlErrorString.append("<message><![CDATA[").append(message).append("]]></message>\r\n");
valueXmlErrorString.append("<description><![CDATA[").append(messageValue).append("]]></description>\r\n");
valueXmlErrorString.append("<type>E</type>\r\n");
valueXmlErrorString.append("<option></option>\r\n");
valueXmlErrorString.append("<time></time>\r\n");
valueXmlErrorString.append("<alarm></alarm>\r\n");
valueXmlErrorString.append("<source></source>\r\n");
valueXmlErrorString.append("<trace>Error : NO DATA</trace>\r\n");
valueXmlErrorString.append("<redirect>1</redirect>\r\n");
valueXmlErrorString.append("</error>\r\n");
valueXmlErrorString.append("</Errors>\r\n");
valueXmlErrorString.append("</Header>\r\n");
valueXmlErrorString.append( "</Root>\r\n" );
System.out.println( "\n****valueXmlErrorString :" + valueXmlErrorString.toString() + ":********" );
errString =valueXmlErrorString.toString();
}
}
}
}//end of finally block of wfvalData
System.out.println("errString wfvalData ReqForQuotationWiz:: ["+errString+"]");
return errString;
}//End WfValData
@Override
public String itemChanged(String xmlCurrFrmString, String xmlHdrFrmString, String xmlAllFrmString, String objContext, String currentColumn, String editFlag, String xtraParams, String formName) throws RemoteException, ITMException
{
BaseLogger.log("3", getUserInfo(), null,"In ReqForQuotationWiz itemChanged2");
BaseLogger.log("3", getUserInfo(), null,"DEBUG currentColumn RAW = [" + currentColumn + "]");
BaseLogger.log("3", getUserInfo(), null,"DEBUG currentColumn trimmed = [" +
(currentColumn == null ? "null" : currentColumn.trim()) + "]");
BaseLogger.log("3", getUserInfo(), null,"DEBUG currentColumn length = " +
(currentColumn == null ? 0 : currentColumn.length()));
Document currDom = null;
Document hdrDom = null;
Document allDom = null;
String errString = null;
E12GenericUtility genericUtility = new E12GenericUtility();
try
{
if (xmlCurrFrmString != null && xmlCurrFrmString.trim().length()!=0)
{
currDom = genericUtility.parseString(xmlCurrFrmString);
}
if (xmlHdrFrmString != null && xmlHdrFrmString.trim().length()!=0)
{
hdrDom = genericUtility.parseString(xmlHdrFrmString);
}
if (xmlAllFrmString != null && xmlAllFrmString.trim().length()!=0)
{
allDom = genericUtility.parseString(xmlAllFrmString);
}
System.out.println("xmlCurrFrmString--------"+xmlCurrFrmString);
System.out.println("xmlHdrFrmString--------"+xmlHdrFrmString);
System.out.println("xmlAllFrmString--------"+xmlAllFrmString);
errString = itemChanged( currDom, hdrDom, allDom, objContext, currentColumn, editFlag, xtraParams, formName );
System.out.println ( "ErrString :" + errString);
}
catch (Exception e)
{
System.out.println ( "Exception : QCResultEntryWizIC:default_ItemChanged(String,String):" + e.getMessage() + ":" );
errString = genericUtility.createErrorString(e);
throw new ITMException(e);
}
System.out.println ( "returning from QCResultEntryWizIC default_Itemchanged" );
return errString;
}
private double parseDoubleSafe(String value)
{
try
{
if(value != null && value.trim().length() > 0)
{
return Double.parseDouble(value);
}
}
catch(Exception e)
{
BaseLogger.log("3", null, null, "Error parsing value: " + value);
}
return 0.0;
}
// public String itemChanged( Document currDom, Document hdrDom, Document allDom, String objContext, String currentColumn, String editFlag, String xtraParams ) throws RemoteException,ITMException
// {
// BaseLogger.log("3", getUserInfo(), null,"In ReqForQuotationWiz itemChanged3");
// BaseLogger.log("3", getUserInfo(), null,"DEBUG currentColumn RAW = [" + currentColumn + "]");
// BaseLogger.log("3", getUserInfo(), null,"DEBUG currentColumn trimmed = [" +
// (currentColumn == null ? "null" : currentColumn.trim()) + "]");
// BaseLogger.log("3", getUserInfo(), null,"DEBUG currentColumn length = " +
// (currentColumn == null ? 0 : currentColumn.length()));
// String retValue = "";
// try
// {
// retValue = default_ItemChanged( currDom, hdrDom, allDom, objContext, currentColumn, editFlag, xtraParams );
// }
// catch (Exception e)
// {
// e.printStackTrace();
// throw new ITMException(e);
// }
// return retValue;
//
// }
public String itemChanged(Document dom, Document dom1, Document dom2, String objContext, String currentColumn, String editFlag, String xtraParams, String formName) throws RemoteException,ITMException
{
String returnStr="";
try
{
returnStr = defaultDataWiz(dom, dom1, dom2, objContext, currentColumn, editFlag, xtraParams, formName);
}
catch(Exception e){
e.printStackTrace();
}
return returnStr;
}
private String defaultDataWiz( Document dom, Document dom1, Document dom2, String objContext, String currentColumn, String editFlag, String xtraParams, String formName ) throws RemoteException,ITMException
{
ResultSet rs = null;
Connection conn = null;
PreparedStatement pstmt = null;
PreparedStatement psSiteCustomer = null;
PreparedStatement psCustomer = null;
PreparedStatement psPriceList = null;
PreparedStatement psFinEntity = null;
String sql = "";
String userId = "";
String currDate = "";
String chgTerm ="";
String priceList = "";
int rate= 0;
String finEntity = "";
String propDateValue = "";
String [] temp = new String [10];
StringBuffer valueXmlString = new StringBuffer();
int currentFormNo = 0;
List<String> itemCodeList = new ArrayList<>();
E12GenericUtility genericUtility = new ibase.utility.E12GenericUtility();
String phy13 = "";
String phy14 = "";
String phy15 = "";
// Added by Gagan B. on 14-APR-26: for shwoing revised PTR,PTS,PTD
double updatedDistMargin = 0;
double updatedStkMargin = 0;
double updatedRetMargin = 0;
String revisedPTR="", revisedPTD="", revisedPTS="";
try
{
InetAddress ownIP=InetAddress.getLocalHost();
chgTerm = ownIP.getHostAddress();
conn = getConnection();
UserInfoBean userInfo = getUserInfo();
String siteCode = checkNull(userInfo.getSiteCode());
String userName = checkNull(userInfo.getUserName());
String siteDescr = checkNull(userInfo.getSiteDescr());
userId = genericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginCode" );
BaseLogger.log("0", null,userId,"case 1---------itemDefault------gsb start");
BaseLogger.log("0", null,userId,"defaultDataWiz siteCode: "+siteCode);
DateFormat dtFormat = new SimpleDateFormat(getApplDateFormat());
java.util.Date date = Calendar.getInstance().getTime();
currDate = dtFormat.format( date );
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String prevPrd = String.valueOf(sdf.format(result));
String curPrd = String.valueOf(sdf.format(date));
String curDate = curPrd.substring(curPrd.length()-2,curPrd.length());
prevPrd = prevPrd.substring(0,prevPrd.length()-2);
curPrd = curPrd.substring(0,curPrd.length()-2);
System.out.println("previous Period....::"+prevPrd+"....current Prd code....::"+curPrd+"...current Date...::"+curDate);
if( objContext != null && objContext.trim().length() > 0 )
{
currentFormNo = Integer.parseInt( objContext );
}
valueXmlString = new StringBuffer( "<?xml version=\"1.0\"?>\r\n<Root>\r\n<Header>\r\n<editFlag>" );
valueXmlString.append( editFlag ).append( "</editFlag>\r\n</Header>\r\n<Errors>\r\n</Errors>\r\n" );
switch(currentFormNo){
case 1:
if( currentColumn.equalsIgnoreCase( "itm_default" ))
{
BaseLogger.log("0", null,userId,"case 1---------itemDefault------gsb-----16--19-April");
valueXmlString.append( "<Detail"+ objContext+" domID='"+ 1 +"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id\"/>\r\n" );
valueXmlString.append( "<tran_id/>" );
valueXmlString.append("<tran_date protect = '1'>").append("<![CDATA[" + currDate + "]]>").append("</tran_date>");
// Set req_date to current date
valueXmlString.append("<req_date>").append("<![CDATA[" + currDate + "]]>").append("</req_date>");
// Set site_code to logged in user's site code
valueXmlString.append("<site_code>").append("<![CDATA[" + siteCode + "]]>").append("</site_code>");
// Set sales_pers to logged in user's code
valueXmlString.append("<sales_pers>").append("<![CDATA[" + userId + "]]>").append("</sales_pers>");
// Set spname to logged in user's name
valueXmlString.append("<spname>").append("<![CDATA[" + userName + "]]>").append("</spname>");
// Set site_code to logged in user's site description
valueXmlString.append("<site_descr>") .append("<![CDATA[" + siteDescr + "]]>").append("</site_descr>\r\n");
valueXmlString.append("<quot_type>").append("<![CDATA[C]]>").append("</quot_type>");
valueXmlString.append("</Detail"+objContext+">");
}//end of itmdefault case1
if (currentColumn.equalsIgnoreCase( "item_ser" ))
{
BaseLogger.log("0", null, userId, "case 1::: item_ser");
String itemSerDescr = "";
String itemSerForIC = checkNull(genericUtility.getColumnValue("item_ser", dom, "1"));
BaseLogger.log("0", null, userId, "case 1::: item_ser");
System.out.println("case 1---------itemSerForIC05M------[" + itemSerForIC + "]");
if(itemSerForIC != null && itemSerForIC.trim().length() > 0)
{
String[] itemSerArr = itemSerForIC.split(",");
String itemSerSql = "select descr from itemser where item_ser = ?";
try (PreparedStatement itemSerPs = conn.prepareStatement(itemSerSql))
{
for(String itemSer : itemSerArr)
{
itemSerPs.setString(1, itemSer.trim());
try (ResultSet itemSerRs = itemSerPs.executeQuery())
{
if(itemSerRs.next())
{
if(itemSerDescr.length() > 0)
{
itemSerDescr += ", ";
}
itemSerDescr += checkNull(itemSerRs.getString("descr"));
}
}
}
}
}
BaseLogger.log("0", null, userId, "case 1::: item_ser");
valueXmlString.append( "<Detail"+ objContext+" domID='"+ 1 +"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id\"/>\r\n" );
valueXmlString.append("<descr><![CDATA[" + itemSerDescr + "]]></descr>\n");
valueXmlString.append("</Detail"+objContext+">");
}
if (currentColumn.equalsIgnoreCase( "cust_code" )) {
BaseLogger.log("0", null,userId,"case 1---------custCodeForIC::------]");
String custCodeForIC = checkNull(genericUtility.getColumnValue("cust_code",dom,"1"));
String custName = "",addr1="", addr2="", addr3="";
BaseLogger.log("0", null,userId,"case 1---------custCodeForIC------[" +custCodeForIC + "]");
String custNameSql = "select cust_name, addr1 , addr2 , addr3 from customer where cust_code = ?";
PreparedStatement custNamePs = conn.prepareStatement(custNameSql);
custNamePs.setString(1, custCodeForIC);
ResultSet custNameRs = custNamePs.executeQuery();
while(custNameRs.next()) {
custName = custNameRs.getString("cust_name");
addr1 = custNameRs.getString("addr1");
addr2 = custNameRs.getString("addr2");
addr3 = custNameRs.getString("addr3");
}
valueXmlString.append( "<Detail"+ objContext+" domID='"+ 1 +"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id\"/>\r\n" );
valueXmlString.append("<cust_name>").append("<![CDATA[" + custName + "]]>").append("</cust_name>");
valueXmlString.append("<addr1>").append("<![CDATA[" + addr1 + "]]>").append("</addr1>");
valueXmlString.append("<addr2>").append("<![CDATA[" + addr2 + "]]>").append("</addr2>");
valueXmlString.append("<addr3>").append("<![CDATA[" + addr3 + "]]>").append("</addr3>");
valueXmlString.append("</Detail"+objContext+">");
if (custNameRs != null)
{
custNameRs.close();
custNameRs = null;
}
if (custNamePs != null)
{
custNamePs.close();
custNamePs = null;
}
}
if (currentColumn.equalsIgnoreCase("sales_pers")) {
String salesPersCode = checkNull(genericUtility.getColumnValue("sales_pers", dom, "1"));
BaseLogger.log("0", null, userId, "case 1---------sales_pers itemchange------[" + salesPersCode + "]");
String spName = "";
if (salesPersCode != null && salesPersCode.trim().length() > 0) {
String spNameSql = "select SP_NAME from SALES_PERS where SALES_PERS = ?";
PreparedStatement spNamePs = conn.prepareStatement(spNameSql);
spNamePs.setString(1, salesPersCode);
ResultSet spNameRs = spNamePs.executeQuery();
if (spNameRs.next()) {
spName = checkNull(spNameRs.getString("SP_NAME"));
}
if (spNameRs != null) {
spNameRs.close();
spNameRs = null;
}
if (spNamePs != null) {
spNamePs.close();
spNamePs = null;
}
}
BaseLogger.log("0", null, userId, "case 1---------spName------[" + spName + "]");
valueXmlString.append("<Detail" + objContext + " domID='" + 1 + "' objContext = '" + currentFormNo + "' objName=\"rfq_wiz\" selected=\"N\">\r\n");
valueXmlString.append("<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id\"/>\r\n");
valueXmlString.append("<spname>").append("<![CDATA[" + spName + "]]>").append("</spname>");
valueXmlString.append("</Detail" + objContext + ">");
}
if (currentColumn.equalsIgnoreCase("site_code"))
{
String sitecode = checkNull(genericUtility.getColumnValue("site_code", dom));
BaseLogger.log("3", null, null, "ReqForQuotationIC in itemchange case 1 site_code:: " + sitecode);
String site_descr = "";
if (sitecode != null && sitecode.trim().length() > 0)
{
String siteSql = "select descr from site where site_code = ?";
PreparedStatement site_descrPs = conn.prepareStatement(siteSql);
site_descrPs.setString(1, sitecode);
ResultSet site_descrRs = site_descrPs.executeQuery();
if (site_descrRs.next())
{
site_descr = checkNull(site_descrRs.getString("DESCR"));
}
if (site_descrRs != null) {
site_descrRs.close();
site_descrRs = null;
}
if (site_descrPs != null) {
site_descrPs.close();
site_descrPs = null;
}
}
BaseLogger.log("3", null, null, "ReqForQuotationIC site_descr:: " + site_descr);
valueXmlString.append("<Detail" + objContext + " domID='" + 1 + "' objContext = '" + currentFormNo + "' objName=\"rfq_wiz\" selected=\"N\">\r\n");
valueXmlString.append("<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id\"/>\r\n");
valueXmlString.append("<site_descr>") .append("<![CDATA[" + site_descr + "]]>").append("</site_descr>\r\n");
valueXmlString.append("</Detail" + objContext + ">");
}
break;
case 2:
if ("itm_default".equalsIgnoreCase(currentColumn.trim())) {
int domId = 0;
int lineNo = 0;
String setSrPtrAll = checkNull(genericUtility.getColumnValue("set_sr_ptr_all", dom1, "1"));
BaseLogger.log("3", null, null, "ReqForQuotationWiz in itm default setSrPtrAll:: " + setSrPtrAll);
String custCode = checkNull(genericUtility.getColumnValue("cust_code", dom1));
String itemSer = checkNull(genericUtility.getColumnValue("item_ser",dom1,"1"));
BaseLogger.log("3", null, null, "ReqForQuotationWiz in itm default ");
//Management rate block[Start]
String finEntityQuery = "select fin_entity from site where site_code = ?";
psFinEntity = conn.prepareStatement(finEntityQuery);
psFinEntity.setString(1, siteCode);
rs = psFinEntity.executeQuery();
if(rs.next()) {
finEntity = checkNull(rs.getString("fin_entity"));
}
BaseLogger.log("3", null, null, "ReqForQuotationWiz in itm default finEntity:: "+finEntity);
rs.close();
psFinEntity.close();
// Now, use finEntity to fetch VAR_VALUE from finparm
String varValueQuery = "select VAR_VALUE from finparm where ADDL_VALUE = ?";
PreparedStatement psVarValue = conn.prepareStatement(varValueQuery);
psVarValue.setString(1, finEntity);
ResultSet rsVarValue = psVarValue.executeQuery();
String varValue = null;
if (rsVarValue.next()) {
varValue = checkNull(rsVarValue.getString("VAR_VALUE"));
}
BaseLogger.log("3", null, null, "ReqForQuotationWiz in itm default varValue:: " + varValue);
// Clean up the result set and prepared statement for the varValue query
rsVarValue.close();
psVarValue.close();
// Finally, use varValue to fetch the rate from pricelist
String rateQuery = "select rate from pricelist where price_list = ?";
PreparedStatement psRate = conn.prepareStatement(rateQuery);
psRate.setString(1, varValue);
ResultSet rsRate = psRate.executeQuery();
int MngmntAprvRate = 0;
if (rsRate.next()) {
MngmntAprvRate = rsRate.getInt("rate");
}
BaseLogger.log("3", null, null, "ReqForQuotationWiz in itm default MngmntAprvRate:: " + MngmntAprvRate);
// Clean up the result set and prepared statement for the rate query
rsRate.close();
psRate.close();
int pts = 0;
int ptd = 0;
/* Fetch PTS */
String ptsSql =
"SELECT pl.rate " +
"FROM pricelist pl " +
"WHERE TRIM(pl.price_list) = ( " +
" SELECT TRIM(fp.var_value) " +
" FROM finparm fp " +
" WHERE TRIM(fp.var_name) = 'RFQ_PTS' " +
" AND TRIM(fp.addl_value) = ( " +
" SELECT TRIM(fin_entity) FROM site WHERE TRIM(site_code) = ? " +
" ) " +
")";
PreparedStatement psPts = conn.prepareStatement(ptsSql);
psPts.setString(1, siteCode);
ResultSet rsPts = psPts.executeQuery();
if (rsPts.next()) {
BigDecimal ptsRate = rsPts.getBigDecimal("rate");
pts = (ptsRate != null) ? ptsRate.intValue() : 0;
}
/* Fetch PTD */
String ptdSql =
"SELECT pl.rate " +
"FROM pricelist pl " +
"WHERE TRIM(pl.price_list) = ( " +
" SELECT TRIM(fp.var_value) " +
" FROM finparm fp " +
" WHERE TRIM(fp.var_name) = 'RFQ_PTD' " +
" AND TRIM(fp.addl_value) = (SELECT TRIM(fin_entity) FROM site WHERE TRIM(site_code) = ?) " +
")";
PreparedStatement psPtd = conn.prepareStatement(ptdSql);
psPtd.setString(1, siteCode);
ResultSet rsPtd = psPtd.executeQuery();
if (rsPtd.next()) {
BigDecimal ptdRate = rsPtd.getBigDecimal("rate");
ptd = (ptdRate != null) ? ptdRate.intValue() : 0;
}
BaseLogger.log("3", null, null,
"ReqForQuotationWiz in itm default pts:: " + pts + " ptd:: " + ptd);
//PTR calculation start
String siteCustomerQuery =
"SELECT PRICE_LIST FROM SITE_CUSTOMER " +
"WHERE SITE_CODE = ? AND CUST_CODE = ?";
psSiteCustomer = conn.prepareStatement(siteCustomerQuery);
psSiteCustomer.setString(1, siteCode);
psSiteCustomer.setString(2, custCode);
rs = psSiteCustomer.executeQuery();
if (rs.next()) {
priceList = rs.getString("PRICE_LIST");
}
rs.close();
psSiteCustomer.close();
// Step 2: If not found in SITE_CUSTOMER, fetch from CUSTOMER
if (priceList == null || priceList.trim().isEmpty()) {
String customerQuery =
"SELECT PRICE_LIST FROM CUSTOMER WHERE CUST_CODE = ?";
psCustomer = conn.prepareStatement(customerQuery);
psCustomer.setString(1, custCode);
rs = psCustomer.executeQuery();
if (rs.next()) {
priceList = rs.getString("PRICE_LIST");
}
rs.close();
psCustomer.close();
}
// Step 3: Fetch RATE from PRICELIST table
if (priceList != null && !priceList.trim().isEmpty()) {
String priceListQuery =
"SELECT RATE FROM PRICELIST WHERE PRICE_LIST = ?";
psPriceList = conn.prepareStatement(priceListQuery);
psPriceList.setString(1, priceList);
rs = psPriceList.executeQuery();
if (rs.next()) {
rate = rs.getInt("RATE");
}
rs.close();
psPriceList.close();
}
BaseLogger.log("3", null, null, "ReqForQuotationWiz in itm default ptr:: " + rate);
if(itemSer != null && itemSer.trim().length() > 0)
{
String[] itemSerArr = itemSer.split(",");
// Build dynamic IN clause
StringBuilder sqlForItemCode = new StringBuilder();
sqlForItemCode.append("SELECT item_code FROM item WHERE item_ser IN (");
for(int i = 0; i < itemSerArr.length; i++)
{
sqlForItemCode.append("?");
if(i < itemSerArr.length - 1)
{
sqlForItemCode.append(",");
}
}
sqlForItemCode.append(")");
PreparedStatement ItemCodesPs = conn.prepareStatement(sqlForItemCode.toString());
// Bind values
for(int i = 0; i < itemSerArr.length; i++)
{
ItemCodesPs.setString(i + 1, itemSerArr[i].trim());
}
rs = ItemCodesPs.executeQuery();
while(rs.next())
{
itemCodeList.add(rs.getString("item_code"));
}
rs.close();
ItemCodesPs.close();
}
Collections.sort(itemCodeList);
//Remove the item from itemCodeList if the value is "SRNA"[Start]
String phyAttrValSql = "select PHY_ATTRIB_19 from item where item_code = ?";
PreparedStatement phyAttrValPs = conn.prepareStatement(phyAttrValSql);
Iterator<String> iterator = itemCodeList.iterator();
while (iterator.hasNext()) {
String itemCode = iterator.next();
phyAttrValPs.setString(1, itemCode);
ResultSet phyAttrValRs = phyAttrValPs.executeQuery();
String phyAttrVal = "";
if (phyAttrValRs.next()) {
phyAttrVal = checkNull(phyAttrValRs.getString("PHY_ATTRIB_19"));
}
// ✅ Remove if PHY_ATTRIB_19 = 'SRNA'
if ("SRNA".equalsIgnoreCase(phyAttrVal)) {
iterator.remove();
}
phyAttrValRs.close();
}
phyAttrValPs.close();
//Remove the item from itemCodeList if the value is "SRNA"[End]
for (String itemCode : itemCodeList)
{
domId++;
lineNo++;
String itemDescr = "";
String unit = "";
String packCode = "";
System.out.println("Item Code::::: " + itemCode);
String itemDescrSql = "select descr,unit,pack_code from item where item_code = ?";
PreparedStatement itemDescrPs = conn.prepareStatement(itemDescrSql);
itemDescrPs.setString(1, itemCode);
ResultSet itemDescrRs = itemDescrPs.executeQuery();
while (itemDescrRs.next())
{
itemDescr = checkNull(itemDescrRs.getString("descr"));
unit = checkNull(itemDescrRs.getString("unit"));
packCode = checkNull(itemDescrRs.getString("pack_code"));
}
itemDescrRs.close();
itemDescrPs.close();
//Added By Saburi
String phySql = "SELECT PHY_ATTRIB_13, PHY_ATTRIB_14, PHY_ATTRIB_15 FROM ITEM WHERE ITEM_CODE = ?";
PreparedStatement phyPs = conn.prepareStatement(phySql);
phyPs.setString(1, itemCode);
ResultSet phyRs = phyPs.executeQuery();
if (phyRs.next())
{
phy13 = checkNull(phyRs.getString("PHY_ATTRIB_13"));
phy14 = checkNull(phyRs.getString("PHY_ATTRIB_14"));
phy15 = checkNull(phyRs.getString("PHY_ATTRIB_15"));
}
phyRs.close();
phyPs.close();
BaseLogger.log("3", null, null, "phy_attrib_13 Value "+ phy13 );
BaseLogger.log("3", null, null, "phy_attrib_14 Value "+ phy14 );
BaseLogger.log("3", null, null, "phy_attrib_15 Value "+ phy15 );
BaseLogger.log("3", null, null, "removed the line no from the itmdefault case 08-April " );
//Made changes if set_sr_ptr_all value in header is Y then by default select all the line items in detail screen [10-APR]
if (setSrPtrAll.trim().equalsIgnoreCase("Y"))
{
BaseLogger.log("3", null, null,"Value set as 0" );
valueXmlString.append( "<Detail"+ objContext+" domID='"+domId +"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"Y\">\r\n" );
valueXmlString.append( "<attribute selected=\"Y\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id:line_no\"/>\r\n" );
valueXmlString.append( "<tran_id/>" );
valueXmlString.append("<line_no><![CDATA[").append(lineNo).append("]]></line_no>");
valueXmlString.append("<item_code><![CDATA[").append(itemCode).append("]]></item_code>");
valueXmlString.append("<rate_apprv>").append("<![CDATA["+MngmntAprvRate+"]]>").append("</rate_apprv>\r\n");
valueXmlString.append("<ptd>").append("<![CDATA["+ptd+"]]>").append("</ptd>\r\n");
valueXmlString.append("<pts>").append("<![CDATA["+pts+"]]>").append("</pts>\r\n");
valueXmlString.append("<ptr>").append("<![CDATA["+rate+"]]>").append("</ptr>\r\n");
valueXmlString.append("<rate_quot protect='1'>").append("<![CDATA[" + rate + "]]>").append("</rate_quot>");
valueXmlString.append("<ptr_flag>").append("<![CDATA[Y]]>").append("</ptr_flag>");
}
else
{
valueXmlString.append( "<Detail"+ objContext+" domID='"+domId +"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id:line_no\"/>\r\n" );
valueXmlString.append( "<tran_id/>" );
valueXmlString.append("<line_no><![CDATA[").append(lineNo).append("]]></line_no>");
valueXmlString.append("<item_code><![CDATA[").append(itemCode).append("]]></item_code>");
valueXmlString.append("<rate_apprv>").append("<![CDATA["+MngmntAprvRate+"]]>").append("</rate_apprv>\r\n");
valueXmlString.append("<ptd>").append("<![CDATA["+ptd+"]]>").append("</ptd>\r\n");
valueXmlString.append("<pts>").append("<![CDATA["+pts+"]]>").append("</pts>\r\n");
valueXmlString.append("<ptr>").append("<![CDATA["+rate+"]]>").append("</ptr>\r\n");
valueXmlString.append("<rate_quot>").append("<![CDATA[]]>").append("</rate_quot>");
}
valueXmlString.append("<qty_quot>").append("<![CDATA[0]]>").append("</qty_quot>");
valueXmlString.append("<competitor_rate>").append("<![CDATA[]]>").append("</competitor_rate>");
valueXmlString.append("<competitor_name>").append("<![CDATA[]]>").append("</competitor_name>");
valueXmlString.append("<competitor_item>").append("<![CDATA[]]>").append("</competitor_item>");
valueXmlString.append("<remarks>").append("<![CDATA[]]>").append("</remarks>");
valueXmlString.append("<spec_instr>").append("<![CDATA[]]>").append("</spec_instr>");
valueXmlString.append("<descr>").append("<![CDATA["+itemDescr+"]]>").append("</descr>");
valueXmlString.append("<pack_code protect='1'>").append("<![CDATA[" + packCode + "]]>").append("</pack_code>");
valueXmlString.append("<unit protect='1'>").append("<![CDATA[" + unit + "]]>").append("</unit>");
valueXmlString.append("<value protect='1'>").append("<![CDATA[]]>").append("</value>");
if (phy13.equalsIgnoreCase(""))
{
BaseLogger.log("3", null, null, "phy_attrib_13 if block phy13>>>>>>>>>> "+ phy13 );
valueXmlString.append("<phy_attrib_13><![CDATA[0]]></phy_attrib_13>\r\n");
}
else
{
valueXmlString.append("<phy_attrib_13><![CDATA[" + phy13 + "]]></phy_attrib_13>\r\n");
}
if (phy14.equalsIgnoreCase(""))
{
BaseLogger.log("3", null, null, "phy_attrib_13 if AJIT block phy13>>>>>>>>>> "+ phy13 );
valueXmlString.append("<phy_attrib_14><![CDATA[0]]></phy_attrib_14>\r\n");
}
else
{
valueXmlString.append("<phy_attrib_14><![CDATA[" + phy14 + "]]></phy_attrib_14>\r\n");
}
if (phy15.equalsIgnoreCase(""))
{
valueXmlString.append("<phy_attrib_15><![CDATA[0]]></phy_attrib_15>\r\n");
}
else
{
valueXmlString.append("<phy_attrib_15><![CDATA[" + phy15 + "]]></phy_attrib_15>\r\n");
}
BaseLogger.log("3", null, null, "phy_attrib_15 phy13>>>>>>>>>> "+ phy13 );
// Added by Gagan B. on 14-APR-26: for shwoing revised PTR,PTS,PTD -- START
valueXmlString.append("<revised_pts><![CDATA[]]></revised_pts>\r\n");
valueXmlString.append("<revised_ptd><![CDATA[]]></revised_ptd>\r\n");
valueXmlString.append("<revised_ptr><![CDATA[]]></revised_ptr>\r\n");
// Added by Gagan B. on 14-APR-26: for shwoing revised PTR,PTS,PTD -- END
valueXmlString.append("</Detail"+objContext+">");
}
//PTR calculation end
// Added by Gagan B. on 14-APR-26: for shwoing revised PTR,PTS,PTD -- START
String itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
String quotedRate = checkNull(genericUtility.getColumnValue("rate_quot", dom));
BaseLogger.log("3", null, null, "quotedRate [" + quotedRate + "]");
updatedDistMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_13", dom));
updatedStkMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_14", dom));
updatedRetMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_15", dom));
BaseLogger.log("3", null, null, "updatedDistMargin [" + updatedDistMargin + "]");
BaseLogger.log("3", null, null, "updatedStkMargin [" + updatedStkMargin + "]");
BaseLogger.log("3", null, null, "updatedRetMargin [" + updatedRetMargin + "]");
if (quotedRate == null || quotedRate.trim().isEmpty())
{
throw new Exception("Special Rate values are not defined for item: " + itemCode);
}
double specialRate = Double.parseDouble(quotedRate);
if (Math.abs(updatedDistMargin) < 0.0001 && Math.abs(updatedStkMargin) < 0.0001 && Math.abs(updatedRetMargin) < 0.0001)
{
BaseLogger.log("3", null, null, "Inside IF block - all margins are zero 1520");
valueXmlString.append("<phy_attrib_13><![CDATA[0]]></phy_attrib_13>\r\n");
valueXmlString.append("<phy_attrib_14><![CDATA[0]]></phy_attrib_14>\r\n");
valueXmlString.append("<phy_attrib_15><![CDATA[0]]></phy_attrib_15>\r\n");
}
double revisedDist = updatedDistMargin;
double revisedStock = updatedStkMargin;
double revisedRet = updatedRetMargin;
double calcPTS = (specialRate / 100) * (100 - revisedStock);
double calcPTD = (specialRate / 100) * (100 - revisedDist);
double calcPTR = (specialRate / 100) * (100 - revisedRet);
revisedPTS = String.format("%.2f", calcPTS);
revisedPTD = String.format("%.2f", calcPTD);
revisedPTR = String.format("%.2f", calcPTR);
BaseLogger.log("3", null, null, "FINAL revisedPTR [" + revisedPTR + "]");
BaseLogger.log("3", null, null, "FINAL revisedPTS [" + revisedPTS + "]");
BaseLogger.log("3", null, null, "FINAL revisedPTD [" + revisedPTD + "]");
//Management rate block[End]
}
// Added by Saburi - 06/04/26 : Fetch PHY_ATTRIB_13,14,15 on item selection
if ("item_code".equalsIgnoreCase(currentColumn.trim())) {
String itemDescr = "";
BaseLogger.log("3", null, null, "ReqForQuotationIC in item_code 1072");
String itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
String itemDescrSql = "SELECT DESCR FROM ITEM WHERE ITEM_CODE = ?";
PreparedStatement itemDescrPs = conn.prepareStatement(itemDescrSql);
itemDescrPs.setString(1, itemCode);
ResultSet itemDescrRs = itemDescrPs.executeQuery();
while(itemDescrRs.next())
{
itemDescr = itemDescrRs.getString("descr");
}
valueXmlString.append("<descr>").append("<![CDATA["+itemDescr+"]]>").append("</descr>\r\n");
String phySql = "SELECT PHY_ATTRIB_13, PHY_ATTRIB_14, PHY_ATTRIB_15 FROM ITEM WHERE ITEM_CODE = ?";
PreparedStatement phyPs = conn.prepareStatement(phySql);
phyPs.setString(1, itemCode);
ResultSet phyRs = phyPs.executeQuery();
if (phyRs.next())
{
phy13 = checkNull(phyRs.getString("PHY_ATTRIB_13"));
phy14 = checkNull(phyRs.getString("PHY_ATTRIB_14"));
phy15 = checkNull(phyRs.getString("PHY_ATTRIB_15"));
}
phyRs.close();
phyPs.close();
valueXmlString.append("<phy_attrib_13><![CDATA[" + phy13 + "]]></phy_attrib_13>\r\n");
valueXmlString.append("<phy_attrib_14><![CDATA[" + phy14 + "]]></phy_attrib_14>\r\n");
valueXmlString.append("<phy_attrib_15><![CDATA[" + phy15 + "]]></phy_attrib_15>\r\n");
}
if ("ptr_flag".equalsIgnoreCase(currentColumn.trim()))
{
String ptrFlag = checkNull(genericUtility.getColumnValue("ptr_flag", dom));
String rateStr = checkNull(genericUtility.getColumnValue("ptr", dom));
String qtyStr = checkNull(genericUtility.getColumnValue("qty_quot", dom));
BaseLogger.log("3", null, null, "ReqForQuotationIC in ptr_flag ");
String custCode = checkNull(genericUtility.getColumnValue("cust_code", dom1));
String itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
int qty = 0;
BigDecimal rateQuotDecimal = BigDecimal.ZERO;
BigDecimal value = BigDecimal.ZERO;
BaseLogger.log("3", null, null, "ReqForQuotationWiz in qty_quot condition qtyStr:: " + qtyStr);
BaseLogger.log("3", null, null,
"ReqForQuotationWiz in qty_quot condition rateStr:: " + rateStr);
try {
qty = (qtyStr != null && qtyStr.trim().length() > 0)
? Integer.parseInt(qtyStr.trim())
: 0;
rateQuotDecimal = (rateStr != null && rateStr.trim().length() > 0)
? new BigDecimal(rateStr.trim())
: BigDecimal.ZERO;
value = rateQuotDecimal.multiply(new BigDecimal(qty));
BaseLogger.log("3", null, null,
"qty:: " + qty + " rateQuot:: " + rateQuotDecimal + " value:: " + value);
} catch (Exception e) {
BaseLogger.log("3", null, null, "Error parsing values: " + e.getMessage());
}
BaseLogger.log("3", null, null, "ReqForQuotationWiz in ptr_flat condition:: "+ptrFlag);
BaseLogger.log("3", null, null, "ReqForQuotationWiz in ptr_flat condition siteCode:: "+siteCode);
BaseLogger.log("3", null, null, "ReqForQuotationWiz in ptr_flat condition custCode:: "+custCode);
if(ptrFlag.equalsIgnoreCase("Y")) {
valueXmlString.append( "<Detail"+ objContext+" domID='"+ 1 +"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id:line_no\"/>\r\n" );
valueXmlString.append("<value protect='1'>").append("<![CDATA["+value+"]]>").append("</value>\r\n");
valueXmlString.append("<rate_quot protect='1'>").append("<![CDATA["+rateStr+"]]>").append("</rate_quot>\r\n");
updatedDistMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_13", dom));
updatedStkMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_14", dom));
updatedRetMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_15", dom));
BaseLogger.log("3", null, null, "updatedDistMargin [" + updatedDistMargin + "]");
BaseLogger.log("3", null, null, "updatedStkMargin [" + updatedStkMargin + "]");
BaseLogger.log("3", null, null, "updatedRetMargin [" + updatedRetMargin + "]");
if (rateStr == null || rateStr.trim().isEmpty())
{
throw new Exception("Special Rate values are not defined for item: " + itemCode);
}
if (Math.abs(updatedDistMargin) < 0.0001 && Math.abs(updatedStkMargin) < 0.0001 && Math.abs(updatedRetMargin) < 0.0001)
{
BaseLogger.log("3", null, null, "Inside IF block - all margins are zero 1630");
valueXmlString.append("<phy_attrib_13><![CDATA[0]]></phy_attrib_13>\r\n");
valueXmlString.append("<phy_attrib_14><![CDATA[0]]></phy_attrib_14>\r\n");
valueXmlString.append("<phy_attrib_15><![CDATA[0]]></phy_attrib_15>\r\n");
}
BigDecimal specialRate = new BigDecimal(rateStr);
BigDecimal hundred = new BigDecimal("100");
BigDecimal distMargin = new BigDecimal(updatedDistMargin);
BigDecimal stockMargin = new BigDecimal(updatedStkMargin);
BigDecimal retMargin = new BigDecimal(updatedRetMargin);
// ✅ Correct calculation
BigDecimal revisedPtr = specialRate.multiply(hundred.subtract(retMargin))
.divide(hundred, 2, RoundingMode.HALF_UP);
BigDecimal revisedPts = specialRate.multiply(hundred.subtract(stockMargin))
.divide(hundred, 2, RoundingMode.HALF_UP);
BigDecimal revisedPtd = specialRate.multiply(hundred.subtract(distMargin))
.divide(hundred, 2, RoundingMode.HALF_UP);
// ✅ Correct logs
BaseLogger.log("3", null, null, "FINAL revisedPTR [" + revisedPTR + "]");
BaseLogger.log("3", null, null, "FINAL revisedPTS [" + revisedPTS + "]");
BaseLogger.log("3", null, null, "FINAL revisedPTD [" + revisedPTD + "]");
// ✅ Correct XML mapping
valueXmlString.append("<revised_ptr><![CDATA[").append(revisedPtr).append("]]></revised_ptr>\r\n");
valueXmlString.append("<revised_pts><![CDATA[").append(revisedPts).append("]]></revised_pts>\r\n");
valueXmlString.append("<revised_ptd><![CDATA[").append(revisedPtd).append("]]></revised_ptd>\r\n");
valueXmlString.append("</Detail"+objContext+">");
}else if(ptrFlag.equalsIgnoreCase("N")) {
valueXmlString.append( "<Detail"+ objContext+" domID='"+ 1 +"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id:line_no\"/>\r\n" );
valueXmlString.append("<value protect='1'>").append("<![CDATA[]]>").append("</value>\r\n");
valueXmlString.append("<rate_quot protect='0'>").append("<![CDATA[]]>").append("</rate_quot>\r\n");
valueXmlString.append("<revised_ptr>").append("<![CDATA[]]>").append("</revised_ptr>\r\n");
valueXmlString.append("<revised_pts>").append("<![CDATA[]]>").append("</revised_pts>\r\n");
valueXmlString.append("<revised_ptd>").append("<![CDATA[]]>").append("</revised_ptd>\r\n");
valueXmlString.append("</Detail"+objContext+">");
}
}
if ("qty_quot".equalsIgnoreCase(currentColumn.trim())) {
BaseLogger.log("3", getUserInfo(), null, "In qty_quot condition for case 2 item change10");
String rateQuotStr = checkNull(genericUtility.getColumnValue("rate_quot", dom));
String qtyStr = checkNull(genericUtility.getColumnValue("qty_quot", dom));
BaseLogger.log("3", getUserInfo(), null, "In qty_quot condition for case 2 item change rateQuotStr::"+rateQuotStr);
BaseLogger.log("3", getUserInfo(), null, "In qty_quot condition for case 2 item change qtyStr::"+qtyStr);
int qty = 0;
BigDecimal rateQuotDecimal = BigDecimal.ZERO;
BigDecimal value = BigDecimal.ZERO;
try {
qty = (qtyStr != null && qtyStr.trim().length() > 0) ? Integer.parseInt(qtyStr.trim()) : 0;
rateQuotDecimal = (rateQuotStr != null && rateQuotStr.trim().length() > 0)
? new BigDecimal(rateQuotStr.trim())
: BigDecimal.ZERO;
value = rateQuotDecimal.multiply(new BigDecimal(qty));
BaseLogger.log("3", null, null,
"qty:: " + qty + " rateQuot:: " + rateQuotDecimal + " value:: " + value);
} catch (Exception e) {
BaseLogger.log("3", null, null, "Error parsing values: " + e.getMessage());
}
String domId = checkNull(genericUtility.getColumnValue("domid", dom));
BaseLogger.log("3", null, null, "domId::>>" + domId);
String domIDStr = checkNull(getDomID(dom, "" + currentFormNo));
System.out.println("domID in actual itemchanged>>>>" + domIDStr);
valueXmlString.append( "<Detail"+ objContext+" domID='"+1+"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id:line_no\"/>\r\n" );
// Comment out the rate_quot validation block as this case handled by JS
valueXmlString.append("<value protect='1'><![CDATA[" + value + "]]></value>\r\n");
setNodeValue(dom, "value", value.toString()); // Added In 1389
valueXmlString.append("</Detail" + objContext + ">");
BaseLogger.log("3", null, null, "Item change valueXmlString::"+valueXmlString.toString());
}
if ("rate_quot".equalsIgnoreCase(currentColumn.trim()))
{
BaseLogger.log("3", null, null, "ReqForQuotationWiz in rate_quot ::");
String rateQuot = genericUtility.getColumnValue("rate_quot", dom);
String itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
String rateApprv = checkNull(genericUtility.getColumnValue("rate_apprv", dom));
String ratePtr = checkNull(genericUtility.getColumnValue("ptr", dom));
// Saburi - 14Apr2026
String quotedRate = checkNull(genericUtility.getColumnValue("rate_quot", dom));
BaseLogger.log("3", null, null, "quotedRate 1738[" + quotedRate + "]");
updatedDistMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_13", dom));
updatedStkMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_14", dom));
updatedRetMargin = parseDoubleSafe(genericUtility.getColumnValue("phy_attrib_15", dom));
BaseLogger.log("3", null, null, "updatedDistMargin [" + updatedDistMargin + "]");
BaseLogger.log("3", null, null, "updatedStkMargin [" + updatedStkMargin + "]");
BaseLogger.log("3", null, null, "updatedRetMargin [" + updatedRetMargin + "]");
if (quotedRate == null || quotedRate.trim().isEmpty())
{
throw new Exception("Special Rate values are not defined for item: " + itemCode);
}
double specialRate = Double.parseDouble(quotedRate);
if (Math.abs(updatedDistMargin) < 0.0001 &&
Math.abs(updatedStkMargin) < 0.0001 &&
Math.abs(updatedRetMargin) < 0.0001)
{
BaseLogger.log("3", null, null, "Inside IF block - all margins are zero 1742");
valueXmlString.append("<phy_attrib_13><![CDATA[0]]></phy_attrib_13>\r\n");
valueXmlString.append("<phy_attrib_14><![CDATA[0]]></phy_attrib_14>\r\n");
valueXmlString.append("<phy_attrib_15><![CDATA[0]]></phy_attrib_15>\r\n");
}
double revisedDist = updatedDistMargin;
double revisedStock = updatedStkMargin;
double revisedRet = updatedRetMargin;
double calcPTS = (specialRate / 100) * (100 - revisedStock);
double calcPTD = (specialRate / 100) * (100 - revisedDist);
double calcPTR = (specialRate / 100) * (100 - revisedRet);
revisedPTS = String.format("%.2f", calcPTS);
revisedPTD = String.format("%.2f", calcPTD);
revisedPTR = String.format("%.2f", calcPTR);
BaseLogger.log("3", null, null, "FINAL revisedPTR gsb [" + revisedPTR + "]");
BaseLogger.log("3", null, null, "FINAL revisedPTS gsb [" + revisedPTS + "]");
BaseLogger.log("3", null, null, "FINAL revisedPTD gsb [" + revisedPTD + "]");
// Saburi -- END
//Comment out the rate_quot validation block as this case handled by JS[Start]
String rateQuotStr = checkNull(genericUtility.getColumnValue("rate_quot",
dom)); String qtyStr = checkNull(genericUtility.getColumnValue("qty_quot",
dom));
int qty = 0;
BigDecimal rateQuotDecimal = BigDecimal.ZERO;
BigDecimal value = BigDecimal.ZERO;
BaseLogger.log("3", null, null, "ReqForQuotationWiz qtyStr:: " + qtyStr);
BaseLogger.log("3", null, null, "ReqForQuotationWiz rateQuotStr:: " + rateQuotStr);
try {
qty = (qtyStr != null && qtyStr.trim().length() > 0)
? Integer.parseInt(qtyStr.trim())
: 0;
rateQuotDecimal = (rateQuotStr != null && rateQuotStr.trim().length() > 0)
? new BigDecimal(rateQuotStr.trim())
: BigDecimal.ZERO;
value = rateQuotDecimal.multiply(new BigDecimal(qty));
BaseLogger.log("3", null, null,
"qty:: " + qty + " rateQuot:: " + rateQuotDecimal + " value:: " + value);
} catch (Exception e) {
BaseLogger.log("3", null, null, "Error parsing values: " + e.getMessage());
}
//Comment out the rate_quot validation block as this case handled by JS[End]
BaseLogger.log("3", null, null, "ReqForQuotationIC in rate_quot:: "+rateQuot+" rateApprv::"+rateApprv+ " ratePtr::"+ratePtr+" itemCode::"+itemCode);
BaseLogger.log("3", null, null, "ReqForQuotationWiz in rate_quot:: "+rateQuot+" rateApprv::"+rateApprv+ " ratePtr::"+ratePtr);
if (!rateQuot.isEmpty() && !rateApprv.isEmpty()) {
BigDecimal rateApprvVal = new BigDecimal(rateApprv);
BigDecimal rateQuotVal = new BigDecimal(rateQuot);
BigDecimal ratePtrVal = new BigDecimal(ratePtr);
BaseLogger.log("3", null, null, "ReqForQuotationIC after conversion rateQuotVal:: "+rateQuotVal+" rateApprvVal::"+rateApprvVal);
//added condition when ptr and rate_quot is same direct approval without management
if (ratePtrVal.compareTo(rateQuotVal) == 0) {
BaseLogger.log("3", null, null,
"in ratePtrVal == rateQuotVal condition");
String detail1Xml =
"<Detail1><mgmnt_apprv><![CDATA[N]]></mgmnt_apprv><wf_status><![CDATA[A]]></wf_status></Detail1>";
int pos = valueXmlString.indexOf("</header>");
if (pos != -1) { pos += "</header>".length(); // move after </header>
valueXmlString.insert(pos, detail1Xml); }
BaseLogger.log("3", null, null,
"in rateApprvVal greater condition updatedXml ::"+valueXmlString); }
if (rateApprvVal.compareTo(rateQuotVal) > 0) {
BaseLogger.log("3", null, null, "in rateApprvVal greater condition");
String detail1Xml = "<Detail1><mgmnt_apprv><![CDATA[Y]]></mgmnt_apprv><wf_status><![CDATA[P]]></wf_status></Detail1>";
int pos = valueXmlString.indexOf("</header>");
if (pos != -1) {
pos += "</header>".length(); // move after </header>
valueXmlString.insert(pos, detail1Xml);
}
BaseLogger.log("3", null, null, "in rateApprvVal greater condition updatedXml ::"+valueXmlString);
}
// Added by Gagan B. on 14-APR-26: for shwoing revised PTR,PTS,PTD -- START
valueXmlString.append( "<Detail"+ objContext+" domID='"+1+"' objContext = '"+currentFormNo+"' objName=\"rfq_wiz\" selected=\"N\">\r\n" );
valueXmlString.append( "<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id:line_no\"/>\r\n" );
// Comment out the rate_quot validation block as this case handled by JS
valueXmlString.append("<value protect='1'><![CDATA[" + value + "]]></value>\r\n");
valueXmlString.append("<revised_ptr protect='1'><![CDATA[" + revisedPTR + "]]></revised_ptr>\r\n");
valueXmlString.append("<revised_pts protect='1'><![CDATA[" + revisedPTS + "]]></revised_pts>\r\n");
valueXmlString.append("<revised_ptd protect='1'><![CDATA[" + revisedPTD + "]]></revised_ptd>\r\n");
setNodeValue(dom, "value", value.toString());
setNodeValue(dom, "revised_ptr", revisedPTR);
setNodeValue(dom, "revised_pts", revisedPTS);
setNodeValue(dom, "revised_ptd", revisedPTD);
valueXmlString.append("</Detail" + objContext + ">");
// Added by Gagan B. on 14-APR-26: for shwoing revised PTR,PTS,PTD -- END
}
/*
//Calculating Revised PTR,PTD and PTS [Start]
PreparedStatement resvisedRatePstmt =null;
ResultSet resvisedRateRs = null;
try {
String resvisedRateSql = "select PHY_ATTRIB_13,PHY_ATTRIB_14,PHY_ATTRIB_15 from item where item_code = ?";
resvisedRatePstmt = conn.prepareStatement(resvisedRateSql);
resvisedRatePstmt.setString(1, itemCode);
resvisedRateRs = resvisedRatePstmt.executeQuery();
while (resvisedRateRs.next()) {
String distMarginStr = checkNull(resvisedRateRs.getString("PHY_ATTRIB_13"));
String stockMarginStr = checkNull(resvisedRateRs.getString("PHY_ATTRIB_14"));
String retailMarginStr = checkNull(resvisedRateRs.getString("PHY_ATTRIB_15"));
BigDecimal distMargin = BigDecimal.ZERO;
BigDecimal stockMargin = BigDecimal.ZERO;
BigDecimal retailMargin = BigDecimal.ZERO;
try {
distMargin = (distMarginStr != null && distMarginStr.trim().length() > 0) ? new BigDecimal(distMarginStr.trim()) : BigDecimal.ZERO;
stockMargin = (stockMarginStr != null && stockMarginStr.trim().length() > 0) ? new BigDecimal(stockMarginStr.trim()) : BigDecimal.ZERO;
retailMargin = (retailMarginStr != null && retailMarginStr.trim().length() > 0) ? new BigDecimal(retailMarginStr.trim()) : BigDecimal.ZERO;
} catch (Exception e) {
BaseLogger.log("3", null, null, "Error parsing margin values");
}
BigDecimal rateBD = new BigDecimal(rateQuot);
BigDecimal hundred = new BigDecimal(100);
// BigDecimal retailMarginBD = new BigDecimal(retailMargin);
// BigDecimal stockMarginBD = new BigDecimal(stockMargin);
// BigDecimal distMarginBD = new BigDecimal(distMargin);
BaseLogger.log("3", null, null, "distMargin::" + distMargin + " stockMargin::" + stockMargin + " revisedPtd:: " + retailMargin + "rate:: " + rate + "]");
BigDecimal revisedPtr = rateBD.divide(hundred.multiply(hundred.subtract(retailMargin)), 6, RoundingMode.HALF_UP);
BigDecimal revisedPts = rateBD.divide(hundred.multiply(hundred.subtract(stockMargin)), 6, RoundingMode.HALF_UP);
BigDecimal revisedPtd = rateBD.divide(hundred.multiply(hundred.subtract(distMargin)), 6, RoundingMode.HALF_UP);
BaseLogger.log("3", null, null, "revisedPtr::" + revisedPtr + " revisedPts::" + revisedPts + " revisedPtd::" + revisedPtd);
BaseLogger.log("3", null, null, "revisedPtr::" + revisedPtr + " revisedPts::" + revisedPts + " revisedPtd:: " + revisedPtd + "]");
String domId = checkNull(genericUtility.getColumnValue("domid", dom));
BaseLogger.log("3", null, null, "domId::>>"+domId);
String domIDStr=checkNull(getDomID(dom, ""+currentFormNo));
System.out.println("domID in actual itemchanged>>>>"+domIDStr);
valueXmlString.append("<Detail" + objContext + " domID='" + domId + "' objContext='" + currentFormNo + "' objName=\"rfq_wiz\" selected=\"N\">\r\n");
valueXmlString.append("<attribute selected=\"N\" updateFlag=\"A\" status=\"N\" pkNames=\"tran_id:line_no\"/>\r\n");
valueXmlString.append("<revised_ptr><![CDATA[" + revisedPtr + "]]></revised_ptr>\r\n");
setNodeValue(dom, "revised_ptr", revisedPtr.toString()); // Added In 1389
valueXmlString.append("<revised_pts><![CDATA[" + revisedPts + "]]></revised_pts>\r\n");
setNodeValue(dom, "revised_pts", revisedPts.toString()); // Added In 1389
valueXmlString.append("<revised_ptd><![CDATA[" + revisedPtd + "]]></revised_ptd>\r\n");
setNodeValue(dom, "revised_ptd", revisedPtd.toString()); // Added In 1389
//Comment out the rate_quot validation block as this case handled by JS
valueXmlString.append("<value protect='1'><![CDATA[" + value + "]]></value>\r\n");
setNodeValue(dom, "value", value.toString()); // Added In 1389
valueXmlString.append("</Detail" + objContext + ">");
}
} catch (Exception e) {
BaseLogger.log("3", null, null, "Exception 1002. [" + E12GenericUtility.getStackTrace(e) + "]");
} finally {
// Ensure you close the ResultSet and PreparedStatement afterwards to prevent memory leaks!
resvisedRateRs.close();
resvisedRatePstmt.close();
}
//Calculating Revised PTR,PTD and PTS [End]
*/
}
break;
}
//end sales_pers
}//end try itemchange
catch(Exception e)
{
BaseLogger.log("3", null, null, "Exception 1746. [" + E12GenericUtility.getStackTrace(e) + "]");
valueXmlString = valueXmlString.append( genericUtility.createErrorString( e ) );
}//end catch itemchange
finally
{
try
{
if(rs !=null)
{
rs.close();
rs = null;
}
if (pstmt != null)
{
pstmt.close();
pstmt = null;
}
if( conn != null && ! conn.isClosed() )
{
conn.close();
conn = null;
}
}
catch(Exception e)
{
System.out.println("Exception :StrgBrandactwiz :defaultDataWiz :==>\n"+e.getMessage());
throw new ITMException(e);
}
}
valueXmlString.append( "</Root>\r\n" );
System.out.println(" ReqForQuotationWiz valueXmlString :==>\n"+valueXmlString.toString());
return valueXmlString.toString();
}
private static void setNodeValue(Document dom, String nodeName, String nodeVal) throws Exception {
Node tempNode = dom.getElementsByTagName(nodeName).item(0);
if (tempNode != null) {
if (tempNode.getFirstChild() == null) {
CDATASection cDataSection = dom.createCDATASection(nodeVal);
tempNode.appendChild(cDataSection);
} else {
tempNode.getFirstChild().setNodeValue(nodeVal);
}
}
tempNode = null;
}
private String getDomID(Document dom2,String objContext)
{
Node elementName = null, parentNode = null;
NodeList elementList = null;
Element elementAttr = null;
String objName = "";
elementList = dom2.getElementsByTagName("Detail"+objContext);
elementName = elementList.item(0);
if (elementName!=null && ("Detail"+objContext).equalsIgnoreCase(elementName.getNodeName()))
{
NamedNodeMap etlAttributes = elementName.getAttributes();
if (etlAttributes!=null)
{
if (etlAttributes.getNamedItem("domID")!=null)
{
objName = etlAttributes.getNamedItem("domID").getNodeValue();
}
}
}
return objName;
}
public static boolean isDateInvalid(String validUptoStr)
{
try
{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yy");
LocalDate validDate = LocalDate.parse(validUptoStr, formatter);
LocalDate currentDate = LocalDate.now();
if(validDate.isBefore(currentDate))
{
return true;
}
}
catch(Exception e)
{
BaseLogger.log("3", null, null, "Exception in date validation [" + e + "]");
}
return false;
}
private String checkNull( String inputVal )
{
if ( inputVal == null )
{
inputVal = "";
}
return inputVal;
}
private String errorType(Connection conn , String errorCode)
{
String msgType = "";
PreparedStatement pstmt = null ;
ResultSet rs = null;
try
{
String sql = "SELECT MSG_TYPE FROM MESSAGES WHERE MSG_NO = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,errorCode);
rs = pstmt.executeQuery();
while(rs.next())
{
msgType = rs.getString("MSG_TYPE");
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
return msgType;
}
}
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