#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：通知書削除対象抽出（全件抽出）
#
# 機能          ：1.UNLOADされているファイルをマッチングし
#                   ネット・電話・テレビの何れかの契約を持った
#                   通知書を抽出
#                 2.重複行をサプレスし、出力可否に可を出力
#
# コマンド形式  ：EO2F60210J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v20.00.00      2015/12/28   FJ)舘山      新規作成
# v20.00.01      2016/01/18   FJ)舘山      IT2-2016-0000002対応
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

####==== 通知書削除年月日の取得用処理 START ========================================
#--- アンロード関数
#       p1：テーブル名／クエリファイル名
#       p2：出力ファイル名
EXEC_UNLOAD()
{
    # 出力ファイルの初期化
    cat /dev/null > $2

    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($2:rc=$rc) "
        echo $JOBNAME " File cat error($2:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi
    
    # unload(KK_T_CRECARD)
    sh ${G_TOOLSH}/EOKULD02.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
}

#--- クエリ編集
#       p1：ＳＱＬ定義ファイル名
#       p2：バインド変数置換文字
EDIT_ULD_QUERY()
{
    SQL_FILE=$1
    SQL_WORK_FILE=${ULD_WORK_DIR}/${JOBNAME}_QUERY.tmp
    cat /dev/null > ${SQL_WORK_FILE}
    
    # SQL定義ファイルの編集
    if [ ! -r ${SQL_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
        echo $JOBNAME " File is nonexist(${SQL_FILE}:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # バインド変数を置き換える
    cat ${SQL_FILE} > ${SQL_WORK_FILE}
    
    for bind in $2
    do
        sed -i, -e 0,/?/s/?/"'"$bind"'"/ ${SQL_WORK_FILE}
    done
    
    export SQL_WORK_FILE
}

# ファイル定義
ULD_WORK_DIR=${MID_DIR_KK}
ZM0321_OUTFILE=${MID_DIR_KK}/KKIMF684_UL_ZM0321.csv

# 各種アンロードクエリファイル
ZM0321_ULD_QUERY=${SQL_DIR}/KK_U_ZM0321_02.sql

# 業務パラメータから削除対象日数を取得する
WORK_PARAM_ID=KK_DEL_TRGG_NISU
EDIT_ULD_QUERY ${ZM0321_ULD_QUERY} "${WORK_PARAM_ID} ${RSLT_OPEDATE} ${RSLT_OPEDATE}"
EXEC_UNLOAD ${SQL_WORK_FILE} ${ZM0321_OUTFILE}

# 業務パラメータの取得に失敗した場合はエラー
if [ ! -s ${ZM0321_OUTFILE} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error (${ZM0321_OUTFILE}:rc=$rc) 業務パラメータのアンロードに失敗しました。"
    echo $JOBNAME " unload error (${ZM0321_OUTFILE}:rc=$rc) 業務パラメータのアンロードに失敗しました。) "
    exit ${G_RTN_ERROR}
fi

read EXECDATE_DQ < ${ZM0321_OUTFILE}

# ダブルクォーテーション削除
DEL_TRGG_NISU_RES=`echo ${EXECDATE_DQ} | sed -e 's/"//g'`

# 空チェック（文字列が空ならエラー終了）
if [ -z ${DEL_TRGG_NISU_RES} ]; then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error (${ZM0321_OUTFILE}:rc=$rc) 業務パラメータの取得に失敗しました。"
    echo $JOBNAME " unload error (${ZM0321_OUTFILE}:rc=$rc) 業務パラメータの取得に失敗しました。) "
    exit ${G_RTN_ERROR}
fi

# 削除対象日を算出
KAIHK_PSB_ENDYMD_B001=`date -d "${DEL_TRGG_NISU_RES} days ago ${RSLT_OPEDATE}" +%Y%m%d`

echo "削除対象日数：${DEL_TRGG_NISU_RES}"
echo "運用年月日  ：${RSLT_OPEDATE}"
echo "削除対象日  ：${KAIHK_PSB_ENDYMD_B001}"

####==== 通知書削除年月日の取得用処理 END ========================================

####==== 通知書データから通知書削除年月日よりも登録運用年月日が過去のデータを除外 =====

KKIFM684_UL_KK0561=${MID_DIR_KK}/KKIFM684_UL_KK0561.csv
KKIFM684_UL_KK0561_TMP=${MID_DIR_KK}/KKIFM684_UL_KK0561.tmp.csv

bsortex \
    -copy \
    -record recform=txtcsv \
    -input file=${KKIFM684_UL_KK0561} \
        reclen=50 \
    -output file=${KKIFM684_UL_KK0561_TMP} \
        include="2.8asc.lt.'${KAIHK_PSB_ENDYMD_B001}'"

####==== 通知書データから通知書削除年月日よりも登録運用年月日が過去のデータを除外 =====

# シェル関数 START

##
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：DEFファイルパス
#      p3：TMPDEFファイルパス
##
EXEC_MATCHING()
{
   OUTFILE=$1
   DEF=$2
   TMPDEF=$3

   # 出力ファイルの初期化
   cat /dev/null > ${OUTFILE}
   cat /dev/null > ${TMPDEF}
   rc=$?
   if [ $rc -ne 0 ]
   then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${OUTFILE}:rc=$rc) "
      echo $JOBNAME " File cat error(${OUTFILE}:rc=$rc) "
      exit ${G_RTN_ERROR}
   fi

   # DEFTMPファイル作成
   cat ${DEF}>${TMPDEF}
   sed -i -e s@'${MID_DIR_KK}'@${MID_DIR_KK}@g ${TMPDEF}
   sed -i -e s@'${LOC_DIR_KK}'@${LOC_DIR_KK}@g ${TMPDEF}
   sed -i -e s@'${MID_DIR_CC}'@${MID_DIR_CC}@g ${TMPDEF}
   sed -i -e s@'${OPEDATE}'@${OPEDATE}@g ${TMPDEF}
   
   # マッチング実行
   export ZTLOUTFILE=${OUTFILE}
   ${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEF}
   rc=$?
   if [ $rc -ne 0 ]
   then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching error($2:rc=$rc) "
      echo $JOBNAME " matching error($2:rc=$rc) "
      exit ${G_RTN_ERROR}
   fi
}
##
#
#--- 存在チェック関数
#       p1：ファイルパス
##
EXEC_CHECK()
{
   if [ ! -r $1 ]
   then
       sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($1) "
       echo $JOBNAME " File is nonexist($1) "
       exit ${G_RTN_ERROR}
   fi
}
##
#
#--- 中間ファイルクリア関数
#       p1：ファイルパス
##
EXEC_CLEAR()
{
   FILE=$1
   # 出力ファイルの初期化
   cat /dev/null > ${FILE}
   rc=$?
   if [ $rc -ne 0 ]
   then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${FILE}:rc=$rc) "
      echo $JOBNAME " File cat error(${FILE}:rc=$rc) "
      exit ${G_RTN_ERROR}
   fi
}

##
#
#--- アンロードファイル用存在チェック関数
#       p1：ファイルパス
##
ULDFILE_EXIST_CHEK()
{
    FILE=$1
    if [ ! -r ${FILE} ]
    then
        # アンロードファイルが存在しない場合は抽出結果0件として正常終了
        
        # 出力ファイルの初期化
        cat /dev/null > ${MID_DIR_KK}/KKIFM684001.csv
        rc=$?
        if [ $rc -ne 0 ]
        then
           sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${FILE}:rc=$rc) "
           echo $JOBNAME " File cat error(${FILE}:rc=$rc) "
           exit ${G_RTN_ERROR}
        fi
        sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
        exit ${G_RTN_NORMAL}
    fi
    
    if test ! -s ${FILE}
	then
		# アンロードファイルが0バイトの場合は抽出結果0件として正常終了
		
        # 出力ファイルの初期化
        cat /dev/null > ${MID_DIR_KK}/KKIFM684001.csv
        rc=$?
        if [ $rc -ne 0 ]
        then
           sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error(${FILE}:rc=$rc) "
           echo $JOBNAME " File cat error(${FILE}:rc=$rc) "
           exit ${G_RTN_ERROR}
        fi
        sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME
        exit ${G_RTN_NORMAL}
	fi
}

# シェル関数 END

# ファイル定義
DEF_0578=${G_TOOLSH}/util/def/KK_CM_0578.def
OUT_FILE_0578=${LOC_DIR_KK}/KKIFM684001_tmp.csv
DEF_TMP_0578=${G_TOOLSH}/util/def/KK_CM_0578.tmp.def

COMULD_KK0081_CUR=${MID_DIR_CC}/CCIFM018002.csv
COMULD_KK0081_CUR_TMP=${MID_DIR_KK}/KKIFM684_CCIFM018002.tmp.csv

# 通知書出力ファイル
OUTFILE1=${MID_DIR_KK}/KKIFM684001.csv

# ファイルクリア処理
EXEC_CLEAR ${OUT_FILE_0578} 
EXEC_CLEAR ${DEF_TMP_0578}
EXEC_CLEAR ${COMULD_KK0081_CUR_TMP}

# 各アンロードファイルの存在チェック（後続シェルで使用するファイルもチェックする）
## -- サービス契約（カレント）
ULDFILE_EXIST_CHEK ${MID_DIR_CC}/CCIFM018002.csv
## -- 工事案件
ULDFILE_EXIST_CHEK ${MID_DIR_CC}/CCIFM016001.csv
## -- サービス契約_工事案件
ULDFILE_EXIST_CHEK ${MID_DIR_CC}/CCIFM017001.csv
## -- 回線対象サービス契約
ULDFILE_EXIST_CHEK ${MID_DIR_CC}/CCIFM004001.csv
## -- 機器提供サービス契約
ULDFILE_EXIST_CHEK ${MID_DIR_CC}/CCIFM007001.csv
## -- 通知書
ULDFILE_EXIST_CHEK ${MID_DIR_KK}/KKIFM684_UL_KK0561.csv
## -- 通知対象物
ULDFILE_EXIST_CHEK ${MID_DIR_KK}/KKIFM684_UL_KK0571.csv
## -- 配送
ULDFILE_EXIST_CHEK ${MID_DIR_KK}/KKIFM684_UL_DK0011.csv
## -- 配送対象物品
ULDFILE_EXIST_CHEK ${MID_DIR_KK}/KKIFM684_UL_DK0021.csv


# サービス契約スキーマを料金グループコードで絞る
## 料金グループコード：'02'(HT),'03'(MZ),'04'(MT),'10(TEL),'11'(TV),'12'(TV KCN),'13'(TV 再送信)のどれか
bsortex \
    -copy \
    -record recform=txtcsv \
    -input file=${COMULD_KK0081_CUR} \
        reclen=${ULD_REC_LEN_KK0081} \
        reconst="0.10,7.2" \
    -output file=${COMULD_KK0081_CUR_TMP} \
        include="1.2asc.eq.'02'.or.1.2asc.eq.'03'.or.1.2asc.eq.'04'.or.1.2asc.eq.'10'.or.1.2asc.eq.'11'.or.1.2asc.eq.'12'.or.1.2asc.eq.'13'"

# ファイル存在チェック
EXEC_CHECK ${DEF_0578}

# マッチング
EXEC_MATCHING ${OUT_FILE_0578} ${DEF_0578} ${DEF_TMP_0578}

# 不要な行を削除
# IT2-2016-0000002 2016-01-18 Modify START
#bsortex \
#     -sort key=0.12asc \
#     -record recform=txtcsv \
#     -input file=${OUT_FILE_0578} \
#            reclen=50 \
#            reconst=0.12,1.10,2.8,'0'.1 \
#     -summary suppress \
#     -output file=${OUTFILE1} 
bsortex \
     -sort key=0.12asc \
     -record recform=txtcsv \
     -input file=${OUT_FILE_0578} \
            reclen=50 \
            reconst="0.12,1.10,2.8,'0'.1ascA" \
     -summary suppress \
     -output file=${OUTFILE1} 
# IT2-2016-0000002 2016-01-18 Modify END

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

rm -f ${OUT_FILE_0578}
rm -f ${DEF_TMP_0578}
rm -f ${COMULD_KK0081_CUR_TMP}
rm -f ${KKIFM684_UL_KK0561_TMP}

#
#--- SQL_WORK_FILEの削除処理
#
if [ -e ${SQL_WORK_FILE} ]
then
  rm "${SQL_WORK_FILE}"
  rm "${SQL_WORK_FILE},"
fi

#
#--- ZM0321_OUTFILEの削除処理
#
if [ -e ${ZM0321_OUTFILE} ]
then
  rm ${ZM0321_OUTFILE}
fi

exit_rc=$rc

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

exit $exit_rc


