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

import java.sql.Connection;

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SICmdty;
import jp.co.sint.basic.SILogin;
import jp.co.sint.basic.SIOrderDetail;
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.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIUtil;
import jp.co.sint.tools.SIURLParameter;//7.1.1 ST0236 追加

import org.apache.log4j.Category;

/**
 * @version $Id: UIRegOrderDetail,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 18:21:50  Original
 */
public class UIRegOrderDetail extends SIOrderDetail{

  //ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  private String deliveryTypeName="";

  private String amount="1";

  public UIRegOrderDetail(){
  }

  public void setAmount(String lAmount){
    if (SIUtil.isNull(lAmount))lAmount="1";
    this.amount=lAmount;
  }
  public void setSuperAmount(String lAmount){
    if (SIUtil.isNull(lAmount))lAmount="1";
    super.setAmount(lAmount);
  }

  public void setDeliveryTypeName(String lDeliveryTypeName){
    if (SIUtil.isNull(lDeliveryTypeName)) lDeliveryTypeName="";
    this.deliveryTypeName=SIUtil.changeTo(lDeliveryTypeName.trim(),this.encode);
    super.setDeliveryTypeName(SIUtil.changeTo(lDeliveryTypeName.trim(),this.encode));
  }

  public String getDeliveryTypeName(){
    return this.deliveryTypeName;
  }

  public String getAmount(){
    return this.amount;
  }

  //7.1.1 ST0236 修正　ここから
  public void init(HttpServletRequest lRequest,Connection lConnection,SIURLParameter lUrlParam){
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    super.init(lRequest,lUrlParam);
    this.setOrderCode((String)lUrlParam.getParam("orderCode"));//受注番号
    this.setDeliveryCode((String)lUrlParam.getParam("deliveryCode"));//受注配送先項番
    this.setDetailCode((String)lUrlParam.getParam("detailCode"));//受注明細項番
    this.setShopCode((String)lUrlParam.getParam("shopCode"));//ショップコード
    this.setShopName((String)lUrlParam.getParam("shopName"));//ショップ名
    this.setCmdtyCode((String)lUrlParam.getParam("cmdtyCode"));//商品コード
    this.setCmdtyName((String)lUrlParam.getParam("cmdtyName"));//商品名(必須)
    this.setAmount((String)lUrlParam.getParam("amount"));//数量(必須)
    this.setOrgPrice((String)lUrlParam.getParam("OrgPrice"));//本体価格
    this.setPrice((String)lUrlParam.getParam("price"));//購入価格
    this.setTaxFlg((String)lUrlParam.getParam("taxFlg"));//本体価格税区分
    this.setTaxRate((String)lUrlParam.getParam("taxRate"));//税率
    this.setReCalcFeeFlg((String)lUrlParam.getParam("reCalcFeeFlg"));//送料再計算フラグ
    this.setDeliveryTypeName((String)lUrlParam.getParam("deliveryTypeName"));//配送種別方法
  }
  //7.1.1 ST0236 修正　ここまで

  public boolean validate(HttpServletRequest lRequest,Connection lConnection){
    SILogin lLogin=SIHTMLUtil.getLogin(lRequest);

    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors=new SICustomErrors();
    SICustomError err;

    SICheckValid.checkValid(errors,"数量",this.getAmount(),SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "数量","0",this.getAmount(),"0",SICheckDataConf.SICHECK_DATA_VALUE_GREATER_TYPE);

    if (getActionNameTxt().equalsIgnoreCase(SIConfig.SIACTION_NEW)){
      SICheckValid.checkValid(errors, "ショップコード", this.getShopCode(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
      SICheckValid.checkValid(errors, "親コード", this.getCmdtyCode(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);

      if (SIUtil.isNotNull(this.getShopCode())&& SIUtil.isNotNull(this.getCmdtyCode())){
        SICmdty lCmdty=new SICmdty(getShopCode(),getCmdtyCode());
        if (!lCmdty.reset(lConnection)){
          errors.addError(new SICustomError("database.query.notexist","親コード"));
        }else if (SIUtil.isNotNull(getDeliveryTypeName())){
          //配送方法のチェック
          StringBuffer lSqlBuf=new StringBuffer();
          lSqlBuf.append("SELECT DeliveryTypeName ");
          lSqlBuf.append("FROM DeliveryTypeMTbl").append(SIDBMultiConf.SIALIAS_CURR_NAME).append("aa,");
          lSqlBuf.append("CmdtyMTbl").append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb ");
          lSqlBuf.append("WHERE aa.MallShopCode=bb.ShopCode AND aa.DeliveryTypeCode=bb.DeliveryTypeCode ");
          lSqlBuf.append("AND bb.ShopCode=").append(SIDBUtil.SQL2Str(getShopCode()," "));
          lSqlBuf.append("AND bb.CmdtyCode=").append(SIDBUtil.SQL2Str(getCmdtyCode()," "));
          lSqlBuf.append("AND aa.DeliveryTypeName=").append(SIDBUtil.SQL2Str(getDeliveryTypeName()," "));
          try {
            if (!SIDBUtil.hasData(lConnection,lSqlBuf.toString())){
              errors.addError(new SICustomError("database.query.notexist","配送方法"));
            }
          } catch (SIDBAccessException e) {
            e.printStackTrace();
          }
        }
      }
    }
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
    return errors.isEmpty();
  }
}
