#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：コンテンツ決済
#
# シェル名      ：標準コンテンツ自動解約登録対象データ抽出
#
# 機能          ：標準コンテンツ自動解約登録対象となるサービス契約を抽出する。
#※詳細は「SSA10_EO40Y0110J0_標準コンテンツ自動解約登録対象データ抽出(補足説明).xlsx」を参照
#
# コマンド形式  ：EO40Y0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
#  v74.00.00      2025/03/04  FJ)謝        【ANK-4665-00-00】量販・訪販WebのeoID取得方法変更(追加要件対応)
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#

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

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

#
#--- クエリ編集(マッチング)
#       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
}

#
#--- ファイル定義
#
# お客様(カレント)
COMULD2_CK0011_CUR=${MID_DIR_CC}/CCIFM019002.csv
# サービス契約(カレント)
COMULD2_KK0081_CUR=${MID_DIR_CC}/CCIFM020002.csv
# サービス契約対象ファイル
FILE_KK0081_TRGT=${MID_DIR_CN}/${JOBNAME}_KK0081_TRGT.csv
FILE_KK0081_TRGT_SHOSA=${MID_DIR_CN}/${JOBNAME}_KK0081_TRGT_SHOSA.csv
FILE_KK0081_TRGT_CANCEL=${MID_DIR_CN}/${JOBNAME}_KK0081_TRGT_CANCEL.csv
# お客様対象ファイル
FILE_CK0011_TRGT=${MID_DIR_CN}/${JOBNAME}_CK0011_TRGT.csv
# 標準コンテンツ自動解約登録候補ファイル
FILE_CNIFM025001_TMP=${MID_DIR_CN}/${JOBNAME}_CNIFM025001_TMP.csv
FILE_CNIFM025001_SORT=${MID_DIR_CN}/${JOBNAME}_CNIFM025001_SORT.csv
FILE_CNIFM025001=${MID_DIR_CN}/CNIFM025001.csv

# マッチングファイル定義
DEFFILE_CN_CM_0016=${G_TOOLSH}/util/def/CN_CM_0016.def

#
#--- 出力ファイルの初期化を行う
#
cat /dev/null > ${FILE_KK0081_TRGT}
cat /dev/null > ${FILE_KK0081_TRGT_SHOSA}
cat /dev/null > ${FILE_KK0081_TRGT_CANCEL}
cat /dev/null > ${FILE_CK0011_TRGT}
cat /dev/null > ${FILE_CNIFM025001_TMP}
cat /dev/null > ${FILE_CNIFM025001_SORT}
cat /dev/null > ${FILE_CNIFM025001}

#
#--- サービス契約対象ファイルを抽出する　※当日照査
#-   SELECT(reconst)項目は以下
#      0 - 3.10 SYSID
#    抽出条件
#        ・料金グループコード IN ("02"(eo光ネットホームタイプ), "03"(eo光ネットメゾンタイプ), "04"(eo光ネットマンションタイプ),
#                                 "10"(eo光電話), "11"(eo光テレビ), "12"(eo光テレビ(KCN)), "13"(eo光テレビ(再送信)))
#        ・サービス契約ステータス IN ("020"(照査済), "030"(締結済), "100"(サービス提供中), "210"(休止・中断中))
#        ・照査年月日 = バッチ運用日付
#
bsortex -copy -record recform=txtcsv \
    -input file=${COMULD2_KK0081_CUR} reclen=${ULD2_REC_LEN_KK0081} reconst="3.10" \
        include="(7.2asc.eq.'02'.or.7.2asc.eq.'03'.or.7.2asc.eq.'04'.or.7.2asc.eq.'10'.or.7.2asc.eq.'11'.or.7.2asc.eq.'12'.or.7.2asc.eq.'13').and.(2.3asc.eq.'020'.or.2.3asc.eq.'030'.or.2.3asc.eq.'100'.or.2.3asc.eq.'210').and.11.8asc.eq.'${OPD}'" \
    -output file=${FILE_KK0081_TRGT_SHOSA}

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

#
#--- サービス契約対象ファイルを抽出する　※当日キャンセル
#-   SELECT(reconst)項目は以下
#      0 - 3.10 SYSID
#    抽出条件
#        ・料金グループコード IN ("02"(ｅｏ光ネットホームタイプ), "03"(ｅｏ光ネットメゾンタイプ), "04"(ｅｏ光ネットマンションタイプ))
#        ・サービス契約ステータス = "920"(キャンセル済)
#        ・サービスキャンセル年月日 = バッチ運用日付
#
bsortex -copy -record recform=txtcsv \
    -input file=${COMULD2_KK0081_CUR} reclen=${ULD2_REC_LEN_KK0081} reconst="3.10" \
        include="(7.2asc.eq.'02'.or.7.2asc.eq.'03'.or.7.2asc.eq.'04').and.2.3asc.eq.'920'.and.21.8asc.eq.'${OPD}'" \
    -output file=${FILE_KK0081_TRGT_CANCEL}

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

#
#--- マージ
#
cat ${FILE_KK0081_TRGT_SHOSA} > ${FILE_KK0081_TRGT}
cat ${FILE_KK0081_TRGT_CANCEL} >> ${FILE_KK0081_TRGT}

#
#--- お客様対象ファイルを抽出する
#-   SELECT(reconst)項目は以下
#      0 - 0.10 SYSID
#      1 -20.80 eoID
#    抽出条件
#        ・契約者タイプコード = "1"(個人), "2"(法人)
#
bsortex -copy -record recform=txtcsv \
    -input file=${COMULD2_CK0011_CUR} reclen=${ULD2_REC_LEN_CK0011} reconst="0.10,20.80" \
        include="3.1asc.eq.'1'.or.3.1asc.eq.'2'" \
    -output file=${FILE_CK0011_TRGT}

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

#
#--- 標準コンテンツ自動解約登録候補ファイルを抽出する
#
EDIT_MATCHING_QUERY ${DEFFILE_CN_CM_0016} "${FILE_KK0081_TRGT} ${FILE_CK0011_TRGT}"
EXEC_MATCHING ${FILE_CNIFM025001_TMP} ${MATCHING_QUERY_WORK}


#
#--- 標準コンテンツ自動解約登録候補ファイルをSYSID単位で集約する
#    ソートキー
#        ・SYSID(昇順)
#
bsortex \
    -sort key=0.10asc -record recform=txtcsv \
    -input file=${FILE_CNIFM025001_TMP} reclen=${ULD2_REC_LEN_CK0011} \
    -output file=${FILE_CNIFM025001_SORT}

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

#
#--- SYSID毎の一番下のレコードのみを残す
#
bsortex \
    -merge key=0.10asc -record recform=txtcsv \
    -input file=${FILE_CNIFM025001_SORT} reclen=${ULD2_REC_LEN_CK0011} \
    -summary suppress last \
    -output file=${FILE_CNIFM025001}

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

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

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

#
#--- 一時ファイルの削除を行う
#
rm -f ${FILE_KK0081_TRGT}
rm -f ${FILE_KK0081_TRGT_SHOSA}
rm -f ${FILE_KK0081_TRGT_CANCEL}
rm -f ${FILE_CK0011_TRGT}
rm -f ${FILE_CNIFM025001_TMP}
rm -f ${FILE_CNIFM025001_SORT}

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

exit ${G_RTN_NORMAL}
