#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：遅延分ＣＡＴ
#
# 機能          ：料金システムから日々連携される工事遅延分の累積情報を作成する。
#
# コマンド形式  ：EO6020210J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v5.00           2013/06/25  FJ)前田     【OM-2013-0002034】請求契約番号をキーにマッチングするように修正
# v8.00           2013/12/25  FJ）北端     【ANK-1794-00-00】請求書電話番号表示対応
##############################################################

##############################################################
# 環境変数定義
##############################################################

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

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

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 | sed -e "s/\.sh//g"`

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx

#---ワークファイル削除モード
WK_RM=true

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

#
#---パラメタ定義
#

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO6020210J0,"
P4="IND1=,"
P5="INF1=,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=,"
P9="OTF1=,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE="
PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"

sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME

INFILE_1=${MID_DIR_CH}/CHIFI005014.csv
INFILE_2=${SEND_DIR}/CHIFI006001.csv
OUTFILE_WRK_1=${MID_DIR_CH}/${JOBNAME}_CHIFI006001_WK_1.csv
OUTFILE_WRK_2=${MID_DIR_CH}/${JOBNAME}_CHIFI006001_WK_2.csv
OUTFILE_WRK_3=${MID_DIR_CH}/${JOBNAME}_CHIFI006001_MATCH_KEKKA_WK_3.csv
OUTFILE_WRK_4=${MID_DIR_CH}/${JOBNAME}_CHIFI006001_WK_4.csv
SQL_DEF=${G_TOOLSH}/util/def/CH_CM_0078.def
DEF_FILE_WK=${G_TOOLSH}/util/def/${JOBNAME}_MATCHING_WK.def
OUTFILE=${MID_DIR_CH}/CHIFI005013.csv

#
#---ファイルのクリア
#
cat /dev/null > ${MID_DIR_CH}/CHIFI005013.csv

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
    echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
#
#---ファイルが存在しない場合作成
#
if [ ! -f ${INFILE_1} ]
then
    touch ${INFILE_1}
        rc=$?
        if [ $rc -ne 0 ]
        then
            sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " TOUCH Error($SVC touch:rc=$rc) "
            echo $JOBNAME " TOUCH Error($SVC touch:rc=$rc) "
            exit ${G_RTN_ERROR}
        fi
fi


#- 改行コードのCRLFをLFに変換
bsortex \
  -copy \
  -record recform=txtcsv \
  -input reclen=150 \
         file=${INFILE_1} \
  -output file=${OUTFILE_WRK_1} \
          linedlmt=lf

if [ $rc -ne 0 ];
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    echo $JOBNAME " SORT Step1 Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


#- 改行コードのCRLFをLFに変換
bsortex \
  -copy \
  -record recform=txtcsv \
  -input reclen=150 \
         file=${INFILE_2} \
  -output file=${OUTFILE_WRK_2} \
          linedlmt=lf

if [ $rc -ne 0 ];
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    echo $JOBNAME " SORT Step1 Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


#
#- 累積遅延情報（前日分）と請求内訳情報（遅延分）をマッチングする。
#- マッチング用のdefファイルのファイル名変数を実ファイル名に置き換える。
#
cp ${SQL_DEF} ${DEF_FILE_WK}

sed -i -e "s%:CHIFI005014%${OUTFILE_WRK_1}%"          ${DEF_FILE_WK} 
sed -i -e "s%:CHIFI006001%${OUTFILE_WRK_2}%"          ${DEF_FILE_WK} 

#
#- マッチング
#
ZTLOUTFILE=${OUTFILE_WRK_3}
export ZTLOUTFILE
wait
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEF_FILE_WK}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    echo $JOBNAME " Matching Error($SVC matching:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


#--- 請求内訳情報（遅延分）の有無を判定し、無い場合は累積遅延情報（前日分）を再構築する
bsortex \
    -sort key=0.10asca -record recform=txtflt fldsep=, \
    -input reclen=300 file=${OUTFILE_WRK_3} \
    -output file=${OUTFILE_WRK_4} case="12.1asc.lt.'0'" \
        reconst=0.10,1.6,2.14,3.20,4.2,5.3,6.12,7.11,8.8,9.8,10.12,11.30 \
    
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

#--- マージ
bsortex \
    -sort key="0.10asca"  -record recform=txtflt fldsep=, \
    -input reclen=150 file=${OUTFILE_WRK_2},${OUTFILE_WRK_4} \
    -output file=${OUTFILE} \
            linedlmt=crlf

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

exit_rc=$rc
#--- ワークファイル削除
if [ ${WK_RM} = "true" ]
then
    rm -f ${OUTFILE_WRK_1}
    rm -f ${OUTFILE_WRK_2}
    rm -f ${OUTFILE_WRK_3}
    rm -f ${OUTFILE_WRK_4}
    rm -f ${DEF_FILE_WK}
fi

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

exit ${G_RTN_NORMAL}
