#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：電話番号案内利用課金情報取込ファイル後処理
#
# 機能          ：チェックが完了したファイルを後続処理で使用できるように処理します
#
# コマンド形式  ：EO31U0160J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v71.00.00      2024/05/22   FJ)吉田     【ANK-4497-00-00】電話番号案内の課金情報連携変更対応
##############################################################

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

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

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

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

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

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

#
#---業務で必要な変数定義
#
#
#---ワークファイル削除モード
#
WK_RM=true

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

#
#---パラメタ定義
#
P1="OPD=$OPD,"
P2="SVCCTL=,"
P3="JOB=EO31U0160J0,"
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

#--- 定数
#--- イベントコード：料金計算日
EVENT_CD_PRC_CALC="03"
#--- 請求年月計算用：+1ヵ月
SEIKYYM_CALC_P1="'1'"

# ==================
# ===== 前処理 =====
# ==================

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

#--- 運用日時点の翌月の請求年月を取得する（翌月請求年月）
SQLFILE_SEIKYYM_CALC=${SQL_DIR}/AC_U_DUAL_01.sql
SQLFILE_SEIKYYM_CALC_WK=${SQL_DIR}/${JOBNAME}_AC_U_DUAL_01_ZEN_WK.sql
OUTFILE_SEIKYYM_CALC=${MID_DIR_CH}/${JOBNAME}_SEIKY_YM_FILE.csv

cp -f ${SQLFILE_SEIKYYM_CALC} ${SQLFILE_SEIKYYM_CALC_WK}
sed -i -e s@':SEIKY_YM'@${SEIKYM_TOGETSU}@g ${SQLFILE_SEIKYYM_CALC_WK}
sed -i -e s@':NUM'@${SEIKYYM_CALC_P1}@g ${SQLFILE_SEIKYYM_CALC_WK}

# ---請求年月計算
sh ${G_TOOLSH}/EOKULD03.sh ${SQLFILE_SEIKYYM_CALC_WK} ${OUTFILE_SEIKYYM_CALC}
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) "
	#
	#--- ジョブの終了メッセージを出力する
	#
	sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
	sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

    exit ${G_RTN_ERROR}
fi

#--- 翌月請求年月
SEIKYM_YOKUGETU=`head -n1 ${OUTFILE_SEIKYYM_CALC}`


#--- 入力ファイル
#--- 電話番号案内利用課金情報取込データファイル（チェック済み）
INFILE1=${MID_DIR_AC}/ACIFM368003.csv
#--- 電話番号案内利用課金情報取込ファイル（ヘッダ取得用）
INFILE2=${MID_DIR_AC}/ACIFM366001.csv

#--- 出力ファイル
#--- 電話番号案内利用課金情報取込データファイル（法人）
OUTFILE1=${MID_DIR_AC}/ACIFM371001.csv
OUTFILE1_WK=${MID_DIR_AC}/${JOBNAME}_ACIFM371001_WK.csv
OUTFILE1_WK_SORT=${MID_DIR_AC}/${JOBNAME}_ACIFM371001_WK_SORT.csv
#--- 電話番号案内利用課金情報取込データファイル（コンシューマ）（当月分）
OUTFILE2_TOUGETU=${MID_DIR_AC}/ACIFM372001_${SEIKYM_TOGETSU}.csv
OUTFILE2_TOUGETU_WK=${MID_DIR_AC}/${JOBNAME}_ACIFM372001_${SEIKYM_TOGETSU}.csv
#--- 電話番号案内利用課金情報取込データファイル（コンシューマ）（翌月分）
OUTFILE2_YOKUGETU=${MID_DIR_AC}/ACIFM372001_${SEIKYM_YOKUGETU}.csv
OUTFILE2_YOKUGETU_WK=${MID_DIR_AC}/${JOBNAME}_ACIFM372001_${SEIKYM_YOKUGETU}.csv

# ======================
# ===== メイン処理 =====
# ======================
#--- 「電話番号案内利用課金情報取込データファイル」を下記の条件で分割する
#--- 条件１：個人法人電話番号帯コードが1:個人用以外の場合、
#---         「電話番号案内利用課金情報取込データファイル（法人）」に出力する
#--- 条件２：個人法人電話番号帯コードが1:個人用、かつ、発側終了日の年月(上6桁)が請求月当月の場合、
#---         「電話番号案内利用課金情報取込データファイル（コンシューマ）当月分」に出力する
#---         （※例：2024/04/30以前の場合、2024/04請求分として出力）
#--- 条件３：個人法人電話番号帯コードが1:個人用、かつ、発側終了日の年月(上6桁)が請求月翌月の場合、
#---         「電話番号案内利用課金情報取込データファイル（コンシューマ）翌月分」に出力する
#---         （※例：2024/05/01以降の場合、2024/05請求分として出力）
bsortex -copy -record recform=txtcsv \
        -input file=${INFILE1} reclen=200 \
        -output file=${OUTFILE1_WK} case="19.1asc.ne.'1'" reconst=0.1,1.4,2.8,3.6,4.8,5.11,6.11,7.5,8.5,9.3,10.8,11.8,12.8,13.8,14.8,15.8,16.8,17.8 \
        -output file=${OUTFILE2_TOUGETU_WK} case="19.1asc.eq.'1'.and.12.6asc.le.'${SEIKYM_TOGETSU}'" reconst=0.1,1.4,2.8,3.6,4.8,5.11,6.11,7.5,8.5,9.3,10.8,11.8,12.8,13.8,14.8,15.8,16.8,17.8,20.10 \
        -output file=${OUTFILE2_YOKUGETU_WK} case="19.1asc.eq.'1'.and.12.6asc.ge.'${SEIKYM_YOKUGETU}'" reconst=0.1,1.4,2.8,3.6,4.8,5.11,6.11,7.5,8.5,9.3,10.8,11.8,12.8,13.8,14.8,15.8,16.8,17.8,20.10

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

#---- 電話番号案内利用課金情報取込データファイル（法人）ファイルの先頭行にヘッダを付与する
#1.念のためファイルをtouchする
touch ${OUTFILE1}
#1.電話番号案内利用課金情報取込データファイル（法人）から先頭行を消す
sed -i '1d' ${OUTFILE1}
#2.電話番号案内利用課金情報取込データファイル（法人）にデータをマージする
cat ${OUTFILE1_WK} >> ${OUTFILE1}
#3.電話番号案内利用課金情報取込データファイル（法人）を指定のソート順にする
#  ソート順：
#      発信者電話番号（昇順）
#      発側開始日（昇順）
#      発側開始時刻（昇順）
bsortex -sort key=5.11asca,10.8asca,11.8asca -record recform=txtcsv \
       -input file=${OUTFILE1} reclen=200 \
       -output file=${OUTFILE1_WK_SORT}

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

#4.電話番号案内利用課金情報取込ファイルのヘッダと、ソートした電話番号案内利用課金情報取込データファイル（法人）をマージする
HEADER=`head -1 ${INFILE2}`
echo ${HEADER} > ${OUTFILE1}
cat ${OUTFILE1_WK_SORT} >> ${OUTFILE1}

#---- 分割したファイルをそれぞれのファイルにマージする
cat ${OUTFILE2_TOUGETU_WK} >> ${OUTFILE2_TOUGETU}
cat ${OUTFILE2_YOKUGETU_WK} >> ${OUTFILE2_YOKUGETU}

#--- 不要ファイル削除
if [ ${WK_RM} = "true" ]
then
    rm ${SQLFILE_SEIKYYM_CALC_WK}
    rm ${OUTFILE_SEIKYYM_CALC}
    rm ${OUTFILE1_WK}
    rm ${OUTFILE1_WK_SORT}
    rm ${OUTFILE2_TOUGETU_WK}
    rm ${OUTFILE2_YOKUGETU_WK}
fi

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

exit ${G_RTN_NORMAL}
