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

import java.util.Date;

import jp.co.sint.config.SIConfig;
import jp.co.sint.tools.SIFatalException;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;

/**
 * @version $Id: SICmdtyCompositionOption.java,v 1.0 Exp $
 * @author SI Matsushima <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>
 * SI Matsushima 2012/11/21 Original
 */

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

  // ショップコード
  private String shopCode = "0";

  // 商品コード
  private String cmdtyCode = "";

  // 在庫コード（セットコード）
  private String individualCode = "";

  // オプション商品商品コード（親コード）
  private String detailCmdtyCode = "";

  // オプション商品在庫コード
  private String detailIndividualCode = "";

  // 構成数
  private String compositionCount = "";

  // 表示順
  private String dispOrder = "";

  // 特記事項
  private String notices = "";

  // 登録者コード
  private String initUserCode = "";

  // 登録日
  private Date initDatetime = null;

  // 商品名
  private String cmdtyName = "";

  // ポイント付与率
  private String addPointRate = "";

  // BG卸価
  private String bgPrice = "";

  // BG卸価税抜
  private String bgPriceWithoutTax = "";

  // 予定原価
  private String purchaseprice = "";

  // 加工価格
  private String processingexpence = "";

  // EDBTG003-00 mng-paku add start
  private String amountFlg = "";

  private String cost = "";

  private String taxFlg = "";

  private String taxRate = "";

  private String unitPrice = "";

  private String unitPriceWithoutTax = "";

  private String usedNewFlg = "";
  // EDBTG003-00 mng-paku add end
  private String memberDiscountRate = "0";
  
  private String amount = "0";
  
  public String getShopCode() {
    return this.shopCode;
  }

  public String getCmdtyCode() {
    return this.cmdtyCode;
  }

  public String getIndividualCode() {
    return this.individualCode;
  }

  public String getDetailIndividualCode() {
    return this.detailIndividualCode;
  }

  public String getDispOrder() {
    return this.dispOrder;
  }

  public String getInitUserCode() {
    return this.initUserCode;
  }

  public Date getInitDatetime() {
    return this.initDatetime;
  }

  public String getCompositionCount() {
    return this.compositionCount;
  }

  public String getNotices() {
    return this.notices;
  }

  public void setShopCode(String shopCode) {
    if (SIUtil.isNull(shopCode)) shopCode = "0";
    this.shopCode = shopCode;
  }

  public void setCmdtyCode(String cmdtyCode) {
    if (SIUtil.isNull(cmdtyCode)) cmdtyCode = "";
    this.cmdtyCode = cmdtyCode;
  }

  public void setIndividualCode(String individualCode) {
    if (SIUtil.isNull(individualCode)) individualCode = "";
    this.individualCode = individualCode;
  }

  public void setDetailIndividualCode(String detailIndividualCode) {
    if (SIUtil.isNull(detailIndividualCode)) detailIndividualCode = "";
    this.detailIndividualCode = detailIndividualCode;
  }

  public void setDispOrder(String dispOrder) {
    if (SIUtil.isNull(dispOrder)) dispOrder = "";
    this.dispOrder = dispOrder;
  }

  public void setInitUserCode(String initUserCode) {
    if (SIUtil.isNull(initUserCode)) initUserCode = "";
    this.initUserCode = initUserCode;
  }

  public void setInitDatetime(Date initDatetime) {
    this.initDatetime = initDatetime;
  }

  public void setCompositionCount(String compositionCount) {
    if (SIUtil.isNull(compositionCount)) compositionCount = "";
    this.compositionCount = compositionCount;
  }

  public void setNotices(String notices) {
    if (SIUtil.isNull(notices)) notices = "";
    this.notices = notices;
  }

  public String getCmdtyName() {
    return this.cmdtyName;
  }

  public void setCmdtyName(String cmdtyName) {
    if (SIUtil.isNull(cmdtyName)) cmdtyName = "";
    this.cmdtyName = cmdtyName;
  }

  public String getAddPointRate() {
    return this.addPointRate;
  }

  public String getBgPrice() {
    return this.bgPrice;
  }

  public String getBgPriceWithoutTax() {
    return this.bgPriceWithoutTax;
  }

  public void setAddPointRate(String addPointRate) {
    if (SIUtil.isNull(addPointRate)) addPointRate = "";
    this.addPointRate = addPointRate;
  }

  public void setBgPrice(String bgPrice) {
    if (SIUtil.isNull(bgPrice)) bgPrice = "";
    this.bgPrice = bgPrice;
  }

  public void setBgPriceWithoutTax(String bgPriceWithoutTax) {
    if (SIUtil.isNull(bgPriceWithoutTax)) bgPriceWithoutTax = "";
    this.bgPriceWithoutTax = bgPriceWithoutTax;
  }

  public String getPurchaseprice() {
    return this.purchaseprice;
  }

  public String getProcessingexpence() {
    return this.processingexpence;
  }

  public void setPurchaseprice(String purchaseprice) {
    if (SIUtil.isNull(purchaseprice)) purchaseprice = "";
    this.purchaseprice = purchaseprice;
  }

  public void setProcessingexpence(String processingexpence) {
    if (SIUtil.isNull(processingexpence)) processingexpence = "";
    this.processingexpence = processingexpence;
  }

  public String getDetailCmdtyCode() {
    return this.detailCmdtyCode;
  }

  public void setDetailCmdtyCode(String detailCmdtyCode) {
    if (SIUtil.isNull(detailCmdtyCode)) detailCmdtyCode = "";
    this.detailCmdtyCode = detailCmdtyCode;
  }

  // EDBTG003-00 mng-paku add start
  /**
   * @return the amountFlg
   */
  public String getAmountFlg() {
    return amountFlg;
  }

  /**
   * @param amountFlg the amountFlg to set
   */
  public void setAmountFlg(String amountFlg) {
    if (SIUtil.isNull(amountFlg)) amountFlg = "";
    this.amountFlg = amountFlg;
  }

  /**
   * @return the cost
   */
  public String getCost() {
    return cost;
  }

  /**
   * @param cost the cost to set
   */
  public void setCost(String cost) {
    if (SIUtil.isNull(cost)) cost = "";
    this.cost = cost;
  }

  /**
   * @return the taxFlg
   */
  public String getTaxFlg() {
    return taxFlg;
  }

  /**
   * @param taxFlg the taxFlg to set
   */
  public void setTaxFlg(String taxFlg) {
    if (SIUtil.isNull(taxFlg)) taxFlg = "";
    this.taxFlg = taxFlg;
  }

  /**
   * @return the taxRate
   */
  public String getTaxRate() {
    return taxRate;
  }

  /**
   * @param taxRate the taxRate to set
   */
  public void setTaxRate(String taxRate) {
    if (SIUtil.isNull(taxRate)) taxRate = "";
    this.taxRate = taxRate;
  }

  /**
   * @return the unitPrice
   */
  public String getUnitPrice() {
    return unitPrice;
  }

  /**
   * @param unitPrice the unitPrice to set
   */
  public void setUnitPrice(String unitPrice) {
    if (SIUtil.isNull(unitPrice)) unitPrice = "";
    this.unitPrice = unitPrice;
  }

  /**
   * @return the unitPriceWithoutTax
   */
  public String getUnitPriceWithoutTax() {
    return unitPriceWithoutTax;
  }

  /**
   * @param unitPriceWithoutTax the unitPriceWithoutTax to set
   */
  public void setUnitPriceWithoutTax(String unitPriceWithoutTax) {
    if (SIUtil.isNull(unitPriceWithoutTax)) unitPriceWithoutTax = "";
    this.unitPriceWithoutTax = unitPriceWithoutTax;
  }


  /**
   * @return the usedNewFlg
   */
  public String getUsedNewFlg() {
    return usedNewFlg;
  }

  /**
   * @param usedNewFlg the usedNewFlg to set
   */
  public void setUsedNewFlg(String usedNewFlg) {
    if (SIUtil.isNull(usedNewFlg)) usedNewFlg = "";
    this.usedNewFlg = usedNewFlg;
  }
  // EDBTG003-00 mng-paku add end
  public String getMemberDiscountRate(){
    return memberDiscountRate;
  }
  
  public void setMemberDiscountRate(String lMemberDiscountRate) {
    if (SIUtil.isNull(lMemberDiscountRate)) lMemberDiscountRate = "0";
    this.memberDiscountRate = lMemberDiscountRate;
  }
  
  public String getFinalUnitPrice() {
    String lResPirce = getBgPrice();
    String MemberDiscountRate = "0";
    
    try {
      MemberDiscountRate = SIUtil.sub_LD("1", SIUtil.div_DL(getMemberDiscountRate(), "100"));
    } catch (SIFatalException e) {
      e.printStackTrace();
    }
      // 会員値引の適用
      if (!this.getMemberDiscountRate().equals("0")) {
        lResPirce = SIUtil.multi_LD(lResPirce, MemberDiscountRate);
      }
    return lResPirce;
  }
  
  public String getFinalUnitPriceWithoutTax() {
    // 値引がない場合はそのまま出す
    if (getBgPrice().equals(getFinalUnitPrice())) return getBgPriceWithoutTax();
    // 税込最終金額に対して税引き換算
    return SIUtil.getPriceWithoutTax(getFinalUnitPrice(),getTaxRate());
  }
  
  public String getAmount() {
    return amount;
  }
  
  public void setAmount(String amount) {
    if (SIUtil.isNull(amount)) amount = "0";
    this.amount = amount;
  }
}