#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：電話番号案内利用課金情報取込サービス内訳情報付加
#
# 機能          ：電話番号案内利用課金情報取込にサービス情報を付与した電話番号案内利用課金情報取込サービス情報付与データを作成する。
#なお、電話番号案内利用課金情報取込：サービス情報 ＝ N:Nとなる
#
#
# コマンド形式  ：EO31V0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v71.00.00      2024/05/22   FJ)吉田     【ANK-4497-00-00】電話番号案内の課金情報連携変更対応
# v71.00.00      2024/07/02   FJ)上島     【IT1-2024-0000017】電話番号案内の課金情報連携変更対応
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

#
#---業務で必要な変数定義
#
#手修正あり
# ==================
# ===== 前処理 =====
# ==================
#--- イベントコード：料金計算日
EVENT_CD_PRC_CALC="03"

#--- 運用日時点の未来直近の請求年月を取得する（当月請求年月）
. EO3SEIKYYM.sh ${EVENT_CD_PRC_CALC} ${RSLT_OPEDATE} ${JOBNAME}

#-- 電話番号案内利用課金情報取込データファイル（コンシューマ）
INFILE1=${MID_DIR_AC}/ACIFM372001_${SEIKY_YM}.csv
#-- 電話番号案内利用課金情報取込データファイル（コンシューマ）
INFILE1_WK=${MID_DIR_AC}/ACIFM372001.csv
#-- 契約インターフェース
INFILE2=${SEND_DIR}/ACIFI014001.csv

#-- 電話番号案内利用課金情報取込データファイル（コンシューマ）
OUTFILE1=${MID_DIR_AC}/ACIFM372002.csv
#-- サービス契約インターフェース整形ファイル
OUTFILE2=${MID_DIR_AC}/ACIFM373001.csv

###2024/07/02 IT1-2024-0000017 上島 ADD START
#-- 警告検出用フラグファイル
WARNFLGFILE=${MID_DIR_AC}/${JOBNAME}_WARN_FLG
###2024/07/02 IT1-2024-0000017 上島 ADD END

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

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

P1="OPD=${RSLT_OPEDATE},"
P2="SVCCTL=JBSbatMatchServiceControl,"
P3="JOB=EO31V0110J0,"
P4="IND1=ACIFM372.def,"
P5="INF1=${OUTFILE1},"
P6="IND2=ACIFM373.def,"
P7="INF2=${OUTFILE2},"
P8="OTD1=ACIFM374.def,"
P9="OTF1=${MID_DIR_AC}/ACIFM374001.csv,"
P10="OTD2=ACIFM015.def,"
P11="OTF2=${MID_DIR_AC}/ACIFM015011.csv,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
###2024/07/02 IT1-2024-0000017 上島 MOD START
#P18="FREE="
P18="FREE=${WARNFLGFILE}"
###2024/07/02 IT1-2024-0000017 上島 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

###2024/07/02 IT1-2024-0000017 上島 ADD START
#-- 事前に警告検出用フラグファイルが存在する場合には警告なしで削除する
rm -f ${WARNFLGFILE}
###2024/07/02 IT1-2024-0000017 上島 ADD END

#-- 電話番号案内利用課金情報取込データファイル（コンシューマ）のファイル名を変更
#-- ファイルがない場合を考慮してタッチしておく
touch ${INFILE1}
#-- ファイル名を変更する（削除除外対象ファイル名から変更する）
mv ${INFILE1} ${INFILE1_WK}


#-- 電話番号案内利用課金情報取込データファイル（コンシューマ）をソート
#-- ソートキー：
#--        18.10  サービス契約番号（昇順）
#--        17.8  発側終了日（降順）
bsortex -sort key=18.10asca,12.8ascr \
        -record recform=txtcsv \
        -input file=${INFILE1_WK} reclen=300 \
        -output file=${OUTFILE1}

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


#-- サービス契約インターフェースをinclude/sort/reconstする
#-- ソートキー：
#--        4.10  サービス契約番号（昇順）
#--        19.8  課金終了日（降順）
#--        17.8  課金開始日（降順）
#-- Include条件：
#--        0.2   料金グループコードが"10":電話
#--        5.12  従属サービス番号が"":空
#-- reconst条件：
#--        0.2   料金グループコード
#--        1.3   料金コースコード
#--        2.12  料金サービスコード
#--        4.10  サービス契約番号
#--        6.10  請求契約番号
#--        8.8   サービス開始日
#--        17.8  課金開始日
#--        19.8  課金終了日
bsortex -sort key=4.10asca,19.8ascr,17.8ascr \
        -record recform=txtcsv \
        -input reclen=500 file=${INFILE2} include="0.2asc.eq.'10'.and.5.12asc.lt.' '" \
        -output file=${OUTFILE2} reconst=0.2,1.3,2.12,4.10,6.10,8.8,17.8,19.8

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


#
#---ＡＰＬ起動
#

#共通javaVMオプション指定(ヒープサイズ4096M)
java ${JAVA_OPTION_4096} -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

###2024/07/02 IT1-2024-0000017 上島 MOD START
##--- コンシューマファイルの件数をチェックする
#DATA_CNT=`wc -l ${INFILE1_WK} | awk '{printf $1}'`
#if [ $DATA_CNT = "0" ]
#--- 警告検出用フラグファイルをチェックする
if [ -r ${WARNFLGFILE} ]
###2024/07/02 IT1-2024-0000017 上島 MOD END
then
    sh ${G_TOOLSH}/EOK010210J0.sh EACB1030AW $JOBNAME " File Not Uploaded($SVC rc=$G_RTN_WARN) "
    echo $JOBNAME " File Not Uploaded($SVC rc=$G_RTN_WARN) "
    exit_rc=${G_RTN_WARN}
fi

###2024/07/02 IT1-2024-0000017 上島 ADD START
#-- 警告検出用フラグファイルが存在する場合には警告なしで削除する
rm -f ${WARNFLGFILE}
###2024/07/02 IT1-2024-0000017 上島 ADD END


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

exit $exit_rc
