#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：セット割管理契約情報抽出（お客様）
#
# 機能          ：先行ジョブで取得した情報を元に、本日異動のあったサービス契約番号を抽出し、セット割管理契約情報抽出ファイルとして出力する。
#
# コマンド形式  ：EO2H30140J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# V38.00.00       2018/07/19  FJ)謝       【IT1-2018-0000117】障害対応 新規作成
# V49.00.00       2020/06/21  FJ)星野     【ANK-3840-00-00】テレビリースサービス新規申込対応
# V57.00.00       2022/02/17  FJ)長江     【ANK-4195-00-00】eo光ネット×mineoセット割施策開始対応
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
   OPD=${RSLT_OPEDATE}
fi

ENDYMD=$2
if [ "${ENDYMD}" = "" ]; then
    . EOK010310J0.sh "BDATE"
    ENDYMD=${RSLT_OPEDATE}
fi

#
#---処理日付チェック
#
if [ $OPD -gt $ENDYMD ]; then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " date range error(\$2 is too large) "
    echo $JOBNAME " date range error(\$2 is too large) "
    exit ${G_RTN_ERROR}
fi

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

#
#--- マッチングクエリ編集
#       p1：ＳＱＬ定義ファイル名
#       p2：バインド変数置換文字
#
EDIT_MATCHING_QUERY()
{
    
    MATCHING_FILE=$1
    MATCHING_QUERY_WORK=${ULD_WORK_DIR}/${JOBNAME}_MATCH_QUERY.tmp
    cat /dev/null > ${MATCHING_QUERY_WORK}

    # SQL定義ファイルの編集
    if [ ! -r ${MATCHING_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${MATCHING_FILE}:rc=$rc) "
        echo $JOBNAME " File is nonexist(${MATCHING_FILE}:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # バインド変数を置き換える
    cat ${MATCHING_FILE} > ${MATCHING_QUERY_WORK}

    for bind in $2
    do
        bind_escape=`echo $bind | sed "s/\//\\\\\\\\\//g"`
        sed -i, -e 0,/#FILE#/s/#FILE#/$bind_escape/ ${MATCHING_QUERY_WORK}
    done

    export MATCHING_QUERY_WORK
}

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：マッチングクエリファイルパス
EXEC_MATCHING()
{
    # 出力ファイルの初期化
    OUTFILE=$1
    cat /dev/null > ${OUTFILE}
    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

    # マッチング実行
    export ZTLOUTFILE=${OUTFILE}
    ${G_TOOLSH}/util/bin/ZTLMAT01 $2
    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
}

#
#--- ファイル定義
#
#サービス契約アンロードファイル
KK0081_ALL=${MID_DIR_KK}/KKIFM814.csv
#お客様アンロードファイル
CK0011_ALL=${MID_DIR_KK}/KKIFM817.csv
#セット割管理サービス契約ファイル
KK0081_SORT=${MID_DIR_KK}/KKIFM814_SORT.csv
#セット割管理お客様ファイル
CK0011_SORT=${MID_DIR_KK}/KKIFM817_SORT.csv
#セット割管理契約情報抽出（進捗）ファイル
KKIFM804_01=${MID_DIR_KK}/KKIFM804_01.csv
#セット割管理契約情報抽出（お客様）ファイル
KKIFM804_02=${MID_DIR_KK}/KKIFM804_02.csv
#セット割管理契約情報抽出（統合）ファイル
KKIFM804_03=${MID_DIR_KK}/KKIFM804_03.csv
#セット割管理契約情報抽出ファイル
KKIFM804=${MID_DIR_KK}/KKIFM804.csv
#マッチング定義ファイル
MT_DEF_FILE=${G_TOOLSH}/util/def/KK_CM_0676.def

#
#--- 各ファイルの存在チェックを行う
#
#サービス契約アンロードファイル
if [ ! -r $KK0081_ALL ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($KK0081_ALL) "
    echo $JOBNAME " File is nonexist($KK0081_ALL) "
    exit ${G_RTN_ERROR}
fi

#お客様アンロードファイル
if [ ! -r $CK0011_ALL ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($CK0011_ALL) "
    echo $JOBNAME " File is nonexist($CK0011_ALL) "
    exit ${G_RTN_ERROR}
fi

#セット割管理契約情報抽出（進捗）ファイル
if [ ! -r $KKIFM804_01 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($KKIFM804_01) "
    echo $JOBNAME " File is nonexist($KKIFM804_01) "
    exit ${G_RTN_ERROR}
fi

#マッチング定義ファイル
if [ ! -r $MT_DEF_FILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($MT_DEF_FILE) "
    echo $JOBNAME " File is nonexist($MT_DEF_FILE) "
    exit ${G_RTN_ERROR}
fi

#--- セット割管理対象のサービス契約取得
#- SELECT(reconst)項目は以下
#  0.10  サービス契約番号
#  1.10  SYSID
#
bsortex \
      -sort key="0.10asc,1.10asc" \
      -record recform=txtcsv \
      -input reclen=181 < ${KK0081_ALL} \
  | bsortex \
      -merge key="0.10asc,1.10asc" \
      -record recform=txtcsv \
      -input reclen=181 \
      -summary suppress last \
  | bsortex \
      -sort key="0.10asc" \
      -record recform=txtcsv \
      -input reclen=181 \
         reconst="0.10,1.10" \
      -output file=${KK0081_SORT} 

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

#--- セット割管理対象のお客様取得
#- SELECT(reconst)項目は以下
#  0.10  SYSID
#
#  予約適用年月日(2.8) >= 処理日付
#  予約適用年月日(2.8) <= バッチ運用日
#  AND 予約適用コード(3.1) = '2'

# ANK-4195-00-00 MOD START
#bsortex \
#      -sort key="0.10asc" \
#      -record recform=txtcsv \
#      -input reclen=62 include="2.8asc.ge.'${OPD}'.and.2.8asc.le.'${ENDYMD}'.and.3.1asc.eq.'2'" < ${CK0011_ALL} \
#  | bsortex \
#      -merge key="0.10asc" \
#      -record recform=txtcsv \
#      -input reclen=62 \
#      -summary suppress last \
#  | bsortex \
#      -sort key="0.10asc" \
#      -record recform=txtcsv \
#      -input reclen=62 \
#         reconst="0.10" \
#      -output file=${CK0011_SORT} 

bsortex \
      -sort key="0.10asc" \
      -record recform=txtcsv \
      -input reclen=67 include="2.8asc.ge.'${OPD}'.and.2.8asc.le.'${ENDYMD}'.and.3.1asc.eq.'2'" < ${CK0011_ALL} \
  | bsortex \
      -merge key="0.10asc" \
      -record recform=txtcsv \
      -input reclen=67 \
      -summary suppress last \
  | bsortex \
      -sort key="0.10asc" \
      -record recform=txtcsv \
      -input reclen=67 \
         reconst="0.10" \
      -output file=${CK0011_SORT} 
# ANK-4195-00-00 MOD END

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

# マッチング実行
EDIT_MATCHING_QUERY ${MT_DEF_FILE} "${KK0081_SORT} ${CK0011_SORT}"
EXEC_MATCHING ${KKIFM804_02} ${MATCHING_QUERY_WORK}

# セット割管理進捗データ統合
cat ${KKIFM804_01} > ${KKIFM804_03}
cat ${KKIFM804_02} >> ${KKIFM804_03}

# 重複のレコードを取る
bsortex \
      -sort key="0.10asc" \
      -record recform=txtcsv \
      -input reclen=13 < ${KKIFM804_03} \
  | bsortex \
      -merge key="0.10asc" \
      -record recform=txtcsv \
      -input reclen=13 \
      -summary suppress last \
      -output file=${KKIFM804} 

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

# 一時ファイルの削除
rm ${CK0011_SORT}
# 20200621 ANK-3840-00-00対応 星野 DEL START
#後続のEO2HV0140J0.shで使用するためここでは消さない
#rm ${KK0081_SORT}
#rm ${KKIFM804_01}
#rm ${KKIFM804_02}
# 20200621 ANK-3840-00-00対応 星野 DEL END
rm ${KKIFM804_03}
rm ${MATCHING_QUERY_WORK}

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

exit ${G_RTN_NORMAL}
