#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：一時金取込ステータス反映情報作成（エラー）
#
# 機能          ：料金計算日（料金計算の確定日）に一時金取込ステータス反映情報（エラー）を作成する。
#
# コマンド形式  ：EO3011480J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v22.00          2016/02/23  FJ）岡田     【OM-2016-0000083】性能改善
#
##############################################################

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

#
#---ツール格納場所
#
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

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

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO3011480J0,"
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

##############################################################
# UNLOAD
##############################################################
UNLOAD(){

#unload
# $1:実行するSQL  $2:SQL実行結果を出力するファイル
sh ${G_TOOLSH}/EOKULD03.sh $1 $2

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

}

#
#--- ファイル定義
#

# 一時金取込ステータス反映情報抽出（エラー）
SQLFILE_AC_U_AC0171_05_ULD=${SQL_DIR}/AC_U_AC0171_05.sql
SQLFILE_AC_U_AC0171_05_ULD_WK=${SQL_DIR}/AC_U_AC0171_05_TEMP_${JOBNAME}.sql
SQLFILE_AC_U_AC0171_05_ULD_1_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_AC0171_05_01.csv

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

# 業務パラメータ管理
ZM_M_WORK_PARAM_KNRI_ULD=${SQL_DIR}/AC_U_ZM0321_01.sql
ZM_M_WORK_PARAM_KNRI_ULD_WK=${SQL_DIR}/AC_U_ZM0321_01_TEMP_${JOBNAME}.sql
ZM_M_WORK_PARAM_KNRI_ULD_1_FILE=${MID_DIR_AC}/${JOBNAME}_AC_U_ZM0321_01.csv

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

#
# 出力ファイル
#

# 一時金取込ステータス反映情報
OUTFILE_ACIFM279003=${MID_DIR_AC}/ACIFM279003.csv

#
#--- 一時金取込ステータス反映情報のアンロードファイルのクリアを行う
#
cat /dev/null > $OUTFILE_ACIFM279003

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

# 一時金エラー情報（未請求一時金あり）
OUTFILE_ACIFM041007=${MID_DIR_AC}/ACIFM041007.csv
OUTFILE_ACIFM041007_WK=${MID_DIR_AC}/${JOBNAME}_ACIFM041007_WK.csv


#
#--- 一時金エラー情報（未請求一時金あり）のアンロードファイルのクリアを行う
#
cat /dev/null > $OUTFILE_ACIFM041007

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

##########################################################################################
#--- 一時金取込ステータス反映情報の作成を行う。
#--- エラーコードは「一時金エラー（未請求一時金あり）」を設定する。
#--- ※エラーコードは業務パラメータ管理で定義（業務パラメータID：AC_ICJKIN_ERR_MISIKY）。
##########################################################################################
#--- SQLPARAM
#１．料金スケジュール定義のイベント年月日を運用日に設定する。（料金計算日：03）
#
cp -f ${SQLFILE_AC_U_AC0171_05_ULD} ${SQLFILE_AC_U_AC0171_05_ULD_WK}
sed -i -e s@':OPE_DATE'@${RSLT_OPEDATE}@g ${SQLFILE_AC_U_AC0171_05_ULD_WK}

#
#--- UNLOAD処理
#
UNLOAD ${SQLFILE_AC_U_AC0171_05_ULD_WK} ${SQLFILE_AC_U_AC0171_05_ULD_1_FILE}

#--- 一時金取込ステータス反映情報を出力
cp  -f ${SQLFILE_AC_U_AC0171_05_ULD_1_FILE} ${OUTFILE_ACIFM279003}

##########################################################################################
#--- 一時金エラー情報（未請求一時金あり）の作成を行う。
#--- エラーコードは「一時金エラー（未請求一時金あり）」を設定する。
#--- ※エラーコードは業務パラメータ管理で定義（業務パラメータID：AC_ICJKIN_ERR_MISIKY）。
##########################################################################################
# 業務パラメータ
WORK_PARAM_ID="'AC_ICJKIN_ERR_MISIKY'"

# １．業務パラメータを設定
# ２．業務パラメータ適用開始年月日に運用日を設定
# ３．業務パラメータ適用終了年月日に運用日を設定
cp  -f ${ZM_M_WORK_PARAM_KNRI_ULD} ${ZM_M_WORK_PARAM_KNRI_ULD_WK}
sed -i -e s@':WORK_PARAM'@${WORK_PARAM_ID}@g                 ${ZM_M_WORK_PARAM_KNRI_ULD_WK}
sed -i -e s@':OPE_DATE'@${RSLT_OPEDATE}@g                    ${ZM_M_WORK_PARAM_KNRI_ULD_WK}
sed -i -e s@':OPE_DATE'@${RSLT_OPEDATE}@g                    ${ZM_M_WORK_PARAM_KNRI_ULD_WK}

# 業務パラメータ管理SQL実行結果を格納
UNLOAD ${ZM_M_WORK_PARAM_KNRI_ULD_WK} ${ZM_M_WORK_PARAM_KNRI_ULD_1_FILE}

#一時金取込ステータス(エラー)
ICJKN_TRKM_STAT_ERR="4"

while read LINE;
do
ERR_CD=${LINE}
done < ${ZM_M_WORK_PARAM_KNRI_ULD_1_FILE}

# 一時金エラー情報（未請求一時金あり）を出力
bsortex -copy \
    -input file=${SQLFILE_AC_U_AC0171_05_ULD_1_FILE} reclen=250 \
           reconst="'${ERR_CD}'.2asc,1.20,2.2,3.10,4.6,5.1,6.10,7.2,8.3,9.12,10.11,11.3,12.12,13.11,14.8,15.12,'${ICJKN_TRKM_STAT_ERR}'.1asc,17.1,18.12,19.12,20.30,21.8,22.8" \
    -record recform=txtcsv \
    -output file=${OUTFILE_ACIFM041007_WK}

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

##出力ファイルの改行コード変換(LF→CRLF)
nkf -Lw  < ${OUTFILE_ACIFM041007_WK} > ${OUTFILE_ACIFM041007}

#
#---不要ファイルを削除
#
    rm -f ${SQLFILE_AC_U_AC0171_05_ULD_WK}
    rm -f ${SQLFILE_AC_U_AC0171_05_ULD_1_FILE}
    rm -f ${ZM_M_WORK_PARAM_KNRI_ULD_WK}
    rm -f ${ZM_M_WORK_PARAM_KNRI_ULD_1_FILE}
    rm -f ${OUTFILE_ACIFM041007_WK}

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

exit ${G_RTN_NORMAL}
