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

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import jp.co.sint.basic.SICartDetail;
import jp.co.sint.basic.SICartManager;
import jp.co.sint.basic.SICmdtyComposition;
import jp.co.sint.basic.SIKeepDetail;
import jp.co.sint.basic.SILogin;
import jp.co.sint.basic.SIReserveCartManager;
import jp.co.sint.beans.front.UICart;
import jp.co.sint.beans.front.UICasher;
import jp.co.sint.beans.front.UIDeliveryList;
import jp.co.sint.beans.front.UIMain;
import jp.co.sint.beans.front.UIOrderCounter;
import jp.co.sint.beans.front.UIReserve;
import jp.co.sint.beans.front.UIWrapping;
import jp.co.sint.beans.mallmgr.UINewOrderDeli;
import jp.co.sint.beans.mallmgr.UIRegNewOrderCmdty;
import jp.co.sint.beans.mallmgr.UIRegNewOrderCust;
import jp.co.sint.beans.mallmgr.UIRegNewOrderStndrd;
import jp.co.sint.beans.mallmgr.UIRegNewOrderUserLogin;
import jp.co.sint.beans.mallmgr.UIRegReceipt;
import jp.co.sint.bscvsmdk.SIBSCVSMDKException;//7.2.0 ST0300 追加
import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.database.SIDatabaseConnection;
import jp.co.sint.database.SIDateTimeType;
import jp.co.sint.database.SIDuplicateKeyException;
import jp.co.sint.database.SIInsertRec;
import jp.co.sint.database.SIModifyRec;
//import jp.co.sint.mdk.SIMDKAction3G;
import jp.co.sint.mdk.SIMDKAction;
import jp.co.sint.servlet.SIServlet;
import jp.co.sint.servlet.front.SICartSrv;
import jp.co.sint.tools.SICheckUtil;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIDebtPointException;//7.2.0 ST0296追加
import jp.co.sint.tools.SIErrorException;
import jp.co.sint.tools.SIErrorFactory;
import jp.co.sint.tools.SIFatalException;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIMismatchException;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;
import jp.co.sint.tools.SIURLParameter;//7.1.1 ST0236 追加

/**
 * @version $Id: SICartSrv.java,v 1.0 2003/11/24 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/24 14:59:39  Original
 */
public class SIRegNewOrderSrv extends SIServlet{
  //ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  /**
   * <b>doUpdate</b>
   * HTTP リクエストの処理
   * @param  request リクエスト
   * @param  response
   * @return なし
   * @throws ServletException
   * @throws IOException
   */
  public void doUpdate(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    SILogin manLogin=SIHTMLUtil.getLogin(request);
    if(!manLogin.isLogin()){
      forwardKey(request,response,"webshop.jsp.manager.login");
      return;
    }
    HttpSession session=request.getSession(true);//セッションの取得
    SIDatabaseConnection databaseConnection=new SIDatabaseConnection();//DBへのコネクションの作成
    SIURLParameter urlParam = new SIURLParameter(request);//7.1.1 ST0236 追加
    try{
      Connection connection = databaseConnection.getConnection();

      String actionName=this.getActionName(urlParam);//画面からのアクション //7.1.1 ST0236 修正
      String editMode = this.getEditMode(urlParam); //DBへの編集モード //7.1.1 ST0236 修正
      log.debug("doUpdate:actionName="+actionName);
      UIRegNewOrderCust newOrderCust=new UIRegNewOrderCust();

      if(this.getServletPath(request).equals("/mallmgr/newOrderCust")){//顧客選択
        if(SIConfig.SIACTION_LIST.equalsIgnoreCase(actionName)){
        //データの取得とデータのチェック
        newOrderCust.init(request,urlParam);//7.1.1 ST0236 修正
        newOrderCust.initCustCode(urlParam);//7.1.1 ST0236 修正
        newOrderCust.validate(request);
        session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_CUST_LIST_NAME, newOrderCust);
        forwardKey(request,response,"webshop.jsp.manager.new_order_cust");
      }else if(SIConfig.SIACTION_BACK.equalsIgnoreCase(actionName)){//戻る
        try {
          SIReserveCartManager.cancel(request, databaseConnection.getConnection());
          databaseConnection.getConnection().commit();
          SIReserveCartManager.clear(request);
        } catch (Exception e) {
          e.printStackTrace();
        }
        SICartManager.clear(request);
        forwardKey(request, response, "webshop.jsp.manager.new_order_cust");
      }else{//カート情報のクリア
        String pos = (String) urlParam.getParam("mode");
        if(SIUtil.isNotNull(pos)&&pos.equals("pos")){
          try {
            String branch = SIDBUtil.getFirstData(connection, "SELECT belongingBranchCode FROM chargetbl WHERE chargeCode = " + SIDBUtil.SQL2Str(manLogin.getUserCode()));
            if (SIUtil.isNotNull(branch)){
              session.setAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME, branch);
            }
          } catch (Exception e) {
            session.removeAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME);
          }
        } else {
          session.removeAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME);
        }
        
        session.setAttribute(SIConfig.SISESSION_MAN_NAVIGATER_LIST_NAME, SIConfig.SINAVI_ORDER_LIST);
        try {
          SIReserveCartManager.cancel(request, databaseConnection.getConnection());
          databaseConnection.getConnection().commit();
          SIReserveCartManager.clear(request);
        } catch (Exception e) {
          e.printStackTrace();
        }
        SICartManager.clear(request);
        newOrderCust.init(request,urlParam);//7.1.1 ST0236 修正
        session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_CUST_LIST_NAME, newOrderCust);
        forwardKey(request,response,"webshop.jsp.manager.new_order_cust");
      }
    }else if(this.getServletPath(request).equals("/mallmgr/newOrderCmdty")){//商品選択
      if(SIConfig.SIACTION_CMDTY.equalsIgnoreCase(actionName)){//顧客画面から
        UIRegNewOrderUserLogin newOrderUserLogin= new UIRegNewOrderUserLogin();
        //ユーザーのログイン
        if(newOrderUserLogin.init(request,connection,urlParam)){//7.1.1 ST0236 修正
          UIRegNewOrderCmdty newOrderCmdty=new UIRegNewOrderCmdty();
          //データの取得とデータのチェック
          newOrderCmdty.init(request,urlParam);//7.1.1 ST0236 修正
          //ショップ個別決済のときは初期値としてログインユーザーのショップコードをセット。
          if(SIConfig.SIRUNNING_MODE_CURRENT==SIConfig.SIRUNNING_MODE_INDIVIDUAL){
            newOrderCmdty.setShopCodeTxt(manLogin.getMallShopCode());
          }
          newOrderCmdty.validate(request);
          session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_CMDTY_LIST_NAME, newOrderCmdty);
          forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        }else{
          SICustomErrors errors=new SICustomErrors();
          errors.addError(new SICustomError("input.data.check.require","顧客"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
          forwardKey(request,response,"webshop.jsp.manager.new_order_cust");
        }
      }else if(SIConfig.SIACTION_LIST.equalsIgnoreCase(actionName)){//検索
        UIRegNewOrderCmdty newOrderCmdty=new UIRegNewOrderCmdty();
        //データの取得とデータのチェック
        newOrderCmdty.init(request,urlParam);//7.1.1 ST0236 修正
        newOrderCmdty.validate(request);
        //ショップ個別決済のときはショップコードが変更されるとカートをクリアする。
        if(SIConfig.SIRUNNING_MODE_CURRENT==SIConfig.SIRUNNING_MODE_INDIVIDUAL){
          UIRegNewOrderCmdty oldOrderCmdty=(UIRegNewOrderCmdty)session.getAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_CMDTY_LIST_NAME);
          if(!oldOrderCmdty.getShopCodeTxt().equals(newOrderCmdty.getShopCodeTxt()))
          SICartManager.clear(request);
        }
        newOrderCmdty.setScreenFlg("1");
        session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_CMDTY_LIST_NAME, newOrderCmdty);
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
      }else if(SIConfig.SIACTION_CART.equalsIgnoreCase(actionName)){//カートに商品を加える
        UIMain mainID=new UIMain();
        mainID.initCart(urlParam);//7.1.1 ST0236 修正
        String cartAmount = (String)urlParam.getParam("amount"+mainID.getCartIndividualCodeTxt());
        if(SIUtil.isNotNull(cartAmount) && SICheckUtil.isDigit(cartAmount)){
          mainID.setCartAmountTxt(cartAmount);
        }
        SILogin lLogin = SIHTMLUtil.getLogin(request);
        if(lLogin.isShop()){//ショップ管理者の場合には
          mainID.setCartShopCodeTxt(lLogin.getMallShopCode());
        }
        String branch = (String) session.getAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME);
        if (SIUtil.isNull(branch)) {
          mainID.addCart(request,databaseConnection.getConnection(),true);
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.cart"));
        } else {
          if(mainID.addCartPos(request,databaseConnection.getConnection())){
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.cart"));
          } else {
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.error.pos.noitem"));
          }
        }
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
      } else if(SIConfig.SIACTION_ADD.equalsIgnoreCase(actionName)) {
        UIRegNewOrderCmdty newOrderCmdty = (UIRegNewOrderCmdty) session.getAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_CMDTY_LIST_NAME);
        if (newOrderCmdty==null) newOrderCmdty=new UIRegNewOrderCmdty();
        newOrderCmdty.setJanCodeIndividual((String)urlParam.getParam("janCodeIndividual"));
        session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_CMDTY_LIST_NAME, newOrderCmdty);
        UIMain mainID=new UIMain();
        if (mainID.initCartFromJan(connection, urlParam)) {
          String branch = (String) session.getAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME);
          if (SIUtil.isNull(branch)) {
            mainID.addCart(request,databaseConnection.getConnection(),true);
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.cart"));
          } else {
            if(mainID.addCartPos(request,databaseConnection.getConnection())){
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.cart"));
            } else {
              request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.error.pos.noitem"));
            }
          }
          forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        } else {
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("database.query.notexist","商品"));
          forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        }
      } else if (SIConfig.SIACTION_RESERVE.equals(actionName)) {// 予約商品
        try {
          // カート登録
          UIReserve lReserve = new UIReserve();
          lReserve.initCart(urlParam);// 7.1.1 ST0236 修正
          if (lReserve.validateCart(request, connection)) {// 正しい予約商品のチェック
            lReserve.addCart(request, connection);
            // 予約を注文済み状態に変更
            updateReserveOrderStatus(connection, lReserve.getReserveCodeTxt());
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, "カートに追加しました。");
            try {
              databaseConnection.getConnection().commit();
            } catch (SQLException sqle) {}
          }
        } catch (SIDBAccessException sqle) {
          try {
            databaseConnection.getConnection().rollback();
          } catch (SQLException ee) {}
          sqle.printStackTrace();
          SICustomErrors errors = new SICustomErrors();
          errors.addError(new SICustomError("database.execute.error"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
          forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        }
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
      }else if(SIConfig.SIACTION_REFRESH.equalsIgnoreCase(actionName)//リフレシュ
              ||SIConfig.SIACTION_BACK.equalsIgnoreCase(actionName)){//戻る
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
      }else if(SIConfig.SIACTION_CLEAR.equalsIgnoreCase(actionName)){//カートを空にする
        request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME,SIErrorFactory.getErrorMsg("manager.message.success.cart.clear"));
        try {
          SIReserveCartManager.cancel(request, databaseConnection.getConnection());
          databaseConnection.getConnection().commit();
          SIReserveCartManager.clear(request);
        } catch (Exception e) {
          e.printStackTrace();
        }
        SICartManager.clear(request);
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
      } else if (SIConfig.SIACTION_DELETE.equals(actionName)) {// カートに商品の数量を削除
        UICart cart = new UICart();
        cart.init(request, urlParam);
        String delRow = (String) urlParam.getParam("delRowTxt");
        if (SIUtil.isNotNull(delRow)) {
          cart.setAmount0(delRow, "0");
          cart.validate(request, databaseConnection.getConnection());
          session.setAttribute(SIConfig.SISESSION_CART_EDIT_NAME, cart);
        }
        request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.delete"));
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        // EDBTG003-00 nagayoshi add start
      } else if (SIConfig.SIACTION_MODIFY.equals(actionName)) {// カートに商品の数量を修正
        UICart cart = new UICart();
        String modifyRow = (String)urlParam.getParam("modifyRowTxt");
        if (SIUtil.isNotNull(modifyRow)) {
          cart.init(request, urlParam, modifyRow);
          cart.validate(request, databaseConnection.getConnection());
          session.setAttribute(SIConfig.SISESSION_CART_EDIT_NAME, cart);
        }
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
      } else if (SIConfig.SIACTION_COMPOSITIONOPT.equals(actionName)) { // 構成品選択画面からの戻り
        
        /************* 構成品選択セッションを取得 *************/
        
        // セット品ヘッダ情報の取得
        SICmdtyComposition regComposition = (SICmdtyComposition) session.getAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_DATA);
        if (regComposition == null) regComposition = new SICmdtyComposition();
        // セット品選択構成品情報の取得
        ArrayList groupColl = (ArrayList) session.getAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_GROUP_LIST);
        if (groupColl == null) groupColl = new ArrayList();
        // セット品添付品情報の取得
        ArrayList appendedColl = (ArrayList) session.getAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_APPENDED_LIST);
        if (appendedColl == null) appendedColl = new ArrayList();
        // セット品オプション情報の取得
        ArrayList optionColl = (ArrayList) session.getAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_OPTION_LIST);
        if (optionColl == null) optionColl = new ArrayList();
        
        /************* 構成品選択セッションを取得 *************/
        
        /************* 構成品選択セッション削除 *************/
        
        session.removeAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_GROUP_LIST);
        session.removeAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_APPENDED_LIST);
        session.removeAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_OPTION_LIST);
        session.removeAttribute(SIConfig.SISESSION_MAN_COMPOSITIONOPT_DATA);
        
        /************* 構成品選択セッション削除 *************/
        
        /************* 構成品選択パラメータ設定 *************/
        
        UIMain mainID=new UIMain();
        // 構成品選択値から初期パラメータを生成
        urlParam.put("cartShopCodeTxt", regComposition.getShopCode());
        urlParam.put("cartCmdtyCodeTxt", regComposition.getCmdtyCode());
        urlParam.put("cartIndividualCodeTxt", regComposition.getIndividualCode());
        mainID.initCart(urlParam);
        if (!mainID.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_NORMAL)) {
          this.initSetCart(mainID, groupColl, appendedColl, optionColl);
        }
        // 数量設定
        mainID.setCartAmountTxt(regComposition.getAmount());
        
        /************* 構成品選択パラメータ設定 *************/
        
        SILogin lLogin = SIHTMLUtil.getLogin(request);
        if(lLogin.isShop()){//ショップ管理者の場合には
          mainID.setCartShopCodeTxt(lLogin.getMallShopCode());
        }
        String branch = (String) session.getAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME);
        if (SIUtil.isNull(branch)) {
          mainID.addCart(request,databaseConnection.getConnection(),true);
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.cart"));
        } else {
          if(mainID.addCartPos(request,databaseConnection.getConnection())){
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.cart"));
          } else {
            request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.error.pos.noitem"));
          }
        }
        // 商品選択画面へ遷移
        forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        // EDBTG003-00 nagayoshi add end
      }else{
        SICustomErrors errors = new SICustomErrors();
        errors.addError(new SICustomError("manager.app.priv.disable"));
        request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
        forwardKey(request,response,"webshop.jsp.manager.auth.failure");
      }
    }else if(this.getServletPath(request).equals("/mallmgr/newOrderStndrd")){//商品規格
        if(SIConfig.SIACTION_LIST.equalsIgnoreCase(actionName)){//検索
          UIRegNewOrderStndrd newOrderStndrd=new UIRegNewOrderStndrd();
          //データの取得とデータのチェック
          newOrderStndrd.init(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
          session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_STNDRD_LIST_NAME, newOrderStndrd);
          forwardKey(request,response,"webshop.jsp.manager.new_order_stndrd");
        }else if(SIConfig.SIACTION_CART.equalsIgnoreCase(actionName)){//カートに商品を加える
          UIMain mainID=new UIMain();
          mainID.initCart(urlParam);//7.1.1 ST0236 修正
          SILogin lLogin = SIHTMLUtil.getLogin(request);
          if(lLogin.isShop()){//ショップ管理者の場合には
            mainID.setCartShopCodeTxt(lLogin.getMallShopCode());
          }
          mainID.addCart(request,databaseConnection.getConnection(),false);//7.1.1 ST0211 修正
          request.setAttribute(SIConfig.SIMESSAGE_ATTRIBUTE_RESULT_NAME, SIErrorFactory.getErrorMsg("manager.message.success.cart"));
          forwardKey(request,response,"webshop.jsp.manager.new_order_stndrd");
        }
      }else if (this.getServletPath(request).equals("/mallmgr/newOrderReg1")){//レジ１
        //カートのNULLチェック
        SICartManager lChkCartEmpty=(SICartManager)session.getAttribute(SIConfig.SISESSION_CART_INFO_NAME);
        if(lChkCartEmpty==null)lChkCartEmpty=new SICartManager();
        if(Integer.parseInt(lChkCartEmpty.getAmount())<=0){
          SICustomErrors errors=new SICustomErrors();
          errors.addError(new SICustomError("manager.app.cart.zero"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
          forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        }else{
          if(SIUtil.isNull(actionName)){//レジ（配送先・ギフト設定）
            UICart cart=new UICart();
            cart.init(request,urlParam);//7.1.1 ST0236 修正
            session.setAttribute(SIConfig.SISESSION_CART_EDIT_NAME,cart);
            SICartDetail.reset(request,databaseConnection.getConnection());
            UIOrderCounter orderCounter=new UIOrderCounter();
            orderCounter.init(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
            session.setAttribute(SIConfig.SISESSION_ORDER_COUNTER_NAME,orderCounter);
            session.removeAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_DELI);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg1");
          }else if(SIConfig.SIACTION_RETURN.equals(actionName) //決済画面から戻る
                  || SIConfig.SIACTION_REFRESH.equals(actionName)){//配送先選択orギフト包装選択後、画面リフレッシュ
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg1");
          }else if(SIConfig.SIACTION_MODIFY.equals(actionName)){//カートに商品の数量を修正
            UIOrderCounter orderCounter=new UIOrderCounter();
            orderCounter.initDeliveryType(request,databaseConnection.getConnection(),urlParam);
            UINewOrderDeli newOrderDeli = new UINewOrderDeli();
            newOrderDeli.init(request,urlParam);
            if(SIUtil.isNotNull(newOrderDeli.getDelRow())){
              orderCounter.initAmountDel(request,urlParam,newOrderDeli.getDelRow());
            }else{
              orderCounter.initAmount(request,urlParam);//7.1.1 ST0236 修正
            }
            String branchCode = (String) session.getAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME);
            if (SIUtil.isNull(branchCode)) branchCode = "";
            orderCounter.validate(request,databaseConnection.getConnection(),true,false,branchCode);
            SICartDetail.resetDelivery(request,databaseConnection.getConnection(),newOrderDeli.getAddress());
            session.setAttribute(SIConfig.SISESSION_ORDER_COUNTER_NAME,orderCounter);
            session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_DELI,newOrderDeli);

            //カートのNullチェック
            lChkCartEmpty=(SICartManager)session.getAttribute(SIConfig.SISESSION_CART_INFO_NAME);
            if(lChkCartEmpty==null) lChkCartEmpty=new SICartManager();
            if(Integer.parseInt(lChkCartEmpty.getAmount())<=0){
              SICustomErrors errors=new SICustomErrors();
              errors.addError(new SICustomError("manager.app.cart.zero"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
              forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
            }else{
              forwardKey(request,response,"webshop.jsp.manager.new_order_reg1");
            }
          }else if (SIConfig.SIACTION_REGIST.equals(actionName)){//
            UIOrderCounter orderCounter=new UIOrderCounter();
            orderCounter.initDeliveryType(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg1");
          }else if(SIConfig.SIACTION_DELIVERY.equals(actionName)){
            UINewOrderDeli newOrderDeli = new UINewOrderDeli();
            newOrderDeli.init(request,urlParam);
            UICart cart=new UICart();
            cart.init(request,urlParam);
            session.setAttribute(SIConfig.SISESSION_CART_EDIT_NAME,cart);
            SICartDetail.resetDelivery(request,databaseConnection.getConnection(),newOrderDeli.getAddress());
            UIOrderCounter orderCounter=new UIOrderCounter();
            orderCounter.init(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
            session.setAttribute(SIConfig.SISESSION_ORDER_COUNTER_NAME,orderCounter);
            session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_DELI,newOrderDeli);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg1");
          }
        }
      }else if(this.getServletPath(request).equals("/mallmgr/newOrderDelivery")){//配送先選択
        if(SIConfig.SIACTION_LIST.equals(actionName)){
          UIDeliveryList lDeliveryList=new UIDeliveryList();
          lDeliveryList.init(request,urlParam);//7.1.1 ST0236 修正
          session.setAttribute(SIConfig.SISESSION_DELIVERY_LIST_NAME,lDeliveryList);
        }else if(SIConfig.SIACTION_MODIFY.equals(actionName)){//配送ごとに商品の数量を修正
          UIDeliveryList lDeliveryList=new UIDeliveryList();
          lDeliveryList.initAmount(request,urlParam);//7.1.1 ST0236 修正
          lDeliveryList.validate(request,databaseConnection.getConnection(),false);//7.1.1 ST0211 修正
          session.setAttribute(SIConfig.SISESSION_DELIVERY_LIST_NAME,lDeliveryList);
        }
        forwardKey(request,response,"webshop.jsp.manager.new_order_delivery");
      }else if(this.getServletPath(request).equals("/mallmgr/newOrderWrapping")){//ギフト包装選択
        if(SIUtil.isNull(actionName)||SIConfig.SIACTION_LIST.equals(actionName)){
          UIWrapping lWrapping=new UIWrapping();
          lWrapping.init(request,urlParam);//7.1.1 ST0236 修正;
          session.setAttribute(SIConfig.SISESSION_CART_WRAPPING_NAME,lWrapping);
        }else if(SIConfig.SIACTION_MODIFY.equals(actionName)){//ギフトコード選択
          UIWrapping lWrapping=new UIWrapping();
          lWrapping.init(request,urlParam);//7.1.1 ST0236 修正
          lWrapping.validate(request,databaseConnection.getConnection());
          session.setAttribute(SIConfig.SISESSION_CART_WRAPPING_NAME,lWrapping);
        }
        forwardKey(request,response,"webshop.jsp.manager.new_order_wrapping");
      }else if(this.getServletPath(request).equals("/mallmgr/newOrderReg2")//レジ２
             ||this.getServletPath(request).equals("/mallmgr/newOrderCon")){//確認
        //7.1.1 ST0156 修正 ここから
        SICartManager lChkCartEmpty=(SICartManager)session.getAttribute(SIConfig.SISESSION_CART_INFO_NAME);
        if(lChkCartEmpty==null)lChkCartEmpty=new SICartManager();
        if(Integer.parseInt(lChkCartEmpty.getAmount())<=0){
          SICustomErrors errors=new SICustomErrors();
          errors.addError(new SICustomError("manager.app.cart.zero"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
          forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
        }else if(session.getAttribute(SIConfig.SISESSION_CART_DETAIL_NAME)==null){
          //7.1.1 ST0154 修正 ここから
          SICustomErrors errors=new SICustomErrors();
          errors.addError(new SICustomError("input.casher.confirm"));
          request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
          forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
          //7.1.1 ST0154 修正 ここまで
        }else if(SIUtil.isNull(actionName)){//レジ（配送先・ギフト設定）の画面からレジの画面への遷移
          //7.1.1 ST0156 修正 ここまで
          UIOrderCounter orderCounter=new UIOrderCounter();
          UINewOrderDeli newOrderDeli = new UINewOrderDeli();
          newOrderDeli.init(request,urlParam);
          if(SIUtil.isNotNull(newOrderDeli.getDelRow())){
            orderCounter.initAmountDel(request,urlParam,newOrderDeli.getDelRow());
          }else{
            orderCounter.initAmount(request,urlParam);
          }
          String branchCode = (String) session.getAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME);
          if (SIUtil.isNull(branchCode)) branchCode = "";
          
          if(!orderCounter.validate(request,databaseConnection.getConnection(),true,false,branchCode)){
            SICartDetail.resetDelivery(request,databaseConnection.getConnection(),newOrderDeli.getAddress());
            session.setAttribute(SIConfig.SISESSION_ORDER_COUNTER_NAME,orderCounter);
            session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_DELI,newOrderDeli);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg1");
          }else{
            SICartDetail.resetDelivery(request,databaseConnection.getConnection(),newOrderDeli.getAddress());
            lChkCartEmpty=(SICartManager)session.getAttribute(SIConfig.SISESSION_CART_INFO_NAME);
            if(lChkCartEmpty==null) lChkCartEmpty=new SICartManager();
            if(Integer.parseInt(lChkCartEmpty.getAmount())<=0){
              SICustomErrors errors=new SICustomErrors();
              errors.addError(new SICustomError("manager.app.cart.zero"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
              forwardKey(request,response,"webshop.jsp.manager.new_order_cmdty");
            }else{
              UICasher lCasher=new UICasher();
              /*
              UINewOrderDeli newOrderDeli = new UINewOrderDeli();
              newOrderDeli.init(request,urlParam);
              */
              session.setAttribute(SIConfig.SISESSION_MAN_NEW_ORDER_DELI,newOrderDeli);
              orderCounter.calcSum(request,databaseConnection.getConnection(),urlParam);
              if(lCasher.validateDigit2(request,orderCounter)){//7.1.1 ST0236 修正
                lCasher.initDeliveryType(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
                lCasher.setSumByPoint("0");
                lCasher.setSumOfE("0");
                if(SIUtil.isNotNull((String) session.getAttribute(SIConfig.SISESSION_MAN_POS_BRANCH_NAME))){
                  lCasher.setOrderRoute("1");
                  lCasher.setPayMethodName("現金");
                }
                lCasher.validatePayment(request);
                String chargeSql = "SELECT belongingbranchcode FROM chargetbl WHERE chargecode = "+SIDBUtil.SQL2Str(manLogin.getUserCode());
                try{
                  String branch = SIDBUtil.getFirstData(databaseConnection.getConnection(), chargeSql);
                  if(SIUtil.isNotNull(branch)){
                    lCasher.setBranchCode(branch);
                    lCasher.setChargeCode(manLogin.getUserCode());
                  }
                }catch(Exception e){e.printStackTrace();}
                session.setAttribute(SIConfig.SISESSION_CASHER_NAME,lCasher);
                forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
              }else{
                session.setAttribute(SIConfig.SISESSION_CASHER_NAME,lCasher);
                forwardKey(request,response,"webshop.jsp.manager.new_order_reg1");
              }
            }
          }
        }else if (actionName.equals(SIConfig.SIACTION_REFRESH)){//支払方法を選択するときに、このイベントが発生
          UICasher lCasher=new UICasher();
          lCasher.init(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
          lCasher.validatePayment(request);
          session.setAttribute(SIConfig.SISESSION_CASHER_NAME,lCasher);
          forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
        }else if (actionName.equals(SIConfig.SIACTION_REDO)){//ポイント使用額の再計算
          UICasher lCasher=new UICasher();
          lCasher.init(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
          lCasher.validateRedo(request);
          session.setAttribute(SIConfig.SISESSION_CASHER_NAME,lCasher);
          forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
        }else if (actionName.equals(SIConfig.SIACTION_CONFIRM)){//確認画面へ遷移するまえに、データの取得とデータのチェック
          UICasher lCasher=new UICasher();
          lCasher.init(request,databaseConnection.getConnection(),urlParam);//7.1.1 ST0236 修正
          //7.1.1 ST0154 削除 session.setAttribute(SIConfig.SISESSION_CASHER_NAME,lCasher);
          if (lCasher.validate(request,databaseConnection.getConnection(),false)==true){//7.1.1 ST0154 修正
            //7.1.1 ST0154 追加 ここから
            lCasher.setChecked(true);
            session.setAttribute(SIConfig.SISESSION_CASHER_NAME,lCasher);
            //7.1.1 ST0154 追加 ここまで
            forwardKey(request,response,"webshop.jsp.manager.new_order_con");//確認画面へ
          }else{
            //7.1.1 ST0154 追加 ここから
            lCasher.setChecked(false);
            session.setAttribute(SIConfig.SISESSION_CASHER_NAME,lCasher);
            //7.1.1 ST0154 追加 ここまで
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");//編集画面へ
          }
        }else if(actionName.equals(SIConfig.SIACTION_BACK)){//確認からレジ２に戻る。
          forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
        }else if (actionName.equals(SIConfig.SIACTION_REGIST)){//データベースへのレコードの登録
          boolean mailflg=true;
          if(this.getParameter(urlParam,"mailSendFlg").equals("0")) mailflg=false;
          //7.1.1 ST0154 追加 ここから
          UICasher lCasher=(UICasher)session.getAttribute(SIConfig.SISESSION_CASHER_NAME);
          if (lCasher.getChecked()==false){
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("input.casher.confirm"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");//編集画面へ
          }else if (lCasher.validate(request,databaseConnection.getConnection(),false)==false){
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");//編集画面へ
          }else{
          //7.1.1 ST0154 追加 ここまで
            //7.2.0 ST0296 追加ここから
            String lPointManCode ="";
            try{
              lPointManCode = SICartSrv.insertPointTableData(request, databaseConnection.getConnection());
              try{databaseConnection.getConnection().commit();}catch(SQLException sqle){}
            }catch(SIDuplicateKeyException e1){
              e1.printStackTrace();
            }catch(SIDBAccessException e1){
              e1.printStackTrace();
            }
            //7.2.0 ST0296 追加ここまで
          try{
            SICartSrv.RLockForOrderStock(request, databaseConnection.getConnection());//7.2.0 ST0297追加
            SICartSrv.insertOrderTableData(request,databaseConnection.getConnection(),false,lPointManCode,mailflg);//7.2.0 ST0296 修正
            insertPaymentData(request, databaseConnection.getConnection());
            try{databaseConnection.getConnection().commit();}catch(SQLException sqle){}
            SICartManager.clear(request);
            SIReserveCartManager.clear(request, lCasher.getCasherShopCode());
            session.setAttribute(SIConfig.SISESSION_MAN_NEWORDER_MAIL_RESULT_NAME,this.getParameter(urlParam,"mailSendFlg"));
            forwardKey(request,response,"webshop.jsp.manager.new_order_res");
          }catch(SIDuplicateKeyException sqle){
            try{databaseConnection.getConnection().rollback();}catch(SQLException ee){}
            //7.2.0 ST0296 追加ここから
            SICartSrv.deletePointTableData(request,databaseConnection.getConnection(),lPointManCode);
            try{databaseConnection.getConnection().commit();}catch(SQLException ee){}
            //7.2.0 ST0296 追加ここまで
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("database.insert.duplicate"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
          }catch(SIDBAccessException sqle){
            try{databaseConnection.getConnection().rollback();}catch(SQLException ee){}
            //7.2.0 ST0296 追加ここから
            SICartSrv.deletePointTableData(request,databaseConnection.getConnection(),lPointManCode);
            try{databaseConnection.getConnection().commit();}catch(SQLException ee){}
            //7.2.0 ST0296 追加ここまで
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
          }catch(SIMismatchException e){
            e.printStackTrace();
            try{databaseConnection.getConnection().rollback();}catch(SQLException ee){ee.printStackTrace();}
            //7.2.0 ST0296 追加ここから
            SICartSrv.deletePointTableData(request,databaseConnection.getConnection(),lPointManCode);
            try{databaseConnection.getConnection().commit();}catch(SQLException ee){}
            //7.2.0 ST0296 追加ここまで
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("manager.app.price.mismatch"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
          }catch(SIErrorException e){
            e.printStackTrace();
            try{databaseConnection.getConnection().rollback();}catch(SQLException ee){ee.printStackTrace();}
            //7.2.0 ST0296 追加ここから
            SICartSrv.deletePointTableData(request,databaseConnection.getConnection(),lPointManCode);
            try{databaseConnection.getConnection().commit();}catch(SQLException ee){}
            //7.2.0 ST0296 追加ここまで
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("manager.app.card.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
          }catch(SIFatalException e){
            e.printStackTrace();
            try{databaseConnection.getConnection().rollback();}catch(SQLException ee){ee.printStackTrace();}
            //7.2.0 ST0296 追加ここから
            SICartSrv.deletePointTableData(request,databaseConnection.getConnection(),lPointManCode);
            try{databaseConnection.getConnection().commit();}catch(SQLException ee){}
            //7.2.0 ST0296 追加ここまで
            SICustomErrors errors=new SICustomErrors();
            if(e.getExceptionMessage().equals("代金引換できません")){
              errors.addError(new SICustomError("manager.app.sell.nocashback"));
            }else if (e.getExceptionMessage().equals("未契約ブランドの商品が存在するため受注できません")){
              errors.addError(new SICustomError("manager.message.freeword","未契約ブランドの商品が存在するため受注できません。"));
            }else if (e.getExceptionMessage().equals("化粧品購買/販売特約が未契約のため受注できません。")){
              errors.addError(new SICustomError("manager.message.freeword","化粧品購買/販売特約が未契約のため受注できません。"));
            }else if (e.getExceptionMessage().endsWith("購入回数制限のため購入できません。")){
              errors.addError(new SICustomError("manager.message.freeword",e.getExceptionMessage()));
            }else{
              errors.addError(new SICustomError("manager.app.exceed.amount",e.getExceptionMessage()));
            }
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
            //7.2.0 ST0296追加ここから
          }catch(SIDebtPointException e){
            e.printStackTrace();
            try{databaseConnection.getConnection().rollback();}catch(SQLException ee){ee.printStackTrace();}
            SICartSrv.deletePointTableData(request,databaseConnection.getConnection(),lPointManCode);
            try{databaseConnection.getConnection().commit();}catch(SQLException sqle){}
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("input.data.less","ポイント使用額","ポイント残高"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
            forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");
            //7.2.0 ST0296追加ここまで
          }
          //7.2.0 ST0300 追加 ここから
          catch (SIBSCVSMDKException e){
            e.printStackTrace();
            try{databaseConnection.getConnection().rollback();}catch(SQLException ee){ee.printStackTrace();}
            SICartSrv.deletePointTableData(request,databaseConnection.getConnection(),lPointManCode);
            try{databaseConnection.getConnection().commit();}catch(SQLException ee){}
            SICustomErrors errors=new SICustomErrors();
            errors.addError(new SICustomError("manager.app.cvs.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            //SIMDKAction3G.cancelByFailuer(request);
            SIMDKAction.cancelByFailuer(request);
            forwardKey(request, response, "webshop.jsp.front.casher.main");
          }
          //7.2.0 ST0300 追加 ここまで
          }//7.1.1 ST0154 追加
        }else if (actionName.equals(SIConfig.SIACTION_REMODIFY)){
          forwardKey(request,response,"webshop.jsp.manager.new_order_reg2");//編集画面
        }
      } else if (this.getServletPath(request).equals("/mallmgr/newOrderRes")){
        String cashPrice = (String) urlParam.getParam("cashPrice");
        UIRegReceipt receipt = new UIRegReceipt((String) urlParam.getParam("orderCode"));
        receipt.reset(databaseConnection.getConnection());
        if(SIUtil.isNotNull(cashPrice)&&SICheckUtil.isDigit(cashPrice)){
          receipt.setSumOfCashPayment(cashPrice);//現金支払額を書き換える
        }
        receipt.setUserBranch(manLogin.getBelongingBranch(databaseConnection.getConnection()));
        if (SIConfig.SIACTION_RECEIPT.equals(actionName)){
          receipt.setIssueDateTime((String) urlParam.getParam("issueDateTime"));
          receipt.updateReceiptIssue(databaseConnection.getConnection());
        }
        request.setAttribute(SIConfig.SISESSION_MAN_POS_RECEIPT_NAME,receipt);
        forwardKey(request,response,"webshop.jsp.manager.new_order_receipt");
      }
     }catch (SQLException e){
      e.printStackTrace();
      throw new ServletException();
    }catch (NamingException e){
      e.printStackTrace();
      throw new ServletException();
    }finally{
      databaseConnection.close();
    }
  }
  
  private void insertPaymentData(HttpServletRequest lRequest ,Connection lConnection) throws SIDuplicateKeyException,SIDBAccessException{
    UICasher lCasher = (UICasher) lRequest.getSession(true).getAttribute(SIConfig.SISESSION_CASHER_NAME);
    if(lCasher == null) return;
    if(lCasher.getPayMethodName().equals("現金") && !lCasher.getCashPrice().equals("0")){
      String paymentPrice = lCasher.getCashPrice();
      if (!SICheckUtil.isLess(paymentPrice, lCasher.getSumOfF())) {
        paymentPrice = lCasher.getSumOfF();
        SIDateTime lDateTime = new SIDateTime();
        SIModifyRec lModRec = new SIModifyRec("ordertbl");
        lModRec.addCondition("orderCode", lCasher.getOrderCode());
        lModRec.add("ReceiptDate", lDateTime.getFullDate());
        lModRec.execute(lConnection);
      }
      SIDateTime lDateTime = new SIDateTime();
      SIDateTimeType lTimeType = new SIDateTimeType();
      lTimeType = new SIDateTimeType(lDateTime.getFullDate());
      
      SIInsertRec lRec = new SIInsertRec("paymenttbl");
      lRec.add("orderCode", lCasher.getOrderCode());
      lRec.add("paymentnumber", "1");
      lRec.add("paymentprice", paymentPrice);
      lRec.add("paymentfee", "0");
      lRec.add("paymentType", "現金");
      lRec.add("expectedpaymentdate", lTimeType);
      lRec.add("paymentdate", lTimeType);
      lRec.add("status", "0");
      lRec.execute(lConnection);
    }
  }
  

  private void updateReserveOrderStatus(Connection lConnection, String ReserveCode) throws SIDBAccessException {
    try {
      // 予約フラグの更新
      SIModifyRec lRec = new SIModifyRec("ReserveOrderTbl");
      lRec.addCondition("ReserveCode", ReserveCode);// 予約番号
      lRec.add("ReserveFlg", "3");// 予約状態フラグ
      lRec.execute(lConnection);
    } catch (SIDuplicateKeyException e) {
      throw new SIDBAccessException(e);
    } catch (SIDBAccessException e) {
      throw new SIDBAccessException(e);
    }
  }
  
  // EDBTG003-00 nagayoshi add start
  private void initSetCart(UIMain lMainID, ArrayList lGroupColl, ArrayList lAppendedColl, ArrayList lOptionColl) {
//    if (!lMainID.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_SELECTION_SET)) {
//
//    } else {
    // よりどりセット品
    // 構成品選択値から初期パラメータを生成
    // 構成品マップ作成
    String[] param1 = new String[lGroupColl.size()];
    int groupCount = 0;
    String bfDetailCode = "";
    for (int i = 0; i < lGroupColl.size(); i++) {
      // 構成グループ情報1件分を取得
      SIKeepDetail groupDetail = (SIKeepDetail)lGroupColl.get(i);
      String tmpDetailCode = groupDetail.getSetDetailCode();
      if (!tmpDetailCode.equals(bfDetailCode)) {
        groupCount++;
      }
      String amount = "0";
      try {
        amount = SIUtil.div_DD(groupDetail.getAmount(), groupDetail.getSetAmount());
      } catch (Exception e) {}
      StringBuffer detailValue = new StringBuffer();
      detailValue.append(lMainID.getCartShopCodeTxt());
      detailValue.append("~").append(groupDetail.getCmdtyCode());
      detailValue.append("~").append(groupDetail.getIndividualCode());
      detailValue.append("~").append(amount);
      param1[i] = detailValue.toString();
      bfDetailCode = tmpDetailCode;
      }
      lMainID.setCompositionGroupCount(String.valueOf(groupCount));
      lMainID.setCompositionDetail(param1);
      
      // 添付品選択値から初期パラメータを生成
      // 添付品マップ作成
      String[] param2 = new String[lAppendedColl.size()];
      for (int i = 0; i < lAppendedColl.size(); i++) {
        // 構成グループ情報1件分を取得
        SIKeepDetail appendDetail = (SIKeepDetail)lAppendedColl.get(i);
        String amount = "0";
        try {
          amount = SIUtil.div_DD(appendDetail.getAmount(), appendDetail.getSetAmount());
        } catch (Exception e) {}
        StringBuffer detailValue = new StringBuffer();
        detailValue.append(lMainID.getCartShopCodeTxt());
        detailValue.append("~").append(appendDetail.getCmdtyCode());
        detailValue.append("~").append(appendDetail.getIndividualCode());
        detailValue.append("~").append(amount);
        param2[i] = detailValue.toString();
      }
      lMainID.setCompositionAppended(param2);
      
      // オプション選択値から初期パラメータを生成
      // オプション品マップ作成
      String[] param3 = new String[lOptionColl.size()];
      for (int i = 0; i < lOptionColl.size(); i++) {
        // 構成グループ情報1件分を取得
        SIKeepDetail optionDetail = (SIKeepDetail)lOptionColl.get(i);
        String amount = "0";
        try {
          amount = SIUtil.div_DD(optionDetail.getAmount(), optionDetail.getSetAmount());
        } catch (Exception e) {}
        StringBuffer detailValue = new StringBuffer();
        detailValue.append(lMainID.getCartShopCodeTxt());
        detailValue.append("~").append(optionDetail.getCmdtyCode());
        detailValue.append("~").append(optionDetail.getIndividualCode());
        detailValue.append("~").append(amount);
        param3[i] = detailValue.toString();
      }
      lMainID.setCompositionOption(param3);
//    }
      //EDBTG003-00 nagayoshi add end
  }
}
