/**
 * Copyright (c) 2003-2005 System Integrator Corporation.
 *                 All Rights Reserved.
 */
package jp.co.sint.beans.mallmgr;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SIBasic;
import jp.co.sint.basic.SIKeepDetail;
import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIURLParameter;
import jp.co.sint.tools.SIUtil;
import jp.co.sint.tools.SIBGUtil;

import org.apache.log4j.Category;

/**
 * @version $Id: SICtgry.java,v 1.0 Exp $
 * @author Tsuyoshi Yagi <br>
 * Description: 新規キープ画面
 * <p>
 * History
 * </p>
 * <p>
 * Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reason
 * </p>
 * ============&nbsp;&nbsp;&nbsp;==========&nbsp;&nbsp;===========================<br>
 * Tsuyoshi Yagi 2005/11/29 Original
 */
public class UIRegNewKeep extends SIBasic {
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  private SIKeepDetail keepDetail = new SIKeepDetail();
  // キープ番号
  private String keepNumber = "";
  // 担当支店
  private String belongBranchCode = "";
  // 担当支店名
  private String belongBranchName = "";
  // 担当者
  private String chargeCode = "";
  // 担当者名
  private String chargeName = "";
  private String backURL = "";
  
  // JANコード
  private String janCodeIndividual = "";
  
  // 商品価格
  private String variableKeepPrice = "";
  // 商品原価
  private String variableKeepPurchase = "";
  
  //移動先支店コード
  private String moveBranchCode = "";
  
  // EDBTG003-00 mng-paku add start
  private String sumOfSetDiscount = "";
  // EDBTG003-00 mng-paku add end
  
  /*
   * getter of keepNumber.
   */
  public String getKeepNumber() {
    return keepNumber;
  }
  
  /*
   * setter of keepNumber
   */
  public void setKeepNumber(String keepNumber) {
    this.keepNumber = keepNumber;
  }
  
  /*
   * getter of keepDetail.
   */
  public SIKeepDetail getKeepDetail() {
    return keepDetail;
  }
  
  /*
   * setter of keepDetail
   */
  public void setKeepDetail(SIKeepDetail keepDetail) {
    this.keepDetail = keepDetail;
  }
  
  /*
   * getter of belongBranchCode.
   */
  public String getBelongBranchCode() {
    return belongBranchCode;
  }
  
  /*
   * setter of belongBranchCode
   */
  public void setBelongBranchCode(String belongBranchCode) {
    this.belongBranchCode = belongBranchCode;
  }
  
  /*
   * getter of belongBranchName.
   */
  public String getBelongBranchName() {
    return belongBranchName;
  }
  
  /*
   * setter of belongBranchName
   */
  public void setBelongBranchName(String belongBranchName) {
    this.belongBranchName = belongBranchName;
  }
  
  /*
   * getter of chargeCode.
   */
  public String getChargeCode() {
    return chargeCode;
  }
  
  /*
   * setter of chargeCode
   */
  public void setChargeCode(String chargeCode) {
    this.chargeCode = chargeCode;
  }
  
  /*
   * getter of chargeName.
   */
  public String getChargeName() {
    return chargeName;
  }
  
  /*
   * setter of chargeName
   */
  public void setChargeName(String chargeName) {
    this.chargeName = chargeName;
  }
  
  /*
   * getter of backURL.
   */
  public String getBackURL() {
    return backURL;
  }
  
  /*
   * setter of backURL
   */
  public void setBackURL(String backURL) {
    this.backURL = backURL;
  }
  
  //getter of janCodeIndividual
  public String getJanCodeIndividual() {
    return this.janCodeIndividual;
  }
  
  //setter of janCodeIndividual
  public void setJanCodeIndividual(String janCodeIndividual) {
    if (SIUtil.isNull(janCodeIndividual)) janCodeIndividual = "";
    this.janCodeIndividual = SIUtil.changeTo(janCodeIndividual.trim(), this.encode);
  }
  
  public String getVariableKeepPrice() {
    return variableKeepPrice;
  }
  
  public void setVariableKeepPrice(String variableKeepPrice) {
    this.variableKeepPrice = variableKeepPrice;
  }
  
  public String getVariableKeepPurchase() {
    return variableKeepPurchase;
  }
  
  public void setVariableKeepPurchase(String variableKeepPurchase) {
    this.variableKeepPurchase = variableKeepPurchase;
  }
  
  public String getMoveBranchCode() {
    return moveBranchCode;
  }
  
  public void setMoveBranchCode(String moveBranchCode) {
    if (SIUtil.isNull(moveBranchCode)) moveBranchCode = "";
    this.moveBranchCode = moveBranchCode;
  }
  
  // EDBTG003-00 mng-paku add start
  /**
   * @return the sumOfSetDiscount
   */
  public String getSumOfSetDiscount() {
    return sumOfSetDiscount;
  }
  
  /**
   * @param sumOfSetDiscount the sumOfSetDiscount to set
   */
  public void setSumOfSetDiscount(String sumOfSetDiscount) {
    if (SIUtil.isNull(sumOfSetDiscount)) sumOfSetDiscount = "";
    this.sumOfSetDiscount = sumOfSetDiscount;
  }
  // EDBTG003-00 mng-paku add end
  
  public static Collection getKeepList(Connection conn, String keepNo) throws SIDBAccessException {
    Collection keepColl = new ArrayList();
    Statement statement = null;
    ResultSet resultSet = null;
    SIKeepDetail keep = new SIKeepDetail();
    StringBuffer sqlStatement = new StringBuffer();
    if (keepNo.equals("")) {
      keepNo = "0";
    }
    sqlStatement.append("SELECT a.*,b.branchname from keepdetailtbl a, branchtbl b ");
    sqlStatement.append("WHERE a.branchcode=b.branchcode AND keepnumber=").append(SIDBUtil.SQL2Str(keepNo," "));
    sqlStatement.append("ORDER BY a.cmdtycode,a.individualcode,a.branchcode");
    
    // 実行
    try {
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());
      
      // 商品レコードのセットの作成
      while (resultSet.next()) {
        keep = new SIKeepDetail();
        keep.setKeepNumber(resultSet.getString("keepnumber"));
        keep.setCmdtyCode(resultSet.getString("cmdtycode"));
        keep.setIndividualCode(resultSet.getString("individualcode"));
        keep.setCmdtyType(resultSet.getString("cmdtytype"));
        keep.setCmdtyName(resultSet.getString("cmdtyname"));
        keep.setPrice(resultSet.getString("price"));
        keep.setCost(resultSet.getString("cost"));
        keep.setDeliveryType(resultSet.getString("deliverytype"));
        keep.setSize(resultSet.getString("size"));
        keep.setAmount(resultSet.getString("amount"));
        keep.setBranchCode(resultSet.getString("branchcode"));
        keep.setBranchName(resultSet.getString("branchName"));
        keep.setInitDateTime(resultSet.getString("initdatetime"));
        
        // EDBTG003-00 elecs-matsushima add start
        keep.setSetDetailFlg(resultSet.getString("setdetailflg"));
        keep.setSetCode(resultSet.getString("setcode"));
        keep.setSetCmdtyCode(resultSet.getString("setcmdtycode"));
        keep.setSetIndividualCode(resultSet.getString("setindividualcode"));
        keep.setSetDetailCode(resultSet.getString("setdetailcode"));
        // EDBTG003-00 elecs-matsushima add end
        
        keepColl.add(keep);
      }
    } catch (Exception ex) {
      log.debug("exception sql = " + sqlStatement.toString());
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(resultSet, statement);
    }
    
    return keepColl;
  }
  
  //EDBTG003-00 elecs-matsushima add start
  public static String getSetDiscount(Connection conn, String keepNo) throws SIDBAccessException{
    StringBuffer sqlStatement = new StringBuffer();
    
    sqlStatement.append("SELECT setdiscount FROM keeptbl ");
    sqlStatement.append("WHERE keepnumber = ").append(SIDBUtil.SQL2Str(keepNo," "));
    
    return SIDBUtil.getFirstData(conn, sqlStatement.toString());
    
  }
  
  public static String getSetDiscount(Connection conn, String keepNo, String memberLevelCode) throws SIDBAccessException{
    StringBuffer sqlStatement = new StringBuffer();
    
    sqlStatement.append("SELECT sum(CASE WHEN i.memberdiscountflg=1 THEN trunc(k.setdiscount * (1 - m.discountrate/100)) ELSE k.setdiscount END * k.setamount) ");
    sqlStatement.append("FROM keepsetcmdtytbl k,memberlevelmtbl m,individualtbl i ");
    sqlStatement.append("WHERE k.setindividualcode=i.setindividualcode AND k.keepnumber=").append(SIDBUtil.SQL2Str(keepNo," "));
    sqlStatement.append("AND m.memberlevelcode=").append(SIDBUtil.SQL2Str(memberLevelCode," "));
    
    return SIDBUtil.getFirstData(conn, sqlStatement.toString());
  }
  
  /**
   * キープしているセット商品のリストを取得します。
   * @param conn
   * @param keepNo
   * @param setIndividualcode
   * @return
   * @throws SIDBAccessException
   */
  public static Collection getSetKeepList(Connection conn, String keepNo, String setIndividualcode) throws SIDBAccessException {
    Collection keepColl = new ArrayList();
    Statement statement = null;
    ResultSet resultSet = null;
    SIKeepDetail keep = new SIKeepDetail();
    StringBuffer sqlStatement = new StringBuffer();
    if (keepNo.equals("")) {
      keepNo = "0";
    }
    
    sqlStatement.append("SELECT a.*,b.branchname from keepdetailtbl a, branchtbl b ");
    sqlStatement.append("WHERE a.branchcode=b.branchcode AND keepnumber=").append(SIDBUtil.SQL2Str(keepNo," "));
    if (SIUtil.isNotNull(setIndividualcode)){
      sqlStatement.append("  AND a.setindividualcode=").append(SIDBUtil.SQL2Str(setIndividualcode," "));
    } else {
      sqlStatement.append("  AND a.setdetailflg <> '0' ");
    }
    sqlStatement.append("ORDER BY  a.setcode, a.setdetailcode, a.setdetailflg, ");
    sqlStatement.append(" a.cmdtycode, a.individualcode ");
    
    // 実行
    try {
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());
      
      // 商品レコードのセットの作成
      while (resultSet.next()) {
        keep = new SIKeepDetail();
        keep.setKeepNumber(resultSet.getString("keepnumber"));
        keep.setCmdtyCode(resultSet.getString("cmdtycode"));
        keep.setIndividualCode(resultSet.getString("individualcode"));
        keep.setCmdtyType(resultSet.getString("cmdtytype"));
        keep.setCmdtyName(resultSet.getString("cmdtyname"));
        keep.setPrice(resultSet.getString("price"));
        keep.setCost(resultSet.getString("cost"));
        keep.setDeliveryType(resultSet.getString("deliverytype"));
        keep.setSize(resultSet.getString("size"));
        keep.setAmount(resultSet.getString("amount"));
        keep.setBranchCode(resultSet.getString("branchcode"));
        keep.setBranchName(resultSet.getString("branchName"));
        keep.setInitDateTime(resultSet.getString("initdatetime"));
        keep.setSetDetailFlg(resultSet.getString("setdetailflg"));
        keep.setSetCode(resultSet.getString("setcode"));
        keep.setSetCmdtyCode(resultSet.getString("setcmdtycode"));
        keep.setSetIndividualCode(resultSet.getString("setindividualcode"));
        keep.setSetDetailCode(resultSet.getString("setdetailcode"));
        
        keepColl.add(keep);
      }
    } catch (Exception ex) {
      log.debug("exception sql = " + sqlStatement.toString());
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(resultSet, statement);
    }
    
    return keepColl;
  }
  //EDBTG003-00 elecs-matsushima add end
  
  public void initKeep(HttpServletRequest lRequest, SIURLParameter lUrlParam) {
    super.init(lRequest, lUrlParam);
    this.setKeepNumber((String) lUrlParam.getParam("keepNumberTxt"));
    this.setBelongBranchCode((String) lUrlParam.getParam("belongBranchCodeTxt"));
    this.setBelongBranchName((String) lUrlParam.getParam("belongBranchNameTxt"));
    this.setChargeCode((String) lUrlParam.getParam("chargeCodeTxt"));
    this.setChargeName((String) lUrlParam.getParam("chargeNameTxt"));
    this.keepDetail.setCmdtyCode((String) lUrlParam.getParam("cmdtyCodeTxt"));
    this.keepDetail.setIndividualCode((String) lUrlParam.getParam("individualCodeTxt"));
    this.keepDetail.setBranchCode((String) lUrlParam.getParam("branchCodeTxt"));
    String amountStr = "amount" + (String) lUrlParam.getParam("amountTxt");
    this.keepDetail.setAmount((String) lRequest.getParameter(amountStr));
    this.keepDetail.setCost((String) lUrlParam.getParam("costTxt"));
    this.keepDetail.setKeepNumber(keepNumber);
    this.setJanCodeIndividual((String) lUrlParam.getParam("janCodeHid"));
    if(SIUtil.isVariableCode(keepDetail.getIndividualCode())){
      this.setVariableKeepPrice((String) lUrlParam.getParam("variableKeepPrice_"+keepDetail.getIndividualCode()));
      this.setVariableKeepPurchase((String) lUrlParam.getParam("variableKeepPurchase_"+keepDetail.getIndividualCode()));
    }
    this.setMoveBranchCode((String) lUrlParam.getParam("moveBranch"));
    // EDBTG003-00 mng-paku add start
    this.setSumOfSetDiscount((String) lUrlParam.getParam("sumOfSetDiscount"));
    // EDBTG003-00 mng-paku add end
  }
  
  public void initUpdate(HttpServletRequest lRequest, SIURLParameter lUrlParam) {
    super.init(lRequest, lUrlParam);
    keepNumber = (String) lUrlParam.getParam("keepNumberTxt");
    belongBranchCode = (String) lUrlParam.getParam("belongBranchCodeTxt");
    belongBranchName = (String) lUrlParam.getParam("belongBranchNameTxt");
    chargeCode = (String) lUrlParam.getParam("chargeCodeTxt");
    chargeName = (String) lUrlParam.getParam("chargeNameTxt");
    keepDetail.setCmdtyCode((String) lUrlParam.getParam("cmdtyCodeTxt"));
    keepDetail.setIndividualCode((String) lUrlParam.getParam("individualCodeTxt"));
    keepDetail.setBranchCode((String) lUrlParam.getParam("branchCodeTxt"));
    String amountStr = (String) lUrlParam.getParam("updateAmountTxt");
    keepDetail.setAmount((String) lRequest.getParameter(amountStr));
    keepDetail.setKeepNumber(keepNumber);
    keepDetail.setCmdtyType((String) lUrlParam.getParam("updateCmdtyTypeTxt"));
    // EDBTG003-00 elecs-matsushima add start
    keepDetail.setSetCode((String) lUrlParam.getParam("setCodeTxt"));
    keepDetail.setSetDetailCode((String) lUrlParam.getParam("setDetailCodeTxt"));
    // EDBTG003-00 elecs-matsushima add end
  }
  
  public boolean validateJan(HttpServletRequest lRequest, Connection conn) {
    if (SIUtil.isNull(this.getJanCodeIndividual())) return true;
    SICustomErrors errors = new SICustomErrors();
    StringBuffer str = new StringBuffer();
    
    UIStoreStockListCond list = (UIStoreStockListCond)lRequest.getSession().getAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK);
    if (list != null){
      list.setJanCodeIndividual(this.getJanCodeIndividual());
      lRequest.getSession().setAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK,list);
    }
    
    if (!SICheckValid.checkAlphaDigitValid(errors, "JANコード", this.getJanCodeIndividual())){
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      return false;
    }
    
    str.append("SELECT cmdtyCode,individualCode,amountFlg ");
    str.append(",CASE WHEN amountFlg='0' THEN purchasePrice2+processingExpence ELSE purchasePrice+processingExpence END AS cost ");
    str.append("FROM individualtbl ");
    str.append("WHERE janCodeIndividual = ").append(SIDBUtil.SQL2Str(this.getJanCodeIndividual()));
    
    try {
      Statement lStatement = conn.createStatement();
      ResultSet lResultSet = lStatement.executeQuery(str.toString());
      
      if(lResultSet.next()) {
        keepDetail.setCmdtyCode(lResultSet.getString("cmdtyCode"));
        keepDetail.setIndividualCode(lResultSet.getString("individualCode"));
        keepDetail.setAmount("1");
        keepDetail.setCost(lResultSet.getString("cost"));
        if (SIUtil.isNotNull(belongBranchCode) && lResultSet.getString("amountFlg").equals("1")){
          keepDetail.setBranchCode(belongBranchCode);
        } else {
          keepDetail.setBranchCode("999");
        }
        return true;
      } else {
        errors.addError(new SICustomError("database.query.notexist","商品"));
        lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
        return false;
      }
    } catch (Exception e) {
      e.printStackTrace();
      errors.addError(new SICustomError("database.query.notexist","商品"));
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      return false;
    }
  }
  
  /**
   * <b>validate</b> 入力したデータをチェックして、同時にSQLの条件文を作成します。
   * 
   * @param lRequest クライアントからのリクエスト
   */
  public boolean validate(HttpServletRequest lRequest, Connection conn) {
    return validate(lRequest, conn, true);
  }
  
  public boolean validate(HttpServletRequest lRequest, Connection conn, boolean mode) {
    SICustomErrors errors = new SICustomErrors();
    
    // 数量
    if (keepDetail.getAmount().equals("")) {
      keepDetail.setAmount(null);
    }
    String amountFlg = "1";
    if (mode || SIUtil.isNull(keepDetail.getCmdtyType())) {
      try {
        StringBuffer amountFlgSql = new StringBuffer();
        amountFlgSql.append("SELECT AmountFlg FROM IndividualTbl ");
        amountFlgSql.append("WHERE Cmdtycode=").append(SIDBUtil.SQL2Str(keepDetail.getCmdtyCode()," "));
        amountFlgSql.append("AND IndividualCode=").append(SIDBUtil.SQL2Str(keepDetail.getIndividualCode()));
        amountFlg = SIDBUtil.getFirstData(conn, amountFlgSql.toString());
      } catch (Exception e) {
        e.printStackTrace();
      }
      if (amountFlg.equals("0")) keepDetail.setCmdtyType("1");
      else keepDetail.setCmdtyType("0");
    }
    if(SIUtil.isNotNull(this.getVariableKeepPrice()) && SIUtil.isNotNull(this.getVariableKeepPurchase())) {
      SICheckValid.checkValid(errors, "商品単価"+keepDetail.getIndividualCode(), this.getVariableKeepPrice(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
      SICheckValid.checkValid(errors, "商品単価"+keepDetail.getIndividualCode(), this.getVariableKeepPrice(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
      SICheckValid.checkValid(errors, "商品原価"+keepDetail.getIndividualCode(), this.getVariableKeepPurchase(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
      SICheckValid.checkValid(errors, "商品原価"+keepDetail.getIndividualCode(), this.getVariableKeepPurchase(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    }
    
    if(SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE) 
        && SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE)
        && mode 
        && Integer.parseInt(keepDetail.getAmount()) < 1){ 
        errors.addError(new SICustomError("input.data.instock.less", "数量", "1"));
    }
    SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 6);
    if (errors.isEmpty() && keepDetail.getCmdtyType().equals("0")) {
      if (SIBGUtil.getStockForKeep(conn, keepDetail) < Integer.parseInt(keepDetail.getAmount()) && SIUtil.isNull(this.getJanCodeIndividual())) {
        errors.addError(new SICustomError("input.data.less", "キープ数量(" + keepDetail.getAmount() + ")", "キープ可能数"));
      } else if (SIBGUtil.getStockForKeep(conn, keepDetail) < Integer.parseInt(keepDetail.getAmount())) {
        errors.addError(new SICustomError("manager.message.error.pos.noitem"));
        UIStoreStockListCond list = (UIStoreStockListCond)lRequest.getSession().getAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK);
        if (list != null){
          list.setBranchCode("XX");
          list.setCmdtyName("");
          list.setCmdtyCode("");
          list.setIndividualCode("");
          list.setUsedNewFlg("");
          list.setInstockFlg("2");
          list.setCtgryCode("");
          list.setFrontDispFlg("2");
          list.setArrivalDateFromYear("");
          list.setArrivalDateFromMonth("");
          list.setArrivalDateFromDay("");
          list.setArrivalDateToYear("");
          list.setArrivalDateToMonth("");
          list.setArrivalDateToDay("");
          list.setMaker("");
          list.setJanCodeIndividual(this.getJanCodeIndividual());
          list.validate(lRequest);
          lRequest.getSession().setAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK,list);
        }
      }
    }
    if (!errors.isEmpty()) {
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      return false;
    } else {
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
      return true;
    }
  }
  //EDBTG003-00 elecs-matsushima add start
  /**
   * 入力チェック(構成商品時）
   * @param lRequest
   * @param conn
   * @param mode
   * @param keepedAmount
   * @return
   */
  public boolean validateSet(HttpServletRequest lRequest, Connection conn, boolean mode, int keepedAmount) {
    SICustomErrors errors = new SICustomErrors();
    
    // 数量
    if (keepDetail.getAmount().equals("")) {
      keepDetail.setAmount(null);
    }
    String amountFlg = "1";
    if (mode || SIUtil.isNull(keepDetail.getCmdtyType())) {
      try {
        StringBuffer amountFlgSql = new StringBuffer();
        amountFlgSql.append("SELECT AmountFlg FROM IndividualTbl ");
        amountFlgSql.append("WHERE Cmdtycode=").append(SIDBUtil.SQL2Str(keepDetail.getCmdtyCode()," "));
        amountFlgSql.append("AND IndividualCode=").append(SIDBUtil.SQL2Str(keepDetail.getIndividualCode()));
        amountFlg = SIDBUtil.getFirstData(conn, amountFlgSql.toString());
      } catch (Exception e) {
        e.printStackTrace();
      }
      if (amountFlg.equals("0")) keepDetail.setCmdtyType("1");
      else keepDetail.setCmdtyType("0");
    }
    
    if(SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)
       && SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE)
       && mode
       && Integer.parseInt(keepDetail.getAmount()) < 1
    ){
      errors.addError(new SICustomError("input.data.instock.less", "数量", "1"));
    }
    
    SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 6);
    
    // キープ数はこっちじゃなくて、分割する時にチェックを行う。
    if (errors.isEmpty() && keepDetail.getCmdtyType().equals("0")) {
      if (SIBGUtil.getStockForKeep(conn, keepDetail) < (Integer.parseInt(keepDetail.getAmount())+keepedAmount) && SIUtil.isNull(this.getJanCodeIndividual())) {
        errors.addError(new SICustomError("input.data.less", "キープ数量(" + keepDetail.getAmount() + ")", "キープ可能数"));
      } else if (SIBGUtil.getStockForKeep(conn, keepDetail) < (Integer.parseInt(keepDetail.getAmount())+keepedAmount)) {
        errors.addError(new SICustomError("manager.message.error.pos.noitem"));
        UIStoreStockListCond list = (UIStoreStockListCond)lRequest.getSession().getAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK);
        if (list != null){
          list.setBranchCode("XX");
          list.setCmdtyName("");
          list.setCmdtyCode("");
          list.setIndividualCode("");
          list.setUsedNewFlg("");
          list.setInstockFlg("2");
          list.setCtgryCode("");
          list.setFrontDispFlg("2");
          list.setArrivalDateFromYear("");
          list.setArrivalDateFromMonth("");
          list.setArrivalDateFromDay("");
          list.setArrivalDateToYear("");
          list.setArrivalDateToMonth("");
          list.setArrivalDateToDay("");
          list.setMaker("");
          list.setJanCodeIndividual(this.getJanCodeIndividual());
          list.validate(lRequest);
          lRequest.getSession().setAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK,list);
        }
      }
    }
    if (!errors.isEmpty()) {
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      return false;
    } else {
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
      return true;
    }
  }
  //EDBTG003-00 elecs-matsushima add end

  public boolean validateFree(HttpServletRequest lRequest, Connection conn, boolean mode) {
    SICustomErrors errors = new SICustomErrors();
    StringBuffer sql;
    
    // 数量
    if (keepDetail.getAmount().equals("")) keepDetail.setAmount(null);
    try {
      sql = new StringBuffer();
      sql.append("SELECT CASE AmountFlg WHEN '0' THEN 1 ELSE 0 END FROM IndividualTbl ");
      sql.append("WHERE CmdtyCode=").append(SIDBUtil.SQL2Str(keepDetail.getCmdtyCode()," "));
      sql.append("AND IndividualCode=").append(SIDBUtil.SQL2Str(keepDetail.getIndividualCode()));
      keepDetail.setCmdtyType(SIDBUtil.getFirstData(conn, sql.toString()));
      
      sql = new StringBuffer();
      sql.append("SELECT BranchName FROM BranchTbl ");
      sql.append("WHERE BranchCode=").append(SIDBUtil.SQL2Str(keepDetail.getBranchCode()));
      keepDetail.setBranchName(SIDBUtil.getFirstData(conn, sql.toString()));
    } catch (Exception e) {
      e.printStackTrace();
    }
    if(SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE) 
        && SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE)
        && mode 
        && Integer.parseInt(keepDetail.getAmount()) < 1){ 
        errors.addError(new SICustomError("input.data.instock.less", "数量", "1"));
    }
    SICheckValid.checkValid(errors, "数量", keepDetail.getAmount(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 6);
    if (errors.isEmpty() && keepDetail.getCmdtyType().equals("0")) {
      if (SIBGUtil.getStockForKeep(conn, keepDetail) < Integer.parseInt(keepDetail.getAmount()) && SIUtil.isNotNull(this.getJanCodeIndividual())) {
        UIStoreStockListCond list = (UIStoreStockListCond)lRequest.getSession().getAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK);
        if (list != null){
          list.setBranchCode("XX");
          list.setCmdtyName("");
          list.setCmdtyCode("");
          list.setIndividualCode("");
          list.setUsedNewFlg("");
          list.setInstockFlg("2");
          list.setCtgryCode("");
          list.setFrontDispFlg("2");
          list.setArrivalDateFromYear("");
          list.setArrivalDateFromMonth("");
          list.setArrivalDateFromDay("");
          list.setArrivalDateToYear("");
          list.setArrivalDateToMonth("");
          list.setArrivalDateToDay("");
          list.setMaker("");
          list.setJanCodeIndividual(this.getJanCodeIndividual());
          list.validate(lRequest);
          lRequest.getSession().setAttribute(SIConfig.SISESSION_MAN_ESTIMATE_STORESTOCK,list);
        }
      }
    }
    if (!errors.isEmpty()) {
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      return false;
    } else {
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
      return true;
    }
  }
  
  public static Collection getEstimateList(Connection conn, String keepNo, String memberLevelCode) throws SIDBAccessException {
    Collection keepColl = new ArrayList();
    Statement statement = null;
    ResultSet resultSet = null;
    SIKeepDetail keep = new SIKeepDetail();
    StringBuffer sqlStatement = new StringBuffer();
    String discountRate = "0";
    if (SIUtil.isNull(keepNo)) {
      keepNo = "0";
    }
    
    try{
      discountRate = SIDBUtil.getFirstData(conn, "SELECT discountrate FROM memberlevelmtbl WHERE memberlevelcode="+SIDBUtil.SQL2Str(memberLevelCode));
      if(SIUtil.isNull(discountRate)) discountRate="0";
    }catch(Exception e){
      discountRate = "0";
    }
    
    // EDBTG003-00 nagayoshi mod start
//    sqlStatement.append("SELECT a.cmdtycode,a.individualcode,a.cmdtytype,a.cmdtyname,a.price,a.deliverytype,a.consigngoodsfee,a.size,b.memberdiscountflg");
    sqlStatement.append("SELECT a.cmdtycode,a.individualcode,a.cmdtytype,a.cmdtyname,a.price,a.deliverytype,a.consigngoodsfee,a.size");
    sqlStatement.append(",case ");
    sqlStatement.append("   when a.setdetailflg = " + SIConfig.SET_DETAIL_FLG_NORMAL);
    sqlStatement.append("     then ");
    sqlStatement.append("       (select memberdiscountflg from individualtbl where a.individualcode=individualcode) ");
    sqlStatement.append("     else ");
    sqlStatement.append("       (select memberdiscountflg from individualtbl where a.setindividualcode=individualcode) ");
    sqlStatement.append(" end as memberdiscountflg ");
    // EDBTG003-00 nagayoshi mod end
    sqlStatement.append(",sum(COALESCE(a.purchaseprice,0)*amount) AS pp");
    sqlStatement.append(",sum(COALESCE(a.processingExpence,0)*amount) AS pe");
    sqlStatement.append(",sum(a.amount) as amount ");
    sqlStatement.append(", a.setdetailflg, a.setcode, a.setindividualcode, a.setdetailcode, a.keepnumber, a.setcmdtycode "); // EDBTG003-00 elecs-tani add
    // EDBTG003-00 mng-paku mod start
//    sqlStatement.append("FROM keepdetailtbl a,individualtbl b WHERE a.keepnumber=").append(SIDBUtil.SQL2Str(keepNo, " "));
    sqlStatement.append(", c.cmdtyname as setcmdtyname, c.setdiscount, c.setamount ");
    sqlStatement.append("FROM keepdetailtbl a ");
    sqlStatement.append("LEFT OUTER JOIN keepsetcmdtytbl c ON c.keepnumber = a.keepnumber ");
    sqlStatement.append("AND c.setcode = a.setcode ");
    sqlStatement.append("AND c.setcmdtycode = a.setcmdtycode ");
    // EDBTG003-00 nagayoshi mod start
//    sqlStatement.append("AND c.setindividualcode = a.setindividualcode, individualtbl b ");
    sqlStatement.append("AND c.setindividualcode = a.setindividualcode ");
    // EDBTG003-00 nagayoshi mod end
    sqlStatement.append("WHERE a.keepnumber=").append(SIDBUtil.SQL2Str(keepNo, " "));
    // EDBTG003-00 mng-paku mod end
    // EDBTG003-00 nagayoshi del start
//    sqlStatement.append("AND a.individualcode=b.individualcode ");
    // EDBTG003-00 nagayoshi del end
    // EDBTG003-00 nagayoshi mod start
//    sqlStatement.append("GROUP BY a.cmdtycode,a.individualcode,a.cmdtytype,a.cmdtyname,a.price,a.deliverytype,a.size,a.consigngoodsfee,b.memberdiscountflg ");
    sqlStatement.append("GROUP BY a.cmdtycode,a.individualcode,a.cmdtytype,a.cmdtyname,a.price,a.deliverytype,a.size,a.consigngoodsfee ");
    // EDBTG003-00 nagayoshi mod end
    sqlStatement.append(", a.setdetailflg, a.setcode, a.setindividualcode, a.setdetailcode, a.keepnumber, a.setcmdtycode "); // EDBTG003-00 elecs-tani add
    // EDBTG003-00 mng-paku add start
    sqlStatement.append(", c.cmdtyname, c.setdiscount, c.setamount ");
    // EDBTG003-00 mng-paku add end
    // EDBTG003-00 elecs-tani mod start
    //sqlStatement.append("ORDER BY a.cmdtycode,a.individualcode ");
    sqlStatement.append("ORDER BY a.setcode, a.setdetailcode, a.cmdtycode,a.individualcode ");
    // EDBTG003-00 elecs-tani mod end
    
    // 実行
    try {
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());
      
      // 商品レコードのセットの作成
      while (resultSet.next()) {
        keep = new SIKeepDetail();
        keep.setCmdtyCode(resultSet.getString("cmdtycode"));
        keep.setIndividualCode(resultSet.getString("individualcode"));
        keep.setCmdtyType(resultSet.getString("cmdtytype"));
        keep.setCmdtyName(resultSet.getString("cmdtyName"));
        if("1".equals(resultSet.getString("memberdiscountflg")) && !"0".equals(discountRate)) {
          keep.setPrice(SIUtil.multi_LD(resultSet.getString("price"), SIUtil.sub_LD("1", SIUtil.div_DL(discountRate, "100"))));
        } else {
          keep.setPrice(resultSet.getString("price"));
        }
        keep.setOrgPrice(resultSet.getString("price"));
        keep.setCost(SIUtil.div(SIUtil.add(resultSet.getString("pp"), resultSet.getString("pe")), resultSet.getString("amount")));
        keep.setDeliveryType(resultSet.getString("deliverytype"));
        keep.setSize(resultSet.getString("size"));
        keep.setAmount(resultSet.getString("amount"));
        keep.setPurchasePrice(SIUtil.div(resultSet.getString("pp"), resultSet.getString("amount")));
        keep.setProcessingExpence(SIUtil.div(resultSet.getString("pe"), resultSet.getString("amount")));
        keep.setConsignGoodsFee(resultSet.getString("consignGoodsFee"));
        // EDBTG003-00 elecs-tani add start
        keep.setKeepNumber(resultSet.getString("keepNumber"));
        keep.setSetDetailFlg(resultSet.getString("setDetailFlg"));
        // EDBTG003-00 mng-paku mod start
//        keep.setSetCode(resultSet.getString("setCode"));
//        keep.setSetIndividualCode(resultSet.getString("setIndividualCode"));
//        keep.setSetDetailCode(resultSet.getString("setDetailCode"));
        if (!SIConfig.SET_DETAIL_FLG_NORMAL.equals(keep.getSetDetailFlg())) {
          keep.setSetCode(resultSet.getString("setCode"));
          keep.setSetIndividualCode(resultSet.getString("setIndividualCode"));
          keep.setSetDetailCode(resultSet.getString("setDetailCode"));
          keep.setSetCmdtyCode(resultSet.getString("setcmdtycode"));
          keep.setSetCmdtyName(resultSet.getString("setCmdtyName"));
          if("1".equals(resultSet.getString("memberdiscountflg")) && !"0".equals(discountRate)) {
            keep.setSetDiscount(SIUtil.multi_LD(resultSet.getString("setdiscount"), SIUtil.sub_LD("1", SIUtil.div_DL(discountRate, "100"))));
          } else {
            keep.setSetDiscount(resultSet.getString("setdiscount"));
          }
          keep.setSetAmount(resultSet.getString("setamount"));
        }
        // EDBTG003-00 mng-paku mod end
        // EDBTG003-00 elecs-tani add end
        keepColl.add(keep);
      }
    } catch (Exception ex) {
      log.debug("exception sql = " + sqlStatement.toString());
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(resultSet, statement);
    }
    
    return keepColl;
  }
  
  public static Collection getFreeEstimateList(Connection conn, String estimateCode,String memberLevelCode) throws SIDBAccessException {
    Collection keepColl = new ArrayList();
    Statement statement = null;
    ResultSet resultSet = null;
    SIKeepDetail keep = new SIKeepDetail();
    StringBuffer sqlStatement = new StringBuffer();
    sqlStatement.append("SELECT e.cmdtycode,e.individualcode,e.cmdtyname,e.price,e.orgprice,e.cmdtysize,sum(e.amount) as amount,i.memberdiscountflg ");
    sqlStatement.append(", e.setdetailflg, e.setcode, e.setindividualcode, e.setdetailcode, e.setcmdtycode "); // EDBTG003-00 elecs-tani add
    // EDBTG003-00 mng-paku mod start
//    sqlStatement.append("FROM freeestimatedetailtbl e,individualtbl i ");
    sqlStatement.append(" ,b.cmdtyname as setCmdtyName, a.setdiscount, a.setamount ");
    sqlStatement.append("FROM freeestimatedetailtbl e ");
    sqlStatement.append("LEFT OUTER JOIN freeestimatesetcmdtytbl a ");
    sqlStatement.append("ON e.estimatecode = a.estimatecode ");
    sqlStatement.append("AND e.setcode = a.setcode ");
    sqlStatement.append("AND e.setcmdtycode = a.setcmdtycode ");
    sqlStatement.append("AND e.setindividualcode = a.setindividualcode ");
    sqlStatement.append("LEFT OUTER JOIN cmdtymtbl b ");
    sqlStatement.append("ON b.cmdtycode = e.setcmdtycode ");
    sqlStatement.append(", individualtbl i ");
    // EDBTG003-00 mng-paku mod end
    sqlStatement.append("WHERE e.estimatecode = ").append(SIDBUtil.SQL2Str(estimateCode, " "));
    sqlStatement.append("AND e.individualcode=i.individualcode ");
    sqlStatement.append("GROUP BY e.cmdtycode,e.individualcode,e.cmdtyname,e.price,e.orgprice,e.cmdtysize,i.memberdiscountflg ");
    sqlStatement.append(", e.setdetailflg, e.setcode, e.setindividualcode, e.setdetailcode, e.setcmdtycode "); // EDBTG003-00 elecs-tani add
    // EDBTG003-00 mng-paku add start
    sqlStatement.append(" , b.cmdtyname, a.setdiscount, a.setamount ");
    // EDBTG003-00 mng-paku add end
    // EDBTG003-00 elecs-tani mod start
//    sqlStatement.append("ORDER BY e.cmdtycode,e.individualcode ");
    sqlStatement.append("ORDER BY e.setcode, e.setdetailcode, e.cmdtycode,e.individualcode ");
    // EDBTG003-00 elecs-tani mod end
    
    String discountRate = "0";
    try{
      discountRate = SIDBUtil.getFirstData(conn, "SELECT discountrate FROM memberlevelmtbl WHERE memberlevelcode="+SIDBUtil.SQL2Str(memberLevelCode));
      if(SIUtil.isNull(discountRate)) discountRate="0";
    }catch(Exception e){
      discountRate = "0";
    }
    
    // 実行
    try {
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());
      
      // 商品レコードのセットの作成
      while (resultSet.next()) {
        keep = new SIKeepDetail();
        keep.setCmdtyCode(resultSet.getString("cmdtycode"));
        keep.setIndividualCode(resultSet.getString("individualcode"));
        keep.setCmdtyName(resultSet.getString("cmdtyName"));
        keep.setOrgPrice(resultSet.getString("orgprice"));
        if("1".equals(resultSet.getString("memberdiscountflg")) && !"0".equals(discountRate)) {
          keep.setPrice(SIUtil.multi_LD(resultSet.getString("orgprice"), SIUtil.sub_LD("1", SIUtil.div_DL(discountRate, "100"))));
        } else {
          keep.setPrice(resultSet.getString("price"));
        }
        keep.setSize(resultSet.getString("cmdtysize"));
        keep.setAmount(resultSet.getString("amount"));
        // EDBTG003-00 elecs-tani add start
        keep.setSetDetailFlg(resultSet.getString("setDetailFlg"));
        // EDBTG003-00 mng-paku mod start
//        keep.setSetCode(resultSet.getString("setCode"));
//        keep.setSetIndividualCode(resultSet.getString("setIndividualCode"));
//        keep.setSetDetailCode(resultSet.getString("setDetailCode"));
        if (!SIConfig.SET_DETAIL_FLG_NORMAL.equals(keep.getSetDetailFlg())) {
          keep.setSetCode(resultSet.getString("setCode"));
          keep.setSetIndividualCode(resultSet.getString("setIndividualCode"));
          keep.setSetDetailCode(resultSet.getString("setDetailCode"));
          keep.setSetCmdtyCode(resultSet.getString("setcmdtycode"));
          keep.setSetCmdtyName(resultSet.getString("setCmdtyName"));
          if("1".equals(resultSet.getString("memberdiscountflg")) && !"0".equals(discountRate)) {
            keep.setSetDiscount(SIUtil.multi_LD(resultSet.getString("setdiscount"), SIUtil.sub_LD("1", SIUtil.div_DL(discountRate, "100"))));
          } else {
            keep.setSetDiscount(resultSet.getString("setdiscount"));
          }
          keep.setSetAmount(resultSet.getString("setamount"));
        }
        // EDBTG003-00 mng-paku mod end
        // EDBTG003-00 elecs-tani add end
        keepColl.add(keep);
      }
    } catch (Exception ex) {
      log.debug("exception sql = " + sqlStatement.toString());
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(resultSet, statement);
    }
    
    return keepColl;
  }
  
  public static Collection getFreeEstimateList(Connection conn,Collection detailColl,String memberLevelCode) {
    Collection res = new ArrayList();
    String discountRate = "0";
    
    try{
      discountRate = SIDBUtil.getFirstData(conn, "SELECT discountrate FROM memberlevelmtbl WHERE memberlevelcode="+SIDBUtil.SQL2Str(memberLevelCode));
      if(SIUtil.isNull(discountRate)) discountRate="0";
    }catch(Exception e){
      discountRate = "0";
    }
    if ("0".equals(discountRate)) return detailColl;
    else{
      Iterator detailIte = detailColl.iterator();
      while(detailIte.hasNext()) {
        SIKeepDetail keep = new SIKeepDetail();
        keep = (SIKeepDetail) detailIte.next();
        
        // EDBTG003-00 mng-paku add start
        if (SIConfig.SET_DETAIL_FLG_APPENDED.equals(keep.getSetDetailFlg())) {
          res.add(keep);
          continue;
        }
        // EDBTG003-00 mng-paku add end
        // EDBTG003-00 nagayoshi add start
        String keepIndividualCode = keep.getIndividualCode();
        if (SIUtil.isNotNull(keep.getSetIndividualCode())) {
          keepIndividualCode = keep.getSetIndividualCode();
        }
        // EDBTG003-00 nagayoshi add end
        try{
          // EDBTG003-00 nagayoshi add start
//          if(SIDBUtil.hasData(conn, "SELECT * FROM individualtbl WHERE memberdiscountflg='1' AND individualcode="+SIDBUtil.SQL2Str(keep.getIndividualCode()))){
          if(SIDBUtil.hasData(conn, "SELECT * FROM individualtbl WHERE memberdiscountflg='1' AND individualcode="+SIDBUtil.SQL2Str(keepIndividualCode))){
          // EDBTG003-00 nagayoshi add end
            keep.setPrice(SIUtil.multi_LD(keep.getOrgPrice(), SIUtil.sub_LD("1", SIUtil.div_DL(discountRate, "100"))));
          }
        }catch(Exception e){}
        res.add(keep);
      }
    }
    return res;
  }
  
  public static Collection getOrderList(Connection conn, String orderCode) throws SIDBAccessException {
    Collection keepColl = new ArrayList();
    Statement statement = null;
    ResultSet resultSet = null;
    SIKeepDetail keep = new SIKeepDetail();
    StringBuffer sqlStatement = new StringBuffer();
    if (orderCode.equals("")) return keepColl;
    sqlStatement.append("SELECT a.cmdtycode,a.individualcode,CASE b.amountflg WHEN '0' THEN 1 WHEN '1' THEN 0 ELSE 0 END AS cmdtytype");
    sqlStatement.append(",a.cmdtyname,a.price,c.deliverytypecode AS deliverytype");
    sqlStatement.append(",a.purchaseprice+a.processingexpence AS cost,a.purchaseprice,a.processingexpence,a.cmdtysize AS size,a.amount ");
    sqlStatement.append(", a.setdetailflg, a.setcode, a.setindividualcode, a.setdetailcode, a.ordercode, a.setcmdtycode "); // EDBTG003-00 elecs-tani add
    sqlStatement.append("FROM orderdetaillatestvw AS a,individualtbl AS b,cmdtymtbl AS c ");
    sqlStatement.append("WHERE a.ordercode =").append(SIDBUtil.SQL2Str(orderCode, " "));
    sqlStatement.append("AND a.cmdtycode=b.cmdtycode AND a.individualcode=b.individualcode ");
    sqlStatement.append("AND b.cmdtycode=c.cmdtycode ");
    // EDBTG003-00 elecs-tani mod start
    //sqlStatement.append("ORDER BY a.cmdtycode,a.individualcode ");
    sqlStatement.append("ORDER BY a.setcode, a.setdetailcode, a.cmdtycode,a.individualcode ");
    // EDBTG003-00 elecs-tani mod end
    
    // 実行
    try {
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());
      
      // 商品レコードのセットの作成
      while (resultSet.next()) {
        keep = new SIKeepDetail();
        keep.setCmdtyCode(resultSet.getString("cmdtycode"));
        keep.setIndividualCode(resultSet.getString("individualcode"));
        keep.setCmdtyType(resultSet.getString("cmdtytype"));
        keep.setCmdtyName(resultSet.getString("cmdtyName"));
        keep.setPrice(resultSet.getString("price"));
        keep.setCost(resultSet.getString("cost"));
        keep.setDeliveryType(resultSet.getString("deliverytype"));
        keep.setSize(resultSet.getString("size"));
        keep.setAmount(resultSet.getString("amount"));
        keep.setPurchasePrice(resultSet.getString("purchaseprice"));
        keep.setProcessingExpence(resultSet.getString("processingexpence"));
        // EDBTG003-00 elecs-tani add start
        keep.setOrderCode(resultSet.getString("orderCode"));
        keep.setSetDetailFlg(resultSet.getString("setDetailFlg"));
        keep.setSetCode(resultSet.getString("setCode"));
        keep.setSetIndividualCode(resultSet.getString("setIndividualCode"));
        keep.setSetDetailCode(resultSet.getString("setDetailCode"));
        // EDBTG003-00 elecs-tani add end
        keepColl.add(keep);
      }
    } catch (Exception ex) {
      log.debug("exception sql = " + sqlStatement.toString());
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(resultSet, statement);
    }
    
    return keepColl;
  }
  
  public boolean validateMove(HttpServletRequest lRequest,Connection conn){
    SICustomErrors errors = new SICustomErrors();
    SICheckValid.checkValid(errors, "移動先支店", this.moveBranchCode, SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    try {
      //ログインユーザが担当者マスタにない場合
      if (SIUtil.isNull(belongBranchCode)||!SIDBUtil.hasData(conn, "SELECT * FROM chargetbl WHERE chargecode="+SIDBUtil.SQL2Str(this.chargeCode))){
        errors.addError(new SICustomError("manager.message.freeword","担当者アカウントでログインして下さい"));
      }
      //移動先と移動元がイコールになる場合
      if (SIDBUtil.hasData(conn, "SELECT * FROM keepdetailtbl WHERE keepnumber="+SIDBUtil.SQL2Str(this.keepNumber)+" AND branchcode="+SIDBUtil.SQL2Str(this.moveBranchCode))){
        errors.addError(new SICustomError("manager.message.freeword","移動元と移動先が同じ商品があります"));
      }
    }catch(Exception e){
      e.printStackTrace();
      errors.addError(new SICustomError("database.execute.error"));
    }
    lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
}
