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

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

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Category;

import jp.co.sint.basic.SIBasic;
import jp.co.sint.basic.SILogin;
import jp.co.sint.basic.SIOrder;
import jp.co.sint.basic.SIPayment;
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.SIDateTimeType;
import jp.co.sint.database.SITableCondition;
import jp.co.sint.database.SITableConditionManager;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckUtil;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIException;
import jp.co.sint.tools.SIURLParameter;
import jp.co.sint.tools.SIUtil;

/**
 * @version $Id: UIPayListCond.java,v 1.0 2006/03/27 Exp $
 * @author 入金関連を処理します。 <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>
 *         Hong.M.J 2006/03/27 12:20:42 Original
 */
public class UIPayListCond extends SIBasic {
  
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  // 受注番号(検索条件)
  private String orderCodeTxt = "";
  
  // サロン名(検索条件)
  private String companyName = "";
  
  // 顧客コード(検索条件)
  private String custCode = "";
  
  // 顧客名(検索条件)
  private String custName = "";
  
  // 電話番号(検索条件)
  private String tel = "";
  
  // 顧客名カナ(検索条件)
  private String custPronNameTxt = "";
  
  // 受注対応支店(検索条件)
  private String companyCode = "";
  
  // 担当者コード(検索条件)
  private String chargeCode = "";
  
  // 受注担当者名(検索条件)
  private String chargeName = "";
  
  // 対応支店(検索条件)
  private String companyNameCdo = "0";
  
  // 担当者(検索条件)
  private String chargeNameCdo = "0";
  
  // 受注合計金額(検索条件)
  private String priceTotal = "";
  
  // 入金予定金額(検索条件)
  private String prePaymentTotal = "";
  
  // 入金予定日の年(検索条件)
  private String expectedPaymentDateYearCbo = "";
  
  // 入金予定日の月(検索条件)
  private String expectedPaymentDateMonthCbo = "";
  
  // 入金予定日の日(検索条件)
  private String expectedPaymentDateDayCbo = "";
  
  // 受注日の年(To)(検索条件)
  private String initDateYearToCbo = "";
  
  // 受注日の月(To)(検索条件)
  private String initDateMonthToCbo = "";
  
  // 受注日の日(To)(検索条件)
  private String initDateDayToCbo = "";
  
  // 受注日の年(From)(検索条件)
  private String initDateYearFromCbo = "";
  
  // 受注日の月(From)(検索条件)
  private String initDateMonthFromCbo = "";
  
  // 受注日の日(From)(検索条件)
  private String initDateDayFromCbo = "";
  
  // 出荷日の年(検索条件)
  private String shippmentDateYearCbo = "";
  
  // 出荷日の月(検索条件)
  private String shippmentDateMonthCbo = "";
  
  // 出荷日の日(検索条件)
  private String shippmentDateDayCbo = "";
  
  // 入金状況
  private String receiptFlgRdo = "";
  
  // 支払方法
  private String payMethodNameCbo = "";
  
  // 納品希望日チェック
  private String deliveryDateChk = "0";
  
  // 削除レコード
  private String[] orderCodeChk = new String[0];
  
  // 出荷日設定用の受注コード
  private String[] orderCodeHid = new String[0];
  
  // 検索用のＳＱＬ文
  private String conditionSQL = "";
  
  // ページ番号
  private String pageNumberTxt = "1";
  
  // 検索可能かどうか？
  private boolean searchFlg = false;
  
  // 出荷関連検索を行うか？(配送希望日)
  private boolean deliveryDateFlg = false;
  
  // 出荷関連検索を行うか？(出荷日)
  private boolean shippmentDateFlg = false;
  
  /** メール関連変数* */
  // 入金番号（チェック）
  private String[] paymentNumberChk = new String[0];
  
  // 入金番号（値）
  private String[] paymentNumberHid = new String[0];
  
  // 並び順
  private String orderBySQL = " ORDER BY aa.initDateTime DESC ";
  
  // 入金確認メールか入金督促メールか
  private String mailType = "";
  
  // メール送信フラグ
  private String mailSendFlg = "0";
  
  // 摘要
  private String remarks = "";
  
  private String emailTxt = "";
  
  private String orderCodeFromTxt = "";
  
  private String orderCodeToTxt = "";
  
  private String orderRoute = "";
  
  private String shippmentFlgRdo = "";
  
  // 対応支店リスト使用フラグ
  private boolean branchListEnable = false;
  
  // 担当者リスト使用フラグ
  private boolean chargeListEnable = false;
  
  // 対応支店フラグ
  private String branchFlgCbo = "0";
  
  // 担当者フラグ
  private String chargeFlgCbo = "0";
  
  private String belongingBranchCode = "";
  
  private String individualCode = "";
  
  private String orderStatusRdo = "";// 受注状態
  
  private String conditionSQL2 = "";
  
  private String receivableFlg = "";
  
  private String totalOfPriceFrom = "";
  
  private String totalOfPriceTo = "";
  
  private String totalOfBalanceFrom = "";
  
  private String totalOfBalanceTo = "";
  
  private String salonName = "";
  
  private boolean detailEnable = false;
  
  /**
   * @return chargeCode を戻します。
   */
  public String getChargeCode() {
    return chargeCode;
  }
  
  /**
   * @param chargeCode
   *          chargeCode を設定。
   */
  public void setChargeCode(String chargeCode) {
    if (SIUtil.isNull(chargeCode))
      chargeCode = "";
    this.chargeCode = SIUtil.changeTo(chargeCode.trim(), this.encode);
  }
  
  /**
   * @return chargeName を戻します。
   */
  public String getChargeName() {
    return chargeName;
  }
  
  /**
   * @param chargeName
   *          chargeName を設定。
   */
  public void setChargeName(String chargeName) {
    if (SIUtil.isNull(chargeName))
      chargeName = "";
    this.chargeName = SIUtil.changeTo(chargeName.trim(), this.encode);
  }
  
  /**
   * @return chargeNameCdo を戻します。
   */
  public String getChargeNameCdo() {
    return chargeNameCdo;
  }
  
  /**
   * @param chargeNameCdo
   *          chargeNameCdo を設定。
   */
  public void setChargeNameCdo(String chargeNameCdo) {
    if (SIUtil.isNull(chargeNameCdo))
      chargeNameCdo = "";
    this.chargeNameCdo = SIUtil.changeTo(chargeNameCdo.trim(), this.encode);
  }
  
  /**
   * @return companyCode を戻します。
   */
  public String getCompanyCode() {
    return companyCode;
  }
  
  /**
   * @param companyCode
   *          companyCode を設定。
   */
  public void setCompanyCode(String companyCode) {
    if (SIUtil.isNull(companyCode))
      companyCode = "";
    this.companyCode = SIUtil.changeTo(companyCode.trim(), this.encode);
  }
  
  /**
   * @return companyName を戻します。
   */
  public String getCompanyName() {
    return companyName;
  }
  
  /**
   * @param companyName
   *          companyName を設定。
   */
  public void setCompanyName(String companyName) {
    if (SIUtil.isNull(companyName))
      companyName = "";
    this.companyName = SIUtil.changeTo(companyName.trim(), this.encode);
  }
  
  /**
   * @return companyNameCdo を戻します。
   */
  public String getCompanyNameCdo() {
    return companyNameCdo;
  }
  
  /**
   * @param companyNameCdo
   *          companyNameCdo を設定。
   */
  public void setCompanyNameCdo(String companyNameCdo) {
    if (SIUtil.isNull(companyNameCdo))
      companyNameCdo = "";
    this.companyNameCdo = SIUtil.changeTo(companyNameCdo.trim(), this.encode);
  }
  
  /**
   * @return conditionSQL を戻します。
   */
  public String getConditionSQL() {
    return conditionSQL;
  }
  
  /**
   * @param conditionSQL
   *          conditionSQL を設定。
   */
  public void setConditionSQL(String conditionSQL) {
    if (SIUtil.isNull(conditionSQL))
      conditionSQL = "";
    this.conditionSQL = SIUtil.changeTo(conditionSQL.trim(), this.encode);
  }
  
  /**
   * @return custPronNameTxt を戻します。
   */
  public String getCustPronNameTxt() {
    return custPronNameTxt;
  }
  
  /**
   * @param custPronNameTxt
   *          custPronNameTxt を設定。
   */
  public void setCustPronNameTxt(String custPronNameTxt) {
    if (SIUtil.isNull(custPronNameTxt))
      custPronNameTxt = "";
    this.custPronNameTxt = SIUtil.changeTo(custPronNameTxt.trim(), this.encode);
  }
  
  // getter of 受注日(From)
  public String getInitDateFrom() {
    return SIDateTime.getDate(getInitDateYearFromCbo(), getInitDateMonthFromCbo(), getInitDateDayFromCbo());
  }
  
  /**
   * @return initDateDayFromCbo を戻します。
   */
  public String getInitDateDayFromCbo() {
    return initDateDayFromCbo;
  }
  
  /**
   * @param initDateDayFromCbo
   *          initDateDayFromCbo を設定。
   */
  public void setInitDateDayFromCbo(String initDateDayFromCbo) {
    if (SIUtil.isNull(initDateDayFromCbo))
      initDateDayFromCbo = "";
    this.initDateDayFromCbo = SIUtil.changeTo(initDateDayFromCbo.trim(), this.encode);
  }
  
  /**
   * @return initDateDayToCbo を戻します。
   */
  public String getInitDateDayToCbo() {
    return initDateDayToCbo;
  }
  
  // getter of 受注日(To)
  public String getInitDateTo() {
    return SIDateTime.getDate(getInitDateYearToCbo(), getInitDateMonthToCbo(), getInitDateDayToCbo());
  }
  
  /**
   * @param initDateDayToCbo
   *          initDateDayToCbo を設定。
   */
  public void setInitDateDayToCbo(String initDateDayToCbo) {
    if (SIUtil.isNull(initDateDayToCbo))
      initDateDayToCbo = "";
    this.initDateDayToCbo = SIUtil.changeTo(initDateDayToCbo.trim(), this.encode);
  }
  
  /**
   * @return initDateMonthFromCbo を戻します。
   */
  public String getInitDateMonthFromCbo() {
    return initDateMonthFromCbo;
  }
  
  /**
   * @param initDateMonthFromCbo
   *          initDateMonthFromCbo を設定。
   */
  public void setInitDateMonthFromCbo(String initDateMonthFromCbo) {
    if (SIUtil.isNull(initDateMonthFromCbo))
      initDateMonthFromCbo = "";
    this.initDateMonthFromCbo = SIUtil.changeTo(initDateMonthFromCbo.trim(), this.encode);
  }
  
  /**
   * @return initDateMonthToCbo を戻します。
   */
  public String getInitDateMonthToCbo() {
    return initDateMonthToCbo;
  }
  
  /**
   * @param initDateMonthToCbo
   *          initDateMonthToCbo を設定。
   */
  public void setInitDateMonthToCbo(String initDateMonthToCbo) {
    if (SIUtil.isNull(initDateMonthToCbo))
      initDateMonthToCbo = "";
    this.initDateMonthToCbo = SIUtil.changeTo(initDateMonthToCbo.trim(), this.encode);
  }
  
  /**
   * @return initDateYearFromCbo を戻します。
   */
  public String getInitDateYearFromCbo() {
    return initDateYearFromCbo;
  }
  
  /**
   * @param initDateYearFromCbo
   *          initDateYearFromCbo を設定。
   */
  public void setInitDateYearFromCbo(String initDateYearFromCbo) {
    if (SIUtil.isNull(initDateYearFromCbo))
      initDateYearFromCbo = "";
    this.initDateYearFromCbo = SIUtil.changeTo(initDateYearFromCbo.trim(), this.encode);
  }
  
  /**
   * @return initDateYearToCbo を戻します。
   */
  public String getInitDateYearToCbo() {
    return initDateYearToCbo;
  }
  
  /**
   * @param initDateYearToCbo
   *          initDateYearToCbo を設定。
   */
  public void setInitDateYearToCbo(String initDateYearToCbo) {
    if (SIUtil.isNull(initDateYearToCbo))
      initDateYearToCbo = "";
    this.initDateYearToCbo = SIUtil.changeTo(initDateYearToCbo.trim(), this.encode);
  }
  
  /**
   * @return orderCodeTxt を戻します。
   */
  public String getOrderCodeTxt() {
    return orderCodeTxt;
  }
  
  /**
   * @param orderCodeTxt
   *          orderCodeTxt を設定。
   */
  public void setOrderCodeTxt(String orderCodeTxt) {
    if (SIUtil.isNull(orderCodeTxt))
      orderCodeTxt = "";
    this.orderCodeTxt = SIUtil.changeTo(orderCodeTxt.trim(), this.encode);
  }
  
  /**
   * @return pageNumberTxt を戻します。
   */
  public String getPageNumberTxt() {
    return pageNumberTxt;
  }
  
  /**
   * @param pageNumberTxt
   *          pageNumberTxt を設定。
   */
  public void setPageNumberTxt(String pageNumberTxt) {
    if (SIUtil.isNull(pageNumberTxt))
      pageNumberTxt = "";
    this.pageNumberTxt = SIUtil.changeTo(pageNumberTxt.trim(), this.encode);
  }
  
  /**
   * @return payMethodNameCbo を戻します。
   */
  public String getPayMethodNameCbo() {
    return payMethodNameCbo;
  }
  
  /**
   * @param payMethodNameCbo
   *          payMethodNameCbo を設定。
   */
  public void setPayMethodNameCbo(String payMethodNameCbo) {
    if (SIUtil.isNull(payMethodNameCbo))
      payMethodNameCbo = "";
    this.payMethodNameCbo = SIUtil.changeTo(payMethodNameCbo.trim(), this.encode);
  }
  
  /**
   * @return receiptFlgRdo を戻します。
   */
  public String getReceiptFlgRdo() {
    return receiptFlgRdo;
  }
  
  /**
   * @param receiptFlgRdo
   *          receiptFlgRdo を設定。
   */
  public void setReceiptFlgRdo(String receiptFlgRdo) {
    if (SIUtil.isNull(receiptFlgRdo))
      receiptFlgRdo = "";
    this.receiptFlgRdo = SIUtil.changeTo(receiptFlgRdo.trim(), this.encode);
  }
  
  /**
   * @return searchFlg を戻します。
   */
  public boolean isSearchFlg() {
    return searchFlg;
  }
  
  /**
   * @param searchFlg
   *          searchFlg を設定。
   */
  public void setSearchFlg(boolean searchFlg) {
    this.searchFlg = searchFlg;
  }
  
  /**
   * @return tel を戻します。
   */
  public String getTel() {
    return tel;
  }
  
  /**
   * @param tel
   *          tel を設定。
   */
  public void setTel(String tel) {
    if (SIUtil.isNull(tel))
      tel = "";
    this.tel = SIUtil.changeTo(tel.trim(), this.encode);
  }
  
  /**
   * @return custCode を戻します。
   */
  public String getCustCode() {
    return custCode;
  }
  
  /**
   * @param custCode
   *          custCode を設定。
   */
  public void setCustCode(String custCode) {
    if (SIUtil.isNull(custCode))
      custCode = "";
    this.custCode = SIUtil.changeTo(custCode.trim(), this.encode);
  }
  
  /**
   * @return custName を戻します。
   */
  public String getCustName() {
    return custName;
  }
  
  /**
   * @param custName
   *          custName を設定。
   */
  public void setCustName(String custName) {
    if (SIUtil.isNull(custName))
      custName = "";
    this.custName = SIUtil.changeTo(custName.trim(), this.encode);
  }
  
  /**
   * @return deliveryDateChk を戻します。
   */
  public String getDeliveryDateChk() {
    return deliveryDateChk;
  }
  
  /**
   * @param deliveryDateChk
   *          deliveryDateChk を設定。
   */
  public void setDeliveryDateChk(String deliveryDateChk) {
    if (SIUtil.isNull(deliveryDateChk))
      deliveryDateChk = "0";
    this.deliveryDateChk = SIUtil.changeTo(deliveryDateChk.trim(), this.encode);
  }
  
  /**
   * @return prePaymentTotal を戻します。
   */
  public String getPrePaymentTotal() {
    return prePaymentTotal;
  }
  
  /**
   * @param prePaymentTotal
   *          prePaymentTotal を設定。
   */
  public void setPrePaymentTotal(String prePaymentTotal) {
    if (SIUtil.isNull(prePaymentTotal))
      prePaymentTotal = "";
    this.prePaymentTotal = SIUtil.changeTo(prePaymentTotal.trim(), this.encode);
  }
  
  /**
   * @return expectedPaymentDateDayCbo を戻します。
   */
  public String getExpectedPaymentDateDayCbo() {
    return expectedPaymentDateDayCbo;
  }
  
  /**
   * @param expectedPaymentDateDayCbo
   *          expectedPaymentDateDayCbo を設定。
   */
  public void setExpectedPaymentDateDayCbo(String preReceiptDateDayCbo) {
    if (SIUtil.isNull(preReceiptDateDayCbo))
      preReceiptDateDayCbo = "";
    this.expectedPaymentDateDayCbo = SIUtil.changeTo(preReceiptDateDayCbo.trim(), this.encode);
  }
  
  /**
   * @return expectedPaymentDateMonthCbo を戻します。
   */
  public String getExpectedPaymentDateMonthCbo() {
    return expectedPaymentDateMonthCbo;
  }
  
  /**
   * @param expectedPaymentDateMonthCbo
   *          expectedPaymentDateMonthCbo を設定。
   */
  public void setExpectedPaymentDateMonthCbo(String preReceiptDateMonthCbo) {
    if (SIUtil.isNull(preReceiptDateMonthCbo))
      preReceiptDateMonthCbo = "";
    this.expectedPaymentDateMonthCbo = SIUtil.changeTo(preReceiptDateMonthCbo.trim(), this.encode);
  }
  
  /**
   * @return expectedPaymentDateYearCbo を戻します。
   */
  public String getExpectedPaymentDateYearCbo() {
    return expectedPaymentDateYearCbo;
  }
  
  /**
   * @param expectedPaymentDateYearCbo
   *          expectedPaymentDateYearCbo を設定。
   */
  public void setExpectedPaymentDateYearCbo(String preReceiptDateYearCbo) {
    if (SIUtil.isNull(preReceiptDateYearCbo))
      preReceiptDateYearCbo = "";
    this.expectedPaymentDateYearCbo = SIUtil.changeTo(preReceiptDateYearCbo.trim(), this.encode);
  }
  
  // getter of 入金予定日
  public String getExpectedPaymentDate() {
    return SIDateTime.getDate(getExpectedPaymentDateYearCbo(), getExpectedPaymentDateMonthCbo(), getExpectedPaymentDateDayCbo());
  }
  
  /**
   * @return priceTotal を戻します。
   */
  public String getPriceTotal() {
    return priceTotal;
  }
  
  /**
   * @param priceTotal
   *          priceTotal を設定。
   */
  public void setPriceTotal(String priceTotal) {
    if (SIUtil.isNull(priceTotal))
      priceTotal = "";
    this.priceTotal = SIUtil.changeTo(priceTotal.trim(), this.encode);
  }
  
  /**
   * @return shippmentDateDayCbo を戻します。
   */
  public String getShippmentDateDayCbo() {
    return shippmentDateDayCbo;
  }
  
  /**
   * @param shippmentDateDayCbo
   *          shippmentDateDayCbo を設定。
   */
  public void setShippmentDateDayCbo(String shippmentDateDayCbo) {
    if (SIUtil.isNull(shippmentDateDayCbo))
      shippmentDateDayCbo = "";
    this.shippmentDateDayCbo = SIUtil.changeTo(shippmentDateDayCbo.trim(), this.encode);
  }
  
  /**
   * @return shippmentDateMonthCbo を戻します。
   */
  public String getShippmentDateMonthCbo() {
    return shippmentDateMonthCbo;
  }
  
  /**
   * @param shippmentDateMonthCbo
   *          shippmentDateMonthCbo を設定。
   */
  public void setShippmentDateMonthCbo(String shippmentDateMonthCbo) {
    if (SIUtil.isNull(shippmentDateMonthCbo))
      shippmentDateMonthCbo = "";
    this.shippmentDateMonthCbo = SIUtil.changeTo(shippmentDateMonthCbo.trim(), this.encode);
  }
  
  /**
   * @return shippmentDateYearCbo を戻します。
   */
  public String getShippmentDateYearCbo() {
    return shippmentDateYearCbo;
  }
  
  /**
   * @param shippmentDateYearCbo
   *          shippmentDateYearCbo を設定。
   */
  public void setShippmentDateYearCbo(String shippmentDateYearCbo) {
    if (SIUtil.isNull(shippmentDateYearCbo))
      shippmentDateYearCbo = "";
    this.shippmentDateYearCbo = SIUtil.changeTo(shippmentDateYearCbo.trim(), this.encode);
  }
  
  // getter of 出荷日
  public String getShippmentDate() {
    return SIDateTime.getDate(getShippmentDateYearCbo(), getShippmentDateMonthCbo(), getShippmentDateDayCbo());
  }
  
  /**
   * @return orderCodeChk を戻します。
   */
  public String[] getOrderCodeChk() {
    return orderCodeChk;
  }
  
  /**
   * @param orderCodeChk
   *          orderCodeChk を設定。
   */
  public void setOrderCodeChk(String[] orderCodeChk) {
    this.orderCodeChk = orderCodeChk;
  }
  
  /**
   * @return orderCodeHid を戻します。
   */
  public String[] getOrderCodeHid() {
    return orderCodeHid;
  }
  
  /**
   * @param orderCodeHid
   *          orderCodeHid を設定。
   */
  public void setOrderCodeHid(String[] orderCodeHid) {
    this.orderCodeHid = orderCodeHid;
  }
  
  /**
   * @return orderBySQL を戻します。
   */
  public String getOrderBySQL() {
    return orderBySQL;
  }
  
  /**
   * @param orderBySQL
   *          orderBySQL を設定。
   */
  public void setOrderBySQL(String orderBySQL) {
    if (SIUtil.isNull(orderBySQL))
      orderBySQL = "";
    this.orderBySQL = SIUtil.changeTo(orderBySQL.trim(), this.encode);
  }
  
  /**
   * @return paymentNumberChk を戻します。
   */
  public String[] getPaymentNumberChk() {
    return paymentNumberChk;
  }
  
  /**
   * @param paymentNumberChk
   *          paymentNumberChk を設定。
   */
  public void setPaymentNumberChk(String[] paymentNumberChk) {
    this.paymentNumberChk = paymentNumberChk;
  }
  
  /**
   * @return paymentNumberHid を戻します。
   */
  public String[] getPaymentNumberHid() {
    return paymentNumberHid;
  }
  
  /**
   * @param paymentNumberHid
   *          paymentNumberHid を設定。
   */
  public void setPaymentNumberHid(String[] paymentNumberHid) {
    this.paymentNumberHid = paymentNumberHid;
  }
  
  /**
   * @return mailSendFlg を戻します。
   */
  public String getMailSendFlg() {
    return mailSendFlg;
  }
  
  /**
   * @param mailSendFlg
   *          mailSendFlg を設定。
   */
  public void setMailSendFlg(String mailSendFlg) {
    this.mailSendFlg = mailSendFlg;
  }
  
  /**
   * @return mailType を戻します。
   */
  public String getMailType() {
    return mailType;
  }
  
  /**
   * @param mailType
   *          mailType を設定。
   */
  public void setMailType(String mailType) {
    this.mailType = mailType;
  }
  
  /**
   * @return remarks を戻します。
   */
  public String getRemarks() {
    return remarks;
  }
  
  /**
   * @param remarks
   *          remarks を設定。
   */
  public void setRemarks(String remarks) {
    this.remarks = remarks;
  }
  
  /**
   * @return branchFlgCbo を戻します。
   */
  public String getBranchFlgCbo() {
    return branchFlgCbo;
  }
  
  /**
   * @param branchFlgCbo
   *          branchFlgCbo を設定。
   */
  public void setBranchFlgCbo(String branchFlgCbo) {
    this.branchFlgCbo = branchFlgCbo;
  }
  
  /**
   * @return branchListEnable を戻します。
   */
  public boolean isBranchListEnable() {
    return branchListEnable;
  }
  
  /**
   * @param branchListEnable
   *          branchListEnable を設定。
   */
  public void setBranchListEnable(boolean branchListEnable) {
    this.branchListEnable = branchListEnable;
  }
  
  /**
   * @return chargeFlgCbo を戻します。
   */
  public String getChargeFlgCbo() {
    return chargeFlgCbo;
  }
  
  /**
   * @param chargeFlgCbo
   *          chargeFlgCbo を設定。
   */
  public void setChargeFlgCbo(String chargeFlgCbo) {
    this.chargeFlgCbo = chargeFlgCbo;
  }
  
  /**
   * @return chargeListEnable を戻します。
   */
  public boolean isChargeListEnable() {
    return chargeListEnable;
  }
  
  /**
   * @param chargeListEnable
   *          chargeListEnable を設定。
   */
  public void setChargeListEnable(boolean chargeListEnable) {
    this.chargeListEnable = chargeListEnable;
  }
  
  /**
   * @return deliveryDateFlg を戻します。
   */
  public boolean isDeliveryDateFlg() {
    return deliveryDateFlg;
  }
  
  /**
   * @param deliveryDateFlg
   *          deliveryDateFlg を設定。
   */
  public void setDeliveryDateFlg(boolean deliveryDateFlg) {
    this.deliveryDateFlg = deliveryDateFlg;
  }
  
  /**
   * @return emailTxt を戻します。
   */
  public String getEmailTxt() {
    return emailTxt;
  }
  
  /**
   * @param emailTxt
   *          emailTxt を設定。
   */
  public void setEmailTxt(String emailTxt) {
    this.emailTxt = emailTxt;
  }
  
  /**
   * @return orderCodeFromTxt を戻します。
   */
  public String getOrderCodeFromTxt() {
    return orderCodeFromTxt;
  }
  
  /**
   * @param orderCodeFromTxt
   *          orderCodeFromTxt を設定。
   */
  public void setOrderCodeFromTxt(String orderCodeFromTxt) {
    this.orderCodeFromTxt = orderCodeFromTxt;
  }
  
  /**
   * @return orderCodeToTxt を戻します。
   */
  public String getOrderCodeToTxt() {
    return orderCodeToTxt;
  }
  
  /**
   * @param orderCodeToTxt
   *          orderCodeToTxt を設定。
   */
  public void setOrderCodeToTxt(String orderCodeToTxt) {
    this.orderCodeToTxt = orderCodeToTxt;
  }
  
  /**
   * @return shippmentDateFlg を戻します。
   */
  public boolean isShippmentDateFlg() {
    return shippmentDateFlg;
  }
  
  /**
   * @param shippmentDateFlg
   *          shippmentDateFlg を設定。
   */
  public void setShippmentDateFlg(boolean shippmentDateFlg) {
    this.shippmentDateFlg = shippmentDateFlg;
  }
  
  /**
   * @return orderRoute を戻します。
   */
  public String getOrderRoute() {
    return orderRoute;
  }
  
  /**
   * @param orderRoute
   *          orderRoute を設定。
   */
  public void setOrderRoute(String orderRoute) {
    this.orderRoute = orderRoute;
  }
  
  /**
   * @return shippmentFlgRdo を戻します。
   */
  public String getShippmentFlgRdo() {
    return shippmentFlgRdo;
  }
  
  /**
   * @param shippmentFlgRdo
   *          shippmentFlgRdo を設定。
   */
  public void setShippmentFlgRdo(String shippmentFlgRdo) {
    this.shippmentFlgRdo = shippmentFlgRdo;
  }
  
  /**
   * @return belongingBranchCode を戻します。
   */
  public String getBelongingBranchCode() {
    return belongingBranchCode;
  }
  
  /**
   * @param belongingBranchCode
   *          belongingBranchCode を設定。
   */
  public void setBelongingBranchCode(String belongingBranchCode) {
    this.belongingBranchCode = belongingBranchCode;
  }
  
  /**
   * @return individualCode を戻します。
   */
  public String getIndividualCode() {
    return individualCode;
  }
  
  /**
   * @param individualCode
   *          individualCode を設定。
   */
  public void setIndividualCode(String individualCode) {
    this.individualCode = individualCode;
  }
  
  /**
   * @return orderStatusRdo を戻します。
   */
  public String getOrderStatusRdo() {
    return orderStatusRdo;
  }
  
  /**
   * @param orderStatusRdo
   *          orderStatusRdo を設定。
   */
  public void setOrderStatusRdo(String orderStatusRdo) {
    this.orderStatusRdo = orderStatusRdo;
  }
  
  public String getReceivableFlg() {
    return receivableFlg;
  }
  
  public void setReceivableFlg(String receivableflg) {
    if (SIUtil.isNull(receivableflg)) receivableflg = "";
    this.receivableFlg = receivableflg;
  }
  
  public String getSalonName() {
    return salonName;
  }
  
  public String getTotalOfBalanceFrom() {
    return totalOfBalanceFrom;
  }
  
  public String getTotalOfBalanceTo() {
    return totalOfBalanceTo;
  }
  
  public String getTotalOfPriceFrom() {
    return totalOfPriceFrom;
  }
  
  public String getTotalOfPriceTo() {
    return totalOfPriceTo;
  }
  
  public void setSalonName(String salonName) {
    if (SIUtil.isNull(salonName)) salonName = "";
    this.salonName = salonName;
  }
  
  public void setTotalOfBalanceFrom(String totalOfBalanceFrom) {
    if (SIUtil.isNull(totalOfBalanceFrom)) totalOfBalanceFrom = "";
    this.totalOfBalanceFrom = totalOfBalanceFrom;
  }
  
  public void setTotalOfBalanceTo(String totalOfBalanceTo) {
    if (SIUtil.isNull(totalOfBalanceTo)) totalOfBalanceTo = "";
    this.totalOfBalanceTo = totalOfBalanceTo;
  }
  
  public void setTotalOfPriceFrom(String totalOfPriceFrom) {
    if (SIUtil.isNull(totalOfPriceFrom)) totalOfPriceFrom = "";
    this.totalOfPriceFrom = totalOfPriceFrom;
  }
  
  public void setTotalOfPriceTo(String totalOfPriceTo) {
    if (SIUtil.isNull(totalOfPriceTo)) totalOfPriceTo = "";
    this.totalOfPriceTo = totalOfPriceTo;
  }
  
  /**
   * 初期設定 初期化を設定します。
   * 
   * @param なし
   * @return なし
   * @throws なし
   */
  public UIPayListCond() {
    
    SIDateTime lDateTime = new SIDateTime();
    String Year = Integer.toString(lDateTime.getYear());
    String Month = Integer.toString(lDateTime.getMonth());
    String Day = Integer.toString(lDateTime.getDay());
    
    if (Month.length() == 1)
      Month = "0" + Month;
    if (Day.length() == 1)
      Day = "0" + Day;
    
    // 受注日の年(To)
    this.setInitDateYearToCbo(Year);
    // 受注日の月(To)
    this.setInitDateMonthToCbo(Month);
    // 受注日の日(To)
    this.setInitDateDayToCbo(Day);
    
    // 2週間前の日付をゲットします
    lDateTime.addDay(-14);
    Year = Integer.toString(lDateTime.getYear());
    Month = Integer.toString(lDateTime.getMonth());
    Day = Integer.toString(lDateTime.getDay());
    if (Month.length() == 1)
      Month = "0" + Month;
    if (Day.length() == 1)
      Day = "0" + Day;
    
    // 受注日の年(From)
    this.setInitDateYearFromCbo(Year);
    // 受注日の月(From)
    this.setInitDateMonthFromCbo(Month);
    // 受注日の日(From)
    this.setInitDateDayFromCbo(Day);
    
    // 条件文の設定
    SITableConditionManager lConditionMan = new SITableConditionManager();
    if (SIDBMultiConf.SIDB_CURRENT_INX == SIDBMultiConf.SIDB_POSTGRESQL_INX) {
      lConditionMan.add(new SITableCondition("aa", "initDateTime", getInitDateFrom(), SIConfig.SICONDITION_TYPE_GREATER_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      lConditionMan.add(new SITableCondition("aa", "initDateTime", getInitDateTo() + " 23:59:59", SIConfig.SICONDITION_TYPE_LESS_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    } else {
      lConditionMan.add(new SITableCondition("aa", "initDateTime", new SIDateTimeType(getInitDateFrom()), SIConfig.SICONDITION_TYPE_GREATER_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      lConditionMan.add(new SITableCondition("aa", "initDateTime", new SIDateTimeType(getInitDateTo() + " 23:59:59"), SIConfig.SICONDITION_TYPE_LESS_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    this.setConditionSQL(lConditionMan.getCondtionSQL());// 検索条件設定
  }
  
  public UIPayListCond(HttpServletRequest lRequest, SIURLParameter lUrlParam) {
    init(lRequest, lUrlParam);
  }
  
  /**
   * <b>init</b> 入力したデータを基づいて、このbeansを設定します。
   * 
   * @param request
   *          クライアントからリクエスト
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public void init(HttpServletRequest lRequest, SIURLParameter lUrlParam) {
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    this.searchFlg = true;
    super.init(lRequest, lUrlParam);
    this.setOrderCodeTxt((String) lUrlParam.getParam("orderCodeTxt"));// 受注コード
    this.setCompanyName((String) lUrlParam.getParam("companyName"));// サロン名
    this.setCustCode((String) lUrlParam.getParam("custCode"));// 顧客コード
    this.setCustPronNameTxt((String) lUrlParam.getParam("custPronNameTxt"));// 顧客名カナ
    this.setCustName((String) lUrlParam.getParam("custName"));// 顧客名
    this.setTel((String) lUrlParam.getParam("tel"));// 電話番号
    this.setCompanyNameCdo((String) lUrlParam.getParam("companyNameCdo"));// 支店
    this.setChargeNameCdo((String) lUrlParam.getParam("chargeNameCdo"));// 担当者
    this.setPrePaymentTotal((String) lUrlParam.getParam("prePaymentTotal"));// 入金予定金額
    this.setPayMethodNameCbo((String) lUrlParam.getParam("payMethodNameCbo"));// 支払方法
    this.setExpectedPaymentDateYearCbo((String) lUrlParam.getParam("expectedPaymentDateYearCbo"));// 入金予定日の年
    this.setExpectedPaymentDateMonthCbo((String) lUrlParam.getParam("expectedPaymentDateMonthCbo"));// 入金予定日の月
    this.setExpectedPaymentDateDayCbo((String) lUrlParam.getParam("expectedPaymentDateDayCbo"));// 入金予定日の日
    this.setInitDateYearFromCbo((String) lUrlParam.getParam("initDateYearFromCbo"));// 受注日の年(From)
    this.setInitDateMonthFromCbo((String) lUrlParam.getParam("initDateMonthFromCbo"));// 受注日の月(From)
    this.setInitDateDayFromCbo((String) lUrlParam.getParam("initDateDayFromCbo"));// 受注日の日(From)
    this.setInitDateYearToCbo((String) lUrlParam.getParam("initDateYearToCbo"));// 受注日の年(To)
    this.setInitDateMonthToCbo((String) lUrlParam.getParam("initDateMonthToCbo"));// 受注日の月(To)
    this.setInitDateDayToCbo((String) lUrlParam.getParam("initDateDayToCbo"));// 受注日の日(To)
    this.setShippmentDateYearCbo((String) lUrlParam.getParam("shippmentDateYearCbo"));// 出荷日の年
    this.setShippmentDateMonthCbo((String) lUrlParam.getParam("shippmentDateMonthCbo"));// 出荷日の月
    this.setShippmentDateDayCbo((String) lUrlParam.getParam("shippmentDateDayCbo"));// 出荷日の日
    this.setReceiptFlgRdo((String) lUrlParam.getParam("receiptFlgRdo"));// 入金状況
    this.setDeliveryDateChk((String) lUrlParam.getParam("deliveryDateChk"));// 納品日３以内
    this.setBranchFlgCbo((String) lUrlParam.getParam("branchFlgCbo"));// 対応支店フラグ
    this.setCompanyCode((String) lUrlParam.getParam("branchCode"));// 対応支店コード
    if (SIUtil.isNull(this.companyCode)) this.setCompanyCode((String) lUrlParam.getParam("branchCode2"));// 対応支店コード履歴
    this.setChargeFlgCbo((String) lUrlParam.getParam("chargeFlgCbo"));// 担当者フラグ
    this.setChargeNameCdo((String) lUrlParam.getParam("chargeCode"));// 担当者コード
    if (SIUtil.isNull(this.chargeNameCdo)) this.setChargeCode((String) lUrlParam.getParam("chargeCode2"));// 担当者コード履歴
    this.setEmailTxt((String) lUrlParam.getParam("emailTxt"));
    this.setOrderCodeFromTxt((String) lUrlParam.getParam("orderCodeFromTxt"));
    this.setOrderCodeToTxt((String) lUrlParam.getParam("orderCodeToTxt"));
    this.setOrderRoute((String) lUrlParam.getParam("orderRoute"));
    this.setShippmentFlgRdo((String) lUrlParam.getParam("shippmentFlgRdo"));
    this.setIndividualCode((String) lUrlParam.getParam("individualCode"));
    this.setOrderStatusRdo((String) lUrlParam.getParam("orderStatusRdo"));
    this.setReceivableFlg((String) lUrlParam.getParam("receivableFlg"));// 取引条件
    this.setTotalOfPriceFrom((String) lUrlParam.getParam("totalOfPriceFrom"));
    this.setTotalOfPriceTo((String) lUrlParam.getParam("totalOfPriceTo"));
    this.setTotalOfBalanceFrom((String) lUrlParam.getParam("totalOfBalanceFrom"));
    this.setTotalOfBalanceTo((String) lUrlParam.getParam("totalOfBalanceTo"));
    this.setSalonName((String) lUrlParam.getParam("salonName"));
  }
  
  /**
   * <b>initDelete</b> 入力したデータを基づいて、このbeansを設定します。
   * 
   * @param request
   *          クライアントからリクエスト
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public void initDelete(HttpServletRequest lRequest, SIURLParameter lUrlParam) {
    super.init(lRequest, lUrlParam);
    this.setOrderCodeChk(lRequest.getParameterValues("orderCodeChk"));
    this.setOrderCodeHid(lRequest.getParameterValues("orderCodeHid"));
  }
  
  /**
   * <b>initCheck</b> 入力したデータを基づいて、このbeansを設定します。
   * 
   * @param request
   *          クライアントからリクエスト
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public void initCheck(HttpServletRequest lRequest, SIURLParameter lUrlParam) {
    super.init(lRequest, lUrlParam);
    this.setOrderCodeTxt((String) lUrlParam.getParam("orderCode"));// 受注コード
    this.setPaymentNumberHid(lRequest.getParameterValues("paymentNumberHid"));// チェックした入金データ
    this.setPaymentNumberChk(lRequest.getParameterValues("paymentNumberChk"));
    this.setMailSendFlg((String) lUrlParam.getParam("mailSendFlg"));
    this.setMailType((String) lUrlParam.getParam("mailType"));
    this.setRemarks((String) lUrlParam.getParam("remarks"));// 摘要
  }
  
  /**
   * <b>getCollection</b> 条件に合ったレコードを検索して、結果のコネクションを作成して、戻します。
   * 
   * @param lConnection
   *          データベースへの接続コネクション
   * @return レコードのセット
   * @throws なし
   */
  public Collection getCollection(Connection lConnection, SILogin lLogin) throws SIDBAccessException {
    
    Statement lStatement = null;
    ResultSet lResultSet = null;
    SIOrder lBasic = new SIOrder();
    StringBuffer lCountBuf = new StringBuffer();
    StringBuffer lCommonBuf = new StringBuffer();
    StringBuffer lSqlBuf = new StringBuffer();
    Collection lResultColl = new ArrayList();
    
    // 検索条件にエラーがあると検索しない。
    if (!searchFlg) {
      return lResultColl;
    }
    if (detailEnable) {
      lCountBuf.append("SELECT COUNT(DISTINCT aa.ordercode) ");
      lSqlBuf.append("SELECT DISTINCT aa.*,cust.Receivableflg");
    } else {
      lCountBuf.append("SELECT COUNT(aa.ordercode) ");
      lSqlBuf.append("SELECT aa.*,cust.Receivableflg");
    }
    lSqlBuf.append(",(aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.sumofdiscount-aa.sumbypoint-aa.setdiscount) AS totalOfPrice2, ");
    lSqlBuf.append("pp.TOTALPAYMENTPRICE,pp.MINEXPECTEDPAYMENTDATE, pp.MAXPAYMENTDATE  ");
    
    lCountBuf.append("FROM OrderSumVW aa ");
    lSqlBuf.append("FROM OrderSumVW aa ");
    if (SIUtil.isNotNull(this.getSalonName())) {
      lCountBuf.append("INNER JOIN (SELECT * FROM orderdeliverytbl WHERE deliverycode=1) deli ON aa.ordercode=deli.ordercode AND aa.orderbranchcode=deli.orderbranchcode ");
      lSqlBuf.append("INNER JOIN (SELECT * FROM orderdeliverytbl WHERE deliverycode=1) deli ON aa.ordercode=deli.ordercode AND aa.orderbranchcode=deli.orderbranchcode ");
    }
    if (detailEnable) lCommonBuf.append(",orderdetailtbl cc ");
    lCommonBuf.append(",custtbl cust,paymentheadertbl pp ");
    lCommonBuf.append("WHERE aa.custcode=cust.custcode AND aa.ordercode=pp.ordercode ");
    if (detailEnable) lCommonBuf.append("AND aa.ordercode=cc.ordercode AND aa.orderbranchcode=cc.orderbranchcode ");
    
    // 検索の条件
    lCommonBuf.append(this.getConditionSQL());
    lCountBuf.append(lCommonBuf);
    lSqlBuf.append(lCommonBuf);
    
    // 出力順
    lSqlBuf.append(this.getOrderBySQL());
    log.debug("lSqlBuf=" + lSqlBuf.toString());
    // 実行
    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:lCmdtySqlBuf=" + lSqlBuf.toString());
      lStatement = lConnection.createStatement();
      lSqlBuf.append(" LIMIT ").append(lPageSize);
      if(lFromInx>0) lSqlBuf.append(" OFFSET ").append(lFromInx);
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      
      for (int jj = 0; jj < lFromInx; jj++)
        lResultColl.add(null);
      int lIndex = 0;
      
      // 商品レコードのセットの作成
      while (lResultSet.next() && lIndex < lPageSize) {
        lBasic = new SIOrder();
        lBasic.setEncode(SIConfig.SIENCODE_NONE);
        lBasic.setEncode(SIConfig.SIENCODE_NONE);
        lBasic.setOrderCode(lResultSet.getString("orderCode"));// 受注番号
        lBasic.setCustCode(lResultSet.getString("custCode"));// 顧客コード
        lBasic.setCustName(lResultSet.getString("custName"));// 顧客名
        lBasic.setCustPronName(lResultSet.getString("custPronName"));// 顧客名カナ
        lBasic.setEmail(lResultSet.getString("email"));// EMAIL
        lBasic.setCompanyName(lResultSet.getString("companyName"));// 会社名
        lBasic.setStoreTel(lResultSet.getString("storeTel"));// 連絡先TEL1
        lBasic.setReceiptDate(SIDBUtil.getDate(lResultSet.getTimestamp("receiptDate")));// 入金日
        lBasic.setReceiptedFlg(SIUtil.isNotNull(lBasic.getReceiptDate()));
        lBasic.setCompanyCode(lResultSet.getString("branchcode"));
        lBasic.setChargeCode(lResultSet.getString("chargecode"));
        lBasic.setTotalPaymentPrice(lResultSet.getString("TOTALPAYMENTPRICE"));// 入金総額
        lBasic.setExpectedPaymentDate(SIDBUtil.getDate(lResultSet.getTimestamp("MINEXPECTEDPAYMENTDATE")));// 入金予定日
        lBasic.setPaymentDate(SIDBUtil.getDate(lResultSet.getTimestamp("MAXPAYMENTDATE")));// //入金日
        lBasic.setTotalOfPrice(lResultSet.getString("totalOfPrice2"));
        lBasic.setStatus(lResultSet.getString("status"));
        lBasic.setInitDateTime(SIDBUtil.getDateTime(lResultSet.getTimestamp("initDateTime")));// 受注日時
        lBasic.setUpdateDateTime(SIDBUtil.getDate(lResultSet.getTimestamp("updateDateTime")));// 修正日時
        lBasic.setReceivableFlg(lResultSet.getString("receivableFlg"));
        lResultColl.add(lBasic);
        lIndex++;
      }
      for (int jj = lFromInx + lPageSize; jj < lRecordCount; jj++)
        lResultColl.add(null);
      
    } catch (Exception ex) {
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(lResultSet, lStatement);
    }
    return lResultColl;
  }
  
  /**
   * <b>validate</b> 入力したデータをチェックして、同時にSQLの条件文を作成します。
   * 
   * @param lRequest
   *          クライアントからのリクエスト
   * @return なし
   * @throws なし
   */
  public void validate(HttpServletRequest lRequest) {
    
    SICustomErrors errors = new SICustomErrors();
    SITableConditionManager lConditionMan = new SITableConditionManager();
    deliveryDateFlg = false;
    shippmentDateFlg = false;
    
    // 受注番号(完全一致)
    if (SIUtil.isNotNull(this.getOrderCodeTxt()) && SICheckValid.checkValid(errors, "受注番号", this.getOrderCodeTxt(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)
        && SICheckValid.checkValid(errors, "受注番号", this.getOrderCodeTxt(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 8)) {
      lConditionMan.add(new SITableCondition("aa", "OrderCode", this.getOrderCodeTxt(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 会社名(部分一致)
    if (SIUtil.isNotNull(this.getCompanyName()) && SICheckValid.checkValid(errors, "会社名", this.getCompanyName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100)) {
      lConditionMan.add(new SITableCondition("aa", "COMPANYNAME", this.getCompanyName(), SIConfig.SICONDITION_TYPE_LIKE, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 顧客コード(完全一致)
    if (SIUtil.isNotNull(this.getCustCode()) && SICheckValid.checkValid(errors, "顧客コード", this.getCustCode(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)
        && SICheckValid.checkValid(errors, "顧客コード", this.getCustCode(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 10)) {
      lConditionMan.add(new SITableCondition("aa", "CUSTCODE", this.getCustCode(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 顧客名(部分一致)
    if (SIUtil.isNotNull(this.getCustName()) && SICheckValid.checkValid(errors, "顧客名", this.getCustName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 40)) {
      String[] custNameList = this.getCustName().split(" |　");
      for (int i=0;i<custNameList.length;i++) {
        lConditionMan.add(new SITableCondition("aa", "custName", custNameList[i], SIConfig.SICONDITION_TYPE_LIKE, SIConfig.SICONDITION_TYPE_AND));
      }
    }
    
    // 電話番号
    if (SIUtil.isNotNull(this.getTel()) && SICheckValid.checkValid(errors, "電話番号", this.getTel(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      this.conditionSQL2 += " AND (aa.tel like'%" + this.getTel() + "%' OR aa.storetel like'%" + this.getTel() + "%') ";
    }
    // 顧客名カナ(部分一致)
    if (SIUtil.isNotNull(this.getCustPronNameTxt()) && SICheckValid.checkValid(errors, "顧客名カナ", this.getCustPronNameTxt(), SICheckDataConf.SICHECK_DATA_ZENKAKU_KANA_TYPE)
        && SICheckValid.checkValid(errors, "顧客名カナ", this.getCustPronNameTxt(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50)) {
      String[] custPronNameList = this.getCustPronNameTxt().split(" |　");
      for (int j=0;j<custPronNameList.length;j++) {
        lConditionMan.add(new SITableCondition("aa", "custPronName", custPronNameList[j], SIConfig.SICONDITION_TYPE_LIKE, SIConfig.SICONDITION_TYPE_AND));
      }
    }
    boolean initFrom = false;
    boolean initTo = false;
    
    // 受注日
    if (SIUtil.isNotNull(getInitDateFrom()) && SICheckValid.checkValid(errors, "受注日From", getInitDateFrom(), SICheckDataConf.SICHECK_DATA_DATE_TYPE)) initFrom=true;
    if (SIUtil.isNotNull(getInitDateTo()) && SICheckValid.checkValid(errors, "受注日To", getInitDateTo(), SICheckDataConf.SICHECK_DATA_DATE_TYPE)) initTo=true;
    if (initFrom&&initTo) {
      lConditionMan.add(new SITableCondition("AND aa.initDateTime BETWEEN "+SIDBUtil.SQL2Str(getInitDateFrom()+" 00:00:00")+" AND "+SIDBUtil.SQL2Str(getInitDateTo()+" 23:59:59")));
    } else if (initFrom) {
      lConditionMan.add(new SITableCondition("aa", "initDateTime", getInitDateFrom() + " 00:00:00", SIConfig.SICONDITION_TYPE_GREATER_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    } else if (initTo) {
      lConditionMan.add(new SITableCondition("aa", "initDateTime", getInitDateTo() + " 23:59:59", SIConfig.SICONDITION_TYPE_LESS_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    // 受注日(比較)
    try {
      if (!SICheckUtil.dateEqual(this.getInitDateFrom(), this.getInitDateTo())) {
        SICheckValid.checkValid(errors, "受注日To", "受注日From", this.getInitDateFrom(), this.getInitDateTo(), SICheckDataConf.SICHECK_DATA_DATE_LESS_TYPE);
      }
    } catch (Exception e) {}
    
    // 支払方法
    if (SIUtil.isNotNull(this.getPayMethodNameCbo())) {
      lConditionMan.add(new SITableCondition("aa", "PayMethodName", this.getPayMethodNameCbo(), SIConfig.SICONDITION_TYPE_LIKE, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 納品希望日まで３日以内
    if (SIUtil.isNotNull(this.getDeliveryDateChk()) && this.getDeliveryDateChk().equals("1")) {
      SIDateTime lDateTime = new SIDateTime();
      String Year = Integer.toString(lDateTime.getYear());
      String Month = Integer.toString(lDateTime.getMonth());
      String Day = Integer.toString(lDateTime.getDay());
      lDateTime.addDay(-3);// ３日前
      String Year3 = lDateTime.getYearStr();
      String Month3 = lDateTime.getMonthStr();
      String Day3 = lDateTime.getDayStr();
      lConditionMan.add(new SITableCondition("cc", "DELIVERYDATE", SIDateTime.getDate(Year, Month, Day) + " 23:59:59", SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
      lConditionMan.add(new SITableCondition("cc", "DELIVERYDATE", SIDateTime.getDate(Year3, Month3, Day3), SIConfig.SICONDITION_TYPE_GREATER_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      detailEnable = true;
    }
    
    // 出荷日
    if (SIUtil.isNotNull(this.getShippmentDate()) && SICheckValid.checkValid(errors, "出荷日", this.getShippmentDate(), SICheckDataConf.SICHECK_DATA_DATE_TYPE)) {
      lConditionMan.add(new SITableCondition("cc", "SHIPPMENTDATE", new SIDateTimeType(this.getShippmentDate()), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      detailEnable = true;
    }
    
    // 入金予定日
    if (SIUtil.isNotNull(this.getExpectedPaymentDate()) && SICheckValid.checkValid(errors, "入金予定日", this.getExpectedPaymentDate(), SICheckDataConf.SICHECK_DATA_DATE_TYPE)) {
      lConditionMan.add(new SITableCondition("pp", "minexpectedpaymentdate", new SIDateTimeType(this.getExpectedPaymentDate()), SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    // 入金予定金額
    if (SIUtil.isNotNull(this.getPrePaymentTotal()) && SICheckValid.checkValid(errors, "入金予定金額", this.getPrePaymentTotal(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      lConditionMan.add(new SITableCondition("pp", "expectedtotalpaymentprice", this.getPrePaymentTotal(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 対応支店
    if (SIUtil.isNotNull(branchFlgCbo)) {
      if (branchFlgCbo.equals("1")) {
        lConditionMan.add(new SITableCondition("aa", "BranchCode", "", SIConfig.SICONDITION_TYPE_IS_NULL, SIConfig.SICONDITION_TYPE_AND));
      } else if (branchFlgCbo.equals("2")) {
        lConditionMan.add(new SITableCondition("aa", "BranchCode", this.getCompanyCode(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      }
    }
    // 担当者
    if (SIUtil.isNotNull(chargeFlgCbo)) {
      if (chargeFlgCbo.equals("1")) {
        lConditionMan.add(new SITableCondition("aa", "ChargeCode", "", SIConfig.SICONDITION_TYPE_IS_NULL, SIConfig.SICONDITION_TYPE_AND));
      } else if (chargeFlgCbo.equals("2")) {
        lConditionMan.add(new SITableCondition("aa", "ChargeCode", this.getChargeNameCdo(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      }
    }
    
    // メールアドレス
    if (SIUtil.isNotNull(this.getEmailTxt()) && SICheckValid.checkValid(errors, "メールアドレス", emailTxt, SICheckDataConf.SICHECK_DATA_ASCII_TYPE)
        && SICheckValid.checkValid(errors, "メールアドレス", this.getEmailTxt(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 128)) {
      lConditionMan.add(new SITableCondition("aa", "email", this.getEmailTxt(), SIConfig.SICONDITION_TYPE_LIKE, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 受注番号
    if (SIUtil.isNotNull(orderCodeFromTxt) && SICheckValid.checkValid(errors, "受注番号", orderCodeFromTxt, SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      lConditionMan.add(new SITableCondition("aa", "ORDERCODE", this.getOrderCodeFromTxt(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 受注経路
    if (SIUtil.isNotNull(this.getOrderRoute())) {
      lConditionMan.add(new SITableCondition("aa", "orderRoute", this.getOrderRoute(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 在庫コード
    if (SIUtil.isNotNull(this.individualCode) && SICheckValid.checkValid(errors, "在庫コード", this.individualCode, SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE)
        // EDBTG003-00 nagayoshi mod start
//        && SICheckValid.checkValid(errors, "在庫コード", this.individualCode, SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 8)) {
        && SICheckValid.checkValid(errors, "在庫コード", this.individualCode, SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 10)) {
//      lConditionMan.add(new SITableCondition("cc", "individualCode", this.getIndividualCode(), SIConfig.SICONDITION_TYPE_FRONTLIKE, SIConfig.SICONDITION_TYPE_AND));
      lConditionMan.add(new SITableCondition("(cc", "individualCode", this.getIndividualCode(), SIConfig.SICONDITION_TYPE_FRONTLIKE, SIConfig.SICONDITION_TYPE_AND));
      lConditionMan.add(new SITableCondition("cc", "setIndividualCode", this.getIndividualCode(), SIConfig.SICONDITION_TYPE_FRONTLIKE, SIConfig.SICONDITION_TYPE_OR));
      lConditionMan.add(new SITableCondition(")"));
      // EDBTG003-00 nagayoshi mod end
      detailEnable = true;
    }
    
    // 受注状態
    if (SIUtil.isNotNull(orderStatusRdo)) {
      if (orderStatusRdo.equals("3")) {
        lConditionMan.add(new SITableCondition(" AND aa.Status IN ('0','2') "));
      } else {
        lConditionMan.add(new SITableCondition("aa", "Status", this.getOrderStatusRdo(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      }
    }
    
    // 取引条件
    if (SIUtil.isNotNull(this.getReceivableFlg())) {
      lConditionMan.add(new SITableCondition("cust", "Receivableflg", this.getReceivableFlg(), SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 入金状況
    if (SIUtil.isNotNull(this.getReceiptFlgRdo())) {
      if (this.getReceiptFlgRdo().equals("0")) {// 未入金
        lConditionMan.add(new SITableCondition(" AND COALESCE(pp.TOTALPAYMENTPRICE,0)=0 AND aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.setdiscount-aa.sumofdiscount-aa.sumbypoint!=0 "));
      } else if (this.getReceiptFlgRdo().equals("1")) {// 一部入金
        lConditionMan.add(new SITableCondition(" AND COALESCE(pp.TOTALPAYMENTPRICE,0)!=0 AND COALESCE(pp.TOTALPAYMENTPRICE,0)<aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.setdiscount-aa.sumofdiscount-aa.sumbypoint "));
      } else if (this.getReceiptFlgRdo().equals("2")) {// 入金完了
        lConditionMan.add(new SITableCondition(" AND COALESCE(pp.TOTALPAYMENTPRICE,0)>=aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.setdiscount-aa.sumofdiscount-aa.sumbypoint "));
      }
    }
    // 出荷状況
    if (SIUtil.isNotNull(this.getShippmentFlgRdo())) {
      if (this.getShippmentFlgRdo().equals("0")) {// 未出荷
        lConditionMan.add(new SITableCondition("", "aa.DELIVERYEDFLG + aa.NODELIVERYFLG", "2", SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      } else if (this.getShippmentFlgRdo().equals("1")) {// 一部出荷
        lConditionMan.add(new SITableCondition("", "aa.DELIVERYEDFLG + aa.NODELIVERYFLG", "3", SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      } else if (this.getShippmentFlgRdo().equals("2")) {// 出荷済
        lConditionMan.add(new SITableCondition("", "aa.DELIVERYEDFLG + aa.NODELIVERYFLG", "1", SIConfig.SICONDITION_TYPE_EQUAL, SIConfig.SICONDITION_TYPE_AND));
      }
    }
    
    // 受注金額(From)
    if (SIUtil.isNotNull(this.getTotalOfPriceFrom()) && SICheckValid.checkValid(errors, "受注金額From", this.getTotalOfPriceFrom(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      lConditionMan.add(new SITableCondition("", "aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.setdiscount-aa.sumofdiscount-aa.sumbypoint", this.getTotalOfPriceFrom(), SIConfig.SICONDITION_TYPE_GREATER_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 受注金額(To)
    if (SIUtil.isNotNull(this.getTotalOfPriceTo()) && SICheckValid.checkValid(errors, "受注金額To", this.getTotalOfPriceTo(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      lConditionMan.add(new SITableCondition("", "aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.setdiscount-aa.sumofdiscount-aa.sumbypoint", this.getTotalOfPriceTo(), SIConfig.SICONDITION_TYPE_LESS_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 支払残額(From)
    if (SIUtil.isNotNull(this.getTotalOfBalanceFrom()) && SICheckValid.checkValid(errors, "支払残額From", this.getTotalOfBalanceFrom(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      lConditionMan.add(new SITableCondition("", "aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.setdiscount-aa.sumofdiscount-aa.sumbypoint-COALESCE(pp.TOTALPAYMENTPRICE,0)", this.getTotalOfBalanceFrom(), SIConfig.SICONDITION_TYPE_GREATER_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    // 支払残額(To)
    if (SIUtil.isNotNull(this.getTotalOfBalanceTo()) && SICheckValid.checkValid(errors, "支払残額To", this.getTotalOfBalanceTo(), SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      lConditionMan.add(new SITableCondition("", "aa.totalofprice+aa.totalofdeliveryfee+aa.totaloffee+COALESCE(aa.discountfee,0)+COALESCE(aa.discountdeliveryfee,0)-aa.setdiscount-aa.sumofdiscount-aa.sumbypoint-COALESCE(pp.TOTALPAYMENTPRICE,0)", this.getTotalOfBalanceTo(), SIConfig.SICONDITION_TYPE_LESS_EQUAL, SIConfig.SICONDITION_TYPE_AND));
    }
    
    if (SIUtil.isNotNull(this.getSalonName())&& SICheckValid.checkValid(errors, "サロン名", this.getSalonName(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 100)) {
        lConditionMan.add(new SITableCondition("deli", "companyname", this.getSalonName(), SIConfig.SICONDITION_TYPE_LIKE, SIConfig.SICONDITION_TYPE_AND));  
    }
    
    if (!errors.isEmpty()) {
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      this.searchFlg = false;
    } else {
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    }
    
    // 条件文の設定
    this.conditionSQL = lConditionMan.getCondtionSQL() + this.conditionSQL2;
    // 並び順文の作成
    // this.makeOrderBySQL();
  }
  
  /**
   * <b>validateDelete</b> 入力したデータをチェックして、同時にSQLの条件文を作成します。
   * 
   * @param lRequest
   *          クライアントからのリクエスト
   * @return なし
   * @throws なし
   */
  public boolean validateDelete(HttpServletRequest lRequest, Connection lConnection) {
    SICustomErrors errors = new SICustomErrors();
    
    // チェックボックスのチェック
    if (this.getOrderCodeChk() == null || this.getOrderCodeChk().length == 0) {
      errors.addError(new SICustomError("input.data.checkbox.require", "削除"));
    }
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    else lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    
    return errors.isEmpty();
  }
  
  public boolean validateBillCheck(HttpServletRequest lRequest) {
    SICustomErrors errors = new SICustomErrors();
    
    // チェックボックスのチェック
    if (this.getOrderCodeChk() == null || this.getOrderCodeChk().length == 0) {
      errors.addError(new SICustomError("input.data.checkbox.require", "請求書出力"));
    }
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    else lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    
    return errors.isEmpty();
  }
  
  /**
   * 入金明細情報・支払状態・支払状況を取得する
   * 
   * @param lConnection
   * @return Collection
   * @throws なし
   */
  public Collection getCollection(Connection lConnection, String orderCode) {
    
    Collection paymentCol = new ArrayList();
    SIPayment payment = null;
    StringBuffer lSqlBuf = new StringBuffer();
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    lSqlBuf.append("SELECT * FROM ").append(SIConfig.SIVIEW_ORDER_PAYMENT_NAME);
    lSqlBuf.append(" WHERE ordercode = ").append(SIDBUtil.SQL2Str(orderCode));
    lSqlBuf.append(" ORDER BY PAYMENTDATE, EXPECTEDPAYMENTDATE");
    
    try {
      log.debug("getConnection:lSqlBuf=" + lSqlBuf.toString());
      
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      
      while (lResultSet.next()) {
        payment = new SIPayment();
        payment.setEncode(SIConfig.SIENCODE_NONE);
        payment.setOrderCode(lResultSet.getString("ordercode"));
        payment.setPaymentNumber(lResultSet.getString("paymentnumber"));
        payment.setPaymentPrice(lResultSet.getString("paymentprice"));
        payment.setPaymentFee(lResultSet.getString("paymentfee"));
        payment.setPaymnetType(lResultSet.getString("paymenttype"));
        payment.setExpectedPaymentDate(SIDBUtil.getDate2(lResultSet.getTimestamp("expectedpaymentdate")));
        payment.setPaymentDate(SIDBUtil.getDate2(lResultSet.getTimestamp("paymentdate")));
        payment.setBillIssuedDate(SIDBUtil.getDate2(lResultSet.getTimestamp("billissueddate")));
        payment.setReceiptIssuedDate(SIDBUtil.getDate2(lResultSet.getTimestamp("receiptissueddate")));
        payment.setTotalPaymentPrice(lResultSet.getString("totalpaymentprice"));// 入金総額
        payment.setExpectedTotalPaymentPrice(lResultSet.getString("expectedtotalpaymentprice"));// 合計入金予定額
        paymentCol.add(payment);
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    
    return paymentCol;
  }
  
  public static Collection getPaymentCollection(Connection lConnection, String orderCode) {
    
    Collection paymentCol = new ArrayList();
    SIPayment payment = null;
    StringBuffer lSqlBuf = new StringBuffer();
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    lSqlBuf.append("SELECT * FROM ").append(SIConfig.SIVIEW_ORDER_PAYMENT_NAME);
    lSqlBuf.append(" WHERE ordercode = ").append(SIDBUtil.SQL2Str(orderCode));
    lSqlBuf.append(" AND paymentdate IS NOT NULL AND paymentdate<=current_date AND status=0 ");
    lSqlBuf.append(" ORDER BY PAYMENTDATE, EXPECTEDPAYMENTDATE");
    
    try {
      log.debug("getConnection:lSqlBuf=" + lSqlBuf.toString());
      
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      
      while (lResultSet.next()) {
        payment = new SIPayment();
        payment.setEncode(SIConfig.SIENCODE_NONE);
        payment.setOrderCode(lResultSet.getString("ordercode"));
        payment.setPaymentNumber(lResultSet.getString("paymentnumber"));
        payment.setPaymentPrice(lResultSet.getString("paymentprice"));
        payment.setPaymentFee(lResultSet.getString("paymentfee"));
        payment.setPaymnetType(lResultSet.getString("paymenttype"));
        payment.setExpectedPaymentDate(SIDBUtil.getDate2(lResultSet.getTimestamp("expectedpaymentdate")));
        payment.setPaymentDate(SIDBUtil.getDate2(lResultSet.getTimestamp("paymentdate")));
        payment.setBillIssuedDate(SIDBUtil.getDate2(lResultSet.getTimestamp("billissueddate")));
        payment.setReceiptIssuedDate(SIDBUtil.getDate2(lResultSet.getTimestamp("receiptissueddate")));
        payment.setTotalPaymentPrice(lResultSet.getString("totalpaymentprice"));// 入金総額
        payment.setExpectedTotalPaymentPrice(lResultSet.getString("expectedtotalpaymentprice"));// 合計入金予定額
        paymentCol.add(payment);
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    
    return paymentCol;
  }
  /**
   * 入金明細情報・支払状態・支払状況を取得する
   * 
   * @param lConnection
   * @return Collection
   * @throws なし
   */
  public Collection getTenCollection(Connection lConnection, String orderCode) {
    
    Collection paymentCol = new ArrayList();
    SIPayment payment = null;
    StringBuffer lSqlBuf = new StringBuffer();
    Statement lStatement = null;
    ResultSet lResultSet = null;
    
    lSqlBuf.append("SELECT * FROM ").append(SIConfig.SIVIEW_ORDER_PAYMENT_NAME);
    lSqlBuf.append(" WHERE ordercode = ").append(SIDBUtil.SQL2Str(orderCode));
    lSqlBuf.append(" AND PAYMENTDATE IS NOT NULL ");
    lSqlBuf.append(" ORDER BY PAYMENTDATE DESC LIMIT 10 ");
    
    try {
      log.debug("getConnection:lSqlBuf=" + lSqlBuf.toString());
      
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      
      while (lResultSet.next()) {
        payment = new SIPayment();
        payment.setEncode(SIConfig.SIENCODE_NONE);
        payment.setOrderCode(lResultSet.getString("ordercode"));
        payment.setPaymentNumber(lResultSet.getString("paymentnumber"));
        payment.setPaymentPrice(lResultSet.getString("paymentprice"));
        payment.setPaymentFee(lResultSet.getString("paymentfee"));
        payment.setPaymnetType(lResultSet.getString("paymenttype"));
        payment.setExpectedPaymentDate(SIDBUtil.getDate2(lResultSet.getTimestamp("expectedpaymentdate")));
        payment.setPaymentDate(SIDBUtil.getDate2(lResultSet.getTimestamp("paymentdate")));
        payment.setBillIssuedDate(SIDBUtil.getDate2(lResultSet.getTimestamp("billissueddate")));
        payment.setReceiptIssuedDate(SIDBUtil.getDate2(lResultSet.getTimestamp("receiptissueddate")));
        payment.setTotalPaymentPrice(lResultSet.getString("totalpaymentprice"));// 入金総額
        payment.setExpectedTotalPaymentPrice(lResultSet.getString("expectedtotalpaymentprice"));// 合計入金予定額
        paymentCol.add(payment);
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    
    return paymentCol;
  }
  
  /**
   * <b>validateCheck</b> 入力したデータをチェックして、同時にSQLの条件文を作成します。
   * 
   * @param lRequest
   *          クライアントからのリクエスト
   * @return なし
   * @throws なし
   */
  public boolean validateCheck(HttpServletRequest lRequest, Connection lConnection, String actionName) {
    
    SICustomErrors errors = new SICustomErrors();
    
    // 入金明細情報Collection取得
    Collection payColl = getCollection(lConnection, this.getOrderCodeTxt());
    Iterator it = payColl.iterator();
    SIPayment payment = null;
    
    String msg = "";
    if (actionName.equals(SIConfig.SIACTION_MAIL)) {
      msg = "入金督促メールを送信";
    } else if (actionName.equals(SIConfig.SIACTION_BILL)) {
      msg = "請求書発行";
    } else if (actionName.equals(SIConfig.SIACTION_RECEIPT)) {
      msg = "領収書発行";
    }
    // チェックボックスのチェック
    if ((actionName.equals(SIConfig.SIACTION_RECEIPT) || actionName.equals(SIConfig.SIACTION_MAIL))
        && (this.getPaymentNumberChk() == null || this.getPaymentNumberChk().length == 0)) {
      errors.addError(new SICustomError("input.data.checkbox.require", msg));
    }
    if (errors.isEmpty()) {
      // 入金督促メール
      if (actionName.equals(SIConfig.SIACTION_MAIL)) {
        for (int i = 0; i < this.getPaymentNumberChk().length; i++) {
          String paymentNumber = this.getPaymentNumberHid()[Integer.parseInt(this.getPaymentNumberChk()[i])];
          payment = new SIPayment();
          payment = (SIPayment) ((ArrayList) payColl).get(Integer.parseInt(this.getPaymentNumberChk()[i]));
          if (paymentNumber.equals(payment.getPaymentNumber())) {
            if (SIUtil.isNotNull(payment.getPaymentDate())) {// 入金日が設定されている場合、エラー
              errors.addError(new SICustomError("manager.message.receipt.demand"));
              break;
            }
            String expectedPaymentDate = new String();
            String now = new String();
            try {
              expectedPaymentDate = new SIDateTime(payment.getExpectedPaymentDate(), SIConfig.SIDATE_FORMAT0).getFullDate();
              now = new SIDateTime().getFullDate();
              if (SICheckUtil.dateGreaterEqual(expectedPaymentDate, now)) {
                errors.addError(new SICustomError("manager.message.demandmail.check"));
                break;
              }
            } catch (ParseException e) {
              e.printStackTrace();
            } catch (SIException e) {
              e.printStackTrace();
            }
          }
        }
        // 請求書
        // 全入金データチェック
      } else if (actionName.equals(SIConfig.SIACTION_BILL)) {
        // 2006.8.4領収書に関係なく請求書を発行する
        // //領収書が発行されたか
        // StringBuffer lSqlBuf=new StringBuffer("SELECT receiptissueddate FROM
        // ").append(SIConfig.SIVIEW_ORDER_PAYMENT_NAME).append(" ");
        // lSqlBuf.append("WHERE
        // ordercode='").append(this.getOrderCodeTxt()).append("' ");
        // lSqlBuf.append("AND
        // paymentnumber='").append(this.getPaymentNumberHid()[Integer.parseInt(this.getPaymentNumberChk()[0])]).append("'
        // ");
        // try {
        // if(SIUtil.isNotNull(SIDBUtil.getFirstData(lConnection,lSqlBuf.toString()))){
        // errors.addError(new
        // SICustomError("manager.message.bill.receiptCheck"));
        // }
        // } catch (SIDBAccessException e) {
        // e.printStackTrace();
        // }
        // 領収書
      } else if (actionName.equals(SIConfig.SIACTION_RECEIPT)) {
        // 複数選択できない
        if (this.getPaymentNumberChk().length == 1) {
          String paymentNumber = this.getPaymentNumberHid()[Integer.parseInt(this.getPaymentNumberChk()[0])];
          payment = new SIPayment();
          payment = (SIPayment) ((ArrayList) payColl).get(Integer.parseInt(this.getPaymentNumberChk()[0]));
          if (paymentNumber.equals(payment.getPaymentNumber())) {
            if (SIUtil.isNull(payment.getPaymentDate())) {// 入金日が設定されていない場合、エラー
              errors.addError(new SICustomError("manager.app.paymentDate.check"));
            }
          }
        } else {
          errors.addError(new SICustomError("manager.message.error.receipt"));
        }
      }
    }
    
    if (!errors.isEmpty())
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    else
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    
    return errors.isEmpty();
  }
  
  /**
   * <b>getCompanyCollection<b> 条件に合ったレコードを検索して、結果のコレクションを作成して戻します。
   * 
   * @param lConnection
   *          データベースへの接続コネクション
   * @return レコードのセット
   * @throws SIDBAccessException
   */
  public Collection getCompanyCollection(Connection lConnection) throws SIDBAccessException {
    
    StringBuffer lSqlBuf = new StringBuffer();
    
    lSqlBuf.append("SELECT BranchName,BranchCode ");
    lSqlBuf.append("FROM BranchTbl ");
    lSqlBuf.append("ORDER BY BranchCode ASC");
    
    log.debug("getCompanyCollection:lSqlBuf=" + lSqlBuf.toString());
    
    Collection lResultColl = new ArrayList();
    
    try {
      lResultColl = SIDBUtil.getCollection(lConnection, lSqlBuf.toString(), false, true);
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    return lResultColl;
  }
  
  /**
   * <b>getChargeCollection</b> 条件に合ったレコードを検索して、結果のコネクションを作成して、戻します。
   * 
   * @param lConnection
   *          データベースへの接続コネクション
   * @param branchCode
   *          支店コード
   * @return レコードのセット
   * @throws SIDBAccessException
   */
  public Collection getChargeCollection(Connection lConnection, String branchCode) throws SIDBAccessException {
    StringBuffer lSqlBuf = new StringBuffer();
    
    // 基本のSQL
    lSqlBuf.append("SELECT ChargeName, ChargeCode ");
    lSqlBuf.append("FROM ChargeTbl ");
    if (SIUtil.isNotNull(branchCode)) {
      lSqlBuf.append("WHERE BelongingBranchCode = ").append(SIDBUtil.SQL2Str(branchCode));
    }
    
    // 昇順に並べ替え
    lSqlBuf.append(" ORDER BY ChargeCode ASC");
    
    log.debug("getCollection:lSqlBuf=" + lSqlBuf.toString());
    
    Collection lResultColl = new ArrayList();
    
    try {
      lResultColl = SIDBUtil.getCollection(lConnection, lSqlBuf.toString());
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    return lResultColl;
  }
  
  public static Collection getNameValueCollection(Connection lConnection) {
    StringBuffer lSqlBuf = new StringBuffer("SELECT payMethodName,payMethodName FROM PayMethodMTbl ");
    lSqlBuf.append(" WHERE payMethodName != ").append(SIDBUtil.SQL2Str(SIConfig.PAYMETHOD_CARD));
    lSqlBuf.append(" AND payMethodName NOT LIKE '楽天%' ");
    lSqlBuf.append(" ORDER BY PaymethodCode ASC");
    Collection lResultColl = new ArrayList();
    try {
      lResultColl = SIDBUtil.getCollection(lConnection, lSqlBuf.toString(), true);
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    
    return lResultColl;
  }
}
