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

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import jp.co.sint.basic.SILogin;
import jp.co.sint.basic.SIOrder;
import jp.co.sint.basic.SIOrderDetail;
import jp.co.sint.basic.SIPointMan;
import jp.co.sint.basic.SIPointRule;
import jp.co.sint.config.SIConfig;
import jp.co.sint.config.SIDBMultiConf;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.database.SIDeleteRec;
import jp.co.sint.database.SIInsertRec;
import jp.co.sint.database.SIModifyRec;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckUtil;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;
import jp.co.sint.tools.SIURLParameter;

// 7.1.1 ST0236 追加

/**
 * @version $Id: UIRegOrder.java,v 1.0 2003/11/06 Exp $
 * @author Jinwang Chen <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>
 * Jinwang Chen 2003/11/06 16:26:10 Original
 */
public class UIRegOrder extends SIOrder {
  
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  private UIRegOrderDelivery orderDelivery = new UIRegOrderDelivery();
  private Collection ordDeliveries = new ArrayList();
  private String maxPoint = "0";
  private String backUrl = "";// 戻るURL
  
  // 7.2.0 ST1030 追加 ここから
  private String newCmdtyShopCode = ""; // 追加商品のショップコード
  private String newCmdtyCode = ""; // 追加商品の商品コード
  private String newIndividualCode = ""; // 追加商品の在庫コード PI-NES0501 追加
  private String newCmdtyStndrd1Code = ""; // 追加商品の規格1コード
  private String newCmdtyElement1Code = ""; // 追加商品のエレメント1コード
  private String newCmdtyStndrd2Code = ""; // 追加商品の規格2コード
  private String newCmdtyElement2Code = ""; // 追加商品のエレメント2コード
  private String newCmdtyHasStndrd = "0"; // 追加商品に規格商品があるかどうか（1:ある、0:ない）
  private String newCmdtyAmount = "1"; // 追加商品の初期数量
  // 7.2.0 ST1030 追加 ここまで
  
  //EDBTG003-00 elecs-matsushima add start
  private String newCmdtyCompositionFlg = SIConfig.CMDTY_COMPOSITION_NORMAL;
  // セット品の選択構成品群
  private Collection compositionDetail = new ArrayList();
  // セット品の選択オプション群
  private String[] compositionOption = null;
  // セット品の選択添付品群
  private String[] compositionAppended = null;
  //EDBTG003-00 elecs-matsushima add end
  
  private String[] deliveryCode = null;
  private String[] deliveryAddressee = null;
  private String[] deliveryCompanyName = null;
  private String[] deliveryName = null;
  private String[] deliveryTel = null;
  private String[] deliveryFax = null;
  private String[] deliveryEmail = null;
  
  // 7.2.0 ST1030 追加 ここから
  private String[] deliveryPostCode1 = null;
  private String[] deliveryPostCode2 = null;
  private String[] deliveryAddress1 = null;
  private String[] deliveryAddress2 = null;
  private String[] deliveryAddress3 = null;
  private String[] deliveryCodeToDB = null;
  
  private String[] variableCodes;
  private String[] variablePrice;
  private String[] variablePurchase;
  
  private String[] returnItems;
  private String[] keepItems;
  
  // 7.2.0 ST1030 追加 ここまで
  
  private String mailTemplate = "";
  
  // 編集用BEAN
  private UIPurchaseHistoryMemo memoBean = new UIPurchaseHistoryMemo();
  
  public UIRegOrder() {}
  
  public UIRegOrder(String lOrderCode) {
    super(lOrderCode);
  }
  
  public void setMaxPoint(String lMaxPoint) {
    if (SIUtil.isNull(lMaxPoint)) lMaxPoint = "0";
    this.maxPoint = lMaxPoint;
  }
  
  public void setBackUrl(String str) {
    if (SIUtil.isNull(str)) str = "";
    this.backUrl = str;
  }
  
  public String getMailTemplate() {
    return mailTemplate;
  }
  
  public void setMailTemplate(String mailTemplate) {
    if (SIUtil.isNull(mailTemplate)) mailTemplate = "";
    this.mailTemplate = mailTemplate;
  }
  
  // 7.2.0 ST1030 追加 ここから
  public void setNewCmdtyShopCode(String lShopCode) {
    this.newCmdtyShopCode = SIUtil.changeTo(lShopCode, this.encode);
  }
  
  public void setNewCmdtyCode(String lCmdtyCode) {
    this.newCmdtyCode = SIUtil.changeTo(lCmdtyCode, this.encode);
  }
  
  public void setNewCmdtyStndrd1Code(String lStndrdCode) {
    this.newCmdtyStndrd1Code = SIUtil.changeTo(lStndrdCode, this.encode);
  }
  
  public void setNewCmdtyElement1Code(String lElementCode) {
    this.newCmdtyElement1Code = SIUtil.changeTo(lElementCode, this.encode);
  }
  
  public void setNewCmdtyStndrd2Code(String lStndrdCode) {
    this.newCmdtyStndrd2Code = SIUtil.changeTo(lStndrdCode, this.encode);
  }
  
  public void setNewCmdtyElement2Code(String lElementCode) {
    this.newCmdtyElement2Code = SIUtil.changeTo(lElementCode, this.encode);
  }
  
  public void setNewCmdtyHasStndrd(String lHasStndrd) {
    this.newCmdtyHasStndrd = lHasStndrd;
  }
  
  public void setNewCmdtyAmount(String lCmdtyAmount) {
    if (SIUtil.isNull(lCmdtyAmount)) lCmdtyAmount = "1";
    this.newCmdtyAmount = SIUtil.changeTo(lCmdtyAmount, this.encode);
  }
  
  // 7.2.0 ST1030 追加 ここまで
  
  public void setDeliveryCode(String[] str) {
    this.deliveryCode = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryAddressee(String[] str) {
    this.deliveryAddressee = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryCompanyName(String[] str) {
    this.deliveryCompanyName = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryName(String[] str) {
    this.deliveryName = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryTel(String[] str) {
    this.deliveryTel = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryFax(String[] str) {
    this.deliveryFax = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryEmail(String[] str) {
    this.deliveryEmail = SIUtil.changeTo(str, this.encode);
  }
  
  // 7.2.0 ST1030 追加 ここから
  public void setDeliveryPostCode1(String[] str) {
    this.deliveryPostCode1 = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryPostCode2(String[] str) {
    this.deliveryPostCode2 = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryAddress1(String[] str) {
    this.deliveryAddress1 = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryAddress2(String[] str) {
    this.deliveryAddress2 = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryAddress3(String[] str) {
    this.deliveryAddress3 = SIUtil.changeTo(str, this.encode);
  }
  
  public void setDeliveryCodeToDB(String[] str) {
    this.deliveryCodeToDB = SIUtil.changeTo(str, this.encode);
  }
  
  // 7.2.0 ST1030 追加 ここまで
  
  public String getMaxPoint() {
    log.debug("this.maxPoint=" + this.maxPoint);
    return this.maxPoint;
  }
  
  public String getBackUrl() {
    return this.backUrl;
  }
  
  // 7.2.0 ST1030 追加 ここから
  public String getNewCmdtyShopCode() {
    return this.newCmdtyShopCode;
  }
  
  public String getNewCmdtyCode() {
    return this.newCmdtyCode;
  }
  
  public String getNewCmdtyStndrd1Code() {
    return this.newCmdtyStndrd1Code;
  }
  
  public String getNewCmdtyElement1Code() {
    return this.newCmdtyElement1Code;
  }
  
  public String getNewCmdtyStndrd2Code() {
    return this.newCmdtyStndrd2Code;
  }
  
  public String getNewCmdtyElement2Code() {
    return this.newCmdtyElement2Code;
  }
  
  public String getNewCmdtyHasStndrd() {
    return this.newCmdtyHasStndrd;
  }
  
  public String getNewCmdtyAmount() {
    return this.newCmdtyAmount;
  }
  
  // 7.2.0 ST1030 追加 ここまで
  
  //EDBTG003-00 elecs-matsushima add start
  public String getNewCmdtyCompositionFlg() {
    return this.newCmdtyCompositionFlg;
  }
  
  public void setNewCmdtyCompositionFlg(String newCmdtyCompositionFlg) {
    if (SIUtil.isNull(newCmdtyCompositionFlg)) newCmdtyCompositionFlg = SIConfig.CMDTY_COMPOSITION_NORMAL;
    this.newCmdtyCompositionFlg = newCmdtyCompositionFlg;
  }
  //EDBTG003-00 elecs-matsushima add end
  
  public String[] getDeliveryCode() {
    return this.deliveryCode;
  }
  
  public String[] getDeliveryAddressee() {
    return this.deliveryAddressee;
  }
  
  public String[] getDeliveryCompanyName() {
    return this.deliveryCompanyName;
  }
  
  public String[] getDeliveryName() {
    return this.deliveryName;
  }
  
  public String[] getDeliveryTel() {
    return this.deliveryTel;
  }
  
  public String[] getDeliveryFax() {
    return this.deliveryFax;
  }
  
  public String[] getDeliveryEmail() {
    return this.deliveryEmail;
  }
  
  // 7.2.0 ST1030 追加 ここから
  public String[] getDeliveryPostCode1() {
    return this.deliveryPostCode1;
  }
  
  public String[] getDeliveryPostCode2() {
    return this.deliveryPostCode2;
  }
  
  public String[] getDeliveryAddress1() {
    return this.deliveryAddress1;
  }
  
  public String[] getDeliveryAddress2() {
    return this.deliveryAddress2;
  }
  
  public String[] getDeliveryAddress3() {
    return this.deliveryAddress3;
  }
  
  public String[] getDeliveryCodeToDB() {
    return this.deliveryCodeToDB;
  }
  
  // 7.2.0 ST1030 追加 ここまで
  
  // PI-NES0501 追加 ここから
  public String getNewIndividualCode() {
    return newIndividualCode;
  }
  
  public void setNewIndividualCode(String newIndividualCode) {
    this.newIndividualCode = newIndividualCode;
  }
  
  // PI-NES0501 追加 ここまで
  
  public String[] getReturnItems() {
    return this.returnItems;
  }
  
  public String[] getKeepItems() {
    return this.keepItems;
  }
  
  //EDBTG003-00 elecs-matsushima add start
  public Collection getCompositionDetail() {
    return this.compositionDetail;
  }
  
  public String[] getCompositionOption() {
    return this.compositionOption;
  }
  
  public String[] getCompositionAppended() {
    return this.compositionAppended;
  }
  
  public void setCompositionDetail(Collection compositionDetail) {
    this.compositionDetail = compositionDetail;
  }
  
  public void setCompositionOption(String[] compositionOption) {
    this.compositionOption = compositionOption;
  }
  
  public void setCompositionAppended(String[] compositionAppended) {
    this.compositionAppended = compositionAppended;
  }
  // セット品の選択構成品群
  public void setCompositionDetail(String[] lCompositionDetail) {
    if (lCompositionDetail == null || lCompositionDetail.length <= 0) {
      this.compositionDetail = new ArrayList();
    } else {
      this.compositionDetail.add(lCompositionDetail);
    }
  }
  
  public void clearSetCompositionDetail(){
    this.compositionDetail = new ArrayList();
  }
  //EDBTG003-00 elecs-matsushima add end
  
  /**
   * UIRegOrder コンストラクタ
   * 
   * @param lRequest リクエスト
   * @return なし
   * @throws なし
   */
  public UIRegOrder(HttpServletRequest lRequest) {
    init(lRequest);
  }
  
  /**
   * <b>init</b> 入力したデータを基づいて、このbeansを設定します。
   * 
   * @param request データベースへのコネンクション
   * @return true:不正なデータがある false:ない
   * @throws なし
   */
  public void init(HttpServletRequest lRequest) {
    init(lRequest, null);
  }
  
  public void init(HttpServletRequest lRequest, SIURLParameter lUrlParam) {// 7.1.1 ST0236 修正
    SILogin lLogin = SIHTMLUtil.getLogin(lRequest);
    
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    super.init(lRequest, lUrlParam);// 7.1.1 ST0236 修正
    this.setBackUrl(lRequest.getParameter("backUrl"));// 戻るURL
    this.setOrderCode(lRequest.getParameter("orderCode"));// 受注番号
    // 7.2.0 ST1035 追加 ここから
    if (lUrlParam.getParam("selectedDeliveryCode") != null) {
      this.setSelectedDeliveryCode((String) lUrlParam.getParam("selectedDeliveryCode"));
    }
    // 7.2.0 ST1035 追加 ここまで
  }
  
  public void initUpdate(HttpServletRequest lRequest, Connection lConnection, SIURLParameter lUrlParam) {// 7.1.1 ST0236 修正
    SILogin lLogin = SIHTMLUtil.getLogin(lRequest);
    
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    super.init(lRequest, lUrlParam);// 7.1.1 ST0236 修正
    this.setBackUrl(lRequest.getParameter("backUrl"));// 戻るURL
    this.setOrderCode(lRequest.getParameter("orderCode"));// 受注番号
    this.setCustCompanyFlg(lRequest.getParameter("custCompanyFlg"));// 法人フラグ
    this.setCustName(lRequest.getParameter("custName"));// 顧客名
    this.setCustPronName(lRequest.getParameter("custPronName"));// 顧客名カナ
    this.setEmail(lRequest.getParameter("email"));// EMAIL
    this.setOrderAddressee(lRequest.getParameter("orderAddressee"));// 請求書宛名
    this.setCompanyName(lRequest.getParameter("companyName"));// 会社名
    // 7.2.0 ST1030 追加 ここから
    if (SIUtil.isNotNull((String) lUrlParam.getParam("address1"))) {
      this.setPostCode1((String) lUrlParam.getParam("postCode1"));
      this.setPostCode2((String) lUrlParam.getParam("postCode2"));
      this.setAddress1((String) lUrlParam.getParam("address1"));
      this.setAddress2((String) lUrlParam.getParam("address2"));
      this.setAddress3((String) lUrlParam.getParam("address3"));
    }
    String[] deliveryCode = lRequest.getParameterValues("deliveryCode");
    String[] deliveryPostCode1 = lRequest.getParameterValues("deliveryPostCode1");
    String[] deliveryPostCode2 = lRequest.getParameterValues("deliveryPostCode2");
    String[] deliveryName = lRequest.getParameterValues("deliveryName");
    String[] deliveryCompanyName = lRequest.getParameterValues("deliveryCompanyName");
    String[] deliveryAddress1 = lRequest.getParameterValues("deliveryAddress1");
    String[] deliveryAddress2 = lRequest.getParameterValues("deliveryAddress2");
    String[] deliveryAddress3 = lRequest.getParameterValues("deliveryAddress3");
    String[] deliveryTel = lRequest.getParameterValues("deliveryTel");
    
    //手入力時の配送先情報を全ての配送先データで共有する
    for (int i=1;i<deliveryCode.length;i++) {
      deliveryPostCode1[i] = deliveryPostCode1[0];
      deliveryPostCode2[i] = deliveryPostCode2[0];
      deliveryName[i] = deliveryName[0];
      deliveryCompanyName[i] = deliveryCompanyName[0];
      deliveryAddress1[i] = deliveryAddress1[0];
      deliveryAddress2[i] = deliveryAddress2[0];
      deliveryAddress3[i] = deliveryAddress3[0];
      deliveryTel[i] = deliveryTel[0];
    }
    // 7.2.0 ST1030 追加 ここまで
    this.setStoreTel(lRequest.getParameter("storeTel"));// 店舗電話番号 //7.3.0 PI-NES0501 追加
    this.setTel(lRequest.getParameter("tel"));// 電話番号
    this.setFax(lRequest.getParameter("fax"));// FAX番号
    this.setJob(lRequest.getParameter("job"));// 営業形態
    this.setContactMsg(lRequest.getParameter("contactMsg"));// 連絡事項
    this.setMemo(lRequest.getParameter("memo"));// 備考
    this.setSumOfDiscount(lRequest.getParameter("sumOfDiscount"));// 値引き合計
    this.setDeliveryCode(lRequest.getParameterValues("deliveryCode"));// 配送先コード
    this.setDeliveryAddressee(lRequest.getParameterValues("deliveryAddressee"));// 配送先宛名
    this.setDeliveryCompanyName(deliveryCompanyName);// 配送先会社名
    this.setDeliveryName(deliveryName);// 配送先呼称
    this.setDeliveryTel(deliveryTel);// 配送先電話番号
    this.setDeliveryFax(lRequest.getParameterValues("deliveryFax"));// 配送先Fax
    this.setDeliveryEmail(lRequest.getParameterValues("deliveryEmail"));// 配送先Email
    // 7.2.0 ST1030 追加 ここから
    this.setDeliveryPostCode1(deliveryPostCode1);
    this.setDeliveryPostCode2(deliveryPostCode2);
    this.setDeliveryAddress1(deliveryAddress1);
    this.setDeliveryAddress2(deliveryAddress2);
    this.setDeliveryAddress3(deliveryAddress3);
    this.setDeliveryCodeToDB(lRequest.getParameterValues("deliveryCodeToDB"));
    // 7.2.0 ST1030 追加 ここまで
    // 7.3.0 PI-NES0501 追加 ここから
    this.setCompanyCode(lRequest.getParameter("orderbranch"));
    this.setChargeCode(lRequest.getParameter("ordercharge"));
    this.setOrderRoute(lRequest.getParameter("orderRoute"));
    //
    this.setDiscountDeliveryFee(lRequest.getParameter("discountDeliveryFee"));// 送料調整額
    this.setDiscountFee(lRequest.getParameter("discountFee"));// 手数料調整額
    // 7.3.0 PI-NES0501 追加 ここまで
    this.setMailTemplate(lRequest.getParameter("mailTemplate"));//受注確認メールテンプレート
  }
  
  // 7.2.0 ST1030 追加 ここから
  public void initUpdateNewCmdty(HttpServletRequest lRequest, Connection lConnection, SIURLParameter lUrlParam) {
    this.setNewCmdtyShopCode((String) lUrlParam.getParam("newCmdtyShopCodeTxt"));
    this.setNewCmdtyCode((String) lUrlParam.getParam("newCmdtyCodeTxt"));
    this.setNewIndividualCode((String) lUrlParam.getParam("newIndividualCodeTxt"));
    this.setNewCmdtyStndrd1Code((String) lUrlParam.getParam("newCmdtyStndrd1CodeTxt"));
    this.setNewCmdtyElement1Code((String) lUrlParam.getParam("newCmdtyElement1CodeTxt"));
    this.setNewCmdtyStndrd2Code((String) lUrlParam.getParam("newCmdtyStndrd2CodeTxt"));
    this.setNewCmdtyElement2Code((String) lUrlParam.getParam("newCmdtyElement2CodeTxt"));
    if (SIUtil.isNotNull((String) lUrlParam.getParam("newCmdtyAmountTxt"))) {
      this.setNewCmdtyAmount((String) lUrlParam.getParam("newCmdtyAmountTxt"));
    }
  }
  // 7.2.0 ST1030 追加 ここまで
  
  public void initVariableCmdty(HttpServletRequest lRequest,SIURLParameter lUrlParam){
    this.setCustCode((String) lUrlParam.getParam("custCode"));
    this.setOrderCode((String) lUrlParam.getParam("orderCode"));
    this.variableCodes = lRequest.getParameterValues("variableCode");
    if(this.variableCodes != null && this.variableCodes.length>0){
      this.variablePrice = new String[this.variableCodes.length];
      this.variablePurchase = new String[this.variableCodes.length];
      for(int i=0;i<this.variableCodes.length;i++){
        this.variablePrice[i] = (String) lUrlParam.getParam("variablePrice_"+this.variableCodes[i]);
        this.variablePurchase[i] = (String) lUrlParam.getParam("variablePurchase_"+this.variableCodes[i]);
      }
    }
  }
  
  public void initReturnItems(HttpServletRequest lRequest, Connection lConnection, SIURLParameter lUrlParam) {
    this.returnItems = lRequest.getParameterValues("returnChk");
    if (SIUtil.isNull(this.getOrderCode())) return;
    
    Statement lStatement=null;
    ResultSet lResultSet=null;
    
    StringBuffer lSqlStr = new StringBuffer();
    lSqlStr.append("SELECT individualcode FROM orderdetaillatestvw ");
    lSqlStr.append("WHERE ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode(), " "));
    if (this.returnItems!=null&&this.returnItems.length>0) {
      lSqlStr.append("AND individualcode NOT IN (");
      for (int i=0;i<this.returnItems.length;i++) {
        if (i>0) lSqlStr.append(",");
        lSqlStr.append(SIDBUtil.SQL2Str(this.returnItems[i]));
      }
      lSqlStr.append(")");
    }
    StringBuffer keepItemsText = new StringBuffer();
    try{
      lStatement=lConnection.createStatement();
      lResultSet=lStatement.executeQuery(lSqlStr.toString());
      while (lResultSet.next()) {
        if (!lResultSet.isFirst()) keepItemsText.append(",");
        keepItemsText.append(lResultSet.getString("individualcode"));
      }
      this.keepItems = keepItemsText.toString().split(",");
    }catch(SQLException sqle) {
      sqle.printStackTrace();
      this.returnItems=null;
    }finally{
      SIDBUtil.close(lResultSet, lStatement);
    }
  }
  
  // 7.2.0 ST1030 修正 ここから
  /**
   * <b>validate</b> 受注明細のデータをチェックします。
   * 
   * @param request
   * @param lConnection
   * @param lUrlParam
   * @return true:不正なデータがある false:ない
   * @throws なし
   */
  public boolean validate(HttpServletRequest lRequest, Connection lConnection, SIURLParameter lUrlParam) {// 7.1.2 ST0236 修正
    return this.validate(lRequest, lConnection, lUrlParam, false);
  }
  
  /**
   * <b>validate</b> 受注明細のデータをチェックします。
   * 
   * @param request
   * @param lConnection
   * @param lUrlParam
   * @return true:不正なデータがある false:ない
   * @throws なし
   */
  public boolean validate(HttpServletRequest lRequest, Connection lConnection, SIURLParameter lUrlParam, boolean updMode) {// 7.1.1 ST0236 修正 //7.2.0 ST1030 修正
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    
    // 受注データ上書き不具合チェック（受注番号と受注日が等しい受注データが不在の更新はエラー）
    StringBuffer buff1 = new StringBuffer();
    buff1.append("SELECT ordercode FROM ordertbl WHERE ordercode = ").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    buff1.append("AND initdatetime = ").append(SIDBUtil.SQL2Str(this.getInitDateTime()));
    
    // キャンセル・返品競合チェック（別セッションにてキャンセル済の時はエラー）
    StringBuffer buff2 = new StringBuffer();
    buff2.append("SELECT ordercode FROM ordertbl ");
    buff2.append("WHERE enabledflg='1' AND status<>'1' ");
    buff2.append("AND ordercode = ").append(SIDBUtil.SQL2Str(this.getOrderCode()));
    
    // 更新競合チェック（別セッションにて更新済の時はエラー）
    StringBuffer buff3 = new StringBuffer();
    buff3.append("SELECT ordercode FROM ordertbl ");
    buff3.append("WHERE enabledflg='1' ");
    buff3.append("AND ordercode = ").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    buff3.append("AND orderbranchcode > ").append(SIDBUtil.SQL2Str(this.getOrderBranchCode()));
    
    // 出荷済チェック（商品が出荷済の時はエラー）
    StringBuffer buff4 = new StringBuffer();
    buff4.append("SELECT h.ordercode FROM ordertbl h,orderdetailtbl d ");
    buff4.append("WHERE h.enabledflg='1' AND h.ordercode=d.ordercode AND h.orderbranchcode=d.orderbranchcode ");
    buff4.append("AND h.ordercode = ").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    buff4.append("AND d.shippmentdate IS NOT NULL");
    
    try {
      if (updMode && !SIDBUtil.hasData(lConnection,buff1.toString())){
        errors.addError(new SICustomError("manager.message.error.illegalupdareorder"));
      }
      if (errors.isEmpty()&&SIDBUtil.hasData(lConnection,buff2.toString())){
        errors.addError(new SICustomError("manager.message.error.illegalupdareorder"));
      }
      if (errors.isEmpty()&&SIDBUtil.hasData(lConnection,buff3.toString())){
        errors.addError(new SICustomError("manager.message.error.illegalupdareorder"));
      }
      if (errors.isEmpty()&&SIDBUtil.hasData(lConnection,buff4.toString())){
        errors.addError(new SICustomError("manager.message.error.illegalupdareorder"));
      }
    }catch(SIDBAccessException dba){
      dba.printStackTrace();
      errors.addError(new SICustomError("manager.message.error.illegalupdareorder"));
    }
    
    // 7.1.1 ST0162 修正 ここから
    SICheckValid.checkValid(errors, "顧客情報 氏名", this.getCustName(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "顧客情報 氏名", this.getCustName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 40);// 7.2.0 ST0670 修正
    
    SICheckValid.checkValid(errors, "顧客情報 カナ", this.getCustPronName(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ZENKAKU_KANA_TYPE);// 7.2.0 ST1030 修正
    SICheckValid.checkValid(errors, "顧客情報 カナ", this.getCustPronName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50);
    
    // 7.3.0 PI-NES0501 修正 ここから
    SICheckValid.checkValid(errors, "顧客情報 連絡先TEL1", this.getStoreTel(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "顧客情報 連絡先TEL1", this.getStoreTel(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_TYPE, 9, 16);
    SICheckValid.checkValid(errors, "顧客情報 連絡先TEL2", this.getTel(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "顧客情報 連絡先TEL2", this.getTel(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_TYPE, 9, 16);
    // 7.3.0 PI-NES0501 修正 ここまで
    
    SICheckValid.checkValid(errors, "顧客情報 FAX", this.getFax(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "顧客情報 FAX", this.getFax(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_TYPE, 9, 16);
    
    SICheckValid.checkValid(errors, "顧客情報 E-Mail", this.getEmail(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_MAIL_TYPE);
    SICheckValid.checkValid(errors, "顧客情報 E-Mail", this.getEmail(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 128);
    
    SICheckValid.checkValid(errors, "請求書・領収書 宛名", this.getOrderAddressee(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "請求書・領収書 宛名", this.getOrderAddressee(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50);
    
    SICheckValid.checkValid(errors, "請求書・領収書 会社名", this.getCompanyName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    // 7.1.1 ST0162 修正 ここまで
    
    // 7.2.0 ST1030 追加 ここから
    SICheckValid.checkValid(errors, "郵便番号(上3桁)", this.getPostCode1(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "郵便番号(下4桁)", this.getPostCode2(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    if (this.getPostCode1().toString().trim().length() != 3 || this.getPostCode2().toString().trim().length() != 4) {
      errors.addError(new SICustomError("manager.app.postcode.form"));
    }
    SICheckValid.checkValid(errors, "住所1（都道府県）", this.getAddress1(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "住所2(市区町村・番地)", this.getAddress2(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "住所2(市区町村・番地)", this.getAddress2(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    SICheckValid.checkValid(errors, "住所3(ビル名・階など)", this.getAddress3(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    // 7.2.0 ST1030 追加 ここまで
    
    SICheckValid.checkValid(errors, "連絡事項", this.getContactMsg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1000);
    
    SICheckValid.checkValid(errors, "備考", this.getMemo(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1000);
    
    if (this.getDeliveryCode() != null && this.getDeliveryCode().length != 0) {
      for (int i = 0; i < this.getDeliveryCode().length; i++) {
        int number = i + 1;
        SICheckValid.checkValid(errors, "配送先" + number + " 宛名", this.getDeliveryAddressee()[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
        SICheckValid.checkValid(errors, "配送先" + number + " 宛名", this.getDeliveryAddressee()[i], SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50);
        
        SICheckValid.checkValid(errors, "配送先" + number + " 会社名", this.getDeliveryCompanyName()[i], SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
        
        SICheckValid.checkValid(errors, "配送先" + number + " 配送先呼称", this.getDeliveryName()[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
        SICheckValid.checkValid(errors, "配送先" + number + " 配送先呼称", this.getDeliveryName()[i], SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 40);// 7.1.2 ST0670 修正
        
        // 7.2.0 ST1030 追加 ここから
        if (this.getDeliveryAddress1().length > 0) {
          SICheckValid.checkValid(errors, "配送先" + number + "郵便番号(上3桁)", this.getDeliveryPostCode1()[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE
              + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
          SICheckValid.checkValid(errors, "配送先" + number + "郵便番号(下4桁)", this.getDeliveryPostCode2()[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE
              + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
          if (this.getDeliveryPostCode1()[i].toString().trim().length() != 3 || this.getDeliveryPostCode2()[i].toString().trim().length() != 4) {
            errors.addError(new SICustomError("manager.app.postcode.form"));
          }
          SICheckValid.checkValid(errors, "配送先" + number + "住所1（都道府県）", this.getDeliveryAddress1()[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
          SICheckValid.checkValid(errors, "配送先" + number + "住所2(市区町村・番地)", this.getDeliveryAddress2()[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
          SICheckValid.checkValid(errors, "配送先" + number + "住所2(市区町村・番地)", this.getDeliveryAddress2()[i], SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
          SICheckValid.checkValid(errors, "配送先" + number + "住所3(ビル名・階など)", this.getDeliveryAddress3()[i], SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
        }
        // 7.2.0 ST1030 追加 ここまで
        
        SICheckValid.checkValid(errors, "配送先" + number + " TEL", this.getDeliveryTel()[i], SICheckDataConf.SICHECK_DATA_PHONE_TYPE);// 7.1.1 ST0162 修正
        SICheckValid.checkValid(errors, "配送先" + number + " TEL", this.getDeliveryTel()[i], SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 16);// 7.1.1 ST0162 修正
        SICheckValid.checkValid(errors, "配送先" + number + " TEL", this.getDeliveryTel()[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);// 7.1.1 ST0162 修正
        
      }
    }
    
    // 7.2.0 ST1035 修正ここから
    if (this.getBackUrl().equals("webshop.jsp.manager.order.list") && !updMode) {
      // 7.1.2 ST0162 修正 ここから
      SICheckValid.checkValid(errors, "値引金額", this.getSumOfDiscount(), SICheckDataConf.SICHECK_DATA_DIGIT_NEGATIVE_TYPE);
      SICheckValid.checkValid(errors, "値引金額", this.getSumOfDiscount(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 8);
      SICheckValid.checkValid(errors, "値引金額", "0", SIUtil.add_LL(this.getSumOfDiscount(), "1"), "0", SICheckDataConf.SICHECK_DATA_VALUE_GREATER_TYPE);
      // 7.1.2 ST0162 修正 ここまで
      
      if (SICheckUtil.isDigit(this.getSumOfDiscount()) && Integer.parseInt(this.getSumOfDiscount()) > Integer.parseInt((String) lUrlParam.getParam("discountBase"))) {// 7.1.2
        // ST0236 修正
        errors.addError(new SICustomError("input.data.totalprice.negative"));
      }
    }
    // 7.2.0 ST1035 修正ここまで
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  /**
   * キャンセル、返品の時のチェック
   * 
   * @param lRequest
   * @param lConnection
   * @return
   * @throws SIDBAccessException
   */
  public boolean validateReturn(HttpServletRequest lRequest, Connection lConnection) throws SIDBAccessException {
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    
    StringBuffer str1 = new StringBuffer();//通常データのみ返品可能
    str1.append("SELECT * FROM orderlatestvw ");
    str1.append("WHERE status='1' AND ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    
    StringBuffer str2 = new StringBuffer();//未来日出荷は返品不可
    str2.append("SELECT * FROM orderdetaillatestvw ");
    str2.append("WHERE shippmentdate>=current_date ");
    str2.append("AND ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    
    StringBuffer str3 = new StringBuffer();//削除済み商品があると返品不可
    str3.append("SELECT * FROM orderdetaillatestvw ");
    str3.append("WHERE individualcode NOT IN (SELECT individualcode FROM individualtbl) ");
    str3.append("AND ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    
    StringBuffer str4 = new StringBuffer();//担当がないとき返品不可
    str4.append("SELECT * FROM orderdetaillatestvw d,orderlatestvw h ");
    str4.append("WHERE h.ordercode=d.ordercode AND h.branchcode IS NULL AND d.shippmentdate IS NOT NULL ");
    str4.append("AND h.ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    
    if (!SIDBUtil.hasData(lConnection, str1.toString()) || SIDBUtil.hasData(lConnection, str2.toString()) || SIDBUtil.hasData(lConnection, str3.toString()) || SIDBUtil.hasData(lConnection, str4.toString())) {
      errors.addError(new SICustomError("manager.app.order.cancel"));
    }
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  public boolean validateCancel(HttpServletRequest lRequest, Connection lConnection) throws SIDBAccessException {
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    
    StringBuffer str1 = new StringBuffer();//通常データのみキャンセル可能
    str1.append("SELECT * FROM orderlatestvw ");
    str1.append("WHERE status='1' AND ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    
    StringBuffer str2 = new StringBuffer();//出荷済受注はキャンセル不可
    str2.append("SELECT * FROM orderdetaillatestvw ");
    str2.append("WHERE shippmentdate IS NOT NULL ");
    str2.append("AND ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()," "));
    
    if (!SIDBUtil.hasData(lConnection, str1.toString()) || SIDBUtil.hasData(lConnection, str2.toString())) {
      errors.addError(new SICustomError("manager.app.order.cancel"));
    }
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  // 7.2.0 ST1030 追加 ここから
  /**
   * 商品追加時のチェック
   * 
   * @param lRequest
   * @param lConnection
   * @return boolean
   * @throws SIDBAccessException
   */
  public boolean validateNewCmdty(HttpServletRequest lRequest, Connection lConnection) throws SIDBAccessException {
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    
    // ショップコードの必須チェックと値チェック（半角英数）
    SICheckValid.checkValid(errors, "ショップコード", this.newCmdtyShopCode, SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE, 16);
    // 親コードの必須チェックと値チェック（半角英数）
    SICheckValid.checkValid(errors, "親コード", this.newCmdtyCode, SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE, 13);
    // 在庫コードの必須チェックと値チェック（半角英数）
    SICheckValid.checkValid(errors, "在庫コード", this.newIndividualCode, SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE, 8);
    // 商品数量の必須チェックと値チェック（半角数値）
    SICheckValid.checkValid(errors, "数量", this.newCmdtyAmount, SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE, 8);
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  // 7.2.0 ST1030 追加 ここまで
  
  public boolean validateVariableCmdty(HttpServletRequest lRequest){
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    if(this.variableCodes==null || this.variableCodes.length<1) return true;
    
    for (int i=0;i<this.variableCodes.length;i++){
      SICheckValid.checkValid(errors, "商品価格"+this.variableCodes[i], this.variablePrice[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE, 8);
      SICheckValid.checkValid(errors, "商品原価"+this.variableCodes[i], this.variablePurchase[i], SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE, 8);
    }
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  public void reset(HttpServletRequest lRequest, Connection lConnection) {
    SILogin lLogin = SIHTMLUtil.getLogin(lRequest);
    
    super.reset(lConnection);
    this.setMaxPoint(SIPointMan.getMaxPoint(lConnection, this.getCustCode(), lLogin.getMallShopCode()));
  }
  
  public Collection getCollection(Connection lConnection) {
    return getCollection(lConnection, null);
  }
  
  public Collection getCollection(Connection lConnection, SILogin lLogin) {
    Collection lResultColl = new ArrayList();
    UIRegOrderDelivery lOrderDelivery = new UIRegOrderDelivery();
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    // 7.2.0 ST1030 修正 ここから
    StringBuffer lSqlBuf = new StringBuffer("SELECT aa.* FROM ").append(SIConfig.SIVIEW_ORDER_DELIVERY_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("aa ");
    // StringBuffer lSqlBuf=new StringBuffer("SELECT aa.* FROM OrderDeliveryTbl").append(SIDBMultiConf.SIALIAS_CURR_NAME).append("aa ");
    // 7.2.0 ST1030 修正 ここまで
    if (lLogin == null) {
      lSqlBuf.append("WHERE 1=1 ");
    } else if (lLogin.isShop()) {
      lSqlBuf.append(",(SELECT DISTINCT OrderCode,DeliveryCode ");
      // 7.2.0 ST1030 修正 ここから
      lSqlBuf.append("FROM ").append(SIConfig.SIVIEW_ORDER_DETAIL_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb WHERE ShopCode=");
      // lSqlBuf.append("FROM OrderDetailTbl").append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb WHERE ShopCode=");
      // 7.2.0 ST1030 修正 ここまで
      lSqlBuf.append(SIDBUtil.SQL2Str(lLogin.getMallShopCode(), ")")).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb");
      lSqlBuf.append(" WHERE aa.OrderCode=bb.OrderCode AND aa.DeliveryCode=bb.DeliveryCode ");
    } else {
      lSqlBuf.append("WHERE 1=1 ");
    }
    lSqlBuf.append("AND aa.OrderCode=").append(SIDBUtil.SQL2Str(getOrderCode(), " "));
    // 7.2.0 ST1035 追加ここから
    if (this.getSelectedDeliveryCode().length() > 0) {
      lSqlBuf.append("AND aa.DELIVERYCODE=");
      lSqlBuf.append(SIDBUtil.SQL2Str(this.getSelectedDeliveryCode(), " "));
    }
    // 7.2.0 ST1035 追加ここまで
    // 7.2.0 ST1030 修正 ここから
    lSqlBuf.append("ORDER BY aa.ADDRESSCODE, aa.DELIVERYTYPECODE, aa.MALLSHOPCODE");
    // lSqlBuf.append("ORDER BY aa.DeliveryCode");
    // 7.2.0 ST1030 修正 ここまで
    log.debug("getConnection:lSqlBuf=" + lSqlBuf.toString());
    
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      while (lResultSet.next()) {
        lOrderDelivery = new UIRegOrderDelivery();
        lOrderDelivery.setEncode(SIConfig.SIENCODE_NONE);
        lOrderDelivery.setOrderCode(lResultSet.getString("orderCode"));// 受注番号
        lOrderDelivery.setDeliveryCode(lResultSet.getString("deliveryCode"));// 受注配送先項番
        lOrderDelivery.setPostCode1(lResultSet.getString("postCode1"));// 郵便番号1
        lOrderDelivery.setPostCode2(lResultSet.getString("postCode2"));// 郵便番号2
        lOrderDelivery.setAddress1(lResultSet.getString("address1"));// 配送先住所1
        lOrderDelivery.setAddress2(lResultSet.getString("address2"));// 配送先住所2
        lOrderDelivery.setAddress3(lResultSet.getString("address3"));// 配送先住所3
        lOrderDelivery.setDeliveryFee(lResultSet.getString("deliveryFee"));// 送料
        lOrderDelivery.setDeliveryTaxFlg(lResultSet.getString("deliveryTaxFlg"));// 送料税フラグ
        lOrderDelivery.setTaxRate(lResultSet.getString("taxRate"));// 税率
        lOrderDelivery.setDeliveryDate(SIDBUtil.getDate(lResultSet.getTimestamp("deliveryDate")));// 配送希望日
        lOrderDelivery.setDeliveryTimeFrom(lResultSet.getString("deliveryTimeFrom"));// 配送希望時間帯From
        lOrderDelivery.setDeliveryTimeTo(lResultSet.getString("deliveryTimeTo"));// 配送希望時間帯To
        lOrderDelivery.setShippmentDate(SIDBUtil.getDate(lResultSet.getTimestamp("shippmentDate")));// 出荷日
        lOrderDelivery.setDeliveryTypeName(lResultSet.getString("deliveryTypeName"));// 配送種別名称
        lOrderDelivery.setCustCompanyFlg(lResultSet.getString("custCompanyFlg"));// 個人法人フラグ
        lOrderDelivery.setDeliveryTaxFlg(lResultSet.getString("deliveryTaxFlg"));// 送料消費税フラグ
        lOrderDelivery.setEmail(lResultSet.getString("email"));// メール
        lOrderDelivery.setDeliveryTypeCode(lResultSet.getString("deliveryTypeCode"));// 配送種別//7.3.0 PI-NES0501 追加
        if (this.getDeliveryCode() != null && this.getDeliveryCode().length != 0) {
          int count = -1;
          for (int i = 0; i < this.getDeliveryCode().length; i++) {
            if (this.getDeliveryCode()[i].equals(lOrderDelivery.getDeliveryCode())) {
              count = i;
              break;
            }
          }
          if (count != -1) {
            lOrderDelivery.setDeliveryAddressee(this.getDeliveryAddressee()[count]);// 配送先宛名
            lOrderDelivery.setCompanyName(this.getDeliveryCompanyName()[count]);// 会社名
            lOrderDelivery.setDeliveryName(this.getDeliveryName()[count]);// 配送先呼称
            lOrderDelivery.setTel(this.getDeliveryTel()[count]);// 連絡先電話番号
            lOrderDelivery.setFax(this.getDeliveryFax()[count]);// 連絡先FAX番号
          }
        } else {
          lOrderDelivery.setDeliveryAddressee(lResultSet.getString("deliveryAddressee"));// 配送先宛名
          lOrderDelivery.setCompanyName(lResultSet.getString("companyName"));// 会社名
          lOrderDelivery.setDeliveryName(lResultSet.getString("deliveryName"));// 配送先呼称
          lOrderDelivery.setTel(lResultSet.getString("tel"));// 連絡先電話番号
          lOrderDelivery.setFax(lResultSet.getString("fax"));// 連絡先FAX番号
        }
        
        lResultColl.add(lOrderDelivery);
      }
    } catch (SQLException e) {
      e.printStackTrace();
      return new ArrayList();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    
    return lResultColl;
  }
  
  // 7.3.0 PI-NES0501 追加 ここから
  public Collection getCollection2(Connection lConnection) {
    return getCollection2(lConnection, null);
  }
  
  public Collection getCollection2(Connection lConnection, SILogin lLogin) {
    Collection lResultColl = new ArrayList();
    UIRegOrderDelivery lOrderDelivery = new UIRegOrderDelivery();
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    StringBuffer lSqlBuf = new StringBuffer("SELECT distinct aa.postcode1, postcode2, address1, address2,address3,deliveryName,companyName,deliveryAddressee FROM ").append(
        SIConfig.SIVIEW_ORDER_DELIVERY_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("aa ");
    
    if (lLogin == null) {
      lSqlBuf.append("WHERE 1=1 ");
    } else if (lLogin.isShop()) {
      lSqlBuf.append(",(SELECT DISTINCT OrderCode,DeliveryCode ");
      lSqlBuf.append("FROM ").append(SIConfig.SIVIEW_ORDER_DETAIL_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb WHERE ShopCode=");
      lSqlBuf.append(SIDBUtil.SQL2Str(lLogin.getMallShopCode(), ")")).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb");
      lSqlBuf.append(" WHERE aa.OrderCode=bb.OrderCode AND aa.DeliveryCode=bb.DeliveryCode ");
    } else {
      lSqlBuf.append("WHERE 1=1 ");
    }
    lSqlBuf.append("AND aa.OrderCode=").append(SIDBUtil.SQL2Str(getOrderCode(), " "));
    if (this.getSelectedDeliveryCode().length() > 0) {
      lSqlBuf.append("AND aa.DELIVERYCODE=");
      lSqlBuf.append(SIDBUtil.SQL2Str(this.getSelectedDeliveryCode(), " "));
    }
    log.debug("getCollection2:lSqlBuf=" + lSqlBuf.toString());
    
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      while (lResultSet.next()) {
        lOrderDelivery = new UIRegOrderDelivery();
        lOrderDelivery.setEncode(SIConfig.SIENCODE_NONE);
        lOrderDelivery.setPostCode1(lResultSet.getString("postCode1"));// 郵便番号1
        lOrderDelivery.setPostCode2(lResultSet.getString("postCode2"));// 郵便番号2
        lOrderDelivery.setAddress1(lResultSet.getString("address1"));// 配送先住所1
        lOrderDelivery.setAddress2(lResultSet.getString("address2"));// 配送先住所2
        lOrderDelivery.setAddress3(lResultSet.getString("address3"));// 配送先住所3
        if (this.getDeliveryCode() != null && this.getDeliveryCode().length != 0) {
          int count = -1;
          for (int i = 0; i < this.getDeliveryCode().length; i++) {
            if (this.getDeliveryCode()[i].equals(lOrderDelivery.getDeliveryCode())) {
              count = i;
              break;
            }
          }
          if (count != -1) {
            lOrderDelivery.setDeliveryAddressee(this.getDeliveryAddressee()[count]);// 配送先宛名
            lOrderDelivery.setCompanyName(this.getDeliveryCompanyName()[count]);// 会社名
            lOrderDelivery.setDeliveryName(this.getDeliveryName()[count]);// 配送先呼称
            lOrderDelivery.setTel(this.getDeliveryTel()[count]);// 連絡先電話番号
            lOrderDelivery.setFax(this.getDeliveryFax()[count]);// 連絡先FAX番号
          }
        } else {
          lOrderDelivery.setDeliveryAddressee(lResultSet.getString("deliveryAddressee"));// 配送先宛名
          lOrderDelivery.setCompanyName(lResultSet.getString("companyName"));// 会社名
          lOrderDelivery.setDeliveryName(lResultSet.getString("deliveryName"));// 配送先呼称
        }
        
        lResultColl.add(lOrderDelivery);
      }
    } catch (SQLException e) {
      e.printStackTrace();
      return new ArrayList();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    
    return lResultColl;
  }
  
  /**
   * 個別送料の配送希望日時
   * 
   * @param lConnection
   * @return Collection
   * @throws SIDBAccessException
   */
  public Collection getIndivDeliveryDate(Connection lConnection) {
    Collection lResultColl = new ArrayList();
    UIRegOrderDelivery lOrderDelivery = new UIRegOrderDelivery();
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    StringBuffer lSqlBuf = new StringBuffer("SELECT aa.deliverydate FROM ").append(SIConfig.SIVIEW_ORDER_DELIVERY_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME)
        .append("aa ");
    lSqlBuf.append("INNER JOIN ");
    lSqlBuf.append(SIConfig.SIVIEW_ORDER_DETAIL_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb ");
    lSqlBuf.append("ON aa.OrderCode = bb.OrderCode AND aa.DeliveryCode = bb.DeliveryCode ");
    lSqlBuf.append("WHERE 1=1 ");
    lSqlBuf.append("AND aa.OrderCode=").append(SIDBUtil.SQL2Str(getOrderCode(), " "));
    lSqlBuf.append("AND aa.DeliveryTypeCode= 0 ");
    
    log.debug("getConnection:lSqlBuf=" + lSqlBuf.toString());
    
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      while (lResultSet.next()) {
        lOrderDelivery = new UIRegOrderDelivery();
        lOrderDelivery.setEncode(SIConfig.SIENCODE_NONE);
        lOrderDelivery.setDeliveryDate(SIDBUtil.getDate(lResultSet.getTimestamp("deliverydate")));// 配送希望日
        
        lResultColl.add(lOrderDelivery);
      }
    } catch (SQLException e) {
      e.printStackTrace();
      return new ArrayList();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    
    return lResultColl;
  }
  
  /**
   * 小物送料の配送希望日時
   * 
   * @param lConnection
   * @return Collection
   * @throws SIDBAccessException
   */
  public Collection getSmallDeliveryDate(Connection lConnection) {
    Collection lResultColl = new ArrayList();
    UIRegOrderDelivery lOrderDelivery = new UIRegOrderDelivery();
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    StringBuffer lSqlBuf = new StringBuffer("SELECT aa.deliverydate FROM ").append(SIConfig.SIVIEW_ORDER_DELIVERY_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME)
        .append("aa ");
    lSqlBuf.append("INNER JOIN ");
    lSqlBuf.append(SIConfig.SIVIEW_ORDER_DETAIL_LATEST_NAME).append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb ");
    lSqlBuf.append("ON aa.OrderCode = bb.OrderCode AND aa.DeliveryCode = bb.DeliveryCode ");
    lSqlBuf.append("WHERE 1=1 ");
    lSqlBuf.append("AND aa.OrderCode=").append(SIDBUtil.SQL2Str(getOrderCode(), " "));
    lSqlBuf.append("AND aa.DeliveryTypeCode= 1 ");
    
    log.debug("getConnection:lSqlBuf=" + lSqlBuf.toString());
    
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      while (lResultSet.next()) {
        lOrderDelivery = new UIRegOrderDelivery();
        lOrderDelivery.setEncode(SIConfig.SIENCODE_NONE);
        lOrderDelivery.setDeliveryDate(SIDBUtil.getDate(lResultSet.getTimestamp("deliverydate")));// 配送希望日
        
        lResultColl.add(lOrderDelivery);
      }
    } catch (SQLException e) {
      e.printStackTrace();
      return new ArrayList();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    
    return lResultColl;
  }
  
  // 7.3.0 PI-NES0501 追加 ここまで
  //EDBTG003-00 elecs-matsushima mod start
//  public String getOrderAllocation(Connection lConnection, String lCmdtyCode, String lIndividualCode, LinkedHashMap allocationMap) {
  public String getOrderAllocation(Connection lConnection, String lCmdtyCode, String lIndividualCode, LinkedHashMap allocationMap, String lSetDetailFlg, String lDetailCode, String setCode) {
    //EDBTG003-00 elecs-matsushima mod end
    String returnValue = "引当情報なし";
    LinkedHashMap map = null;
    Statement lStatement = null;
    ResultSet lResultSet = null;
    String branch = "";
    
    // EDBTG003-00 elecs-matsushima mod start
//    if (SIUtil.isNull(this.getOrderCode()) || SIUtil.isNull(lCmdtyCode) || SIUtil.isNull(lIndividualCode)) return returnValue;
//    if (allocationMap != null) map = (LinkedHashMap) allocationMap.get(this.getOrderCode() + "_" + lCmdtyCode + "_" + lIndividualCode);
    if (SIUtil.isNull(setCode)) setCode = "";
    if (SIUtil.isNull(this.getOrderCode()) || SIUtil.isNull(lCmdtyCode) || SIUtil.isNull(lIndividualCode) || SIUtil.isNull(lSetDetailFlg)) return returnValue;
    if (allocationMap != null) map = (LinkedHashMap) allocationMap.get(this.getOrderCode() + "_" + lCmdtyCode + "_" + lIndividualCode+"_"+setCode+"_"+lSetDetailFlg);
    // EDBTG003-00 elecs-matsushima mod end
    
    try {
      returnValue = "";
      if (map != null) {
        lStatement = lConnection.createStatement();
        lResultSet = lStatement.executeQuery("SELECT branchcode,branchname FROM branchtbl");
        while (lResultSet.next()) {
          branch = lResultSet.getString("branchcode");
          String alloc = (String) map.get(branch);
          if (alloc != null && !alloc.equals("0")) {
            if (SIUtil.isNotNull(returnValue)) returnValue = returnValue + "<br>";
            returnValue = returnValue + lResultSet.getString("branchname") + map.get(branch);
          }
        }
      } else {
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT b.branchname,a.orderallocationnumber FROM orderallocationinfotbl a,branchtbl b ");
        sql.append("WHERE a.branchcode=b.branchcode AND a.ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode(), " "));
        sql.append("AND a.cmdtycode=").append(SIDBUtil.SQL2Str(lCmdtyCode, " AND a.individualcode=")).append(SIDBUtil.SQL2Str(lIndividualCode));
        
        // EDBTG003-00 elecs-matsushima add start
        if (SIUtil.isNull(lDetailCode)){
          sql.append(" AND a.detailcode is null ");
        } else  {
          sql.append(" AND a.detailcode=").append(SIDBUtil.SQL2Str(lDetailCode, " "));
        }
        // EDBTG003-00 elecs-matsushima add end
        lStatement = lConnection.createStatement();
        lResultSet = lStatement.executeQuery(sql.toString());
        while (lResultSet.next()) {
          if (SIUtil.isNotNull(returnValue)) returnValue = returnValue + "<br>";
          returnValue = returnValue + lResultSet.getString("branchname") + lResultSet.getString("orderallocationnumber");
        }
      }
      if (SIUtil.isNull(returnValue)) returnValue = "引当情報なし";
    } catch (Exception e) {
      e.printStackTrace();
      returnValue = "引当情報なし";
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    return returnValue;
  }
  
  public Collection getCorrectData(Connection lConnection) {
    if (SIUtil.isNull(this.getOrderCode())) return null;
    Statement lStatement = null;
    ResultSet lResultSet = null;
    Collection correctColl = new ArrayList();
    StringBuffer lSqlStr = new StringBuffer();
    try {
      lSqlStr.append("SELECT * FROM orderdetailcosttbl WHERE ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode(), " ORDER BY correctcount"));
      
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlStr.toString());
      while (lResultSet.next()) {
        LinkedHashMap map = new LinkedHashMap();
        map.put("cmdtycode", lResultSet.getString("cmdtycode"));
        map.put("individualcode", lResultSet.getString("individualcode"));
        map.put("purchasepriceold", lResultSet.getString("purchasepriceold"));
        map.put("purchasepricenew", lResultSet.getString("purchasepricenew"));
        map.put("initdatetime", lResultSet.getString("initdatetime"));
        correctColl.add(map);
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    return correctColl;
  }
  
  public boolean resetVariableCmdty(Connection lConnection) throws SIDBAccessException{
    boolean res = false;
    Statement lStatement = null;
    ResultSet lResultSet = null;
    String price = "";
    String purchase = "";
    String branchcode = "";
    StringBuffer sql = new StringBuffer();
    
    if(SIUtil.isNull(this.getOrderCode())||this.variableCodes==null||this.variableCodes.length<1) return res;
    
    try{
      for (int i=0;i<this.variableCodes.length;i++){
        sql = new StringBuffer();
        sql.append("SELECT price,purchaseprice,orderbranchcode FROM orderDetailLatestVW ");
        sql.append("WHERE individualcode=").append(SIDBUtil.SQL2Str(this.variableCodes[i]," "));
        sql.append("AND ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()));
        
        lStatement = lConnection.createStatement();
        lResultSet = lStatement.executeQuery(sql.toString());
        
      if(lResultSet.next()){
        price = lResultSet.getString("price");
        purchase = lResultSet.getString("purchaseprice");
        branchcode = lResultSet.getString("orderbranchcode");
        
        SIModifyRec lRec0 = new SIModifyRec("orderDetailTbl");
        lRec0.addCondition("ordercode", this.getOrderCode());
        lRec0.addCondition("orderbranchcode", branchcode);
        lRec0.addCondition("individualcode", this.variableCodes[i]);
        if(!this.variablePrice[i].equals(price)){
          lRec0.add("price", this.variablePrice[i]);
          lRec0.add("orgprice", this.variablePrice[i]);
          res = true;
          if(!this.variablePurchase.equals(purchase)){
            lRec0.add("purchaseprice", this.variablePurchase[i]);
          }
          lRec0.execute(lConnection);
        }else if(!this.variablePurchase.equals(purchase)){
          lRec0.add("purchaseprice", this.variablePurchase[i]);
          lRec0.execute(lConnection);
        }
      }
      }
      if(res){//価格が変わる場合、ポイント・FRM再計算
        sql = new StringBuffer();
        sql.append("SELECT custcode FROM orderlatestvw WHERE ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()));
        this.setCustCode(SIDBUtil.getFirstData(lConnection, sql.toString()));
        
        sql = new StringBuffer();
        sql.append("SELECT individualcode,price*amount AS totalofprice FROM orderDetailLatestVW ");
        sql.append("WHERE ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()));
        
        lStatement = lConnection.createStatement();
        lResultSet = lStatement.executeQuery(sql.toString());
        StringBuffer codes = new StringBuffer();
        StringBuffer total = new StringBuffer();
        
        while(lResultSet.next()){
          if(SIUtil.isNotNull(codes.toString())){
            codes.append(",");
            total.append(",");
          }
          codes.append(lResultSet.getString("individualcode"));
          total.append(lResultSet.getString("totalofprice"));
        }
        
        String[] ic = codes.toString().split(",");
        String[] ct = total.toString().split(",");
        String[][] pointData = new String[ic.length][2];
        for (int count=0;count<ic.length;count++){
          pointData[count][0] = ic[count];
          pointData[count][1] = ct[count];
        }
        
        // ポイントルールは常にモールを使用する。
        SIPointRule lPointRule = new SIPointRule(SIConfig.SIMALL.getMallShopCode());
        lPointRule.reset(lConnection);
        
        // ポイント付加
        sql = new StringBuffer();
        sql.append("SELECT DISTINCT ordercode FROM orderlatestvw ");
        sql.append("WHERE ordercode<>").append(SIDBUtil.SQL2Str(this.getOrderCode(), " "));
        sql.append("AND custcode=").append(SIDBUtil.SQL2Str(this.getCustCode(), " "));
        sql.append("AND status='1'");// 初めて購入
        
        String lPoint = "0";
        String lDiscountPrice = SIUtil.add(this.getSumOfDiscount(), this.getSumByPoint());
        try {
          if (SIUtil.isNotNull(SIDBUtil.getFirstData(lConnection, sql.toString()))) {
            lPoint = lPointRule.calcPointInUpdateOrder(lConnection, pointData, lDiscountPrice, this.getCustCode(), false, this.getInitDateTime());
          } else {
            lPoint = lPointRule.calcPointInUpdateOrder(lConnection, pointData, lDiscountPrice, this.getCustCode(), true, this.getInitDateTime());
          }
        } catch (SIDBAccessException e1) {
          e1.printStackTrace();
        }
        SIDeleteRec lRec1 = new SIDeleteRec("PointManMTBL");
        lRec1.addCondition("custcode", this.getCustCode()); // 顧客コード
        lRec1.addCondition("ordercode", this.getOrderCode()); // 受注番号
        lRec1.execute(lConnection);
        
        SIDateTime lDateTime = new SIDateTime();
        SIInsertRec lRec2 = new SIInsertRec("PointManMTBL");
        lRec2.add("custcode", this.getCustCode()); // 顧客コード
        lRec2.add("mallshopcode", "0"); // 管理コード
        lRec2.add("issueflg", "0"); // 発行種別フラグ
        lRec2.add("pointofissue", "-" + this.getSumByPoint()); // 発行／使用ポイント数
        lRec2.add("enableflg", "2"); // 有効フラグ(仮発行)
        lRec2.add("ordercode", this.getOrderCode()); // 受注番号
        lRec2.add("issuedatetime", lDateTime.getFullDateTime()); // 更新日時
        if(!this.getSumByPoint().equals("0")){
          lRec2.execute(lConnection);
        }
        
        lRec2 = new SIInsertRec("PointManMTBL");
        lRec2.add("custcode", this.getCustCode()); // 顧客コード
        lRec2.add("mallshopcode", "0"); // 管理コード
        lRec2.add("issueflg", "0"); // 発行種別フラグ
        lRec2.add("pointofissue", lPoint); // 発行／使用ポイント数
        lRec2.add("enableflg", "2"); // 有効フラグ(仮発行)
        lRec2.add("ordercode", this.getOrderCode()); // 受注番号
        lRec2.add("issuedatetime", lDateTime.getFullDateTime()); // 更新日時
        lRec2.execute(lConnection);
        
        sql = new StringBuffer();
        sql.append("SELECT totalofprice FROM ordersumvw WHERE ordercode=").append(SIDBUtil.SQL2Str(this.getOrderCode()));
        String totalOfPrice = SIDBUtil.getFirstData(lConnection, sql.toString());
        
        SIModifyRec lRec3 = new SIModifyRec("rfmanalysetbl");
        lRec3.addCondition("custcode", this.getCustCode()); // 顧客コード
        lRec3.addCondition("ordercode", this.getOrderCode()); // 受注番号
        lRec3.add("sumofprice", totalOfPrice);
        lRec3.execute(lConnection);
        
      }
    }catch(Exception e){
      throw new SIDBAccessException();
    }finally{
      SIDBUtil.close(lResultSet, lStatement);
    }
    return res;
  }
  
  public void initMemo(SIURLParameter urlParam) {
    this.memoBean.setCommentNumber((String) urlParam.getParam("commentNumber"));
    this.memoBean.setMemo((String) urlParam.getParam("purchaseMemo"));
    this.memoBean.setMemoStatus((String) urlParam.getParam("memoStatus"));
  }
  
  public UIPurchaseHistoryMemo getMemoBean(){
    return memoBean;
  }
  
  public void resetMemo(){
    memoBean = new UIPurchaseHistoryMemo();
  }
  
  public void createMemo(Connection lConnection, String userName) {
    SIDateTime lDate = new SIDateTime();
    String time = lDate.getFullDateTime();
    try{
      if(SIUtil.isNull(memoBean.getCommentNumber())){
        String num = SIDBUtil.getFirstData(lConnection, "SELECT max(CommentNumber)+1 FROM purchaseCommentTbl WHERE custcode = "+SIDBUtil.SQL2Str(this.getCustCode()));
        if (SIUtil.isNull(num)) num="1";
        SIInsertRec iRec = new SIInsertRec("purchaseCommentTbl");
        iRec.add("CustCode", this.getCustCode());
        iRec.add("CommentNumber", num);
        iRec.add("InitDateTime", time);
        iRec.add("UpdateDateTime", time);
        iRec.add("UserName", userName);
        iRec.add("Comment", memoBean.getMemo());
        iRec.add("MemoStatus", memoBean.getMemoStatus());
        iRec.execute(lConnection);
      }else{
        SIModifyRec mRec = new SIModifyRec("purchaseCommentTbl");
        mRec.addCondition("CustCode", this.getCustCode());
        mRec.addCondition("CommentNumber", memoBean.getCommentNumber());
        mRec.add("UpdateDateTime", time);
        mRec.add("Comment", memoBean.getMemo());
        mRec.add("MemoStatus", memoBean.getMemoStatus());
        mRec.add("LastUpdateUserName", userName);
        mRec.execute(lConnection);
      }
      lConnection.commit();
    }catch(Exception e){
      e.printStackTrace();
    }
  }
  
  public void deleteMemo(Connection lConnection) {
    try{
        SIDeleteRec dRec = new SIDeleteRec("purchaseCommentTbl");
        dRec.addCondition("CustCode", this.getCustCode());
        dRec.addCondition("CommentNumber", memoBean.getCommentNumber());
        dRec.execute(lConnection);
      lConnection.commit();
    }catch(Exception e){
      e.printStackTrace();
    }
  }
//EDBTG003-00 elecs-matsushima add start
  public LinkedHashMap getOrderAllocationMap(HttpSession session, String orderCode){
    
    LinkedHashMap cartDetailMap = (LinkedHashMap) session.getAttribute(SIConfig.SISESSION_CART_DETAIL_NAME);
    LinkedHashMap allocationMap = new LinkedHashMap();
    
    if (cartDetailMap != null){
      SIOrderDetail lOrderDetail = new SIOrderDetail();
      
      for (Iterator iteCartDetailMap = cartDetailMap.keySet().iterator();iteCartDetailMap.hasNext(); ){
        String cartDetailKey = (String) iteCartDetailMap.next();
        lOrderDetail = (SIOrderDetail) cartDetailMap.get(cartDetailKey);
        
        if (lOrderDetail.getAllocationMap() != null && lOrderDetail.getAllocationMap().size() > 0){
          allocationMap.put(orderCode+"_"+lOrderDetail.getCmdtyCode()+"_"+lOrderDetail.getIndividualCode()+"_"+lOrderDetail.getSetCode()+"_"+lOrderDetail.getSetDetailFlg(), lOrderDetail.getAllocationMap());
        }
      }
    }
    
    return allocationMap;
  }
//EDBTG003-00 elecs-matsushima add end
}