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

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

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SIBasic;
import jp.co.sint.basic.SIInquiry;
import jp.co.sint.basic.SILogin;
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.SITableCondition;
import jp.co.sint.database.SITableConditionManager;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIURLParameter;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;


public class UIInquiryListCond extends SIBasic {
  //ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  //管理番号
  private String managementNumber ="";
  //管理番号（年）
  private String managementHeader ="";
  //管理番号（サブナンバー）
  private String managementSub ="";
  //希望製品カテゴリ
  private String hopeProduct ="";
  //希望商品名
  private String hopeCommodityName ="";
  //希望数量
  private String hopeAmount ="";
  //希望納品期日（年）
  private String hopeDeliveryDateYear ="";
  //希望納品期日（月）
  private String hopeDeliveryDateMonth ="";
  //希望納品期日（日）
  private String hopeDeliveryDateDay ="";
  //希望対応方法
  private String methodForHope ="";
  //お客様名
  private String custName ="";
  //お客様名カナ
  private String custPronName ="";
  //都道府県
  private String address1 ="";
  //メールアドレス
  private String email ="";
  //問合せ形態
  private String inquiryFormFlg ="";
  //店舗電話番号
  private String storeTel ="";
  //連絡先電話番号
  private String tel ="";
  //サロン名
  private String salonName ="";
  //受付日FROM（年）
  private String acceptanceDateYearFrom ="";
  //受付日FROM（月）
  private String acceptanceDateMonthFrom ="";
  //受付日FROM（日）
  private String acceptanceDateDayFrom ="";
  //受付日TO（年）
  private String acceptanceDateYearTo ="";
  //受付日TO（月）
  private String acceptanceDateMonthTo ="";
  //受付日TO（日）
  private String acceptanceDateDayTo ="";
  //対応状況
  private String correspondingFlg[] = new String[0];
  //支店コード
  private String branchCode ="";
  //担当者コード
  private String chargeCode = "";
  //SQL検索時の条件文
  private String conditionSQL = "";
  private String conditionMember="";

  /**
   * UIInquiryListCond
   * コンストラクタ
   * @param なし
   * @return なし
   * @throws なし
   */
  public UIInquiryListCond() {
    String[] corresponding = {"0","1","2","3"};
    this.correspondingFlg = corresponding;
    this.conditionSQL = " AND a.CorrespondingFlg IN ('0','1','2','3') ";
  }

  /**
   * UIInquiryListCond
   * コンストラクタ
   * @param lRequest リクエスト
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public UIInquiryListCond(HttpServletRequest lRequest,SIURLParameter lUrlParam){
    this.init(lRequest,lUrlParam);
  }
  /**
   * @return correspondingFlg を戻します。
   */
  public String[] getCorrespondingFlg() {
      return correspondingFlg;
  }
  /**
   * @return custName を戻します。
   */
  public String getCustName() {
      return custName;
  }
  /**
   * @return hopeAmount を戻します。
   */
  public String getHopeAmount() {
      return hopeAmount;
  }
  /**
   * @return hopeCommodityName を戻します。
   */
  public String getHopeCommodityName() {
      return hopeCommodityName;
  }
  /**
   * @return hopeProduct を戻します。
   */
  public String getHopeProduct() {
      return hopeProduct;
  }
  /**
   * @return managementNumber を戻します。
   */
  public String getManagementNumber() {
      return managementNumber;
  }
  /**
   * @return managementHeader を戻します。
   */
  public String getManagementHeader() {
      return managementHeader;
  }
  /**
   * @return managementSub を戻します。
   */
  public String getManagementSub() {
      return managementSub;
  }
  /**
   * @return methodForHope を戻します。
   */
  public String getMethodForHope() {
      return methodForHope;
  }
  /**
   * @return salonName を戻します。
   */
  public String getSalonName() {
      return salonName;
  }
  /**
   * @return storeTel を戻します。
   */
  public String getStoreTel() {
      return storeTel;
  }
  /**
   * @return tel を戻します。
   */
  public String getTel() {
      return tel;
  }
  /**
   * @param correspondingFlg correspondingFlg を設定。
   */
  public void setCorrespondingFlg(String[] correspondingFlg) {
    if (correspondingFlg == null) correspondingFlg = new String[0];
    this.correspondingFlg = correspondingFlg;
  }
  /**
   * @param custName custName を設定。
   */
  public void setCustName(String custName) {
      this.custName = custName;
  }
  /**
   * @param hopeAmount hopeAmount を設定。
   */
  public void setHopeAmount(String hopeAmount) {
      this.hopeAmount = hopeAmount;
  }
  /**
   * @param hopeCommodityName hopeCommodityName を設定。
   */
  public void setHopeCommodityName(String hopeCommodityName) {
      this.hopeCommodityName = hopeCommodityName;
  }
  /**
   * @param hopeProduct hopeProduct を設定。
   */
  public void setHopeProduct(String hopeProduct) {
      this.hopeProduct = hopeProduct;
  }
  /**
   * @param managementNumber managementNumber を設定。
   */
  public void setManagementNumber(String managementNumber) {
      this.managementNumber = managementNumber;
  }
  /**
   * @param managementHeader managementHeader を設定。
   */
  public void setManagementHeader(String managementHeader) {
    if(SIUtil.isNull(managementHeader)) this.managementHeader="";
    this.managementHeader = managementHeader;
  }
  /**
   * @param managementSub managementSub を設定。
   */
  public void setManagementSub(String managementSub) {
    if(SIUtil.isNull(managementSub)) this.managementSub="";
    this.managementSub = managementSub;
  }
  /**
   * @param methodForHope methodForHope を設定。
   */
  public void setMethodForHope(String methodForHope) {
      this.methodForHope = methodForHope;
  }
  /**
   * @param salonName salonName を設定。
   */
  public void setSalonName(String salonName) {
      this.salonName = salonName;
  }
  /**
   * @param storeTel storeTel を設定。
   */
  public void setStoreTel(String storeTel) {
      this.storeTel = storeTel;
  }
  /**
   * @param tel tel を設定。
   */
  public void setTel(String tel) {
      this.tel = tel;
  }
  /**
   * @return branchCode を戻します。
   */
  public String getBranchCode() {
      return branchCode;
  }
  /**
   * @return chargeCode を戻します。
   */
  public String getChargeCode() {
      return chargeCode;
  }
  /**
   * @param branchCode branchCode を設定。
   */
  public void setBranchCode(String branchCode) {
      this.branchCode = branchCode;
  }
  /**
   * @param chargeCode chargeCode を設定。
   */
  public void setChargeCode(String chargeCode) {
      this.chargeCode = chargeCode;
  }
  /**
   * @return acceptanceDateDayFrom を戻します。
   */
  public String getAcceptanceDateDayFrom() {
      return acceptanceDateDayFrom;
  }
  /**
   * @return acceptanceDateDayTo を戻します。
   */
  public String getAcceptanceDateDayTo() {
      return acceptanceDateDayTo;
  }
  /**
   * @return acceptanceDateMonthFrom を戻します。
   */
  public String getAcceptanceDateMonthFrom() {
      return acceptanceDateMonthFrom;
  }
  /**
   * @return acceptanceDateMonthTo を戻します。
   */
  public String getAcceptanceDateMonthTo() {
      return acceptanceDateMonthTo;
  }
  /**
   * @return acceptanceDateYearFrom を戻します。
   */
  public String getAcceptanceDateYearFrom() {
      return acceptanceDateYearFrom;
  }
  /**
   * @return acceptanceDateYearTo を戻します。
   */
  public String getAcceptanceDateYearTo() {
      return acceptanceDateYearTo;
  }
  /**
   * @return hopeDeliverDayDay を戻します。
   */
  public String getHopeDeliveryDateDay() {
      return hopeDeliveryDateDay;
  }
  /**
   * @return hopeDeliverDayMonth を戻します。
   */
  public String getHopeDeliveryDateMonth() {
      return hopeDeliveryDateMonth;
  }
  /**
   * @return hopeDeliverDayYear を戻します。
   */
  public String getHopeDeliveryDateYear() {
      return hopeDeliveryDateYear;
  }
  /**
   * @param acceptanceDateDayFrom acceptanceDateDayFrom を設定。
   */
  public void setAcceptanceDateDayFrom(String acceptanceDateDayFrom) {
      this.acceptanceDateDayFrom = acceptanceDateDayFrom;
  }
  /**
   * @param acceptanceDateDayTo acceptanceDateDayTo を設定。
   */
  public void setAcceptanceDateDayTo(String acceptanceDateDayTo) {
      this.acceptanceDateDayTo = acceptanceDateDayTo;
  }
  /**
   * @param acceptanceDateMonthFrom acceptanceDateMonthFrom を設定。
   */
  public void setAcceptanceDateMonthFrom(String acceptanceDateMonthFrom) {
      this.acceptanceDateMonthFrom = acceptanceDateMonthFrom;
  }
  /**
   * @param acceptanceDateMonthTo acceptanceDateMonthTo を設定。
   */
  public void setAcceptanceDateMonthTo(String acceptanceDateMonthTo) {
      this.acceptanceDateMonthTo = acceptanceDateMonthTo;
  }
  /**
   * @param acceptanceDateYearFrom acceptanceDateYearFrom を設定。
   */
  public void setAcceptanceDateYearFrom(String acceptanceDateYearFrom) {
      this.acceptanceDateYearFrom = acceptanceDateYearFrom;
  }
  /**
   * @param acceptanceDateYearTo acceptanceDateYearTo を設定。
   */
  public void setAcceptanceDateYearTo(String acceptanceDateYearTo) {
      this.acceptanceDateYearTo = acceptanceDateYearTo;
  }
  /**
   * @param hopeDeliverDayDay hopeDeliverDayDay を設定。
   */
  public void setHopeDeliveryDateDay(String hopeDeliveryDateDay) {
      this.hopeDeliveryDateDay = hopeDeliveryDateDay;
  }
  /**
   * @param hopeDeliverDayMonth hopeDeliverDayMonth を設定。
   */
  public void setHopeDeliveryDateMonth(String hopeDeliveryDateMonth) {
      this.hopeDeliveryDateMonth = hopeDeliveryDateMonth;
  }
  /**
   * @param hopeDeliverDayYear hopeDeliverDayYear を設定。
   */
  public void setHopeDeliveryDateYear(String hopeDeliveryDateYear) {
      this.hopeDeliveryDateYear = hopeDeliveryDateYear;
  }
  /**
   * @return conditionMember を戻します。
   */
  public String getConditionMember() {
      return conditionMember;
  }
  /**
   * @return conditionSQL を戻します。
   */
  public String getConditionSQL() {
      return conditionSQL;
  }
  /**
   * @param conditionMember conditionMember を設定。
   */
  public void setConditionMember(String conditionMember) {
      this.conditionMember = conditionMember;
  }
  /**
   * @param conditionSQL conditionSQL を設定。
   */
  public void setConditionSQL(String conditionSQL) {
      this.conditionSQL = conditionSQL;
  }
  
  public String getAddress1() {
    return address1;
  }
  
  public void setAddress1(String address1) {
    this.address1 = address1;
  }
  
  public String getCustPronName() {
    return custPronName;
  }
  
  public void setCustPronName(String custPronName) {
    this.custPronName = custPronName;
  }
  
  public String getEmail() {
    return email;
  }
  
  public void setEmail(String email) {
    this.email = email;
  }
  
  public String getInquiryFormFlg() {
    return inquiryFormFlg;
  }
  
  public void setInquiryFormFlg(String inquiryFormFlg) {
    this.inquiryFormFlg = inquiryFormFlg;
  }
  
  /**
   * <b>init</b>
   * 入力した検索条件に基づいて、このbeansを設定します。
   * @param request クライアントからリクエスト
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public void init(HttpServletRequest lRequest,SIURLParameter lUrlParam){
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    super.init(lRequest,lUrlParam);
    this.setAcceptanceDateYearFrom((String)lUrlParam.getParam("acceptanceDateYearFrom"));
    this.setAcceptanceDateMonthFrom((String)lUrlParam.getParam("acceptanceDateMonthFrom"));
    this.setAcceptanceDateDayFrom((String)lUrlParam.getParam("acceptanceDateDayFrom"));
    this.setAcceptanceDateYearTo((String)lUrlParam.getParam("acceptanceDateYearTo"));
    this.setAcceptanceDateMonthTo((String)lUrlParam.getParam("acceptanceDateMonthTo"));
    this.setAcceptanceDateDayTo((String)lUrlParam.getParam("acceptanceDateDayTo"));
    this.setCorrespondingFlg(lRequest.getParameterValues("correspondingFlg"));
    this.setBranchCode((String)lUrlParam.getParam("branchCode"));
    this.setChargeCode((String)lUrlParam.getParam("chargeCode"));
    this.setHopeProduct((String)lUrlParam.getParam("hopeProduct"));
    this.setHopeDeliveryDateYear((String)lUrlParam.getParam("hopeDeliveryDateYear"));
    this.setHopeDeliveryDateMonth((String)lUrlParam.getParam("hopeDeliveryDateMonth"));
    this.setHopeDeliveryDateDay((String)lUrlParam.getParam("hopeDeliveryDateDay"));
    this.setHopeCommodityName((String)lUrlParam.getParam("hopeCommodityName"));
    this.setSalonName((String)lUrlParam.getParam("salonName"));
    this.setStoreTel((String)lUrlParam.getParam("storeTel"));
    this.setCustName((String)lUrlParam.getParam("custName"));
    this.setCustPronName((String)lUrlParam.getParam("custPronName"));
    this.setAddress1((String)lUrlParam.getParam("address1"));
    this.setEmail((String)lUrlParam.getParam("email"));
    this.setInquiryFormFlg((String)lUrlParam.getParam("inquiryFormFlg"));
    this.setManagementHeader((String)lUrlParam.getParam("managementHeader"));
    this.setManagementSub((String)lUrlParam.getParam("managementSub"));
  }
  

  /**
   * <b>validate</b>
   * 入力された検索条件をチェックし、検索用SQLを作成します。
   * 不正なデータがある場合はエラーメッセージをセットします。
   * @param lRequest リクエスト
   * @return true:エラーがない false:エラーがある
   * @throws なし
   */
  public boolean validate(HttpServletRequest lRequest) {
    SICustomErrors errors = new SICustomErrors();
    SITableConditionManager lConditionMan=new SITableConditionManager();
    
    //管理番号
    if(SIUtil.isNotNull(this.managementHeader+this.managementSub)&&
        SICheckValid.checkValid(errors, "管理番号1", this.managementHeader, SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)
        &SICheckValid.checkValid(errors, "管理番号2", this.managementSub, SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)){
      String managementNumber = this.managementHeader+"_"+this.managementSub;
      lConditionMan.add(new SITableCondition("a","ManagementNumber",managementNumber,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    //受付日FROM
    if (SIUtil.isNotNull(this.acceptanceDateYearFrom) && SIUtil.isNotNull(this.acceptanceDateMonthFrom) && SIUtil.isNotNull(this.acceptanceDateDayFrom)){
      String acceptanceDateFrom = this.acceptanceDateYearFrom+"-"+this.acceptanceDateMonthFrom+"-"+this.acceptanceDateDayFrom;
      lConditionMan.add(new SITableCondition("a","InitDateTime",acceptanceDateFrom,SIConfig.SICONDITION_TYPE_GREATER_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    //受付日TO
    if (SIUtil.isNotNull(this.acceptanceDateYearTo) && SIUtil.isNotNull(this.acceptanceDateMonthTo) && SIUtil.isNotNull(this.acceptanceDateDayTo)){
      String acceptanceDateTo = this.acceptanceDateYearTo+"-"+this.acceptanceDateMonthTo+"-"+this.acceptanceDateDayTo;
      lConditionMan.add(new SITableCondition("a","InitDateTime",acceptanceDateTo,SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //対応状況
    if (this.correspondingFlg != null && this.correspondingFlg.length > 1){
      StringBuffer sql = new StringBuffer(" AND a.CorrespondingFlg IN (");
      for (int i=0;i<this.correspondingFlg.length;i++) {
        if(i>0) sql.append(",");
        sql.append(SIDBUtil.SQL2Str(this.correspondingFlg[i]));
      }
      sql.append(") ");
      lConditionMan.add(new SITableCondition(sql.toString()));
    }
    
    //担当地区
    if (SIUtil.isNotNull(this.branchCode)){
      lConditionMan.add(new SITableCondition("a","BranchCode",this.branchCode,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //担当者
    if (SIUtil.isNotNull(this.chargeCode)){
      lConditionMan.add(new SITableCondition("a","ChargeCode",this.chargeCode,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //カテゴリ
    if (SIUtil.isNotNull(this.hopeProduct)){
      lConditionMan.add(new SITableCondition("a","HopeProduct",this.hopeProduct,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //納期期限
    if (SIUtil.isNotNull(this.hopeDeliveryDateYear) && SIUtil.isNotNull(this.hopeDeliveryDateMonth) && SIUtil.isNotNull(this.hopeDeliveryDateDay)){
      String hopeDeliveryDate = this.hopeDeliveryDateYear+"-"+this.hopeDeliveryDateMonth+"-"+this.hopeDeliveryDateDay;
      lConditionMan.add(new SITableCondition("a","HopeDeliveryDate",hopeDeliveryDate,SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //商品名
    if (SIUtil.isNotNull(this.hopeCommodityName) && SICheckValid.checkValid(errors,"商品名",this.hopeCommodityName,SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100)) {
      lConditionMan.add(new SITableCondition("a","HopeCommodityName",this.hopeCommodityName,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));//7.2.0 ST0547 修正
    }
    
    //店名
    if (SIUtil.isNotNull(this.salonName)&&SICheckValid.checkValid(errors, "店名", this.salonName, SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100)){
      lConditionMan.add(new SITableCondition("a","SalonName",this.salonName,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //電話番号
    if (SIUtil.isNotNull(this.storeTel)&&
        SICheckValid.checkValid(errors, "電話番号", this.storeTel, SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)&
        SICheckValid.checkValid(errors, "電話番号", this.storeTel, SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE,16)){
      lConditionMan.add(new SITableCondition("a","StoreTel",this.storeTel,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //お客様名
    if (SIUtil.isNotNull(this.custName) && SICheckValid.checkValid(errors,"依頼者",this.custName,SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100)) {
      lConditionMan.add(new SITableCondition("a","CustName",this.custName,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //お客様名カナ
    if (SIUtil.isNotNull(this.custPronName) && SICheckValid.checkValid(errors,"依頼者カナ名",this.custPronName,SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100)) {
      lConditionMan.add(new SITableCondition("a","CustPronName",this.custPronName,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //都道府県
    if (SIUtil.isNotNull(this.address1)) {
      lConditionMan.add(new SITableCondition("a","Address1",this.address1,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //メールアドレス
    if (SIUtil.isNotNull(this.email) && SICheckValid.checkValid(errors,"メールアドレス",this.email,SICheckDataConf.SICHECK_DATA_MAIL_TYPE, 128)) {
      lConditionMan.add(new SITableCondition("a","EMail",this.email,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //問合せ形態
    if (SIUtil.isNotNull(this.inquiryFormFlg)) {
      lConditionMan.add(new SITableCondition("a","InquiryFormFlg",this.inquiryFormFlg,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //条件文の設定
    this.setConditionSQL(lConditionMan.getCondtionSQL());
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK,errors);
    else lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK);
    return errors.isEmpty();
    
  }

  /**
   * <b>getCollection</b>
   * 条件に合ったレコードを検索して、結果のコレクションを作成して戻します。
   * @param lConnection コネクション
   * @return レコードのセット
   * @throws SIDBAccessException
   */
  public Collection getCollection(Connection lConnection) throws SIDBAccessException{
    Statement lStatement=null;
    ResultSet lResultSet=null;
    SIInquiry lInquiry = new SIInquiry();
    Collection lInquiryColl = new ArrayList();
    
    StringBuffer lItemBuf = new StringBuffer();
    StringBuffer lCountBuf = new StringBuffer();
    
    //基本のSQL
    lItemBuf.append("SELECT a.* FROM LookForTbl a WHERE 1=1 ").append(this.getConditionSQL());
    lCountBuf.append("SELECT Count(*) FROM LookForTbl a WHERE 1=1 ").append(this.getConditionSQL());
    
    //昇順に並べ替え
    lItemBuf.append(" ORDER BY ManagementNumber DESC");
    
    // 実行
    try {
      String rowCnt = SIDBUtil.getFirstData(lConnection, lCountBuf.toString());
      if (rowCnt.equals("") || rowCnt == null) {
        rowCnt = "0";
      }
      int lRecordCount = Integer.parseInt(rowCnt);// レコード数の取得
      
      int lPageSize = this.getPageSize();// ページサイズ
      int lPageNumber = this.getPageNumer();// ページ番号
      
      int lMaxPage = lRecordCount / lPageSize;
      if (lRecordCount % lPageSize > 0) {
        lMaxPage++;
      }
      if (lPageNumber > lMaxPage) lPageNumber = lMaxPage;
      
      // 開始レコードの番号の設定
      int lFromInx = (lPageNumber - 1) * lPageSize;
      // 終止のレコード番号の設定
      int lToInx = lFromInx + lPageSize - 1;
      if (lFromInx < 0) lFromInx = 0;
      if (lToInx < 0) lToInx = 0;
      
      log.debug("getCollection:lFromInx=" + lFromInx + ",lToInx=" + lToInx + ",lRecordCount=" + lRecordCount);
      
      log.debug("getCollection:lSqlBuf=" + lItemBuf.toString());
      lStatement = lConnection.createStatement();
      lItemBuf.append(" LIMIT ").append(lPageSize);
      if(lFromInx>0) lItemBuf.append(" OFFSET ").append(lFromInx);
      lResultSet = lStatement.executeQuery(lItemBuf.toString());
      
      for (int jj = 0; jj < lFromInx; jj++)
        lInquiryColl.add(null);
      
      int lIndex = 0;
      
      //問合せコレクションの作成
      while (lResultSet.next() && lIndex < lPageSize) {
        lInquiry = new SIInquiry();
        lInquiry.setEncode(SIConfig.SIENCODE_NONE);
        lInquiry.setManagementNumber(lResultSet.getString("ManagementNumber"));
        lInquiry.setAcceptanceDate(lResultSet.getString("InitDateTime"));
        lInquiry.setCorrespondingFlg(lResultSet.getString("CorrespondingFlg"));
        lInquiry.setBranchCode(lResultSet.getString("BranchCode"));
        lInquiry.setChargeCode(lResultSet.getString("ChargeCode"));
        lInquiry.setSalonName(lResultSet.getString("SalonName"));
        lInquiry.setCustName(lResultSet.getString("CustName"));
        lInquiry.setHopeProduct(lResultSet.getString("HopeProduct"));
        lInquiry.setHopeCommodityName(lResultSet.getString("HopeCommodityName"));
        lInquiry.setHopeAmount(lResultSet.getString("HopeAmount"));
        lInquiry.setHopeDeliveryDate(lResultSet.getString("HopeDeliveryDate"));
        lInquiry.setInquiryFormFlg(lResultSet.getString("InquiryFormFlg"));
        lInquiry.setAddress1(lResultSet.getString("address1"));
        lInquiryColl.add(lInquiry);
        lIndex++;
      }
      for (int jj = lFromInx + lPageSize; jj < lRecordCount; jj++) lInquiryColl.add(null);
    }catch(Exception ex){
      throw new SIDBAccessException(ex);
    }finally{
      SIDBUtil.close(lResultSet,lStatement);
    }
    return lInquiryColl;
  }

  /**
   * <b>getBranchCollection</b>
   * プルダウンリスト表示用のコレクションを取得します。
   * @param lConnection コネクション
   * @param flg 「選択してください」表示フラグ
   * @return 検索結果リスト
   * @throws SIDBAccessException
   */
  public Collection getBranchCollection(Connection lConnection) throws SIDBAccessException{
    return getBranchCollection(lConnection,false);
  }
  public Collection getBranchCollection(Connection lConnection,boolean flg) throws SIDBAccessException{
    StringBuffer lSqlBuf = new StringBuffer();
    
    //基本のSQL
    lSqlBuf.append("SELECT BranchName, BranchCode ");
    lSqlBuf.append("FROM BranchTbl ");
    lSqlBuf.append("WHERE BranchFlg='0' ");
    
    //昇順に並べ替え
    lSqlBuf.append("ORDER BY BranchCode ASC");
    
    log.debug("getBranchCollection:lSqlBuf="+lSqlBuf.toString());
    
    Collection lResultColl=new ArrayList();
    
    try {
      if (flg) lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString(),true);
      else lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString(),false,true);
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    return lResultColl;
  }
  
  /**
   * <b>getChargeCollection</b>
   * プルダウンリスト表示用のコレクションを取得します。
   * @param lConnection コネクション
   * @param flg 「選択してください」表示フラグ
   * @return 検索結果リスト
   * @throws SIDBAccessException
   */
  public Collection getChargeCollection(Connection lConnection) throws SIDBAccessException{
    return getChargeCollection(lConnection, false);
  }
  public Collection getChargeCollection(Connection lConnection,boolean flg) throws SIDBAccessException{
    StringBuffer lSqlBuf = new StringBuffer();
    
    //基本のSQL
    lSqlBuf.append("SELECT ChargeName, ChargeCode ");
    lSqlBuf.append("FROM ChargeTbl ");
    
    //昇順に並べ替え
    lSqlBuf.append("ORDER BY BelongingBranchCode ASC");
    
    log.debug("getChargeCollection:lSqlBuf="+lSqlBuf.toString());
    
    Collection lResultColl=new ArrayList();
    
    try {
      if (flg) lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString(),true);
      else lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString(),false,true);
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    return lResultColl;
  }
  
  /**
   * <b>getCtgryCollection</b>
   * プルダウンリスト表示用のコレクションを取得します。
   * @param lConnection コネクション
   * @param flg 「選択してください」表示フラグ
   * @return 検索結果リスト
   * @throws SIDBAccessException
   */
  public Collection getCtgryCollection(Connection lConnection) throws SIDBAccessException{
      return getCtgryCollection(lConnection,false);
  }
  
  public Collection getCtgryCollection(Connection lConnection,boolean flg) throws SIDBAccessException{
    StringBuffer lSqlBuf = new StringBuffer();
    
    //基本のSQL
    lSqlBuf.append("SELECT CtgryName, CtgryCode ");
    lSqlBuf.append("FROM CtgryMTbl ");
    lSqlBuf.append("WHERE ParentCtgryCode = '/'");
    
    //昇順に並べ替え
    lSqlBuf.append("ORDER BY CtgryCode ASC");
    
    log.debug("getCtgryCollection:lSqlBuf="+lSqlBuf.toString());
    
    Collection lResultColl=new ArrayList();
    
    try {
      if (flg) lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString(),true);
      else lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString(),false,true);
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    return lResultColl;
  }
}