#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：顧客管理
#
# シェル名      ：解約精算金検証・ファイル出力
#
# 機能          ：解約精算金検証・マッチング(契約情報付加)ファイルを読み込み、マッチングNGのデータを精算金、違約金の種類毎にファイル分割して出力する。
#                 出力した各ファイルをデータダウンロード画面でダウンロード可能とする為、電子ファイル管理、ダウンロードファイル管理に登録する。
#                 又、マッチング対象全データファイル、特例データファイルを出力し、電子ファイル管理、ダウンロードファイル管理に登録する。
#
# コマンド形式  ：EO2GB0610J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v33.00.00       2017/09/21  FJ)平野      【ANK-3252-00-00】（契アシRDSツール改善）解約精算金のシステム化対応
# v33.01.00       2017/10/13  FJ)平野      IT2-2017-0000063 ダウンロード画面の件数カウントに見出し行が含まれる
# v39.00.00       2018/08/10  FJ)柳        【ANK-3427-00-00】【解約精算金チェック機能拡張】工事費割賦関連チェックの実装
# v00.00.00       2020/06/15  GDC)ミコ     【ANK-3868-00-00】 アンロードとマッチング処理の追加
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#---システム日付取得
. EOK010410J0.sh 1

#
#--- ファイル定義
#
# 解約精算金検証・マッチング（契約情報付加）ファイル
FILE_PATH_KKIFM756=${MID_DIR_KK}/KKIFM756.csv

# 解約精算金検証結果（ネット・テレビ解約精算金）ファイル
FILE_PATH_KKIFM757=${MID_DIR_KK}/KKIFM757_${RSLT_SYSDATE}.csv
# 解約精算金検証結果（ＶＤＳＬレンタル違約金）ファイル
FILE_PATH_KKIFM758=${MID_DIR_KK}/KKIFM758_${RSLT_SYSDATE}.csv
# 解約精算金検証結果（ＳＴＢレンタル違約金）ファイル
FILE_PATH_KKIFM759=${MID_DIR_KK}/KKIFM759_${RSLT_SYSDATE}.csv
# 解約精算金検証結果（プレミアムパック解約精算金）ファイル
FILE_PATH_KKIFM760=${MID_DIR_KK}/KKIFM760_${RSLT_SYSDATE}.csv
# ANK-3427-00-00 2018/08/10 ADD START
# 解約精算金検証結果（工事費残債金）ファイル
FILE_PATH_KKIFM821=${MID_DIR_KK}/KKIFM821_${RSLT_SYSDATE}.csv
# ANK-3427-00-00 2018/08/10 ADD END
# 解約精算金検証結果（検証対象）ファイル
FILE_PATH_KKIFM761=${MID_DIR_KK}/KKIFM761_${RSLT_SYSDATE}.csv
# 解約精算金検証結果（特例データ）ファイル
FILE_PATH_KKIFM762=${MID_DIR_KK}/KKIFM762_${RSLT_SYSDATE}.csv

#
#--- 一時ファイル
#
# 分割後ファイル
FILE_PATH_KKIFM757_TMP1=${MID_DIR_KK}/KKIFM757_TMP1.csv
FILE_PATH_KKIFM758_TMP1=${MID_DIR_KK}/KKIFM758_TMP1.csv
FILE_PATH_KKIFM759_TMP1=${MID_DIR_KK}/KKIFM759_TMP1.csv
FILE_PATH_KKIFM760_TMP1=${MID_DIR_KK}/KKIFM760_TMP1.csv
# ANK-3427-00-00 2018/08/10 ADD START
FILE_PATH_KKIFM821_TMP1=${MID_DIR_KK}/KKIFM821_TMP1.csv
# ANK-3427-00-00 2018/08/10 ADD END
FILE_PATH_KKIFM761_TMP1=${MID_DIR_KK}/KKIFM761_TMP1.csv
FILE_PATH_KKIFM762_TMP1=${MID_DIR_KK}/KKIFM762_TMP1.csv

# ソート・改行コード変換後ファイル
FILE_PATH_KKIFM757_TMP2=${MID_DIR_KK}/KKIFM757_TMP2.csv
FILE_PATH_KKIFM758_TMP2=${MID_DIR_KK}/KKIFM758_TMP2.csv
FILE_PATH_KKIFM759_TMP2=${MID_DIR_KK}/KKIFM759_TMP2.csv
FILE_PATH_KKIFM760_TMP2=${MID_DIR_KK}/KKIFM760_TMP2.csv
# ANK-3427-00-00 2018/08/10 ADD START
FILE_PATH_KKIFM821_TMP2=${MID_DIR_KK}/KKIFM821_TMP2.csv
# ANK-3427-00-00 2018/08/10 ADD END
FILE_PATH_KKIFM761_TMP2=${MID_DIR_KK}/KKIFM761_TMP2.csv
FILE_PATH_KKIFM762_TMP2=${MID_DIR_KK}/KKIFM762_TMP2.csv

# ANK-3868-00-00 ADD START
ULDSQL_CH0101_02=${SQL_DIR}/KK_U_CH0101_02.sql
ULD_CH0101_02=${LOC_DIR_KK}/${JOBNAME}.KK_U_CH0101_02.csv
# ANK-3868-00-00 ADD END

# バックアップ先ディレクトリ
BK_DIR=${MID_DIR_KK}/bk/
# bsortex簡略名定義
FILE_SPLIT_BSORT_DEF="@SEIKY_AMNT=6.12asc @GUIDE_AMNT=7.12asc @SSN_PNLTY_DIV=4.1asc @TR_DATA_DIV=20.1asc"
SORT_BSORT_DEF="@SKY_KEI_NO=3.10asc @SSN_PNLTY_DIV=4.1asc"

# 見出し行
HEADER_RECORD=$(echo -e "通番,ＳＹＳＩＤ,契約者名,サービス契約番号,請求契約番号,精算金・違約金区分,精算金・違約金区分名称,請求精算金金額,案内精算金金額,コメント備考,システム備考,サービス開始年月日,サービス終了年月日,サービス課金開始年月日,サービス課金終了年月日,プラン課金開始年月日,プラン課金終了年月日,違約金発生区分,即割有無,長割有無,最終更新日時\r\n")
HEADER_RECORD_SJIS=$(echo ${HEADER_RECORD} | iconv -f UTF8 -t SJIS)

##############################################################
# 共通関数
##############################################################

#
#--- ファイル存在チェックエラー
#      p1：ファイル名
#
CHK_ERROR()
{
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${1}) "
    echo $JOBNAME " File is nonexist(${1}) "
}

#
#--- bsortexコマンド実行時のエラー処理
#      p1：bsortコマンドの終了コード
#      p2：bsortコマンドの入力ファイル
#
BSORTEX_ERROR()
{
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " BSORTEX error(input file=$2:rc=$1) "
    echo $JOBNAME " BSORTEX error(input file=$2:rc=$1) "
    exit ${G_RTN_ERROR}
}

#
#--- ソートと改行コード変換
#      p1：inputファイル
#      p2：outputファイル
#
SORT_LINE_FEED_CONV()
{
    bsortex -define ${SORT_BSORT_DEF} \
            -sort key="@SKY_KEI_NO,@SSN_PNLTY_DIV" -record recform=txtcsv \
            -input  reclen=1055 file=${1} \
            -output file=${2} linedlmt=crlf \
                reconst="0.10,1.242,2.10,3.10,4.1,5.60,6.12,7.12,8.300,9.1500,10.8,11.8,12.8,13.8,14.8,15.8,16.1,17.2,18.2,19.17"

    rc=$?
    if [ $rc -ne 0 ]
    then
        BSORTEX_ERROR ${1} ${rc}
    fi
}

# IT2-2017-0000063 ADD START
#
#--- 見出し行出力
#
ADD_HEADER() {
    # ファイルサイズが0byteより大きい場合
    if [ -s ${1} ]
    then
        sed -i "1i${HEADER_RECORD_SJIS}" ${1}
    else
        echo ${HEADER_RECORD_SJIS} > ${1}
    fi
}
# IT2-2017-0000063 ADD END

# ANK-3868-00-00 ADD START
#
#--- アンロード関数
#       p1：テーブル名／クエリファイル名
#       p2：出力ファイル名
#
EXEC_UNLOAD()
{
    # 出力ファイルの初期化
    cat /dev/null > $2
    
    rc=$?
    if [ ${rc} -ne 0 ]
    then
        BSORTEX_ERROR $rc 
    fi
    
    sh ${G_TOOLSH}/EOKULD02.sh $1 $2
    
    rc=$?
    if [ ${rc} -ne 0 ]
    then
        BSORTEX_ERROR $rc 
    fi
}
# ANK-3868-00-00 ADD END

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

#
#--- ■初期処理
#

CHK_FLG=0
# 解約精算金検証・マッチング（契約情報付加）ファイルの存在チェック
if [ ! -r ${FILE_PATH_KKIFM756} ]
then
    CHK_ERROR ${FILE_PATH_KKIFM756}
    CHK_FLG=1
fi

# ファイル存在チェックでエラーがあった場合
if [ $CHK_FLG -eq 1 ]
then
    exit ${G_RTN_ERROR}
fi


#
#---運用日付取得
#

if [ "${OPD}" = "" ];then
    . EOK010310J0.sh "BDATE"
    OPD=${RSLT_OPEDATE}
else
    RSLT_OPEDATE=${OPD}
fi


#
#--- 文字コード変換
#

nkf -x -s --overwrite ${FILE_PATH_KKIFM756}


#
#--- ファイル分割
#

# ANK-3427-00-00 2018/08/10 MOD START
#bsortex -define ${FILE_SPLIT_BSORT_DEF} \
#    -copy \
#    -record recform=txtcsv \
#    -input  file=${FILE_PATH_KKIFM756} reclen=1055 \
#    -output file=${FILE_PATH_KKIFM757_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.\(@SSN_PNLTY_DIV.eq.\'1\'.or.@SSN_PNLTY_DIV.eq.\'2\'\) \
#    -output file=${FILE_PATH_KKIFM758_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.@SSN_PNLTY_DIV.eq.\'3\' \
#    -output file=${FILE_PATH_KKIFM760_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.@SSN_PNLTY_DIV.eq.\'4\' \
#    -output file=${FILE_PATH_KKIFM759_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.@SSN_PNLTY_DIV.eq.\'5\'
bsortex -define ${FILE_SPLIT_BSORT_DEF} \
    -copy \
    -record recform=txtcsv \
    -input  file=${FILE_PATH_KKIFM756} reclen=1055 \
    -output file=${FILE_PATH_KKIFM757_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.\(@SSN_PNLTY_DIV.eq.\'1\'.or.@SSN_PNLTY_DIV.eq.\'2\'\) \
    -output file=${FILE_PATH_KKIFM758_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.@SSN_PNLTY_DIV.eq.\'3\' \
    -output file=${FILE_PATH_KKIFM760_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.@SSN_PNLTY_DIV.eq.\'4\' \
    -output file=${FILE_PATH_KKIFM759_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.@SSN_PNLTY_DIV.eq.\'5\' \
    -output file=${FILE_PATH_KKIFM821_TMP1} case=@SEIKY_AMNT.ne.@GUIDE_AMNT.and.@TR_DATA_DIV.eq.\'0\'.and.@SSN_PNLTY_DIV.eq.\'6\'
# ANK-3427-00-00 2018/08/10 MOD END

rc=$?
if [ ${rc} -ne 0 ]
then
    BSORTEX_ERROR $rc ${FILE_PATH_KKIFM756}-1
fi


#
#--- マッチング対象全レコード・特例データファイル出力
#

# ANK-3427-00-00 2018/08/10 MOD START
#bsortex -define ${FILE_SPLIT_BSORT_DEF} \
#    -copy \
#    -record recform=txtcsv \
#    -input  file=${FILE_PATH_KKIFM756} reclen=1055 \
#    -output file=${FILE_PATH_KKIFM761_TMP1} case=@TR_DATA_DIV.eq.\'0\'.and.\(@SSN_PNLTY_DIV.eq.\'0\'.or.@SSN_PNLTY_DIV.eq.\'1\'.or.@SSN_PNLTY_DIV.eq.\'2\'.or.@SSN_PNLTY_DIV.eq.\'3\'.or.@SSN_PNLTY_DIV.eq.\'4\'.or.@SSN_PNLTY_DIV.eq.\'5\'\) \
#    -output file=${FILE_PATH_KKIFM762_TMP1} case=@TR_DATA_DIV.eq.\'1\'
bsortex -define ${FILE_SPLIT_BSORT_DEF} \
    -copy \
    -record recform=txtcsv \
    -input  file=${FILE_PATH_KKIFM756} reclen=1055 \
    -output file=${FILE_PATH_KKIFM761_TMP1} case=@TR_DATA_DIV.eq.\'0\'.and.\(@SSN_PNLTY_DIV.eq.\'0\'.or.@SSN_PNLTY_DIV.eq.\'1\'.or.@SSN_PNLTY_DIV.eq.\'2\'.or.@SSN_PNLTY_DIV.eq.\'3\'.or.@SSN_PNLTY_DIV.eq.\'4\'.or.@SSN_PNLTY_DIV.eq.\'5\'.or.@SSN_PNLTY_DIV.eq.\'6\'\) \
    -output file=${FILE_PATH_KKIFM762_TMP1} case=@TR_DATA_DIV.eq.\'1\'
# ANK-3427-00-00 2018/08/10 MOD END

rc=$?
if [ ${rc} -ne 0 ]
then
    BSORTEX_ERROR $rc ${FILE_PATH_KKIFM756}-2
fi


# ANK-3868-00-00 ADD START
#
#--- アンロード
#
EXEC_UNLOAD ${ULDSQL_CH0101_02} ${ULD_CH0101_02}

#
#--- マッチング
#
MATCHDEF_KK_CM_0717=${G_TOOLSH}/util/def/KK_CM_0717.def
TMPFILE_MATCHDEF_KK_CM_0717=${G_TOOLSH}/util/def/${JOBNAME}.KK_CM_0717_TMP.def
KKIFM821_MATCH=${MID_DIR_KK}/KKIFM821_MATCH.csv

cp -f $MATCHDEF_KK_CM_0717 $TMPFILE_MATCHDEF_KK_CM_0717

sed -i -e s@':KKIFM821_TMP1'@${FILE_PATH_KKIFM821_TMP1}@g ${TMPFILE_MATCHDEF_KK_CM_0717}
sed -i -e s@':CH0101'@${ULD_CH0101_02}@g ${TMPFILE_MATCHDEF_KK_CM_0717}

export ZTLOUTFILE=$KKIFM821_MATCH

# ファイルマッチング
${G_TOOLSH}/util/bin/ZTLMAT01 $TMPFILE_MATCHDEF_KK_CM_0717

rc=$?
if [ $rc -ne 0 ]
then
    MATCHING_ERROR $rc $TMPFILE_MATCHDEF_KK_CM_0717
fi

#
#--- リネーム
#
mv ${KKIFM821_MATCH} ${FILE_PATH_KKIFM821_TMP1}

# ANK-3868-00-00 ADD END

#
#--- ソートと改行コード変換
#

SORT_LINE_FEED_CONV ${FILE_PATH_KKIFM757_TMP1} ${FILE_PATH_KKIFM757_TMP2}
SORT_LINE_FEED_CONV ${FILE_PATH_KKIFM758_TMP1} ${FILE_PATH_KKIFM758_TMP2}
SORT_LINE_FEED_CONV ${FILE_PATH_KKIFM759_TMP1} ${FILE_PATH_KKIFM759_TMP2}
SORT_LINE_FEED_CONV ${FILE_PATH_KKIFM760_TMP1} ${FILE_PATH_KKIFM760_TMP2}
# ANK-3427-00-00 2018/08/10 ADD START
SORT_LINE_FEED_CONV ${FILE_PATH_KKIFM821_TMP1} ${FILE_PATH_KKIFM821_TMP2}
# ANK-3427-00-00 2018/08/10 ADD END
SORT_LINE_FEED_CONV ${FILE_PATH_KKIFM761_TMP1} ${FILE_PATH_KKIFM761_TMP2}
SORT_LINE_FEED_CONV ${FILE_PATH_KKIFM762_TMP1} ${FILE_PATH_KKIFM762_TMP2}


#
#--- 通番設定
#

awk '{print "\""NR"\","$0}' ${FILE_PATH_KKIFM757_TMP2} > ${FILE_PATH_KKIFM757}
awk '{print "\""NR"\","$0}' ${FILE_PATH_KKIFM758_TMP2} > ${FILE_PATH_KKIFM758}
awk '{print "\""NR"\","$0}' ${FILE_PATH_KKIFM759_TMP2} > ${FILE_PATH_KKIFM759}
awk '{print "\""NR"\","$0}' ${FILE_PATH_KKIFM760_TMP2} > ${FILE_PATH_KKIFM760}
# ANK-3427-00-00 2018/08/10 ADD START
awk '{print "\""NR"\","$0}' ${FILE_PATH_KKIFM821_TMP2} > ${FILE_PATH_KKIFM821}
# ANK-3427-00-00 2018/08/10 ADD END
awk '{print "\""NR"\","$0}' ${FILE_PATH_KKIFM761_TMP2} > ${FILE_PATH_KKIFM761}
awk '{print "\""NR"\","$0}' ${FILE_PATH_KKIFM762_TMP2} > ${FILE_PATH_KKIFM762}


#
#--- ヘッダレコード出力
#
# IT2-2017-0000063 MOD START
#sed -i "1i${HEADER_RECORD_SJIS}" ${FILE_PATH_KKIFM757}
#sed -i "1i${HEADER_RECORD_SJIS}" ${FILE_PATH_KKIFM758}
#sed -i "1i${HEADER_RECORD_SJIS}" ${FILE_PATH_KKIFM759}
#sed -i "1i${HEADER_RECORD_SJIS}" ${FILE_PATH_KKIFM760}
#sed -i "1i${HEADER_RECORD_SJIS}" ${FILE_PATH_KKIFM761}
#sed -i "1i${HEADER_RECORD_SJIS}" ${FILE_PATH_KKIFM762}
ADD_HEADER ${FILE_PATH_KKIFM757}
ADD_HEADER ${FILE_PATH_KKIFM758}
ADD_HEADER ${FILE_PATH_KKIFM759}
ADD_HEADER ${FILE_PATH_KKIFM760}
# ANK-3427-00-00 2018/08/10 ADD START
ADD_HEADER ${FILE_PATH_KKIFM821}
# ANK-3427-00-00 2018/08/10 ADD END
ADD_HEADER ${FILE_PATH_KKIFM761}
ADD_HEADER ${FILE_PATH_KKIFM762}
# IT2-2017-0000063 MOD END


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

P1="OPD=$OPD,"
P2="SVCCTL=JBSbatUnitServiceControl,"
P3="JOB=EO2GB0610J0,"
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=,"
# ANK-3427-00-00 2018/08/10 MOD START
#P18="FREE=${FILE_PATH_KKIFM757};${FILE_PATH_KKIFM758};${FILE_PATH_KKIFM759};${FILE_PATH_KKIFM760};${FILE_PATH_KKIFM761};${FILE_PATH_KKIFM762}"
P18="FREE=${FILE_PATH_KKIFM757};${FILE_PATH_KKIFM758};${FILE_PATH_KKIFM759};${FILE_PATH_KKIFM760};${FILE_PATH_KKIFM821};${FILE_PATH_KKIFM761};${FILE_PATH_KKIFM762}"
# ANK-3427-00-00 2018/08/10 MOD END
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

#
#---ＡＰＬ起動
#

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

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

#
#--- ファイルバックアップ
#
mv ${FILE_PATH_KKIFM757} ${FILE_PATH_KKIFM758} ${FILE_PATH_KKIFM759} ${FILE_PATH_KKIFM760} ${FILE_PATH_KKIFM761} ${FILE_PATH_KKIFM762} ${BK_DIR}
# ANK-3427-00-00 2018/08/10 ADD START
mv ${FILE_PATH_KKIFM821} ${BK_DIR}
# ANK-3427-00-00 2018/08/10 ADD END

#
#--- 終了処理
#
# 一時ファイル削除
rm -f ${FILE_PATH_KKIFM757_TMP1} ${FILE_PATH_KKIFM758_TMP1} ${FILE_PATH_KKIFM759_TMP1} ${FILE_PATH_KKIFM760_TMP1} ${FILE_PATH_KKIFM761_TMP1} ${FILE_PATH_KKIFM762_TMP1} \
      ${FILE_PATH_KKIFM757_TMP2} ${FILE_PATH_KKIFM758_TMP2} ${FILE_PATH_KKIFM759_TMP2} ${FILE_PATH_KKIFM760_TMP2} ${FILE_PATH_KKIFM761_TMP2} ${FILE_PATH_KKIFM762_TMP2}
# ANK-3427-00-00 2018/08/10 ADD START
rm -f ${FILE_PATH_KKIFM821_TMP1} ${FILE_PATH_KKIFM821_TMP2}
# ANK-3427-00-00 2018/08/10 ADD END

# ANK-3868-00-00 ADD START
rm -f ${ULD_CH0101_02}
rm -f ${TMPFILE_MATCHDEF_KK_CM_0717}
# ANK-3868-00-00 ADD END

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

exit $exit_rc
