Commit 1c44492e authored by vkadam's avatar vkadam

Add validation for cheque no, station code blank, station code duplicate,...

Add validation for cheque no, station code blank, station code duplicate, voucher duplicate, and payment mode different for sundry type [F14FSUN003].


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@98609 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 35ed6823
/********************************************************
Title : MiscPaySubAct[F14FSUN003]
Date : 17/SEP/14
Developer: Sagar M.
********************************************************/
package ibase.webitm.ejb.fin.adv; package ibase.webitm.ejb.fin.adv;
import ibase.webitm.utility.*; import ibase.system.config.ConnDriver;
import ibase.webitm.ejb.*; import ibase.webitm.ejb.ActionHandlerEJB;
import ibase.system.config.*;
import ibase.webitm.utility.ITMException;
import ibase.webitm.ejb.ITMDBAccessEJB; import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.fin.FinCommon; import ibase.webitm.ejb.fin.FinCommon;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException;
import java.io.PrintStream;
import java.rmi.RemoteException; import java.rmi.RemoteException;
import java.sql.*; import java.sql.Connection;
import java.text.SimpleDateFormat; import java.sql.PreparedStatement;
import java.util.*; import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.ArrayList;
import javax.ejb.Stateless;
import javax.ejb.Stateless; @Stateless
public class MiscPaySubAct extends ActionHandlerEJB
implements MiscPaySubActLocal, MiscPaySubActRemote
{
String userId = ""; String termId = "";
GenericUtility genericUtility = GenericUtility.getInstance();
@Stateless public String actionHandler(String tranId, String xtraParams, String forcedFlag)
throws RemoteException, ITMException
{
System.out.println("---ActionHandler---@@@@@@@@xtraParams[" + xtraParams + "]@@@@@@forcedFlag[" + forcedFlag + "]");
Connection conn = null;
PreparedStatement pstmt = null; PreparedStatement pstmt1 = null; PreparedStatement pstmt2 = null;
ResultSet rs = null; ResultSet rs1 = null; ResultSet rs2 = null;
String retString = "";
String sql = ""; String sql1 = ""; String sql2 = "";
String confStatus = ""; String wfStatus = ""; String sundryType = ""; String sundryCode = ""; String payMode = ""; String supPayMod = ""; String bankCode = ""; String chqNo = "";
int cnt = 0; int cnt1 = 0;
public class MiscPaySubAct extends ActionHandlerEJB implements MiscPaySubActLocal, MiscPaySubActRemote Timestamp datesubmit = null;
{
/** double totAmt = 0.0D; double totAmtMiscPay = 0.0D; double adjAmtMiscPay = 0.0D; double payAmt = 0.0D;
* The public method is used for update the Workflow status
* @param tranId ArrayList stnCdList = new ArrayList();
* @param xtraParams contais additional information such as loginEmpCode,loginCode,chgTerm etc
* @param forcedFlag (true or false) boolean stanCdBlank = false; boolean stanCdDupl = false; boolean stanCodeInv = false;
*/
String userId = "", termId = ""; Timestamp tranDate = null;
GenericUtility genericUtility = GenericUtility.getInstance(); String refNo = ""; String tranSer = "";
FinCommon fin = new FinCommon();
@Override try
public String actionHandler(String tranId, String xtraParams, String forcedFlag) throws RemoteException, ITMException {
{ ConnDriver connDriver = null;
System.out.println("---ActionHandler---@@@@@@@@xtraParams["+xtraParams+"]@@@@@@forcedFlag["+forcedFlag+"]"); connDriver = new ConnDriver();
Connection conn = null; conn = connDriver.getConnectDB("DriverITM");
PreparedStatement pstmt = null,pstmt1 = null; conn.setAutoCommit(false);
ResultSet rs = null,rs1 = null; connDriver = null;
String retString = "";
String sql = "",sql1 = ""; ITMDBAccessEJB itmDBAccessLocal = new ITMDBAccessEJB();
String confStatus="",wfStatus=""; this.userId = this.genericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginCode");
/*String currAppdate =""; this.termId = this.genericUtility.getValueFromXTRA_PARAMS(xtraParams, "termId");
String tranIdTest="",todayStr="";*/ if ((this.userId == null) || (this.userId.trim().length() == 0))
java.sql.Timestamp datesubmit=null; {
//added by vishakha on 03/Aug/2015 for validations on Submit button. this.userId = "SYSTEM";
double totAmt = 0.0,totAmtMiscPay = 0.0,adjAmtMiscPay = 0.0,payAmt = 0.0; }
if ((this.termId == null) || (this.termId.trim().length() == 0))
// String ignorechklimit ="",tranKeyFld = "",bankCode = "",siteCode = "",payType = ""; {
Timestamp tranDate = null; this.termId = "SYSTEM";
String refNo = "",tranSer = ""; }
FinCommon fin = new FinCommon();
try System.out.println(">>>>>>>>>>tranId:" + tranId);
{ sql = "SELECT CONFIRMED,CASE WHEN WF_STATUS IS NULL THEN 'O' ELSE WF_STATUS END AS WF_STATUS,SUNDRY_CODE,SUNDRY_TYPE,PAY_MODE,BANK_CODE,REF_NO FROM MISC_PAYMENT WHERE TRAN_ID= ? ";
ConnDriver connDriver = null;
connDriver = new ConnDriver(); pstmt = conn.prepareStatement(sql);
conn = connDriver.getConnectDB("DriverITM"); pstmt.setString(1, tranId);
conn.setAutoCommit(false); rs = pstmt.executeQuery();
connDriver = null; if (rs.next())
{
ITMDBAccessEJB itmDBAccessLocal = new ITMDBAccessEJB(); confStatus = rs.getString("CONFIRMED").trim();
userId = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginCode"); wfStatus = rs.getString("WF_STATUS").trim();
termId = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "termId"); sundryCode = checkNull(rs.getString("SUNDRY_CODE"));
if (userId == null || userId.trim().length() == 0) sundryType = checkNull(rs.getString("SUNDRY_TYPE"));
{ payMode = checkNull(rs.getString("PAY_MODE"));
userId = "SYSTEM"; bankCode = checkNull(rs.getString("BANK_CODE"));
} chqNo = checkNull(rs.getString("REF_NO"));
if (termId == null || termId.trim().length() == 0) }
{ pstmt.close();
termId = "SYSTEM"; pstmt = null;
} rs.close();
rs = null;
System.out.println(">>>>>>>>>>tranId:"+tranId); String str1;
sql = "SELECT CONFIRMED,CASE WHEN WF_STATUS IS NULL THEN 'O' ELSE WF_STATUS END AS WF_STATUS FROM MISC_PAYMENT WHERE TRAN_ID= ? "; if ("Y".equalsIgnoreCase(confStatus))
pstmt = conn.prepareStatement(sql); {
pstmt.setString(1, tranId); retString = itmDBAccessLocal.getErrorString("", "VTDIST26", "");
rs = pstmt.executeQuery(); str1 = retString;
if ( rs.next() ) return str1;
{ }
confStatus = rs.getString("CONFIRMED").trim(); if ("S".equalsIgnoreCase(wfStatus))
wfStatus = rs.getString("WF_STATUS").trim(); {
} retString = itmDBAccessLocal.getErrorString("", "ALRDYSUBMT", "");
pstmt.close(); str1 = retString;
pstmt = null; return str1;
rs.close(); }
rs = null; if (("N".equalsIgnoreCase(confStatus)) && ("O".equalsIgnoreCase(wfStatus)))
{
if( "Y".equalsIgnoreCase(confStatus) ) sql = "select sum(pay_amt) as totAmt from misc_paydet where tran_id = ? ";
{ pstmt = conn.prepareStatement(sql);
retString = itmDBAccessLocal.getErrorString("","VTDIST26",""); pstmt.setString(1, tranId);
return retString; rs = pstmt.executeQuery();
} if (rs.next())
if( "S".equalsIgnoreCase(wfStatus) ) {
{ totAmt = rs.getDouble("totAmt");
retString = itmDBAccessLocal.getErrorString("","ALRDYSUBMT",""); }
return retString;
} pstmt.close();
if( "N".equalsIgnoreCase(confStatus) && "O".equalsIgnoreCase(wfStatus)) pstmt = null;
{ rs.close();
//added by vishakha on 03/Aug/2015 as to incorporate the validations on submit button like those on commit button. rs = null;
if (totAmt < 0.0D)
sql = "select sum(pay_amt) as totAmt from misc_paydet where tran_id = ? "; {
pstmt = conn.prepareStatement(sql); retString = itmDBAccessLocal.getErrorString("", "VTAMTMIS1", "");
pstmt.setString(1, tranId); str1 = retString;
rs = pstmt.executeQuery(); return str1;
if ( rs.next() ) }
{
totAmt = rs.getDouble("totAmt");//fetching totalAmount from details sql1 = "select TRAN_SER,vouch_no,pay_amt from misc_paydet where tran_id = ?";
} pstmt1 = conn.prepareStatement(sql1);
pstmt.close(); pstmt1.setString(1, tranId);
pstmt = null; rs1 = pstmt1.executeQuery();
rs.close(); while (rs1.next())
rs = null; {
tranSer = checkNull(rs1.getString("TRAN_SER"));
if(totAmt < 0.0)//total amount should not be negative refNo = checkNull(rs1.getString("vouch_no"));
{ payAmt = rs1.getDouble("pay_amt");
retString = itmDBAccessLocal.getErrorString("","VTAMTMIS1","");
return retString; sql = "SELECT tot_amt as tot_amt, adj_amt as adj_amt , sundry_type as sundrytype from misc_payables where tran_ser = ? and ref_no = ? ";
}
pstmt = conn.prepareStatement(sql);
sql1 = "select TRAN_SER,vouch_no,pay_amt from misc_paydet where tran_id = ?"; pstmt.setString(1, tranSer);
pstmt1 = conn.prepareStatement(sql1); pstmt.setString(2, refNo);
pstmt1.setString(1, tranId);
rs1 = pstmt1.executeQuery(); rs = pstmt.executeQuery();
while ( rs1.next() ) while (rs.next())
{ {
totAmtMiscPay = rs.getDouble("tot_amt");
tranSer = checkNull(rs1.getString("TRAN_SER")); adjAmtMiscPay = rs.getDouble("adj_amt");
refNo = checkNull(rs1.getString("vouch_no"));
payAmt = rs1.getDouble("pay_amt"); System.out.println("totAmtMiscPay =========" + totAmtMiscPay);
System.out.println("adjAmtMiscPay =========" + adjAmtMiscPay);
sql = "SELECT tot_amt as tot_amt, adj_amt as adj_amt , sundry_type as sundrytype from misc_payables where tran_ser = ? and ref_no = ? "; System.out.println("Pay Amount ============ " + payAmt);
pstmt = conn.prepareStatement(sql); if (Math.abs(totAmtMiscPay - adjAmtMiscPay) >= Math.abs(payAmt))
pstmt.setString(1,tranSer); {
pstmt.setString(2,refNo); continue;
}
rs = pstmt.executeQuery();
while ( rs.next() ) System.out.println("Entering the if condition Pay Amount ============ " + payAmt);
{ retString = itmDBAccessLocal.getErrorString("", "VTBAL1", "");
totAmtMiscPay = rs.getDouble("tot_amt"); str1 = retString;
adjAmtMiscPay = rs.getDouble("adj_amt"); return str1;
}
System.out.println("totAmtMiscPay ========="+ totAmtMiscPay);
System.out.println("adjAmtMiscPay ========="+ adjAmtMiscPay); pstmt.close();
System.out.println("Pay Amount ============ "+ payAmt); pstmt = null;
if(Math.abs(totAmtMiscPay - adjAmtMiscPay) < Math.abs(payAmt))//if there is no balance in misc_payables rs.close();
{ rs = null;
System.out.println("Entering the if condition Pay Amount ============ "+ payAmt); }
retString = itmDBAccessLocal.getErrorString("","VTBAL1","");
return retString; pstmt1.close();
} pstmt1 = null;
rs1.close();
} rs1 = null;
pstmt.close();
pstmt = null; System.out.println("@V@ Sundry Type :- [" + sundryType + "]");
rs.close(); System.out.println("@V@ Sundry Code :- [" + sundryCode + "]");
rs = null;
if ("S".equalsIgnoreCase(sundryType))
} {
pstmt1.close(); System.out.println("@V@ Pay Mode :- [" + payMode + "]");
pstmt1 = null;
rs1.close(); sql = "select pay_mode from SUPPLIER where supp_code=?";
rs1 = null; pstmt = conn.prepareStatement(sql);
//SQL for update the work flow status/.......... pstmt.setString(1, sundryCode);
sql = "UPDATE MISC_PAYMENT SET WF_STATUS='S',emp_code__submit=?,submit_date=? WHERE tran_id = ?";
pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery();
pstmt.setString(1,userId); if (rs.next())
datesubmit=new java.sql.Timestamp(System.currentTimeMillis()); {
pstmt.setTimestamp(2,datesubmit); supPayMod = checkNull(rs.getString("pay_mode"));
pstmt.setString(3,tranId); }
int rowcnt = pstmt.executeUpdate(); pstmt.close();
pstmt.close(); pstmt = null;
pstmt = null; rs.close();
if(rowcnt > 0) rs = null;
{
retString = itmDBAccessLocal.getErrorString("","SUBMITSUCC",""); System.out.println("@V@ Supplier Pay Mode :- [" + supPayMod + "]");
System.out.println(">>>>>>>>>>>>>>>Before conn.commit()");
conn.commit(); if (("N".equalsIgnoreCase(supPayMod)) && (!supPayMod.equalsIgnoreCase(payMode)))
//return retString; {
} System.out.println("@V@ Pay Mode not matching");
retString = itmDBAccessLocal.getErrorString("", "VTPYMDDIFF", "");
} str1 = retString;
return str1;
}
}
}
catch(Exception e) sql = "select stan_code from misc_paydet where tran_id=?";
{ pstmt = conn.prepareStatement(sql);
try pstmt.setString(1, tranId);
{
conn.rollback(); rs = pstmt.executeQuery();
} while (rs.next())
catch (Exception e1) {
{ if ((rs.getString("stan_code") == null) || (checkNull(rs.getString("stan_code")).length() == 0))
} {
e.printStackTrace(); stanCdBlank = true;
System.out.println("Exception ::"+e.getMessage()); break;
throw new ITMException(e); }
}
finally System.out.println("@V@ Stan code not blank");
{
try sql2 = "select count(*) a cnt from station where stan_code=?";
{ pstmt2 = conn.prepareStatement(sql2);
if(pstmt1 != null) pstmt2.setString(1, checkNull(rs.getString("stan_code")));
{
pstmt1.close(); rs2 = pstmt2.executeQuery();
pstmt1 = null; if (rs2.next())
} {
if(pstmt != null) cnt1 = rs2.getInt("cnt");
{ }
pstmt.close(); pstmt2.close();
pstmt = null; pstmt2 = null;
} rs2.close();
if( conn != null && ! conn.isClosed() ) rs2 = null;
{
conn.close(); if (cnt1 == 0)
conn = null; {
} stanCodeInv = true;
} break;
catch(Exception ef) }
{
System.out.println(ef.getMessage()); if ("E".equalsIgnoreCase(sundryType))
ef.printStackTrace(); continue;
throw new ITMException(ef); System.out.println("@V@ Sundry type NOT 'E'");
} if (stnCdList.size() > 0)
} {
System.out.println("Returning Result ::"+retString); System.out.println("@V@ List size is NOT 0 :-[" + stnCdList.size() + "]");
return retString; if (!stnCdList.contains(rs.getString("stan_code")))
} {
System.out.println("@V@ Stan code match found");
private String checkNull( String input ) stanCdDupl = true;
{ break;
if ( input == null ) }
{
input = ""; System.out.println("@V@ Stan code added in list");
} stnCdList.add(rs.getString("stan_code"));
return input; }
} else
} {
/********CODE COMMENTED as it only checks the balance for bank_type = 'B'*********/ System.out.println("@V@ First Stan code added in list");
/*public String getBalChk(String bankCode,String siteCode,Timestamp tranDate,double netAmt,Connection conn)throws Exception stnCdList.add(rs.getString("stan_code"));
{ }
System.out.println("@@@@@@getBalChk method@@@@@@@");
String errCode = ""; }
double bal = 0.0;
ITMDBAccessEJB itmDBAccessLocal = new ITMDBAccessEJB(); pstmt.close();
PreparedStatement pstmt = null; pstmt = null;
ResultSet rs = null; rs.close();
String sql = "",bankType = "",acctprd = ""; rs = null;
sql = "select bank_type as ls_type from bank where bank_code = ? ";
pstmt = conn.prepareStatement(sql); if (stanCdBlank)
pstmt.setString(1,bankCode); {
rs = pstmt.executeQuery(); System.out.println("@V@ Station code null found");
if ( rs.next() ) retString = itmDBAccessLocal.getErrorString("", "VTSTNCDBLK", "");
{ str1 = retString;
bankType = checkNull(rs.getString("ls_type")); return str1;
} }
pstmt.close(); if (stanCodeInv)
pstmt = null; {
rs.close(); System.out.println("@V@ Station code invalid");
rs = null; retString = itmDBAccessLocal.getErrorString("", "VTSTNCDINV", "");
sql = "select code as ls_acctprd from acctprd where ? between fr_date and to_date "; str1 = retString;
pstmt = conn.prepareStatement(sql); return str1;
pstmt.setTimestamp(1,tranDate); }
rs = pstmt.executeQuery(); if (!"E".equalsIgnoreCase(sundryType))
if ( rs.next() ) {
{ if (stanCdDupl)
acctprd = rs.getString("ls_acctprd"); {
} System.out.println("@V@ Station code Duplicate found");
pstmt.close(); retString = itmDBAccessLocal.getErrorString("", "VTSTNCDDPL", "");
pstmt = null; str1 = retString;
rs.close(); return str1;
rs = null; }
if(bankType == "C") }
{
sql = "select sum(dr_amt - cr_amt) as lc_bal from sundrybal where acct_prd = ? and prd_code = 'zzzzzz' and site_code = ? and sundry_type = 'B' and sundry_code = ? "; sql = "select count(*) AS CNT from misc_payment a,misc_paydet b where a.tran_id=b.tran_id and wf_status='S'"
pstmt = conn.prepareStatement(sql); + " AND CONFIRMED='N' and b.tran_id <> ? and b.VOUCH_NO in(select VOUCH_NO from misc_paydet where tran_id=?)";
pstmt.setString(1,acctprd);
pstmt.setString(2,siteCode); pstmt = conn.prepareStatement(sql);
pstmt.setString(3,bankCode); pstmt.setString(1, tranId);
rs = pstmt.executeQuery(); pstmt.setString(2, tranId);
if ( rs.next() )
{ rs = pstmt.executeQuery();
bal = rs.getDouble("lc_bal"); if (rs.next())
} {
pstmt.close(); cnt = rs.getInt("CNT");
pstmt = null; }
rs.close(); pstmt.close();
rs = null; pstmt = null;
System.out.println("Value of sum(dr_amt - cr_amt)"+bal); rs.close();
System.out.println("Value of net amount ==========="+netAmt); rs = null;
if(netAmt > 0.0 && netAmt > bal )
{ if (cnt > 0)
errCode = itmDBAccessLocal.getErrorString("","VTPAYAMT",""); {
return errCode; System.out.println("@V@ Voucher Duplicate found in 'misc_payment'");
} retString = itmDBAccessLocal.getErrorString("", "VTVCHNODPL", "");
str1 = retString;
} return str1;
}
return errCode;
} sql = "SELECT COUNT(*) AS CNT FROM BANKTRAN_LOG WHERE BANK_CODE=? AND TRAN_TYPE='P' AND TRAN_SER <> 'R-DIS' AND REF_NO=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, bankCode);
sql = "select tran_id as ls_keyfld, bank_code as ls_bank, net_amt as lc_net, site_code as ls_site, tran_date as ld_tran_date,ref_no , pay_type as ls_pay_type from misc_payment where tran_id = ? for update nowait"; pstmt.setString(2, chqNo);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, tranId); rs = pstmt.executeQuery();
rs = pstmt.executeQuery(); if (rs.next())
if ( rs.next() ) {
{ cnt = rs.getInt("CNT");
tranKeyFld = checkNull(rs.getString("ls_keyfld")); }
bankCode = checkNull(rs.getString("ls_bank")); pstmt.close();
netAmt = rs.getDouble("lc_net"); pstmt = null;
tranDate = rs.getTimestamp("ld_tran_date"); rs.close();
siteCode = checkNull(rs.getString("ls_site")); rs = null;
payType = checkNull(rs.getString("ls_pay_type"));
refNo = checkNull(rs.getString("ref_no")); if (cnt > 0)
} {
pstmt.close(); System.out.println("@V@ Duplicate cheque found");
pstmt = null; retString = itmDBAccessLocal.getErrorString("", "VTCHQ3", "");
rs.close(); str1 = retString;
rs = null; return str1;
}
ignorechklimit = fin.getFinparams("999999","IGNORE_WARNINGS",conn); sql = "UPDATE MISC_PAYMENT SET WF_STATUS='S',emp_code__submit=?,submit_date=? WHERE tran_id = ?";
System.out.println("Value of Ignore chk limit ===="+ignorechklimit); pstmt = conn.prepareStatement(sql);
if("NULLFOUND".equals(ignorechklimit ) || ignorechklimit == null) pstmt.setString(1, this.userId);
{ datesubmit = new Timestamp(System.currentTimeMillis());
ignorechklimit = "N"; pstmt.setTimestamp(2, datesubmit);
System.out.println("Value of Ignore chk limit ===="+ignorechklimit); pstmt.setString(3, tranId);
} int rowcnt = pstmt.executeUpdate();
if("N".equalsIgnoreCase(ignorechklimit)) pstmt.close();
{ pstmt = null;
System.out.println("Insiding****BalChk condition"); if (rowcnt > 0)
retString = getBalChk(bankCode,siteCode,tranDate,netAmt,conn); {
if(retString.trim().length() > 0) retString = itmDBAccessLocal.getErrorString("", "SUBMITSUCC", "");
{ System.out.println(">>>>>>>>>>>>>>>Before conn.commit()");
return retString; conn.commit();
} }
}*/
}
}
catch (Exception e)
{
try
{
conn.rollback();
}
catch (Exception localException1) {
}
e.printStackTrace();
System.out.println("Exception ::" + e.getMessage());
throw new ITMException(e);
}
finally
{
try {
if (pstmt1 != null)
{
pstmt1.close();
pstmt1 = null;
}
if (pstmt != null)
{
pstmt.close();
pstmt = null;
}
if ((conn != null) && (!conn.isClosed()))
{
conn.close();
conn = null;
}
}
catch (Exception ef) {
System.out.println(ef.getMessage());
ef.printStackTrace();
throw new ITMException(ef);
}
}
try
{
if (pstmt1 != null)
{
pstmt1.close();
pstmt1 = null;
}
if (pstmt != null)
{
pstmt.close();
pstmt = null;
}
if ((conn != null) && (!conn.isClosed()))
{
conn.close();
conn = null;
}
}
catch (Exception ef) {
System.out.println(ef.getMessage());
ef.printStackTrace();
throw new ITMException(ef);
}
System.out.println("Returning Result ::" + retString);
return retString;
}
private String checkNull(String input)
{
if (input == null)
{
input = "";
}
return input;
}
}
\ 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