Validate supplier details when admin submit

Learn about step to customize validate data with DAO.

Requirement

For all order items, summary of all "In Stock" at module supplier list must not less than "Unit" of order item.

Procedure

1. From ONEWEB workspace, open java file name "com.manual.doc.order.dao.ManualDocOrderDAO" at MasterWeb and add new method with coding below.

public int countInCompleteInStock(String requestID) throws Exception;

2. From ONEWEB workspace, open java file name "com.manual.doc.order.dao.ManualDocOrderDAOImpl" at MasterWeb and add new method with coding below.

@Override
	public int countInCompleteInStock(String requestID) throws Exception {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		int result = 0;
		try{
			conn = ManualJDBCServiceLocator.getInstance().getConnection(ManualJDBCServiceLocator.ONEWEB_DB);
			StringBuilder sql = new StringBuilder("");
					
			sql.append("SELECT COUNT(1) AS more_than_stock ");
			sql.append("FROM (SELECT oi.order_item_id, oi.unit, SUM(in_stock) as sum_stock ");
			sql.append("FROM wf_order_req_item oi ");
			sql.append("INNER JOIN wf_order_req_item_supplier ois ON oi.order_item_id = ois.order_item_id ");
			sql.append("WHERE oi.request_id = ? ");
			sql.append("GROUP BY oi.order_item_id, oi.unit) tmp ");
			sql.append("where tmp.unit - tmp.sum_stock > 0 ");
			
			ps = conn.prepareStatement(sql.toString());
			ps.setString(1, requestID);
			
			logger.debug("@@@@@ countInCompleteInStock sql :"  + sql.toString());
			logger.debug("@@@@@ countInCompleteInStock requestID :"  + requestID);
			
			rs = ps.executeQuery();
			
			if(rs.next()){
				result = rs.getInt("more_than_stock");
			}
			
			return result;
		}catch(Exception e){
			e.printStackTrace();
			throw e;
		}finally{
			this.closeConnection(conn, ps, rs);
		}
	}

3. From OneWeb workspace, create java file name "com.manual.doc.order.java.OrderRequestAdminUpdateMode" at MasterWeb with coding below.

package com.manual.doc.order.java;

import java.util.HashMap;
import java.util.Vector;

import com.manual.service.ManualDAOFactory;
import com.master.form.EntityFormHandler;
import com.master.util.EAFManualUtil;
import com.master.util.ProcessAction;
import com.master.util.ProcessHelper;

public class OrderRequestAdminUpdateMode extends ProcessHelper implements ProcessAction {

	@Override
	public boolean validateResult() {
		String nextEntity = request.getParameter("goEntity");
		//logger.debug("@@@@@ nextEntity :" + nextEntity);
		
		if(nextEntity == null || "".equals(nextEntity)) {
			String entityID = (String)getRequest().getSession().getAttribute("entityID");
			EntityFormHandler entityForm = (EntityFormHandler)getRequest().getSession().getAttribute(entityID +"_session");
			Vector errorVect = entityForm.getFormErrors();
			String moduleID = entityForm.getMainModuleID();
			
			HashMap mainRequestData = EAFManualUtil.getDataHashMapFromSession(moduleID, request);
			String requestID = (String)mainRequestData.get("REQUEST_ID");
			
			try{
				int inCompleteAmt = ManualDAOFactory.getManualDocOrderDAO().countInCompleteInStock(requestID);
				//logger.debug("@@@@@ incompleteAmt :" + inCompleteAmt);
				if(inCompleteAmt > 0){
					errorVect.add("Please verify supplier stock");
					return false;
				}
			}catch(Exception e){
				errorVect.add(e.getMessage());
				return false;
			}
		}
		return super.validateResult();
	}

}

4. From ONEWEB workspace, export EafMasterEar.ear and deploy update to server. The class name from step 1-3 will update to server.

5. Test by log in to FrontWeb. 5.1. Login with Admin user. 5.2. Go to To Do List and claim job. 5.3. Click save or submit. 5.4. If found at least one record of order item that Unit more than summary of In Stock, the system must show error message "Please verify supplier stock."

Last updated