/**
 * Copyright (c) 2003-2006 System Integrator Corporation.
 *                 All Rights Reserved.
 */
package jp.co.sint.config;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIUtil;

/**
 * @version $Id: SIExcelConf.java,v 1.0 2006/04/24 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/04/24 12:20:42  Original
 */
public class SIExcelConf {
  
  //ファイルの拡張名
  private final static String SIEXCEL_EXTENSION_NAME = "xls";
  
  //分割の文字
  public final static String FIELD_DATE_TYPE = "date";
  public final static String FIELD_DATE_TIME_TYPE = "dateTime";
  public final static String FIELD_NUMERIC_TYPE = "number";//nullの時：ゼロ表示
  public final static String FIELD_STRING_TYPE = "string";
  
  //各画面に出力するファイルに対する定数定義
  public final static int SIEXCEL_INX = 0;
  public final static int SIEXCEL_ORDER_INX              = SIEXCEL_INX + 0;  //受注一覧
  public final static int SIEXCEL_ORDER_DETAIL_INX       = SIEXCEL_INX + 1;  //受注明細
  public final static int SIEXCEL_INDIVIDUAL_INX         = SIEXCEL_INX + 2;  //在庫明細表
  public final static int SIEXCEL_SALES_INX              = SIEXCEL_INX + 3;  //売上明細ステータス
  public final static int SIEXCEL_INVENTORYSTOCK_INX     = SIEXCEL_INX + 4;  //棚卸差異表
  public final static int SIEXCEL_INSENTIVE_INX          = SIEXCEL_INX + 5;  //インセンティブ対象売上一覧表
  public final static int SIEXCEL_STOREHISTORY_INX       = SIEXCEL_INX + 6;  //入出庫一覧表    
  public final static int SIEXCEL_MARKETINGREPORT_INX    = SIEXCEL_INX + 7;  //マーケティングレポート
  public final static int SIEXCEL_TRENDREPORT_INX        = SIEXCEL_INX + 8;  //業績推移表
  public final static int SIEXCEL_BILL_INX               = SIEXCEL_INX + 9;  //請求書
  public final static int SIEXCEL_RECEIPT_INX            = SIEXCEL_INX + 10; //領収書
  public final static int SIEXCEL_PROCESS_INX            = SIEXCEL_INX + 11; //販売前加工集計表
  public final static int SIEXCEL_SALES_BILL_INX         = SIEXCEL_INX + 12; //売上伝票
  public final static int SIEXCEL_CMDTY_BILL_INX         = SIEXCEL_INX + 13; //物品受領書
  public final static int SIEXCEL_SHIPPMENT_REQUEST_INX  = SIEXCEL_INX + 14; //出荷指示書
  public final static int SIEXCEL_SALES_STATUS_INX       = SIEXCEL_INX + 15; //月次販売ステータス（支店集計）
  public final static int SIEXCEL_SALES_STATUS_ALL_INX   = SIEXCEL_INX + 16; //月次販売ステータス（全国集計）
  public final static int SIEXCEL_SEGMENT_STATUS_INX     = SIEXCEL_INX + 17; //セグメント別集計表
  
  public final static String SIEXCEL_ORDER_NAME              = "order_list";        //受注一覧
  public final static String SIEXCEL_ORDER_DETAIL_NAME       = "order_detail";      //受注明細
  public final static String SIEXCEL_INDIVIDUAL_NAME         = "individual";        //在庫明細表
  public final static String SIEXCEL_SALES_NAME              = "sales";             //売上明細ステータス
  public final static String SIEXCEL_INVENTORYSTOCK_NAME     = "inventorystock";    //棚卸差異表
  public final static String SIEXCEL_INSENTIVE_NAME          = "insentive";         //インセンティブ対象売上一覧表
  public final static String SIEXCEL_STOREHISTORY_NAME       = "storehistory";      //入出庫一覧表 
  public final static String SIEXCEL_MARKETINGREPORT_NAME    = "marketingreport";   //マーケティングレポート
  public final static String SIEXCEL_TRENDREPORT_NAME        = "trendreport";       //業績推移表
  public final static String SIEXCEL_BILL_NAME               = "bill";              //請求書
  public final static String SIEXCEL_RECEIPT_NAME            = "receipt";           //領収書
  public final static String SIEXCEL_PROCESS_NAME            = "process";           //加工伝票
  public final static String SIEXCEL_SALES_BILL_NAME         = "sales_bill";        //売上伝票
  public final static String SIEXCEL_CMDTY_BILL_NAME         = "cmdty_bill.xls";    //物品受領書
  public final static String SIEXCEL_SHIPPMENT_REQUEST_NAME  = "shippment_request"; //出荷指示書
  public final static String SIEXCEL_SALES_STATUS_NAME       = "salesstatus";       //月次販売ステータス（支店集計）
  public final static String SIEXCEL_SALES_STATUS_ALL_NAME   = "salesstatus_all";   //月次販売ステータス（全国集計）
  public final static String SIEXCEL_SEGMENT_STATUS_NAME     = "segmentstatus";     //セグメント別集計表
  public final static String SIEXCEL_SALES_STATUS_NAME0       = "salesstatus0";       //月次販売ステータス（支店集計）旧セグメント
  public final static String SIEXCEL_SALES_STATUS_ALL_NAME0   = "salesstatus_all0";   //月次販売ステータス（全国集計）旧セグメント
  public final static String SIEXCEL_SEGMENT_STATUS_NAME0     = "segmentstatus0";     //セグメント別集計表 旧セグメント
  public final static String SIEXCEL_MARKETINGREPORT_NAME0    = "marketingreport0";   //マーケティングレポート
  
  public final static String SICSV_HACCHU_PAYMENT_NAME       = "hacchu_payment";    //発注明細表（CSV）
  public final static String SICSV_HISTORY_DETAIL_NAME       = "history_detail";    //各種入出庫明細表（CSV）
  public final static String SICSV_DEADSTOCK_LIST_NAME       = "deadstock_list";    //滞留在庫チェックリスト（CSV）
  public final static String SICSV_ACTIVEUSER_LIST_NAME       = "activeuser_list";    //アクティブユーザ資料（CSV）
  public final static String SICSV_NODELIVERY_LIST_NAME       = "nodelivery_list";    //未出荷受注リスト（CSV）
  public final static String SICSV_NOPAYMENT_LIST_NAME       = "nopayment_list";    //出荷済未入金受注リスト（CSV）
  
  public SIExcelConf(){}
  
  public final static String[][] ROWINDEX={
    {"8","52"}
   ,{"8","52"}
   ,{"10","52"}
   ,{"9","56"}
   ,{"9","51"}
   ,{"9","52"}
   ,{"7","61"}
   ,{"6","309"}
   ,{"7","54"}
   ,{"0","146"}
   ,{"0","77"}
   ,{"12","51"}
   ,{"0","73"}
   ,{"0","67"}
   ,{"0","67"}
   ,{"8","15"}
   ,{"8","15"}
   ,{"10","25"}
  };
  
  public final static String[][] COLUMNINDEX={
    {"0","19"}
   ,{"0","20"}
   ,{"0","7"}
   ,{"0","22"}
   ,{"0","9"}
   ,{"0","24"}
   ,{"0","13"}
   ,{"0","14"}
   ,{"0","15"}
   ,{"0","43"}
   ,{"0","38"}
   ,{"0","5"}
   ,{"0","43"}
   ,{"0","43"}
   ,{"0","8"}
   ,{"0","28"}
   ,{"0","28"}
   ,{"0","53"}
  };
  
  public final static String[] FOOTER_TITLE = {
    "【合計】","【取引区分別小計】","【支店別小計】","【担当者別小計】","【カテゴリ別小計】"
  };
 
  //各機能別に対するファイル名の先頭語
  private final static String[] SIPREFIX_FILE_NAME = {
    "order_list_",//0.受注明細表
    "order_detail_",
    "individual_",
    "sales_",
    "inventorystock_",
    "insentive_",
    "storehistory_",
    "marketingreport_",
    "trendreport_",
    "bill_",
    "receipt_",
    "process_",
    "sales_bill_",
    "cmdty_bill_",
    "shippment_request",
    "monthly_sales_status_",
    "monthly_sales_status_all_",
    "monthly_segment_status_"
  };
  
  public final static String[] SIEXCEL_TITLE_NAME = {
    "受注一覧表",
    "受注明細表",
    "在庫明細表",
    "売上明細ステータス",
    "棚卸差異表",
    "インセンティブ対象売上一覧表",
    "入出庫一覧表",
    "マーケティングレポート",
    "業績推移表",
    "請求書",
    "領収書",
    "販売前加工集計表",
    "売上伝票",
    "物品受領書",
    "出荷指示書",
    "月次販売ステータス",
    "月次販売ステータス（全国集計）",
    "セグメント別集計表"
  };

  public final static String getTitleName(int lIndex){
    String result = SIEXCEL_TITLE_NAME[lIndex];
    return result;
  }
  
  /**
   * <b>getSIExcelFileName</b>
   * SIExcelファイル名を取得します。
   * 構成：prefixName+currentDateTime.SIExcel
   * @param lIndex  各機能を指すindex
   * @return SIExcelファイル名
   * @throws なし
   */
  public final static String getExcelFileName(int lIndex,String fileName) {
    StringBuffer lFileName = new StringBuffer();
    lFileName.append(SIPREFIX_FILE_NAME[lIndex]);
    if(SIUtil.isNotNull(fileName)){
      lFileName.append(fileName);
    }else{
        lFileName.append(new SIDateTime().getDateTimeString());
    }
    lFileName.append(".");
    lFileName.append(SIEXCEL_EXTENSION_NAME);
    return lFileName.toString();
  }
  
  public final static String getFileName(int lIndex){
    String lFileName = new String("");
    lFileName =SIPREFIX_FILE_NAME[lIndex];
    return lFileName;
  }
  
  public final static String getStartRowIndex(int lIndex){
    String result = "";
    result = ROWINDEX[lIndex][0];
    return result;
  }
  
  public final static String getEndRowIndex(int lIndex){
    String result = "";
    result = ROWINDEX[lIndex][1];
    return result;
  }
  
  public final static String getStartColumnIndex(int lIndex){
    String result = "";
    result = COLUMNINDEX[lIndex][0];
    return result;
  }
  
  public final static String getEndColumnIndex(int lIndex){
      String result = "";
    result = COLUMNINDEX[lIndex][1];
      return result;
  }
}