/**
 * Copyright (c) 2003-2008 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.util.ArrayList;
import java.util.Collection;

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SIPointIndividual;
import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckUtil;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIStringUtil;
import jp.co.sint.tools.SIUtil;
import jp.co.sint.tools.SIURLParameter;

import org.apache.log4j.Category;

public class UIRegPointIndividual extends SIPointIndividual {
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  private String bonusFromDate = "";
  private String bonusFromDateYear = "";
  private String bonusFromDateMonth = "";
  private String bonusFromDateDay = "";
  private String bonusToDate = "";
  private String bonusToDateYear = "";
  private String bonusToDateMonth = "";
  private String bonusToDateDay = "";
  private String bonusPointRate = "";
  private String bonusPointEditMode = "0";// 0:new 1:mod
  //EDBTG003-00 add start
  private String cmdtyCompositionFlg = SIConfig.CMDTY_COMPOSITION_NORMAL;
  //EDBTG003-00 add end
  
  /**
   * UIRegPointIndividual
   * コンストラクタ
   * @param なし
   * @return なし
   * @throws なし
   */
  public UIRegPointIndividual() {}
  
  public UIRegPointIndividual(HttpServletRequest lRequest,SIURLParameter lUrlParam) {
    this.init(lRequest, lUrlParam);
    this.setCmdtyCode((String) lUrlParam.getParam("cmdtyCode"));
    this.setIndividualCode((String) lUrlParam.getParam("individualCode"));
  }
  
  /**
   * @return
   */
  public String getBonusFromDate() {
    return bonusFromDate;
  }
  
  /**
   * @return
   */
  public String getBonusPointRate() {
    return bonusPointRate;
  }
  
  /**
   * @return
   */
  public String getBonusToDate() {
    return bonusToDate;
  }
  
  /**
   * @return
   */
  public String getBonusFromDateDay() {
    return bonusFromDateDay;
  }
  
  /**
   * @return
   */
  public String getBonusFromDateMonth() {
    return bonusFromDateMonth;
  }
  
  /**
   * @return
   */
  public String getBonusFromDateYear() {
    return bonusFromDateYear;
  }
  
  /**
   * @param string
   */
  public void setBonusFromDateDay(String string) {
    bonusFromDateDay = string;
  }
  
  /**
   * @param string
   */
  public void setBonusFromDateMonth(String string) {
    bonusFromDateMonth = string;
  }
  
  /**
   * @param string
   */
  public void setBonusFromDateYear(String string) {
    bonusFromDateYear = string;
  }
  
  /**
   * @param category
   */
  public void setLog(Category category) {
    log = category;
  }
  
  /**
   * @return
   */
  public String getBonusToDateDay() {
    return bonusToDateDay;
  }
  
  /**
   * @return
   */
  public String getBonusToDateMonth() {
    return bonusToDateMonth;
  }
  
  /**
   * @return
   */
  public String getBonusToDateYear() {
    return bonusToDateYear;
  }
  
  /**
   * @param string
   */
  public void setBonusToDateDay(String string) {
    bonusToDateDay = string;
  }
  
  /**
   * @param string
   */
  public void setBonusToDateMonth(String string) {
    bonusToDateMonth = string;
  }
  
  /**
   * @param string
   */
  public void setBonusToDateYear(String string) {
    bonusToDateYear = string;
  }
  
  /**
   * @param string
   */
  public void setBonusFromDate(String string) {
    if (SIUtil.isNull(string)) string = "";
    this.bonusFromDate = SIUtil.changeTo(string.trim(), this.getEncode());
    if (SIUtil.isNotNull(string)) {
      String[] lDateList = SIStringUtil.split(string, "/");
      if (lDateList.length == 3) {
        this.setBonusFromDateYear(lDateList[0]);
        this.setBonusFromDateMonth((lDateList[1].length() == 2) ? lDateList[1] : "0" + lDateList[1]);
        this.setBonusFromDateDay((lDateList[2].length() == 2) ? lDateList[2] : "0" + lDateList[2]);
      }
      
    }
  }
  
  /**
   * @param string
   */
  public void setBonusPointRate(String string) {
    if (SIUtil.isNull(string)) string = "";
    this.bonusPointRate = SIUtil.changeTo(string.trim(), this.getEncode());
  }
  
  /**
   * @param string
   */
  public void setBonusToDate(String string) {
    if (SIUtil.isNull(string)) string = "";
    this.bonusToDate = SIUtil.changeTo(string.trim(), this.getEncode());
    if (SIUtil.isNotNull(string)) {
      String[] lDateList = SIStringUtil.split(string, "/");
      if (lDateList.length == 3) {
        this.setBonusToDateYear(lDateList[0]);
        this.setBonusToDateMonth((lDateList[1].length() == 2) ? lDateList[1] : "0" + lDateList[1]);
        this.setBonusToDateDay((lDateList[2].length() == 2) ? lDateList[2] : "0" + lDateList[2]);
      }
    }
  }
  
  // getter of bonusPointEditMode
  public String getBonusPointEditMode() {
    return this.bonusPointEditMode;
  }
  
  // setter of bonusPointEditMode
  public void setBonusPointEditMode(String bonusPointEditMode) {
    if (SIUtil.isNull(bonusPointEditMode)) bonusPointEditMode = "";
    this.bonusPointEditMode = SIUtil.changeTo(bonusPointEditMode.trim(), this.getEncode());
  }
  
  public void reset(Connection lConnection){
    try {
      this.setCmdtyName(SIDBUtil.getFirstData(lConnection, "SELECT cmdtyName FROM cmdtymtbl WHERE cmdtycode = "+SIDBUtil.SQL2Str(this.getCmdtyCode())));
      //EDBTG003-00 add start
      this.setCmdtyCompositionFlg(SIDBUtil.getFirstData(lConnection, "SELECT cmdtycompositionflg FROM cmdtymtbl WHERE cmdtycode = "+SIDBUtil.SQL2Str(this.getCmdtyCode())));
      //EDBTG003-00 add end
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public void clear(){
    this.bonusFromDate = "";
    this.bonusFromDateYear = "";
    this.bonusFromDateMonth = "";
    this.bonusFromDateDay = "";
    this.bonusToDate = "";
    this.bonusToDateYear = "";
    this.bonusToDateMonth = "";
    this.bonusToDateDay = "";
    this.bonusPointRate = "";
  }
  
  /**
   * <b>init</b> 入力した新規レコードのデータを取得します。
   * 
   * @param request クライアントからリクエスト
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public void init(HttpServletRequest lRequest,SIURLParameter lUrlParam) {
    super.init(lRequest, lUrlParam);
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    this.setCmdtyCode((String) lUrlParam.getParam("cmdtyCode"));
    this.setIndividualCode((String) lUrlParam.getParam("individualCode"));
    this.setBonusFromDate((String) lUrlParam.getParam("bonusFromDate"));
    this.setBonusFromDateYear((String) lUrlParam.getParam("bonusFromDateYear"));
    this.setBonusFromDateMonth((String) lUrlParam.getParam("bonusFromDateMonth"));
    this.setBonusFromDateDay((String) lUrlParam.getParam("bonusFromDateDay"));
    this.setBonusToDate((String) lUrlParam.getParam("bonusToDate"));
    this.setBonusToDateYear((String) lUrlParam.getParam("bonusToDateYear"));
    this.setBonusToDateMonth((String) lUrlParam.getParam("bonusToDateMonth"));
    this.setBonusToDateDay((String) lUrlParam.getParam("bonusToDateDay"));
    this.setBonusPointRate((String) lUrlParam.getParam("bonusPointRate"));
  }
  
  public void initDetail(HttpServletRequest lRequest, Connection lConnection) {
    Statement lStatement = null;
    ResultSet lResultSet = null;
    StringBuffer lSqlBuf = new StringBuffer();
    
    lSqlBuf.append("SELECT * FROM bonuspointindividualtbl ");
    lSqlBuf.append("WHERE IndividualCode=").append(SIDBUtil.SQL2Str(this.getIndividualCode(), " "));
    lSqlBuf.append("AND CmdtyCode=").append(SIDBUtil.SQL2Str(this.getCmdtyCode(), " "));
    lSqlBuf.append("AND bonusfromdate <= current_date AND bonustodate >= current_date");
    
    try {
      this.setEncode(SIConfig.SIENCODE_NONE);
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      // 執行中データの設定
      if (lResultSet.next()) {
        this.setBonusPointRate(lResultSet.getString("BonusPointRate"));
        this.setBonusFromDate(SIDBUtil.getDate(lResultSet.getTimestamp("BonusFromDate")));
        this.setBonusToDate(SIDBUtil.getDate(lResultSet.getTimestamp("BonusToDate")));
        this.setBonusPointEditMode("1");
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
  }
  
  public boolean validateInsertBonus(HttpServletRequest lRequest, Connection lConnection) {
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    SIDateTime lDateTime = new SIDateTime();
    SIDateTime lDateTime2 = new SIDateTime();
    lDateTime2.addDay(1);
    
    if(SIUtil.isNull(this.getBonusFromDate())&&SIUtil.isNull(this.getBonusToDate())){
      this.setBonusFromDateYear(lDateTime2.getYearStr());
      this.setBonusFromDateMonth(lDateTime2.getMonthStr());
      this.setBonusFromDateDay(lDateTime2.getDayStr());
      this.setBonusFromDate(lDateTime2.getFullDate());
      this.setBonusToDateYear("9999");
      this.setBonusToDateMonth("01");
      this.setBonusToDateDay("01");
      this.setBonusToDate("9999/01/01");
    }
    
    SICheckValid.checkValid(errors, "ボーナスポイント付加率", this.getBonusPointRate(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE);
    SICheckValid.checkValid(errors, "ボーナスポイント付加率", this.getBonusPointRate(), SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 2);
    
    SICheckValid.checkValid(errors, "ボーナス設定期間FROM", this.getBonusFromDate(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DATE_TYPE);
    SICheckValid.checkValid(errors, "ボーナス設定期間TO", this.getBonusToDate(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DATE_TYPE);
    
    try {
      if (SIUtil.isNotNull(this.getBonusFromDate()) && SIUtil.isNotNull(this.getBonusToDate())) {
        SICheckValid.checkValid(errors, "ボーナス設定期間FROM", "ボーナス設定期間TO", this.getBonusFromDate(), this.getBonusToDate(), SICheckDataConf.SICHECK_DATA_DATE_LESS_EQUAL_TYPE);
        SICheckValid.checkValid(errors, "ボーナス設定期間FROM", "今日の日付", this.getBonusFromDate(), lDateTime.getFullDate(), SICheckDataConf.SICHECK_DATA_DATE_GREATER_TYPE);
      }
      StringBuffer sql1 = new StringBuffer();
      StringBuffer sql2 = new StringBuffer();
      sql1.append("SELECT * FROM bonuspointindividualtbl WHERE individualcode = ").append(SIDBUtil.SQL2Str(this.getIndividualCode()));
      sql1.append(" AND cmdtycode = ").append(SIDBUtil.SQL2Str(this.getCmdtyCode()));
      sql1.append(" AND bonustodate >= ").append(SIDBUtil.SQL2Str(this.getBonusFromDate()));
      sql2.append("SELECT * FROM bonuspointindividualtbl WHERE individualcode = ").append(SIDBUtil.SQL2Str(this.getIndividualCode()));
      sql2.append(" AND cmdtycode = ").append(SIDBUtil.SQL2Str(this.getCmdtyCode()));
      sql2.append(" AND bonusfromdate > current_date");
      if (errors.isEmpty()) {
        SICheckValid.checkNotExist(errors, lConnection, "ボーナス設定期間FROMに影響する既存設定", sql1.toString());
        SICheckValid.checkNotExist(errors, lConnection, "ボーナス予約設定", sql2.toString());
      }
    } catch (Exception e) {
      log.debug(e);
    }
    
    if (!errors.isEmpty()) lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
    
    return errors.isEmpty();
  }
  
  public boolean validateUpdateBonus(HttpServletRequest lRequest, Connection lConnection) {
    lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    SICustomErrors errors = new SICustomErrors();
    SIDateTime lDateTime = new SIDateTime();
    
    SICheckValid.checkValid(errors, "ボーナス設定期間FROM", this.getBonusFromDate(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DATE_TYPE);
    SICheckValid.checkValid(errors, "ボーナス設定期間TO", this.getBonusToDate(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DATE_TYPE);
    
    try {
      if (SIUtil.isNotNull(this.getBonusFromDate()) && SIUtil.isNotNull(this.getBonusToDate())) {
        SICheckValid.checkValid(errors, "ボーナス設定期間TO", "今日の日付", this.getBonusToDate(), lDateTime.getFullDate(), SICheckDataConf.SICHECK_DATA_DATE_GREATER_EQUAL_TYPE);
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT * FROM bonuspointindividualtbl WHERE individualcode = ").append(SIDBUtil.SQL2Str(this.getIndividualCode()));
        sql.append(" AND cmdtycode = ").append(SIDBUtil.SQL2Str(this.getCmdtyCode()));
        sql.append(" AND bonusfromdate > ").append(SIDBUtil.SQL2Str(this.getBonusFromDate()));
        sql.append(" AND bonusfromdate <= ").append(SIDBUtil.SQL2Str(this.getBonusToDate()));
        SICheckValid.checkNotExist(errors, lConnection, "ボーナス設定期間TOに影響する予約設定", sql.toString());
      }
    } catch (Exception e) {
      log.debug(e);
    }
    
    if (!errors.isEmpty()) {
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
      this.setBonusPointEditMode("1");
    }
    return errors.isEmpty();
  }
  
  public Collection getCtgryCollection(Connection lConnection) throws SIDBAccessException {
    Statement lStatement = null;
    ResultSet lResultSet = null;
    SIPointIndividual lPoint = null;
    Collection lPoints = new ArrayList();
    StringBuffer lSqlBuf = new StringBuffer();
    lSqlBuf.append("SELECT bonusfromdate,bonustodate,bonuspointrate");
    lSqlBuf.append(",CASE WHEN bonusfromdate > current_date THEN 1 ");
    lSqlBuf.append(" WHEN bonustodate >= current_date THEN 2 ELSE 0 END AS futureflg ");
    lSqlBuf.append("FROM bonuspointtbl WHERE ctgrycode =").append(SIDBUtil.SQL2Str(this.getIndividualCode().substring(0, 2), " "));
    lSqlBuf.append("ORDER BY bonusfromdate ASC");
    
    // 実行
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      
      // ボーナスレコードのセットの作成
      while (lResultSet.next()) {
        lPoint = new SIPointIndividual();
        lPoint.setEncode(SIConfig.SIENCODE_NONE);
        lPoint.setCtgryBonusFromDate(SIDBUtil.getDate(lResultSet.getTimestamp("bonusFromDate")));
        lPoint.setCtgryBonusToDate(SIDBUtil.getDate(lResultSet.getTimestamp("bonusToDate")));
        lPoint.setCtgryBonusPointRate(lResultSet.getString("bonusPointRate"));
        lPoint.setFutureFlg(lResultSet.getString("futureflg"));
        lPoints.add(lPoint);
      }
    } catch (SQLException ex) {
      ex.printStackTrace();
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(lResultSet, lStatement);
    }
    return lPoints;
  }
  
  public Collection getIndividualCollection(Connection lConnection) throws SIDBAccessException {
    Statement lStatement = null;
    ResultSet lResultSet = null;
    SIPointIndividual lPoint = null;
    Collection lPoints = new ArrayList();
    StringBuffer lSqlBuf = new StringBuffer();
    lSqlBuf.append("SELECT a.bonusfromdate,a.bonustodate,a.bonuspointrate,b.userName");
    lSqlBuf.append(",CASE WHEN a.bonusfromdate > current_date THEN 1 ");
    lSqlBuf.append(" WHEN a.bonustodate >= current_date THEN 2 ELSE 0 END AS futureflg ");
    lSqlBuf.append("FROM bonuspointindividualtbl a,mngusermtbl b WHERE a.individualcode =").append(SIDBUtil.SQL2Str(this.getIndividualCode(), " "));
    lSqlBuf.append("AND a.insertuser = b.usercode ");
    lSqlBuf.append("ORDER BY bonusfromdate ASC");
    
    // 実行
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      
      // ボーナスレコードのセットの作成
      while (lResultSet.next()) {
        lPoint = new SIPointIndividual();
        lPoint.setEncode(SIConfig.SIENCODE_NONE);
        lPoint.setIndividualBonusFromDate(SIDBUtil.getDate(lResultSet.getTimestamp("bonusFromDate")));
        lPoint.setIndividualBonusToDate(SIDBUtil.getDate(lResultSet.getTimestamp("bonusToDate")));
        lPoint.setIndividualBonusPointRate(lResultSet.getString("bonusPointRate"));
        lPoint.setFutureFlg(lResultSet.getString("futureflg"));
        lPoint.setChargeName(lResultSet.getString("userName"));
        lPoints.add(lPoint);
      }
    } catch (SQLException ex) {
      ex.printStackTrace();
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(lResultSet, lStatement);
    }
    return lPoints;
  }
  
  //EDBTG003-00 elecs-matsushima add start
  /**
   * 商品毎のポイント率を取得します
   *
   * @param lConnection
   * @param cmdtyCd
   * @param individualCd
   * @return
   * @throws SIDBAccessException
   */
  public String getCmdtyPointRate(Connection lConnection, String cmdtyCd, String individualCd) throws SIDBAccessException{
    
    Statement lStatement = null;
    ResultSet lResultSet = null;
    SIPointIndividual lRule = new SIPointIndividual();
    
    StringBuffer lPointBuf = new StringBuffer();
    StringBuffer lCommonBuf = new StringBuffer();
    
    // 基本のSQL
    lPointBuf.append("SELECT cm.cmdtycode,cm.individualcode,cm.cmdtyname,ct.rate1,ct.from1,ct.to1,in1.rate2,in1.from2,in1.to2,in2.pastflg,in2.futureflg,pm.rate3,in1.username,mk.makername ");
    lCommonBuf.append("FROM cmdtyunittbl cm ");
    lCommonBuf.append("LEFT OUTER JOIN (SELECT ctgrycode,bonuspointrate AS rate1,bonusfromdate AS from1,bonustodate AS to1 ");
    lCommonBuf.append("FROM bonuspointtbl WHERE bonusfromdate::date <= current_date AND bonustodate::date >= current_date) ct ");
    lCommonBuf.append("ON substring(cm.individualcode,0,3) = ct.ctgrycode ");
    lCommonBuf.append("LEFT OUTER JOIN (SELECT a.individualcode,a.bonuspointrate AS rate2,a.bonusfromdate AS from2,a.bonustodate AS to2,b.username ");
    lCommonBuf.append("FROM bonuspointindividualtbl a,mngusermtbl b WHERE a.insertuser=b.usercode AND bonusfromdate::date <= current_date AND bonustodate::date >= current_date) in1 ");
    lCommonBuf.append("ON cm.individualcode = in1.individualcode ");
    lCommonBuf.append("LEFT OUTER JOIN (SELECT individualcode ");
    lCommonBuf.append(",MAX(CASE WHEN bonustodate::date < current_date THEN 1 ELSE NULL END) AS pastFlg");
    lCommonBuf.append(",MAX(CASE WHEN bonusfromdate::date > current_date THEN 1 ELSE NULL END) AS futureFlg ");
    lCommonBuf.append("FROM bonuspointindividualtbl GROUP BY individualcode) in2 ");
    lCommonBuf.append("ON cm.individualcode = in2.individualcode ");
    lCommonBuf.append(",(SELECT CASE WHEN bonusfromdate::date <= current_date AND bonustodate::date >= current_date THEN bonuspointrate ELSE pointrate END AS rate3 ");
    lCommonBuf.append("FROM pointshopmtbl WHERE mallshopcode='0') pm ,makertbl mk WHERE cm.makercode=mk.makercode ");
    if (SIUtil.isNotNull(cmdtyCd)) {
      lCommonBuf.append(" AND cm.cmdtyCode = ").append(SIDBUtil.SQL2Str(cmdtyCd));
    }
    lCommonBuf.append(" AND cm.individualcode = ").append(SIDBUtil.SQL2Str(individualCd));
    
    lPointBuf.append(lCommonBuf);
    
    log.debug("getCollection:lSqlBuf=" + lPointBuf.toString());
    // 実行
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lPointBuf.toString());
      
      // ポイントレコードのセットの作成
      if (lResultSet.next()) {
        lRule = new SIPointIndividual();
        lRule.setEncode(SIConfig.SIENCODE_NONE);
        lRule.setCmdtyName(lResultSet.getString("cmdtyName"));
        lRule.setCmdtyCode(lResultSet.getString("cmdtyCode"));
        lRule.setIndividualCode(lResultSet.getString("individualCode"));
        lRule.setCtgryBonusPointRate(lResultSet.getString("rate1"));
        lRule.setCtgryBonusFromDate(lResultSet.getString("from1"));
        lRule.setCtgryBonusToDate(lResultSet.getString("to1"));
        lRule.setIndividualBonusPointRate(lResultSet.getString("rate2"));
        lRule.setIndividualBonusFromDate(lResultSet.getString("from2"));
        lRule.setIndividualBonusToDate(lResultSet.getString("to2"));
        lRule.setPastFlg(lResultSet.getString("pastflg"));
        lRule.setFutureFlg(lResultSet.getString("futureflg"));
        lRule.setBasicPointRate(lResultSet.getString("rate3"));
        lRule.setMakerName(lResultSet.getString("makerName"));
        lRule.setChargeName(lResultSet.getString("userName"));
      }
    } catch (Exception ex) {
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(lResultSet, lStatement);
    }
    return lRule.getPointRate();
  }
  
  public String getCmdtyCompositionFlg() {
    return this.cmdtyCompositionFlg;
  }
  
  public void setCmdtyCompositionFlg(String cmdtyCompositionFlg) {
    if (SIUtil.isNull(cmdtyCompositionFlg)) cmdtyCompositionFlg = SIConfig.CMDTY_COMPOSITION_NORMAL;
    this.cmdtyCompositionFlg = cmdtyCompositionFlg;
  }
  //EDBTG003-00 elecs-matsushima add end
}
