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

import java.sql.Connection;

import jp.co.sint.config.SIConfig;
import jp.co.sint.config.SIFlagConf;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SIFatalException;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;

/**
 * @author arai
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class SITax {
  //ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  private String startDate;
  private String tax = "0";

  /**
   * @return
   */
  public Category getLog() {
    return log;
  }

  /**
   * @return
   */
  public String getStartDate() {
    return startDate;
  }

  /**
   * @param category
   */
  public void setLog(Category category) {
    log = category;
  }

  /**
   * @param string
   */
  public void setStartDate(String string) {
    startDate = string;
  }

  /**
   * @return
   */
  public String getTax() {
    return tax;
  }

  /**
   * @param string
   */
  public void setTax(String string) {
    tax = string;
  }

 public static String getTaxRate(Connection lConnection){
   String lSql="SELECT TaxRate FROM TaxVW ";
   try {
    String lRes=SIDBUtil.getFirstData(lConnection,lSql);
    if (SIUtil.isNull(lRes)) return "0";
    else return lRes;
  } catch (SIDBAccessException e) {
    e.printStackTrace();
    return "0";
  }
 }

 public static String calcPriceIncTax(Connection lConnection,String lPrice){
   String lTaxRate=getTaxRate(lConnection);
   String lTax="0";
   try {
     lTax=SIUtil.multi_LD(lPrice,SIUtil.div_DL(lTaxRate,"100"));
   } catch (SIFatalException e) {
     e.printStackTrace();
   }
   return SIUtil.add_LL(lPrice,lTax);
 }

 public static String calcPriceIncTax(String lPrice,String lTaxRate){
   String lTax="0";
   try {
     lTax=SIUtil.multi_LD(lPrice,SIUtil.div_DL(lTaxRate,"100"));
   } catch (SIFatalException e) {
     e.printStackTrace();
   }
   return SIUtil.add_LL(lPrice,lTax);
 }

 public static String calcTax(String lAmount,String lUnitPrice,String lTaxFlg,String lTax){
   String lRes="0";
   String lTaxRate="0.0";
   String lResTax="0";
   lRes=SIUtil.multi_LL(lAmount,lUnitPrice);

   if (lTaxFlg.equals("1")){
     if (Float.parseFloat(lTax)>=1.0){
       try {lTaxRate=SIUtil.div_DL(lTax,"100");}catch(Exception e){}
     }
     lResTax=SIUtil.multi_LD(lRes,lTaxRate);
     lRes=SIUtil.add_LL(lRes,lResTax);
   }
   return lRes;
 }
 
 /**
  * <b>getTaxFlgName2</b>
  * 税フラグから2種類税区分(非課税と税込み)を取得します。
  * @param lTaxFlg 税フラグ
  * @return 税区分名
  */
 public static String getTaxFlgName2(String lTaxFlg){
   if (SIUtil.isNull(lTaxFlg)) return "";
   else if (lTaxFlg.equals("0")) return SIFlagConf.SIFLAG_TAX_0;
   else if (lTaxFlg.equals("1")) return SIFlagConf.SIFLAG_TAX_1;
   else if (lTaxFlg.equals("2")) return SIFlagConf.SIFLAG_TAX_2;
   else return "";
 }

 /**
  * <b>getFullTaxFlgName2</b>
  * 税フラグから2種類税区分(括弧も含む)を取得します。
  * @param lTaxFlg 税フラグ
  * @return 税区分名
  */
 public static String getFullTaxFlgName2(String lTaxFlg){
   if (SIUtil.isNull(getTaxFlgName2(lTaxFlg))) return "";
   else return "("+getTaxFlgName2(lTaxFlg)+")";
 }

 /**
  * <b>getFullTaxFlgName2</b>
  * 税フラグから2種類税区分(括弧も含む)を取得します。
  * @param lTaxFlg 税フラグ
  * @param lSum 金額
  * @return 税区分名
  */
 public static String getFullTaxFlgName2(String lTaxFlg,String lSum){
   if (SIUtil.isNull(lSum)||lSum.trim().equals("0")) return "";
   else if (SIUtil.isNull(getTaxFlgName2(lTaxFlg))) return "";
   else return "("+getTaxFlgName2(lTaxFlg)+")";
 }

 /**
  * <b>getTaxFlgName3</b>
  * 税フラグから3種類税区分(非課税と税抜きと税込み)を取得します。
  * @param lTaxFlg 税フラグ
  * @return 税区分名
  */
 public static String getTaxFlgName3(String lTaxFlg){
   if (lTaxFlg.equals("0")) return SIFlagConf.SIFLAG_TAX_NAME[2][0];
   else if (lTaxFlg.equals("1")) return SIFlagConf.SIFLAG_TAX_NAME[1][0];
   else if (lTaxFlg.equals("2")) return SIFlagConf.SIFLAG_TAX_NAME[0][0];
   else return "";
 }

 /**
  * <b>getTaxFullFlgName3</b>
  * 税フラグから3種類税区分(括弧も含む)を取得します。
  * @param lTaxFlg 税フラグ
  * @return 税区分名
  */
 public static String getTaxFullFlgName3(String lTaxFlg){
   if (SIUtil.isNull(getTaxFlgName3(lTaxFlg)))return "";
   else return "("+getTaxFlgName3(lTaxFlg)+")";
 }
}
