/**
 * Created on 2003/09/25
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package jp.co.sint.beans.mallmgr;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SILogin;
import jp.co.sint.basic.SIMallShop;
import jp.co.sint.config.SIConfig;
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.SIDateTime;
import jp.co.sint.tools.SIURLParameter;// 7.1.1 ST0236 追加

import org.apache.log4j.Category;

/**
 * @author arai To change the template for this generated type comment go to Window>Preferences>Java>Code Generation>Code and Comments
 */
public class UIRegMall extends SIMallShop {
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  public UIRegMall() {
    setMallShopFlg(String.valueOf(SIConfig.SIMALLSHOP_MALL_FLAG));
  }
  
  // 締処理対象年
  private String recordDateYear = "";
  
  // 締処理対象月
  private String recordDateMonth = "";
  
  // getter of 締処理対象年
  public String getRecordDateYear() {
    return recordDateYear;
  }
  
  // setter of 締処理対象年
  public void setRecordDateYear(String lRecordDateYear) {
    this.recordDateYear = lRecordDateYear;
  }
  
  // getter of 締処理対象月
  public String getRecordDateMonth() {
    return recordDateMonth;
  }
  
  // setter of 締処理対象月
  public void setRecordDateMonth(String lRecordDateMonth) {
    this.recordDateMonth = lRecordDateMonth;
  }
  
  public String getRecordNextDate() {
    if (!recordDateMonth.equals("12")) {
      return recordDateYear + "-" + SIUtil.add(recordDateMonth, "1") + "-01";
    } else {
      return SIUtil.add(recordDateYear, "1") + "-01-01";
    }
  }
  
  /**
   * init 入力したデータから、このbeansを設定します。
   * 
   * @param SIURLParameter
   * @return なし
   * @throws なし
   */
  // 7.1.1 ST0236 修正 ここから
  public void init(SIURLParameter lUrlParam) {
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    
    this.setMallShopCode((String) lUrlParam.getParam("mallShopCode"));
    this.setStatus((String) lUrlParam.getParam("status"));
    this.setMallShopName((String) lUrlParam.getParam("mallShopName"));
    this.setMallShopNameKana((String) lUrlParam.getParam("mallShopNameKana"));
    // 7.3.0 ST2022 修正 ここから
    // this.setAdminName((String)lUrlParam.getParam("adminName"));
    // this.setAdminPass((String)lUrlParam.getParam("adminPass"));
    this.setAdminName("0");
    this.setAdminPass("0");
    // 7.3.0 ST2022 修正 ここまで
    this.setFrontTitle((String) lUrlParam.getParam("frontShopName"));
    this.setAbbvFrontShopName((String) lUrlParam.getParam("abbvFrontShopName"));
    this.setFrontShopNameKana((String) lUrlParam.getParam("frontShopNameKana"));
    this.setDepartName((String) lUrlParam.getParam("departName"));
    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"));
    this.setTel((String) lUrlParam.getParam("tel"));
    this.setFax((String) lUrlParam.getParam("fax"));
    this.setEmail((String) lUrlParam.getParam("email"));
    this.setChargeUserName((String) lUrlParam.getParam("chargeUserName"));
    // 7.2.0 ST0539 追加 ここから
    this.setCustAttribute0((String) lUrlParam.getParam("custAttribute0"));
    this.setCustAttribute1((String) lUrlParam.getParam("custAttribute1"));
    this.setCustAttribute2((String) lUrlParam.getParam("custAttribute2"));
    // 7.2.0 ST0539 追加 ここまで
    this.setFeeTaxFlg((String) lUrlParam.getParam("feeTaxFlg"));
    this.setDeliveryTaxFlg((String) lUrlParam.getParam("deliveryTaxFlg"));
    this.setPointEnableFlg((String) lUrlParam.getParam("pointEnableFlg"));
    this.setCustCancelEnableFlg((String) lUrlParam.getParam("custCancelEnableFlg")); // 7.2.0 ST0276 追加
    this.setDiscountFromDateYear((String) lUrlParam.getParam("discountFromDateYear"));
    this.setDiscountFromDateMonth((String) lUrlParam.getParam("discountFromDateMonth"));
    this.setDiscountFromDateDay((String) lUrlParam.getParam("discountFromDateDay"));
    this.setDiscountToDateYear((String) lUrlParam.getParam("discountToDateYear"));
    this.setDiscountToDateMonth((String) lUrlParam.getParam("discountToDateMonth"));
    this.setDiscountToDateDay((String) lUrlParam.getParam("discountToDateDay"));
    this.setDiscountRate((String) lUrlParam.getParam("discountRate"));
    this.setInStockFlg((String) lUrlParam.getParam("inStockFlg"));
    this.setDaysOfNew((String) lUrlParam.getParam("daysOfNew"));
    this.setAmountByAdvice((String) lUrlParam.getParam("amountByAdvice"));
    this.setGiftFlg((String) lUrlParam.getParam("giftFlg"));
    this.setUpdateDateTime((String) lUrlParam.getParam("updateDateTime"));
    this.setRankingDispFlg((String) lUrlParam.getParam("rankingDispFlg"));
    this.setRankingFlg((String) lUrlParam.getParam("rankingFlg"));
    this.setRankingCount((String) lUrlParam.getParam("rankingCount"));
    this.setRankingDays((String) lUrlParam.getParam("rankingDays"));
    this.setRankingDateTime((String) lUrlParam.getParam("rankingDateTime"));
    
    // 7.2.0 ST1051 追加 ここから
    this.setDiscountType((String) lUrlParam.getParam("discountType"));
    this.setMemberDiscountType((String) lUrlParam.getParam("memberDiscountType"));
    this.setSalesDiscountType((String) lUrlParam.getParam("salesDiscountType"));
    this.setOrgDiscountType((String) lUrlParam.getParam("orgDiscountType"));
    this.setOrgMemberDiscountType((String) lUrlParam.getParam("orgMemberDiscountType"));
    this.setOrgSalesDiscountType((String) lUrlParam.getParam("orgSalesDiscountType"));
    // 7.2.0 ST1051 追加 ここまで
    
    this.setSSLURL((String) lUrlParam.getParam("sSLURL")); // 7.2.0 ST0299 追加
    
    // 7.2.0 ST0300 追加 ここから
    this.setMdkMerchantID((String) lUrlParam.getParam("mdkMerchantID"));
    this.setMdkSignatureKey((String) lUrlParam.getParam("mdkSignatureKey"));
    this.setMdkPaymentLimitDays((String) lUrlParam.getParam("mdkPaymentLimitDays"));
    // 7.2.0 ST0300 追加 ここまで
    
    this.setRecordDateMonth((String) lUrlParam.getParam("recordDateMonth"));
    this.setRecordDateYear((String) lUrlParam.getParam("recordDateYear"));
    this.setActionNameTxt((String) lUrlParam.getParam("actionNameTxt"));
    this.setEditModeTxt((String) lUrlParam.getParam("editModeTxt"));
    
    if (getActionNameTxt().equals(SIConfig.SIACTION_ZIPDIC) && SIConfig.SIZIP != null) {// 郵便番号から県名と市区町村名を検索
      String lEncode = this.getEncode();// 既存のコードの保存
      this.setEncode(SIConfig.SIENCODE_NONE);
      String lResult = SIConfig.SIZIP.getPrefectureName(getPostCode1(), getPostCode2());// 県名の検索
      if (SIUtil.isNotNull(lResult)) this.setAddress1(lResult);// 県名の設定
      lResult = SIConfig.SIZIP.getAddressName(getPostCode1(), getPostCode2());// 市区町村名の検索
      if (SIUtil.isNotNull(lResult)) this.setAddress2(lResult);// 市区町村名の設定
      this.setEncode(lEncode);// 既存のコードの回復
    }
  }
  
  // 7.1.1 ST0236 修正 ここまで
  /**
   * initRanking ランキングのデータの取得
   * 
   * @param SIURLParameter
   * @return なし
   * @throws なし
   */
  // 7.1.1 ST0236 修正 ここから
  public void initRanking(SIURLParameter lUrlParam) {
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    
    this.setRankingDispFlg((String) lUrlParam.getParam("rankingDispFlg"));
    this.setRankingFlg((String) lUrlParam.getParam("rankingFlg"));
    this.setRankingCount((String) lUrlParam.getParam("rankingCount"));
    this.setRankingDays((String) lUrlParam.getParam("rankingDays"));
    this.setRankingDateTime((String) lUrlParam.getParam("rankingDateTime"));
  }
  
  // 7.1.1 ST0236 修正 ここまで
  
  /**
   * initRecord 締処理のデータの取得
   * 
   * @param SIURLParameter
   * @return なし
   * @throws なし
   */
  public void initRecord(SIURLParameter lUrlParam) {
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    this.setRecordDateMonth((String) lUrlParam.getParam("recordDateMonth"));
    this.setRecordDateYear((String) lUrlParam.getParam("recordDateYear"));
  }
  
  /**
   * validateRanking 入力したランキングデータをチェックします。 不正なデータがある場合、エラーをオブジェクトに格納します。 そのオブジェクトは、エラーメッセージとして画面に表示されます。
   * 
   * @param HttpServletRequest ，Connection
   * @return true:エラーがない false:エラーが１つ以上ある
   * @throws なし
   */
  public boolean validateRanking(HttpServletRequest lRequest, Connection lConnection) {
    SILogin lLogin = SIHTMLUtil.getLogin(lRequest);
    
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    SICustomError err;
    
    if (!lLogin.isMall()) {
      errors.addError(new SICustomError("manager.app.priv.disable"));
    }
    
    SICheckValid.checkValid(errors, "ランキング表示", this.getRankingDispFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング表示", this.getRankingDispFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "ランキング集計項目", this.getRankingFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング集計項目", this.getRankingFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "ランキング対象", this.getRankingCount(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング対象", this.getRankingCount(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 8);
    
    SICheckValid.checkValid(errors, "ランキング集計期間", this.getRankingDays(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング集計期間", this.getRankingDays(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 3);
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  /**
   * validateRecord 入力した締処理日付をチェックします。 不正なデータがある場合、エラーをオブジェクトに格納します。 そのオブジェクトは、エラーメッセージとして画面に表示されます。
   * 
   * @param HttpServletRequest ，Connection
   * @return true:エラーがない false:エラーが１つ以上ある
   * @throws なし
   */
  public boolean validateRecord(HttpServletRequest lRequest, Connection lConnection) {
    SILogin lLogin = SIHTMLUtil.getLogin(lRequest);
    SIDateTime lDate = new SIDateTime();
    
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    
    if (!lLogin.isMall()) {
      errors.addError(new SICustomError("manager.app.priv.disable"));
    }
    
    SICheckValid.checkValid(errors, "締処理対象年", this.getRecordDateYear(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "締処理対象月", this.getRecordDateMonth(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    
    String season = this.getRecordDateYear() + SIUtil.lFillIn(this.getRecordDateMonth(), 2);
    if (errors.isEmpty()) {
      try {
        if (SIDBUtil.hasData(lConnection, "SELECT * FROM inventorytbl WHERE season>='" + season + "'")) errors.addError(new SICustomError("manager.message.error.stockrecord"));
      } catch (Exception e) {
        errors.addError(new SICustomError("manager.message.error.record"));
        e.printStackTrace();
      }
    }
    
    String now = lDate.getYearStr() + lDate.getMonthStr();
    if (Long.parseLong(season) > Long.parseLong(now)) errors.addError(new SICustomError("manager.message.error.record2"));
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  /**
   * validate 入力したデータをチェックします。 不正なデータがある場合、エラーをオブジェクトに格納します。 そのオブジェクトは、エラーメッセージとして画面に表示されます。
   * 
   * @param HttpServletRequest ，Connection
   * @return true:エラーがない false:エラーが１つ以上ある
   * @throws なし
   */
  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;
    
    if (!lLogin.isMall()) {
      errors.addError(new SICustomError("manager.app.priv.disable"));
    }
    
    SICheckValid.checkValid(errors, "管理コード", this.getMallShopCode(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "管理コード", this.getMallShopCode(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 16);
    
    SICheckValid.checkValid(errors, "管理区分", this.getMallShopFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "管理区分", this.getMallShopFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "管理会社名", this.getMallShopName(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "管理会社名", this.getMallShopName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    
    SICheckValid.checkValid(errors, "管理会社名カナ", this.getMallShopNameKana(), SICheckDataConf.SICHECK_DATA_ZENKAKU_KANA_TYPE);
    SICheckValid.checkValid(errors, "管理会社名カナ", this.getMallShopNameKana(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    // 7.3.0 ST2022 削除 ここから
    // SICheckValid.checkValid(errors, "管理者ＩＤ", this.getAdminName(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE);
    // SICheckValid.checkValid(errors, "管理者ＩＤ", this.getAdminName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 16);
    
    // SICheckValid.checkValid(errors, "管理者パスワード", this.getAdminPass(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE);
    // SICheckValid.checkValid(errors, "管理者パスワード", this.getAdminPass(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 16);
    // 7.3.0 ST2022 削除 ここまで
    SICheckValid.checkValid(errors, "ショップ名", this.getFrontTitle(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_ZENKAKU_TYPE);
    SICheckValid.checkValid(errors, "ショップ名", this.getFrontTitle(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 300);
    
    SICheckValid.checkValid(errors, "ショップ略名", this.getAbbvFrontShopName(), SICheckDataConf.SICHECK_DATA_ZENKAKU_TYPE);
    SICheckValid.checkValid(errors, "ショップ略名", this.getAbbvFrontShopName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 20);
    
    SICheckValid.checkValid(errors, "ショップカナ名", this.getFrontShopNameKana(), SICheckDataConf.SICHECK_DATA_ZENKAKU_KANA_TYPE);
    SICheckValid.checkValid(errors, "ショップカナ名", this.getFrontShopNameKana(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    
    SICheckValid.checkValid(errors, "部門名", this.getDepartName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    
    // 7.1.1 ST0162 修正 ここから
    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, "住所1（都道府県）", this.getAddress1(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100);
    
    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.1.1 ST0162 修正 ここまで
    
    SICheckValid.checkValid(errors, "電話番号", this.getTel(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "電話番号", this.getTel(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_TYPE, 9, 16);
    
    SICheckValid.checkValid(errors, "ＦＡＸ番号", this.getFax(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ＦＡＸ番号", this.getFax(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_TYPE, 9, 16);
    
    SICheckValid.checkValid(errors, "メールアドレス", this.getEmail(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_MAIL_TYPE);
    SICheckValid.checkValid(errors, "メールアドレス", this.getEmail(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 128);
    
    SICheckValid.checkValid(errors, "担当者名", this.getChargeUserName(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "担当者名", this.getChargeUserName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 20);
    
    // 7.2.0 ST0539 追加 ここから
    SICheckValid.checkValid(errors, "顧客属性1", this.getCustAttribute0(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE);
    SICheckValid.checkValid(errors, "顧客属性1", this.getCustAttribute0(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50);
    
    // 7.3.0 PI-NES0501 削除 ここから
    /*
     * SICheckValid.checkValid(errors, "顧客属性2", this.getCustAttribute1(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE); SICheckValid.checkValid(errors, "顧客属性2",
     * this.getCustAttribute1(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50); SICheckValid.checkValid(errors, "顧客属性3", this.getCustAttribute2(),
     * SICheckDataConf.SICHECK_DATA_EMPTY_TYPE); SICheckValid.checkValid(errors, "顧客属性3", this.getCustAttribute2(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50);
     */
    // 7.3.0 PI-NES0501 削除 ここまで
    // 7.2.0 ST0539 追加 ここまで
    SICheckValid.checkValid(errors, "手数料消費税", this.getFeeTaxFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "手数料消費税", this.getFeeTaxFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "送料消費税", this.getDeliveryTaxFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "送料消費税", this.getDeliveryTaxFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "ポイントシステム使用", this.getPointEnableFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ポイントシステム使用", this.getPointEnableFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    // 7.2.0 ST0276 追加 ここから
    SICheckValid.checkValid(errors, "顧客キャンセル", this.getCustCancelEnableFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "顧客キャンセル", this.getCustCancelEnableFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    // 7.2.0 ST0276 追加 ここまで
    
    // 7.1.1 ST0162 修正 ここから
    SICheckValid.checkValid(errors, "値引き期間From", this.getDiscountFromDate(), SICheckDataConf.SICHECK_DATA_DATE_TYPE);
    SICheckValid.checkValid(errors, "値引き期間From", this.getDiscountFromDate(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 16);
    
    SICheckValid.checkValid(errors, "値引き期間To", this.getDiscountToDate(), SICheckDataConf.SICHECK_DATA_DATE_TYPE);
    SICheckValid.checkValid(errors, "値引き期間To", this.getDiscountToDate(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 16);
    
    SICheckValid.checkValid(errors, "値引き期間From", "値引き期間To", this.getDiscountFromDate(), this.getDiscountToDate(), SICheckDataConf.SICHECK_DATA_DATE_LESS_EQUAL_TYPE);
    // 7.1.1 ST0162 修正 ここまで
    SICheckValid.checkValid(errors, "値引率", this.getDiscountRate(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "値引率", this.getDiscountRate(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 2);
    
    SICheckValid.checkValid(errors, "在庫数量管理", this.getInStockFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "在庫数量管理", this.getInStockFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "商品新着期間", this.getDaysOfNew(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "商品新着期間", this.getDaysOfNew(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 3);
    
    SICheckValid.checkValid(errors, "おすすめ商品数", this.getAmountByAdvice(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "おすすめ商品数", this.getAmountByAdvice(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 3);
    
    SICheckValid.checkValid(errors, "ギフト取り扱い", this.getGiftFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ギフト取り扱い", this.getGiftFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "ランキング表示", this.getRankingDispFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング表示", this.getRankingDispFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "ランキング集計項目", this.getRankingFlg(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング集計項目", this.getRankingFlg(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 1);
    
    SICheckValid.checkValid(errors, "ランキング対象", this.getRankingCount(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング対象", this.getRankingCount(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 8);
    
    SICheckValid.checkValid(errors, "ランキング集計期間", this.getRankingDays(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ランキング集計期間", this.getRankingDays(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 3);
    
    // 7.2.0 ST0299 追加ここから
    SICheckValid.checkValid(errors, "SSL証明ページURL", this.getSSLURL(), SICheckDataConf.SICHECK_DATA_URL_TYPE);
    SICheckValid.checkValid(errors, "SSL証明ページURL", this.getSSLURL(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 256);
    // 7.2.0 ST0299 追加ここまで
    
    // 7.2.0 ST0300 追加 ここから
    SICheckValid.checkValid(errors, "マーチャントID", this.getMdkMerchantID(), SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "マーチャントID", this.getMdkMerchantID(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 15);
    
    SICheckValid.checkValid(errors, "秘密鍵", this.getMdkSignatureKey(), SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "秘密鍵", this.getMdkSignatureKey(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 256);
    
    SICheckValid.checkValid(errors, "支払期限日数", this.getMdkPaymentLimitDays(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "支払期限日数", this.getMdkPaymentLimitDays(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 2);
    // 7.2.0 ST0300 追加 ここまで
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    return errors.isEmpty();
  }
  
  /**
   * reset 入力したデータを基づいて、このbeansを設定します。
   * 
   * @param request データベースへのコネンクション
   * @return
   * @throws SIDBAccessException
   */
  public void reset(Connection lConnection) {
    Statement lStatement = null;
    ResultSet lResultSet = null;
    StringBuffer lSqlStatement = new StringBuffer();
    
    // 基本のSQL
    lSqlStatement.append(" select * from mallvw ");
    
    int i = 0;
    // 実行
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlStatement.toString());
      
      if (lResultSet.next()) {
        // 配送先送料
        this.setEncode(SIConfig.SIENCODE_NONE);
        
        this.setMallShopCode(lResultSet.getString("mallShopCode"));
        this.setStatus(lResultSet.getString("status"));
        this.setMallShopName(lResultSet.getString("mallShopName"));
        this.setMallShopNameKana(lResultSet.getString("mallShopNameKana"));
        this.setFrontShopName(lResultSet.getString("frontShopName"));
        this.setFrontShopNameKana(lResultSet.getString("frontShopNameKana"));
        this.setAbbvFrontShopName(lResultSet.getString("abbvFrontShopName"));
        // 7.3.0 ST2022 削除 ここから
        // this.setAdminName(lResultSet.getString("adminName"));
        // this.setAdminPass(lResultSet.getString("adminPass"));
        // 7.3.0 ST2022 削除 ここまで
        this.setDepartName(lResultSet.getString("departname"));
        this.setPostCode1(lResultSet.getString("postCode1"));
        this.setPostCode2(lResultSet.getString("postCode2"));
        this.setAddress1(lResultSet.getString("address1"));
        this.setAddress2(lResultSet.getString("address2"));
        this.setAddress3(lResultSet.getString("address3"));
        this.setTel(lResultSet.getString("tel"));
        this.setFax(lResultSet.getString("fax"));
        this.setEmail(lResultSet.getString("email"));
        this.setChargeUserName(lResultSet.getString("chargeusername"));
        // 7.2.0 ST0539 追加 ここから
        this.setCustAttribute0(lResultSet.getString("custAttribute0"));
        this.setCustAttribute1(lResultSet.getString("custAttribute1"));
        this.setCustAttribute2(lResultSet.getString("custAttribute2"));
        // 7.2.0 ST0539 追加 ここまで
        this.setFeeTaxFlg(lResultSet.getString("feeTaxFlg"));
        this.setDeliveryTaxFlg(lResultSet.getString("deliveryTaxFlg"));
        this.setPointEnableFlg(lResultSet.getString("pointEnableflg"));
        this.setCustCancelEnableFlg(lResultSet.getString("custCancelEnableFlg"));// 7.2.0 ST0276 追加
        this.setDiscountFromDate(SIDBUtil.getDate(lResultSet.getTimestamp("discountfromdate")));
        this.setDiscountToDate(SIDBUtil.getDate(lResultSet.getTimestamp("discounttodate")));
        this.setDiscountRate(lResultSet.getString("discountrate"));
        this.setInStockFlg(lResultSet.getString("instockflg"));
        this.setDaysOfNew(lResultSet.getString("daysOfNew"));
        this.setAmountByAdvice(lResultSet.getString("amountbyadvice"));
        this.setGiftFlg(lResultSet.getString("GiftFlg"));
        this.setUpdateDateTime(SIDBUtil.getDateTime(lResultSet.getTimestamp("updatedatetime")));
        this.setRankingDispFlg(lResultSet.getString("RankingDispFlg"));
        this.setRankingFlg(lResultSet.getString("RankingFlg"));
        this.setRankingCount(lResultSet.getString("RankingCount"));
        this.setRankingDays(lResultSet.getString("RankingDays"));
        this.setRankingDateTime(SIDBUtil.getDateTime(lResultSet.getTimestamp("RankingDateTime")));
        // 7.2.0 ST1051 追加 ここから
        this.setDiscountType(lResultSet.getString("DISCOUNTTYPE"));
        this.setMemberDiscountType(lResultSet.getString("MEMBERDISCOUNTTYPE"));
        this.setSalesDiscountType(lResultSet.getString("SALESDISCOUNTTYPE"));
        this.setOrgDiscountType(lResultSet.getString("DISCOUNTTYPE"));
        this.setOrgMemberDiscountType(lResultSet.getString("MEMBERDISCOUNTTYPE"));
        this.setOrgSalesDiscountType(lResultSet.getString("SALESDISCOUNTTYPE"));
        // 7.2.0 ST1051 追加 ここまで
        this.setSSLURL(lResultSet.getString("sSLURL")); // 7.2.0 ST0299 追加
        
        // 7.2.0 ST0300 追加 ここから
        this.setMdkMerchantID(lResultSet.getString("MDKMERCHANTID"));
        this.setMdkSignatureKey(lResultSet.getString("MDKSIGNATUREKEY"));
        this.setMdkPaymentLimitDays(lResultSet.getString("MDKPAYMENTLIMITDAYS"));
        // 7.2.0 ST0300 追加 ここまで
        this.setFrontTitle(lResultSet.getString("fronttitle"));
      }
    } catch (SQLException sqle) {
      sqle.printStackTrace();
    } finally {
      SIDBUtil.close(lResultSet, lStatement);
    }
  }
}
