/**
 * @(#)file    OutEstmWriteBiz.java
 * @(#)author  Son Hyung Min 
 * @(#)version 1.0
 * @(#)date    2014-06-23
 * @(#)since   JDK 1.4.2
 */
package kr.co.udapsoft.ebid.supplier.portal.bid.biz;




import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import kr.co.udapsoft.common.util.Crosscert;
import oracle.toplink.internal.ox.StrBuffer;
import sun.java2d.pipe.SpanShapeRenderer.Simple;
import kr.co.hsnc.common.sql.Row;
import kr.co.hsnc.common.sql.RowSet;
import kr.co.hsnc.common.sql.RowSetImpl;
import kr.co.hsnc.common.sql.WAFSQLException;
import kr.co.hsnc.common.sql.search.Search;
import kr.co.hsnc.common.sql.search.SearchImpl;
import kr.co.hsnc.common.sql.util.RowSetUtility;
import kr.co.hsnc.common.util.ValueObject;
import kr.co.udapsoft.common.code.CommCodeManager;
import kr.co.udapsoft.ebid.buyer.common.file.FileManager;

import com.udapsoft.modular.web.ibsheet7.IBSheet7Factory;
import com.udapsoft.waf.system.Biz;
import com.udapsoft.waf.system.HandlerStorage;

import crosscert.Base64;
import crosscert.Certificate;
import crosscert.Decrypt;
import crosscert.PrivateKey;
import crosscert.Verifier;
import kr.co.hsnc.common.config.WAFConfig;
   
public class OutEstmWriteBiz extends Biz {

	Crosscert Crosscert = new Crosscert();
	public OutEstmWriteBiz(HandlerStorage storage) {
		super(storage);
	}

	public void doBiz() throws Exception {
        ValueObject user = new ValueObject();
		
		if(storage.compareEvent("GET_ITEM_LIST")){
			params.set("sheet1", geitemList(params));
			storage.addObject("ibsheet7Data", IBSheet7Factory.createIBSheet7(params, storage.request));
		}else if(storage.compareEvent("FORM_SELECT")){
	            user = getOrderReqeustValueObject();
	            user.set("KEY", Crosscert.getBase64EncodeCert("signCert.der"));
	            storage.addValueObject("Order", user);
	            storage.addRowSet("CODE911", getCode911List());
	            /**		파일 목록 조회			 **/
	            SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
	            Date now = new Date();
		        String FileGB = "INQ_"+storage.getUser().get("CORP_ID")+format.format(now)+user.get("ATT_ID")+params.get("BID_DEG");  //첨부파일 오류 수정 
		        user.set("FILE_GB", FileGB);
		        storage.addValueObject(FileGB, getfilelist(user.get("FILE_GB"),params.get("DEMANDED_ID"),FileGB));
		}
	}
	
	/**
	 * 발주의뢰(외주) 접수를 검색하여 리턴
	 * @param Params
	 * @return
	 */
	private RowSet getCode911List() {
		Search search = new SearchImpl();
        RowSet rowSet = new RowSetImpl();
        StrBuffer sqlstr = new StrBuffer();
        try{
			sqlstr.append("  SELECT DETAILCD,DETAILNM,DETAILSORTNM,CHG_CODE01,CHG_CODE03 FROM EBID_COM911T WHERE BASECD = '911'	 ORDER BY SORT_NO 	\n");
			search.setStatement(sqlstr.toString());
            rowSet = search.execute();
        }catch (WAFSQLException se) {
            super.doException(se);
            this.storage.setSuccess(false);  
            this.storage.setMessage(se.getMessage());
            storage.setDetailMessage(se);
        }finally{    
            if(rowSet == null)rowSet = new RowSetImpl();
        }
        return rowSet;
	}
	
	private ValueObject getfilelist(String filegb,String id,String returnid){
		ValueObject vo = new ValueObject();
		RowSet rowSet = FileManager.getFileList(filegb, id);
		String str="";
	        for(int i=0;i<rowSet.size();i++){
	        	Row row=rowSet.getRow(i);
	        	str += (i+1)+" : "+row.get("FILE_NAME")+" ("+ row.get("FILE_SIZE")+")";
	        	if(i+1!=rowSet.size()){
	        		str +="\r\n";
	        	}
	        }
	        vo.set(returnid, str);
		return vo;
	}

	/**
	 * 입찰내역 리스트 조회
	 * @param Params
	 * @return
	 */
	private RowSet geitemList(ValueObject param) {
		Search search = new SearchImpl();
        RowSet rowSet = new RowSetImpl();
        StrBuffer sqlstr = new StrBuffer();
        try{
        	if("O".equals(params.get("DEMANDED_KIND"))){
        		//2018.10.19 내역 
	        	sqlstr.append(" SELECT NVL(F_GET_OUT_ITEM_NAME(SUBSTR(B.MATERIAL_CD,0,4)),'직접비') AS DEPTH1							\n");
	        	sqlstr.append("      , A.MATERIAL_CD																				\n");
	        	sqlstr.append("      , NVL(A.ITEM_NAME, B.ITEM_NAME) ITEM_NAME														\n");
	        	sqlstr.append("      , SUBSTR(A.MATERIAL_CD,0,6) AS PARENT_LEVEL	                                       	        \n");
	        	sqlstr.append("      , DECODE(B.PARENT_LEVEL,'R','',A.DEMANDED_QTY || '/'||A.STD) AS ITEMS					        \n");
	        	sqlstr.append("      , F_GET_D_CURRENCY(C.UNIT_COST ,F_GET_CURRENCY_DIGIT(D.CURRENCY_GB)) AS UNIT_COST 				\n");
	        	sqlstr.append("      , F_GET_D_CURRENCY(C.MAT_COST ,F_GET_CURRENCY_DIGIT(D.CURRENCY_GB)) AS MAT_COST 				\n");
	        	sqlstr.append("      , F_GET_D_CURRENCY(C.LAB_COST ,F_GET_CURRENCY_DIGIT(D.CURRENCY_GB)) AS LAB_COST 				\n");
	        	sqlstr.append("      , C.BASIS_CALCU 																				\n");
	        	sqlstr.append("      , C.NOTI 																						\n");
	        	sqlstr.append("      , A.DEMANDED_QTY AS QTY 																		\n");
	        	sqlstr.append("   FROM BID_ITEM A 																					\n");
	        	sqlstr.append("      , BID_OUT_ITEM_MASTER B 																		\n");
	        	sqlstr.append("      , BID_SUPP_ESTI C 																				\n");
	        	sqlstr.append("      , BID_MASTER D 																				\n");
	        	sqlstr.append("  WHERE A.MATERIAL_CD=B.MATERIAL_CD(+)																\n"); 
	        	sqlstr.append("        AND A.BID_NO=C.BID_NO(+) 																	\n");
	        	sqlstr.append("        AND A.BID_DEG=C.BID_DEG(+)																	\n");
	        	sqlstr.append("        AND A.MATERIAL_CD = C.MATERIAL_CD(+)															\n");
	        	sqlstr.append("        AND A.BID_NO=D.BID_NO(+) 																	\n");
	        	sqlstr.append("        AND A.BID_DEG=D.BID_DEG(+)																	\n");
	        	sqlstr.append("        AND VENDOR_CD(+) = ?																			\n");
	        	sqlstr.append("        AND A.BID_NO = ? 																			\n");
	        	sqlstr.append("        AND A.BID_DEG = ?																			\n");
	        	sqlstr.append(" ORDER BY MATERIAL_CD 																				\n");
	        	
	        	
				search.setStatement(sqlstr.toString());
				search.addParameter(storage.getUser().get("CORP_ID"));
				search.addParameter(param.get("BID_NO"));
				search.addParameter(param.get("BID_DEG"));
				 
        	} else {
        		/**
        		 * 											구									매
        		 */
				sqlstr.append("    SELECT A.BID_NO,          \n");
	        	sqlstr.append("           A.BID_DEG,          \n");
	        	sqlstr.append("           A.MATERIAL_CD,          \n");
	        	sqlstr.append("           TO_CHAR(TO_DATE(A.REQUEST_DATE,'YYYYMMDD'),'YYYY-MM-DD') AS REQUEST_DATE,          \n");
	        	sqlstr.append("           A.CONT_UNIT_AMT,          \n");
	        	sqlstr.append("           A.ACT_UNIT_AMT,          \n");
	        	sqlstr.append("           A.DEMANDED_PRI,          \n");
	        	sqlstr.append("           A.DEMANDED_QTY AS QTY,          \n");
	        	sqlstr.append("           A.STD,          \n");
	        	sqlstr.append("           B.MATERIAL_NAME,          \n");
	        	sqlstr.append("           F_GET_UNIT_KIND_NAME(A.MATERIAL_CD) AS UNIT_KIND          \n");
	        	sqlstr.append("      FROM BID_ITEM A , PMM_COMM_MATERIAL_MASTER B          \n");
	        	sqlstr.append("      WHERE A.MATERIAL_CD = B.MATERIAL_CD          \n");
	        	sqlstr.append("        AND A.BID_NO = ?																														\n");
	        	sqlstr.append("        AND A.BID_DEG = ?																														\n");	
	        	sqlstr.append("        ORDER BY A.MATERIAL_CD																												\n");
				search.setStatement(sqlstr.toString());
				search.addParameter(param.get("BID_NO"));
				search.addParameter(param.get("BID_DEG"));
        	}
            rowSet = search.execute();
        }catch (WAFSQLException se) {
            super.doException(se);
            this.storage.setSuccess(false);  
            this.storage.setMessage(se.getMessage());
            storage.setDetailMessage(se);
        }finally{    
            if(rowSet == null)rowSet = new RowSetImpl();
        }
        return rowSet;
	}
	

	
	/**
	 * 발주의뢰(외주) 접수 상세를 검색하여 리턴
	 * @param Params
	 * @return
	 */
	private ValueObject getOrderReqeustValueObject() {

		Search search = new SearchImpl();
        RowSet rowSet = new RowSetImpl();
        ValueObject valueobject = null;
     //   String sqlstr = "";
        StrBuffer sqlstr = new StrBuffer();
        try{
			sqlstr.append("       SELECT TO_CHAR(TO_DATE(A.DEMANDED_DATE,'YYYYMMDD'),'YYYY-MM-DD') AS DEMANDED_DATE,                                        \n");
			sqlstr.append("       A.DEMANDED_TITLE,                                        \n");
			sqlstr.append("       A.DEMANDED_KIND,                                        \n");
			sqlstr.append("       F_GET_CODE_NAME('911',A.CURRENCY_GB) AS CURRENCY_GB_NM,                                        \n");
			sqlstr.append("       NVL((SELECT CHG_CODE01 FROM EBID_COM911T WHERE BASECD = '911' AND DETAILCD =A.CURRENCY_GB),0) AS PointCount,        \n");
			sqlstr.append("       A.CURRENCY_GB,                          		              \n");
			sqlstr.append("       A.DEPT_CD,                                        \n");
			sqlstr.append("       A.EMP_NO,                                        \n");
			sqlstr.append("       A.DELIVERY_CONDITION,                                        \n");
			sqlstr.append("       F_GET_CODE_NAME('PUR_LEAD_GB',A.DELIVERY_CONDITION) AS DELIVERY_CONDITION_NM,                                        \n");
			sqlstr.append("       A.CRE_BY,                                        \n");
			sqlstr.append("       A.CRE_DATE,                                        \n");
			sqlstr.append("       A.UPD_BY,                                        \n");
			sqlstr.append("       A.UPD_DATE,                                        \n");
			sqlstr.append("       A.DEMANDED_NO,                                        \n");
			sqlstr.append("       A.BID_APP_DATE,                                        \n");
			sqlstr.append("       A.BID_APP_NO,                                        \n");
			sqlstr.append("       A.PAY_ITEM,                                        \n");
			sqlstr.append("       F_GET_PAY_ITEM_VIEW(A.PAY_ITEM,A.COST_CODE,A.COST_TYPE,A.DEPT_CD) AS PAY_ITEM_NM,                \n");
			sqlstr.append("       A.COST_CODE,                                        \n");
			sqlstr.append("       A.COST_TYPE,                                        \n");
			sqlstr.append("       TO_CHAR(A.RECEIPT_DATE,'YYYY-MM-DD') AS RECEIPT_DATE,                                        \n");
			sqlstr.append("       DECODE(A.SITEDESC_FLAG,'Y','예','N','아니오','') AS SITEDESC_FLAG,                                        \n");
			sqlstr.append("       A.SITEDESCCHRGPRSNID,                                        \n");
			sqlstr.append("       A.SITEDESCTELNO,                                        \n");
			sqlstr.append("       TO_CHAR(A.SITEDESCDATE,'YYYY-MM-DD HH24:MI') AS SITEDESCDATE,                                        \n");
			sqlstr.append("       A.SITEDESCPLACE,                                        \n");
			sqlstr.append("       A.SITEDESCEMAIL,                                        \n");
			sqlstr.append("       A.PUREMPNO,                                        \n");
			sqlstr.append("       A.INNER_REMARKS,                                        \n");
			sqlstr.append("       A.TBE_FLAG,                                        \n");
			sqlstr.append("       A.OUTER_REMARKS,                                        \n");
			sqlstr.append("       A.DEMANDED_ID,                                        \n");
			sqlstr.append("       A.REQUEST_DATE,                                        \n");
			sqlstr.append("       NVL(B.ATT_ID+1,1) AS ATT_ID,                                        \n");
			sqlstr.append("       A.BID_NO,                                        \n");
			sqlstr.append("       A.BID_DEG,                                        \n");
			sqlstr.append("       F_GET_CODE_NAME('ONBID',ONBID_YN) AS ONBID_YN,                                       \n");
			sqlstr.append("       F_GET_CODE_NAME('CMPT_CD',A.CMPT_CD) AS CMPT_NM,                                        \n");
			sqlstr.append("       A.CMPT_CD,                                        \n");
			sqlstr.append("       F_GET_CODE_NAME('SUCC_CD',A.SUCC_CD) AS SUCC_NM,                                        \n");
			sqlstr.append("       A.SUCC_CD,                                        \n");
			sqlstr.append("       TO_CHAR(TO_DATE(A.NOTI_DY,'YYYYMMDD'),'YYYY-MM-DD') AS NOTI_DY,                                        \n");
			sqlstr.append("       A.SITEDESC_CRG_NM,                                        \n");
			sqlstr.append("       TO_CHAR(A.BID_FROM_DT,'YYYY-MM-DD HH24:MI') AS BID_FROM_DT,                                        \n");
			sqlstr.append("       TO_CHAR(A.BID_TO_DT,'YYYY-MM-DD HH24:MI') AS BID_TO_DT,                                        \n");
			sqlstr.append("       A.PO_EMPNM,                                        \n");
			sqlstr.append("       A.OPEN_EMPNM,                                        \n");
			sqlstr.append("       A.OPEN_EMPID,                                        \n");
			sqlstr.append("       A.DELI_FROM_DY,                   \n");
        	sqlstr.append("       TO_CHAR(TO_DATE(A.DELI_FROM_DY,'YYYYMMDD'),'YYYY-MM-DD') AS DELI_FROM_DY_NM,                   \n");
        	sqlstr.append("       A.DELI_TO_DY,                   \n");
        	sqlstr.append("       TO_CHAR(TO_DATE(A.DELI_TO_DY,'YYYYMMDD'),'YYYY-MM-DD') AS DELI_TO_DY_NM,                   \n");
			sqlstr.append("       A.DELIVERY_PLACE,                                        \n");
			sqlstr.append("       A.CONTFUL_RATE,                                        \n");
			sqlstr.append("       A.CONTFUL_CONDI,                                        \n");
			sqlstr.append("       A.WARR_RATE,                                        \n");
			sqlstr.append("       A.WARR_CONDI,                                        \n");
			sqlstr.append("       A.DEPT_NM,                                        \n");
			sqlstr.append("       A.REQ_DEPT_CD,                                        \n");
			sqlstr.append("       A.REQ_DEPT_NM,                                        \n");
			sqlstr.append("       A.EMP_NM,                                        \n");
			sqlstr.append("       A.STATUS_CD,                                        \n");
			sqlstr.append("       A.OPEN_DT,                                        \n");
			sqlstr.append("       A.CONT_APP_DATE,                                        \n");
			sqlstr.append("       A.CONT_APP_NO,                                        \n");
			sqlstr.append("       A.CONT_AMT,                                        \n");
			sqlstr.append("       A.ACT_AMT,                                        \n");
			sqlstr.append("       A.ACT_RATE,                                        \n");
			sqlstr.append("       A.DOC_ETC_IN,                                        \n");
			sqlstr.append("       A.DOC_ETC_OUT,                                        \n");
			sqlstr.append("       A.BID_MASTER_NM,                                        \n");
			sqlstr.append("       A.POSTPONE_REASON,                                        \n");
			sqlstr.append("       A.CANCEL_REASON,                                        \n");
			sqlstr.append("       A.CURRENCY_GB_YN,                                        \n");
			sqlstr.append("       A.DELIVERY_CONDITION_YN,                                        \n");
			sqlstr.append("       B.FILE_GB,                                        \n");
			sqlstr.append("       B.VENDOR_CD,                                        \n");
			sqlstr.append("       DECODE(B.SITEPARTI_YN,'Y','참석','불참') AS SITEDESC_YN,                                        \n");
			sqlstr.append("       GET_OUT_ITEM_NM(A.OUT_ITEM_CD) AS OUT_ITEM_NM,						\n");
			sqlstr.append("       CASE WHEN B.VENDOR_CD IS NULL THEN '불가능'		\n");
			sqlstr.append("               WHEN BID_FROM_DT < SYSDATE THEN '불가능'		\n");
			sqlstr.append("               WHEN A.SITEDESC_FLAG = 'Y' AND SITEPARTI_YN = 'Y' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"' AND BID_TO_DT > SYSDATE THEN '가능'		\n");
			sqlstr.append("               WHEN A.SITEDESC_FLAG = 'Y' AND SITEPARTI_YN = 'Y' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"' AND BID_TO_DT > SYSDATE THEN '가능'		\n");
			sqlstr.append("               WHEN A.SITEDESC_FLAG = 'N' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"' AND BID_TO_DT > SYSDATE THEN '가능'			\n");
			sqlstr.append("               WHEN SITEPARTI_YN = 'Y' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"' AND BID_TO_DT < SYSDATE THEN '불가능'			\n");
			sqlstr.append("               WHEN SITEPARTI_YN = 'N' THEN '불가능'			\n");
			sqlstr.append("               ELSE '' END AS ESTI_YN,								\n");
            sqlstr.append("   CASE WHEN B.VENDOR_CD IS NULL THEN '견적대상업체가 아닙니다.'			\n");
            sqlstr.append("           WHEN BID_FROM_DT < SYSDATE THEN '견적서 제출 기간이 아닙니다.'		\n");
            sqlstr.append("           WHEN A.SITEDESC_FLAG = 'Y' AND SITEPARTI_YN = 'N' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"'  AND BID_TO_DT < SYSDATE THEN '현설불참, 견적제출마감시간 지남'			\n");
			sqlstr.append("           WHEN A.SITEDESC_FLAG = 'N' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"'  AND BID_TO_DT < SYSDATE THEN '견적제출마감시간 지남'		\n");
			sqlstr.append("      	   WHEN SITEPARTI_YN = 'Y' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"'  AND BID_TO_DT < SYSDATE THEN '견적제출마감시간 지남'						\n");
			sqlstr.append("      	   WHEN SITEPARTI_YN = 'N' AND B.VENDOR_CD = '"+params.get("VENDOR_CD")+"'  AND BID_TO_DT < SYSDATE THEN '견적제출마감시간 지남'						\n");
			sqlstr.append("                   WHEN SITEPARTI_YN = 'N' THEN '현설불참'			\n");
			sqlstr.append("                   ELSE '' END AS ESTI_N,									\n");
			sqlstr.append("      A.OBC_CONT_TYPE_CD,				\n");
			sqlstr.append("      A.DIV_PO_YN,				\n");
			sqlstr.append("      F_GET_CODE_NAME('CONT_TYPE',A.OBC_CONT_TYPE_CD) AS OBC_CONT_TYPE_NM,				\n");
		    sqlstr.append("      A.OBC_FRST_CASH_RATE,				\n");
		    sqlstr.append("      A.OBC_FRST_CONDI,				\n");
		    sqlstr.append("      A.OBC_FRST_CNT_CONDI,				\n");
		    sqlstr.append("      A.OBC_MID_CASH_RATE,				\n");
		    sqlstr.append("      A.OBC_MID_BILL_RATE,				\n");
		    sqlstr.append("      A.OBC_MID_PAYDAY,				\n");
		    sqlstr.append("      A.OBC_MID_REQ_MONTH,				\n");
		    sqlstr.append("      A.OBC_MID_CNT,				\n");
		    sqlstr.append("      A.OBC_FIN_CASH_RATE,				\n");
		    sqlstr.append("      A.OBC_FIN_BILL_RATE,				\n");
		    sqlstr.append("      A.OBC_FIN_PAYDAY,				\n");
		    sqlstr.append("      A.OBC_FIN_CONDI,				\n");
		    sqlstr.append("      A.CBC_FIRST_RATE,				\n");
		    sqlstr.append("      A.CONTFUL_RATE,				\n");
		    sqlstr.append("      A.WARR_RATE,				\n");
		    sqlstr.append("      A.CBC_DEFECT_DAY,				\n");
		    sqlstr.append("      A.PAY_CON_RATE,				\n");
		    sqlstr.append("      A.CBC_DAMAGE_RATE,				\n");
		    sqlstr.append("      A.CBC_DAMAGE_MAXRATE,				\n");
		    sqlstr.append("      A.OBC_EMP_RATE,				\n");
		    sqlstr.append("      A.OBC_EMP_YN,				\n");
		    sqlstr.append("      A.OBC_PENSION_RATE,				\n");
		    sqlstr.append("      A.OBC_PENSION_YN,				\n");
		    sqlstr.append("      A.OBC_HEALTH_RATE,				\n");
		    sqlstr.append("      A.OBC_HEALTH_YN,				\n");
		    sqlstr.append("      A.OBC_ELDER_RATE,				\n");
		    sqlstr.append("      A.OBC_ELDER_YN,				\n");
		    sqlstr.append("      A.OBC_WORK_RATE,				\n");
		    sqlstr.append("      A.OBC_WORK_YN,				\n");
		    sqlstr.append("      A.OBC_RESIGN_RATE,				\n");
		    sqlstr.append("      A.OBC_RESIGN_YN,				\n");
		    sqlstr.append("      A.OBC_SAFE_RATE,				\n");
		    sqlstr.append("      A.OBC_SAFE_YN,				\n");
		    sqlstr.append("      A.OBC_ENV_RATE,				\n");
		    sqlstr.append("      A.OBC_ENV_YN,				\n");
		    sqlstr.append("      A.OBC_SITE_RATE,				\n");
		    sqlstr.append("      A.OBC_SITE_YN,				\n");
		    sqlstr.append("      A.OBC_DUTY_RATE,				\n");
		    sqlstr.append("      A.OBC_DUTY_YN,				\n");
		    sqlstr.append("      A.OBC_WARR_YN,				\n");
		    sqlstr.append("      A.PBC_CBE_TYPE_CD,						\n");
		    sqlstr.append("      A.PBC_REST_CONDI,						\n");
		    sqlstr.append("      A.PBC_FIRST_CONDI,						\n");
		    sqlstr.append("      A.PBC_REST_CONDI,						\n");
		    sqlstr.append("      A.CPC_MID_RATE,							\n");
		    sqlstr.append("      A.PBC_MID_CONDI,							\n");
		    sqlstr.append("      A.PBC_REST_RATE,							\n");
		    sqlstr.append("      A.PBC_FRSTGUAR_RATE,					\n");
		    sqlstr.append("      A.PBC_FRSTGUAR_CONDI,				\n");
		    sqlstr.append("      A.PBC_DEFECT_CONDI,					\n"); 
		    sqlstr.append("      A.CBC_DERECT_TERM_CD,					\n"); 
		    sqlstr.append("      A.PBC_DEFECT_CONDI2,			\n"); //2015.11.13
		    sqlstr.append("      A.CBC_DERECT_TERM_CD2,			\n");
		    sqlstr.append("      A.CBC_DEFECT_DAY2,				\n");
		    sqlstr.append("      A.PBC_INSTALL_YN,						\n");
		    sqlstr.append("      A.PBC_COMMISS_YN,						\n");
		    sqlstr.append("      A.PBC_SPETOOL_YN,						\n");
		    sqlstr.append("      A.PBC_TEST_YN,							\n");
		    sqlstr.append("      A.PBC_DOC_YN,								\n");
		    sqlstr.append("      A.PBC_PACK_YN,							\n");
		    sqlstr.append("      A.PBC_LANDTRAN_YN,						\n");
		    sqlstr.append("      A.DELIVERY_CONDITION_YN,			\n");
		    sqlstr.append("      A.PBC_FEE_YN,								\n");
		    sqlstr.append("      A.PBC_OPTION_YN,							\n");
		    sqlstr.append("      A.PBC_OPTION_COMMENT,				\n");
		    sqlstr.append("      A.OBC_IND_YN,                 				\n");
		    sqlstr.append("      A.OBC_FRST_CONT_RATE,				\n");
		    sqlstr.append("      F_GET_CODE_NAME('CBC_DERECT_TERM_CD',A.CBC_DERECT_TERM_CD) AS CBC_DERECT_TERM_NM,			\n");
			sqlstr.append("       TO_CHAR(B.SIGN_DT,'YYYY-MM-DD HH24:MI:SS') AS SIGN_DT						\n");
			sqlstr.append("        FROM BID_MASTER A  , BID_SUPP B                        \n");
			sqlstr.append("       WHERE A.BID_NO = '"+params.get("BID_NO")+"'										\n");
			sqlstr.append("       AND A.BID_DEG = '"+params.get("BID_DEG")+"'										\n");
			sqlstr.append("       AND A.BID_NO = B.BID_NO(+)																\n");
			sqlstr.append("       AND A.BID_DEG = B.BID_DEG(+)															\n");
			sqlstr.append("       AND B.VENDOR_CD(+) = '"+storage.getUser().get("CORP_ID")+"'					\n");
		       
        	search.setStatement(sqlstr.toString());
            rowSet = search.execute();
            if( rowSet != null && rowSet.size() > 0 )
            	valueobject = RowSetUtility.getValueObject(rowSet.getRow(0));
        }catch(WAFSQLException se) {
        	super.doException(se);
            this.storage.setSuccess(false);
            this.storage.setMessage(se.getMessage());
            storage.setDetailMessage(se);
        }finally {
        	if( valueobject == null ) valueobject = new ValueObject();
            return valueobject;
        }
	}
}