#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：請求書インフォメーション設定
#
# 機能          ：１．請求書インフォメーション設定
#
#(１)
#インフォメーションパターンコードを元にインフォメーションコード1～3を設定し、請求書印刷データ（インフォメーション設定）を出力する。
#ただし、インフォメーションコードは外部ファイル（お知らせ欄設定パラメータ）によっても設定可能となるので、それらを考慮しインフォメーションコードを設定する。
#
# コマンド形式  ：EO60301M0J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/07/06  FJ）冨井     【IT2-2012-0001200】ファイルバックアップ対応
# v5.00           2013/03/01  FJ) 小柴     【ANK-1417-00-00】請求書印刷データの出力ファイル名を変更
# v5.01           2013/03/18  FJ）広野     性能改善: アンロードの参照先スクリプト変更にともなう修正
# v5.02           2013/03/23  FJ）広野     【ST4-2013-0000405】性能改善 bsortパラメータの指定サイズ最適化
# v5.03           2013/04/30  FJ）狭間     【TG1-2013-0000326】お知らせ文言対象外データの作成先変更
# v5.04           2013/05/17  FJ）狭間     【TG1-2013-0000327】エラーハンドリング修正
# v5.05           2013/05/17  FJ）伊藤     【OM-2013-0003270】お知らせ欄設定パラメータのファイルバックアップを廃止
# v9.00           2014/07/22  FJ）桑島     【IT1-2014-0000237】重複ファイルID変更対応。
##############################################################

##############################################################
# 環境変数定義
##############################################################
#---ワークファイル削除モード
#
WK_RM=true

#
#---ツール格納場所
#
#G_TOOLSH=.

#
#---環境変数定義Shell呼び出し
#
. EOK010110J0.sh

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 | sed -e "s/\.sh//g"`
if [ $# -eq 2 ]
then
     JOBNAME=${JOBNAME}_$2;
fi

#
#---サービス（業務プロセス）
#
SVC=$JOBNAME

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
[ $# -eq 2 ] &&TAJUKIDO="_$2"

##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME
#####################################################################################
#
#--- 各種定義
#
#--- アンロードモジュール
UNLOADER=${G_TOOLSH}/EOKULD03.sh
#--- ファイルマッチングモジュール
MATCHING=${G_TOOLSH}/util/bin/ZTLMAT01
#--- ワークファイル
TMP_FILE_01=${MID_DIR_CH}/${JOBNAME}_WK_1$TAJUKIDO.csv
TMP_FILE_02=${MID_DIR_CH}/${JOBNAME}_WK_3$TAJUKIDO.csv
INFILE=${MID_DIR_CH}/CHIFM182003.csv

#---運用日付取得
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
else
   RSLT_OPEDATE="${OPD}"
fi
SHORI_YMD=${RSLT_OPEDATE}

#--- エラーハンドリング関数
checkError(){
	mess1=$1;
	rc=$2;
	mess2=$3;
	if [ ${rc} -ne 0 ] ;
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E ${JOBNAME} " ${mess1} Error(${SVC} ${mess2}:rc=${rc}) " ;
		echo ${JOBNAME} " ${mess1} Error(${SVC} ${mess2}:rc=${rc}) " ;
		exit ${G_RTN_ERROR} ;
	fi ;
}
#####################################################################################
#
#---前処理
#
#####################################################################################
#
#-----請求内訳アンロード
#
#####################################################################################

bsortex \
  -sort key="5.2asc,6.3asc,7.12asc,8.11asc" \
  -record recform=txtcsv \
  -input reclen=200 \
  file=${INFILE} \
  -output reconst=1.10,0.12,5.2,6.3,7.12,8.11 \
  file=${MID_DIR_CH}/${JOBNAME}_CH0101.csv
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " 請求内訳アンロード sort Error($SVC sort:rc=$rc) "
    echo $JOBNAME " 請求内訳アンロード sort Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


#####################################################################################
#
#-----料金項目抽出変換アンロード
#
#####################################################################################
echo '料金項目抽出変換データアンロード'
#--- ファイル定義
SQLFILE=${SQL_DIR}/CH_U_CH0401_01.sql
#---SQLへのパラメータ定義
OPE_DATE="'${SHORI_YMD}'"
SYS_CD="'CH'"
WORK_KINO_SKBT_CD="'SKY_U_DMK'"
CHSHT_CHG_CD="'1'"
#--- SQL編集処理
cp ${SQLFILE} ${TMP_FILE_01}
sed -i -e "s/:OPE_DATE/${OPE_DATE}/g"                   ${TMP_FILE_01} || checkError 'sed 1' $? ${SQLFILE};
sed -i -e "s/:SYS_CD/${SYS_CD}/g"                       ${TMP_FILE_01} || checkError 'sed 2' $? ${SQLFILE};
sed -i -e "s/:WORK_KINO_SKBT_CD/${WORK_KINO_SKBT_CD}/g" ${TMP_FILE_01} || checkError 'sed 3' $? ${SQLFILE};
sed -i -e "s/:CHSHT_CHG_CD/${CHSHT_CHG_CD}/g"           ${TMP_FILE_01} || checkError 'sed 4' $? ${SQLFILE};
#--- データアンロード
${UNLOADER} ${TMP_FILE_01} ${MID_DIR_CH}/${JOBNAME}_CH0401.csv || checkError '料金項目抽出変換 UNLOADER' $? ${SQLFILE};
#-データ量が少ないためSQLにてorder byを行っている。そのためソートは行わない。


#####################################################################################
#
#-----請求内訳＋料金項目抽出変換マッチング
#
#####################################################################################
echo '請求内訳＋料金項目抽出変換マッチング'
#--- ファイル定義
DEFFILE=${G_TOOLSH}/util/def/CH_CM_0001.def
#- マッチング出力ファイル（後でソートするのでいったんはワークに出力する）
export ZTLOUTFILE=${TMP_FILE_02}
#- 定義ファイルの入力ファイルを書き換える
cp ${DEFFILE} ${TMP_FILE_01}
sed -i -e "s%:CH_T_SEIKY_UCWK%${MID_DIR_CH}/${JOBNAME}_CH0101.csv%g"      ${TMP_FILE_01} || checkError 'sed 1' $? ${DEFFILE};
sed -i -e "s%:CH_M_PRC_KMK_CS_CHGE%${MID_DIR_CH}/${JOBNAME}_CH0401.csv%g" ${TMP_FILE_01} || checkError 'sed 2' $? ${DEFFILE};
#--- CSVマッチング処理
${MATCHING} ${TMP_FILE_01} || checkError 'MATCHING' $? ${DEFFILE};
#---Java入力用にソートしておく
#--ソートキー：請求契約番号(0.10),請求番号(1.12)
bsort -s -z100 -Tcsv -0.10asca,1.12asca -o ${MID_DIR_CH}/CHIFM156001.csv ${TMP_FILE_02} || checkError 'bsort' $? 'CHIFM156001.csv';

#####################################################################################
#
#-----請求データ並べ替え
#
#####################################################################################
echo 請求データ並べ替え
bsort -s -z3320 -Tcsv -16.10asca,17.12asca -o ${MID_DIR_CH}/CHIFM157001.csv ${MID_DIR_CH}/CHIFM087003.csv || checkError 'bsort' $? 'CHIFM087003.csv';
#
#---Javaパラメタ定義
#

P1="OPD=${SHORI_YMD},"
P2="SVCCTL=JBSbatMatchServiceControl,"
P3="JOB=EO60301M0J0,"
P4="IND1=CHIFM157.def,"
P5="INF1=${MID_DIR_CH}/CHIFM157001.csv,"
P6="IND2=CHIFM156.def,"
P7="INF2=${MID_DIR_CH}/CHIFM156001.csv,"
P8="OTD1=CHIFM158.def,"
P9="OTF1=${MID_DIR_CH}/CHIFM087005.csv,"
# IT1-2014-0000237 MOD START
#P10="OTD2=CHIFE062.def,"
#P11="OTF2=${MID_DIR_CH}/CHIFE062001_${SHORI_YMD}.csv,"
P10="OTD2=CHIFM236.def,"
P11="OTF2=${MID_DIR_CH}/CHIFM236001_${SHORI_YMD}.csv,"
# IT1-2014-0000237 MOD END
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
# IT1-2014-0000237 MOD START
#P18="FREE=CHIFE061.def;${GAIBU_RECEIVE_DIR_CH}/CHIFE061/CHIFE061001.csv"
P18="FREE=CHIFE061.def;${MID_DIR_CH}/CHIFE061001.csv"
# IT1-2014-0000237 MOD END
PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"
#
#
#---ＡＰＬ起動
#
java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA

rc=$?
ERR_FLG=0
if [ $rc -ne 0 ]
then
   if [ $rc -ne 4 ]
   then
       if [ $rc -ne 8 ]
       then
           if [ $rc -ne 127 ]
           then
              sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              echo $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              exit ${G_RTN_ERROR}
           fi
       fi
    fi
    ERR_FLG=1
fi

exit_rc=$rc

if [ $rc -ne 127 ]
then
    #---出力ファイルのソート
    bsort -s -z3320 -Tcsv -21.1asca,15.12asca,16.10asca -o ${TMP_FILE_01} ${MID_DIR_CH}/CHIFM087005.csv || checkError 'bsort' $? 'CHIFM087005.csv';
    cp ${TMP_FILE_01} ${MID_DIR_CH}/CHIFM087005.csv

    #---運用日付取得
    if [ "${OPD}" = "" ]; then
       . EOK010310J0.sh "BDATE"
    else
       RSLT_OPEDATE="${OPD}"
    fi

    #---システム日時取得
    . EOK010410J0.sh "2"
    OPEDATE=${RSLT_OPEDATE}`echo ${RSLT_SYSDATE} | cut -c 9-`

    if [ ${WK_RM} = "true" ]
    then
        rm -f ${TMP_FILE_01} ${TMP_FILE_02};
        rm -f ${MID_DIR_CH}/${JOBNAME}_CH0401.csv
        rm -f ${MID_DIR_CH}/${JOBNAME}_CH0101.csv
    fi
fi

#
#--- ジョブの終了メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit $exit_rc
