#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：契約料金項目情報作成
#
# 機能          ：入力の課金対象サービス契約情報の料金コースコード、料金サービスコードをもとに、契約項目マスタから該当サービスに付随する料金項目を抽出し、該当料金項目ごとに契約項目情報を作成する。
#
#
# コマンド形式  ：EO3010220J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.00           2013/04/24  FJ）後藤     【TG1-2013-0000179】ファイルレイアウト変更に伴う修正
# v53.00.00       2021/04/26    FJ)吉田      【ANK-3951-00-00】「競争ルールの検証に関するWG」に関するシステム対応
# v56.00.00       2022/01/04    FJ)中原      【OM-2021-0002015】標準工事費相当額キャンペーンの適用回数取得時の抽出条件の誤り
# v59.00.00       2022/05/24  FJ)鈴木      【ANK-4248-03-00】消費者保護ガイドライン改正対応
# v60.00.00       2022/07/29  FJ)鈴木      【ANK-4330-00-00】消費者保護ガイドライン改正対応（Step2）
# v66.00.00       2023/03/27  FJ)山地      【ANK-4386-00-00】性能改善_契約料金項目作成ジョブ
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

# ANK-3951-00-00 ADD START

WK_RM=true

#export ZTLQUOTES=''

#
#--- ファイル定義
#
#--- マッチング入力ファイル
INFILE=${MID_DIR_AC}/ACIFM053015.csv
INFILE_LF=${MID_DIR_AC}/ACIFM053015_LF.csv
ULD_WRISVC_TG_KEI_CUR=${MID_DIR_KK}/KKIFM300001_crnt.csv
ULD_WRIB_SVC_KEI_CUR=${MID_DIR_KK}/KKIFM299001_crnt.csv
ULD_WRISVC_KEI_UCWK_CUR=${MID_DIR_KK}/KKIFM301001_crnt.csv
# ANK-4248-03-00 MOD START
#ULD_WRIB_SVC_TANKA_CUR=${MID_DIR_KK}/KKIFM303001_crnt.csv
ULD_WRIB_SVC_TANKA_SORT=${MID_DIR_KK}/KKIFM303001_sort.csv
ULD_WRIB_SVC_TANKA_CUR=${MID_DIR_KK}/KKIFM303002_crnt.csv
# ANK-4248-03-00 MOD END
# OM-2021-0002015 ADD START
SQLFILE=${SQL_DIR}/AC_U_CH0501_08.sql
TMPSQLFILE=${SQL_DIR}/AC_U_CH0501_08_TMP.sql
TMPCH0501_08=${MID_DIR_AC}/${JOBNAME}_AC_U_CH0501_08.csv
# OM-2021-0002015 ADD END
# ANK-4386-00-00 ADD START
ULD_WRIB_SVC_KEI_CUR_WK=${MID_DIR_KK}/KKIFM299001_crnt_WK.csv
# ANK-4386-00-00 ADD END

#--- マッチング出力ファイル
OUTFILE=${MID_DIR_AC}/ACIFM348001.csv
OUTFILE_LF=${MID_DIR_AC}/ACIFM348001_LF.csv
OUTFILE_WRK=${MID_DIR_AC}/${JOBNAME}_WRIB_APLY_CNT_WK.csv
# ANK-4386-00-00 DEL START
## ANK-4248-03-00 ADD START
#OUTFILE_WRK2=${MID_DIR_AC}/${JOBNAME}_WRIB_APLY_CNT_WK2.csv
## ANK-4248-03-00 ADD END
# ANK-4386-00-00 DEL END

#--- マッチングファイル
DEFFILE_01=${G_TOOLSH}/util/def/AC_CM_0178.def
DEFFILE_01_WRK=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0178_MATCHING_WK.def

DEFFILE_02=${G_TOOLSH}/util/def/AC_CM_0179.def
DEFFILE_02_WRK=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0179_MATCHING_WK.def

# OM-2021-0002015 ADD START

#
#--- 各ファイルの存在チェックを行う
#
if [ ! -r $SQLFILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE) "
    echo $JOBNAME " File is nonexist($SQLFILE) "
    exit ${G_RTN_ERROR}
fi

#
#--- アンロードファイルのクリアを行う
#
cat /dev/null > $TMPCH0501_08

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($TMPCH0501_08:rc=$rc) "
    echo $JOBNAME " File cat error($TMPCH0501_08:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#--- 運用日埋め込み用SQLファイルの作成
#

sed s/ZZZZZZ/${RSLT_OPEDATE}/g ${SQLFILE} > ${TMPSQLFILE}

#
#--- UNLOAD処理
#
sh ${G_TOOLSH}/EOKULD03.sh ${TMPSQLFILE} $TMPCH0501_08 $JOBNAME

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

#-- 請求月
SEIKY_YM=`cat ${TMPCH0501_08} | cut -c 1-6`
#-- 対象月月初
TARGET_START_YMD=${SEIKY_YM}"01"
#-- 対象月翌月月初
NEXT_MONTH_01=`date -d "1 month ${TARGET_START_YMD}" +'%Y%m%d'`
#-- 対象月月末
TARGET_END_YMD=`date -d "1 day ago ${NEXT_MONTH_01}" +'%Y%m%d'`

# OM-2021-0002015 ADD END

#
#--- 各ファイルの存在チェックを行う
#
#--- 標準工事費相当額割引キャンペーン(24回)適用回数
if [ ! -r $DEFFILE_01 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($DEFFILE_01) "
    echo $JOBNAME " File is nonexist($DEFFILE_01) "
    exit ${G_RTN_ERROR}
fi

#--- 課金対象サービス契約情報(標準工事費相当額割引キャンペーン(24回)適用回数情報付加)
if [ ! -r ${DEFFILE_02} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${DEFFILE_02}) "
    echo $JOBNAME " File is nonexist(${DEFFILE_02}) "
    exit ${G_RTN_ERROR}
fi

#
#--- マッチング用に入力ファイルをLFに変換
#
bsortex -copy -record recform=txtcsv \
    -input file=${INFILE} reclen=600 \
    -output linedlmt=lf | sed -e "s/^/\"/" | sed -e "s/$/\"/" | sed -e "s/,/\",\"/g" > ${INFILE_LF}

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

# ANK-4248-03-00 ADD START
# 割引サービス単価（全件）より、請求月に有効なマスタを抽出する。
bsortex -copy -record recform=txtcsv -input file=$ULD_WRIB_SVC_TANKA_SORT reclen=150 -output file=$ULD_WRIB_SVC_TANKA_CUR include="12.6asc.le.'${SEIKY_YM}',12.1asc.ge.'0', 13.6asc.ge.'${SEIKY_YM}'" 

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error($SVC sort:rc=$rc) " 
    echo $JOBNAME " SORT Error($SVC unload:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
# ANK-4248-03-00 ADD END

# ANK-4386-00-00 ADD START
#--- マッチング入力ファイルである割引サービス契約（カレント）を割引サービスコードで絞り込む
#  - SELECT(reconst)項目は以下
#       0.12 ：WRIB_SVC_KEI_NO,割引サービス契約番号
bsortex \
    -copy \
    -record recform=txtcsv \
    -input file=${ULD_WRIB_SVC_KEI_CUR} \
        reclen=300 \
        include="(2.9asc.eq.'W50000004'.or.2.9asc.eq.'W50000005'.or.2.9asc.eq.'W50000007'.or.2.9asc.eq.'W50000008').and.(8.8asc.le.'${TARGET_END_YMD}'.and.9.8asc.ge.'${TARGET_START_YMD}')"  \
        -output file=${ULD_WRIB_SVC_KEI_CUR_WK} reconst="0.12"
# ANK-4386-00-00 ADD END

#
#--- マッチングパラメータセット
#
#--- 標準工事費相当額割引キャンペーン(24回)適用回数
cp -f ${DEFFILE_01} ${DEFFILE_01_WRK}
sed -i -e "s%\:ULD_WRISVC_TG_KEI_CUR%${ULD_WRISVC_TG_KEI_CUR}%"        ${DEFFILE_01_WRK} 
# ANK-4386-00-00 MOD START
#sed -i -e "s%\:ULD_WRIB_SVC_KEI_CUR%${ULD_WRIB_SVC_KEI_CUR}%"          ${DEFFILE_01_WRK} 
sed -i -e "s%\:ULD_WRIB_SVC_KEI_CUR_WK%${ULD_WRIB_SVC_KEI_CUR_WK}%"          ${DEFFILE_01_WRK} 
# ANK-4386-00-00 MOD END
sed -i -e "s%\:ULD_WRISVC_KEI_UCWK_CUR%${ULD_WRISVC_KEI_UCWK_CUR}%"    ${DEFFILE_01_WRK} 
sed -i -e "s%\:ULD_WRIB_SVC_TANKA_CUR%${ULD_WRIB_SVC_TANKA_CUR}%"      ${DEFFILE_01_WRK} 
# ANK-4386-00-00 DEL START
## OM-2021-0002015 ADD START
#sed -i -e "s%\:TARGET_START_YMD%${TARGET_START_YMD}%"                  ${DEFFILE_01_WRK} 
#sed -i -e "s%\:TARGET_END_YMD%${TARGET_END_YMD}%"                      ${DEFFILE_01_WRK} 
## OM-2021-0002015 ADD END
# ANK-4386-00-00 DEL END

#--- 課金対象サービス契約情報(標準工事費相当額割引キャンペーン(24回)適用回数情報付加)
cp -f ${DEFFILE_02} ${DEFFILE_02_WRK}
sed -i -e "s%\:ACIFM053%${INFILE_LF}%"                                    ${DEFFILE_02_WRK} 
sed -i -e "s%\:WRIB_APLY_CNT_WK%${OUTFILE_WRK}%"                       ${DEFFILE_02_WRK} 

cat /dev/null > ${OUTFILE_WRK}

#
#--- マッチング処理→出力ファイル（ワーク）標準工事費相当額割引キャンペーン(24回)適用回数
#
# ANK-4386-00-00 MOD START
# ANK-4248-03-00 MOD START
##(export ZTLOUTFILE=${OUTFILE_WRK}
##${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_01_WRK})
#
#cat /dev/null > ${OUTFILE_WRK2}
#
#(export ZTLOUTFILE=${OUTFILE_WRK2}
#${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_01_WRK})
cat /dev/null > ${OUTFILE_WRK}

(export ZTLOUTFILE=${OUTFILE_WRK}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_01_WRK})
# ANK-4248-03-00 MOD END
# ANK-4386-00-00 MOD END

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

# ANK-4386-00-00 DEL START
## ANK-4330-00-00 MOD START
## ANK-4248-03-00 ADD START
##bsortex \
##    -copy \
##    -record recform=txtcsv \
##    -input file=${OUTFILE_WRK2} \
##        reclen=100 \
##        include="3.9asc.eq.'W50000004'.or.3.9asc.eq.'W50000005'.or.3.9asc.eq.'W50000007'"  \
##        -output reconst="0.10,1.12,2.1" file=${OUTFILE_WRK} 
#bsortex \
#    -copy \
#    -record recform=txtcsv \
#    -input file=${OUTFILE_WRK2} \
#        reclen=100 \
#        include="3.9asc.eq.'W50000004'.or.3.9asc.eq.'W50000005'.or.3.9asc.eq.'W50000007'.or.3.9asc.eq.'W50000008'"  \
#        -output reconst="0.10,1.12,2.2" file=${OUTFILE_WRK} 
## ANK-4330-00-00 MOD END
## ANK-4248-03-00 ADD END
# ANK-4386-00-00 DEL END

#
#--- マッチング処理→出力ファイル 課金対象サービス契約情報(標準工事費相当額割引キャンペーン(24回)適用回数情報付加)
#
(export ZTLOUTFILE=${OUTFILE_LF}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_02_WRK})
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " ZTLMAT01 Error($SVC ZTLMAT01:rc=$rc) "
    echo $JOBNAME " ZTLMAT01 Error($SVC mv:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#---マッチング後、出力ファイルをCR+LFに変換する
#
bsortex -copy -record recform=txtcsv \
    -input file=${OUTFILE_LF} reclen=600 \
    -output linedlmt=crlf | sed -e "s/\"//g"  > ${OUTFILE}

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

#
#--- 不要ファイル削除
#
if [ $WK_RM = "true" ]
then
    rm -f ${INFILE_LF}
    rm -f ${OUTFILE_WRK}
    rm -f ${OUTFILE_LF}
    rm -f ${DEFFILE_01_WRK}
    rm -f ${DEFFILE_02_WRK}
# OM-2021-0002015 ADD START
    rm -f ${TMPSQLFILE}
    rm -f ${TMPCH0501_08}
# OM-2021-0002015 ADD END
# ANK-4248-03-00 ADD START
    rm -f ${ULD_WRIB_SVC_TANKA_CUR}
# ANK-4386-00-00 DEL START
#    rm -f ${OUTFILE_WRK2}
# ANK-4386-00-00 DEL END
# ANK-4386-00-00 ADD START
    rm -f ${ULD_WRIB_SVC_KEI_CUR_WK}
# ANK-4386-00-00 ADD END

# ANK-4248-03-00 ADD END
fi
# ANK-3951-00-00 ADD END


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

P1="OPD=,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO3010220J0,"
# ANK-3951-00-00 MOD START
#P4="IND1=ACIFM053.def,"
#P5="INF1=${MID_DIR_AC}/ACIFM053015.csv,"
P4="IND1=ACIFM348.def,"
P5="INF1=${OUTFILE},"
# ANK-3951-00-00 MOD END
P6="IND2=,"
P7="INF2=,"
P8="OTD1=ACIFM221.def,"
P9="OTF1=${MID_DIR_AC}/ACIFM221001.csv,"
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

#
#---ＡＰＬ起動
#

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
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit $exit_rc
