#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：卸先事業者サービス開始情報抽出
#
# 機能          ：設備卸契約者が保持するネット、電話、テレビ契約のサービス開始後のサービス開始情報（サービス開始日、課金開始日）抽出し、「サービス開始情報連携（全卸先事業者）」に出力する。
#
# コマンド形式  ：EO2GZ0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v37.00.00       2018/02/27  FJ)謝        【ANK-3366-00-00】eo光設備卸対応 新規作成
# v39.00.00        2018/10/2 FJ)原田       【ANK-3478-00-00】eｏ光設備卸対応(サービス開始対応) 卸TVの地デジ・BSコース除外
#
##############################################################

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

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

#
#---業務で必要な変数定義
#
#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
}

#
#--- アンロード関数
#       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
    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
}

#
#--- 文字コード変換(Shift_JIS → UTF-8)
#       p1：対象ファイル名
EXEC_TO_UTF8()
{
    if [ `nkf -g $1` == 'Shift_JIS' ]
    then
        nkf -x -w --overwrite $1
    fi
}

#
#--- ファイル定義
#
# お客様(カレント)
COMULD2_CK0011_CUR=${MID_DIR_CC}/CCIFM019002.csv
# サービス契約(カレント)
COMULD2_KK0081_CUR=${MID_DIR_CC}/CCIFM020002.csv
# 回線対象サービス契約(カレント)
COMULD2_KK0241_CUR=${MID_DIR_CC}/CCIFM022002.csv
# 設備卸のお客様
FILE_CK0011_EQUIP_OROSI=${MID_DIR_KK}/EO2GZ010_CK0011_EQUIP_OROSI.csv
# 卸先事業者契約異動通知
FILE_KK3141=${MID_DIR_KK}/EO2GZ010_KK3141.csv
# サービス契約(ネット)
FILE_KK0081_NET=${MID_DIR_KK}/EO2GZ010_KK0081_NET.csv
# サービス開始後のサービス契約
FILE_KK0081_SVC_STA=${MID_DIR_KK}/EO2GZ010_KK0081_SVC_STA.csv
# 未送信のサービス開始情報
FILE_MI_SEND_SVC_STA=${MID_DIR_KK}/EO2GZ010_MI_SEND_SVC_STA.csv
# サービス開始情報連携(全卸先事業者)
FILE_KKIFM785=${MID_DIR_KK}/KKIFM785.csv
# サービス開始情報連携(全卸先事業者)(ネット)
FILE_KKIFM785001=${MID_DIR_KK}/KKIFM785001.csv
# サービス開始情報連携(全卸先事業者)(電話)
FILE_KKIFM785002=${MID_DIR_KK}/KKIFM785002.csv
# サービス開始情報連携(全卸先事業者)(テレビ)
FILE_KKIFM785003=${MID_DIR_KK}/KKIFM785003.csv
# マッチングファイル定義
DEFFILE_KK_CM_0651=${G_TOOLSH}/util/def/KK_CM_0651.def
DEFFILE_KK_CM_0652=${G_TOOLSH}/util/def/KK_CM_0652.def
# アンロードSQL定義
SQLFILE_KK_U_KK3141_03=${SQL_DIR}/KK_U_KK3141_03.sql

#
#--- 設備卸のお客様を取得する
#    CK0011のカレント AND 卸先事業者コード <> ''
#    - SELECT(reconst)項目は以下
#        0 - 0.10   ：SYSID
#        1 - 33.2   ：卸先事業者コード
bsortex \
    -copy -record recform=txtcsv \
    -input file=${COMULD2_CK0011_CUR} \
        reclen=${ULD2_REC_LEN_CK0011} \
        reconst="0.10,33.2" \
        include="33.2asc.gt.' '" \
    -output file=${FILE_CK0011_EQUIP_OROSI}

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

#
#--- 卸先事業者契約異動通知を取得する(アンロード)
#
EXEC_UNLOAD ${SQLFILE_KK_U_KK3141_03} ${FILE_KK3141}

#
#--- 同一回線上のネットのサービス契約番号を取得する(マッチング)
#        回線対象サービス契約(カレント)(同一回線).サービス契約回線内訳番号 = 回線対象サービス契約(カレント).サービス契約回線内訳番号
#        AND サービス契約(カレント).サービス契約番号 = 回線対象サービス契約(カレント)(同一回線).サービス契約番号
#        AND サービス契約(カレント).料金グループコード = 「ｅｏ光ネットホームタイプ：02」
EDIT_MATCHING_QUERY ${DEFFILE_KK_CM_0651} "${COMULD2_KK0241_CUR} ${COMULD2_KK0241_CUR} ${COMULD2_KK0081_CUR}"
EXEC_MATCHING ${FILE_KK0081_NET} ${MATCHING_QUERY_WORK}

#
#--- サービス開始後のサービス契約情報を取得する
#    KK0081のカレント AND サービス開始年月日 <> 空白
#        AND サービス開始年月日 <= バッチ運用日付
#        AND サービス課金開始年月日 <> 空白
#    - SELECT(reconst)項目は以下
#        0 - 0.10   ：サービス契約番号
#        1 - 7.2    ：料金グループコード
#        2 - 3.10   ：SYSID
#        3 - 22.8   ：サービス開始年月日
#        4 - 23.8   ：サービス課金開始年月日
# v39.00.00 MOD START
#bsortex \
#    -copy -record recform=txtcsv \
#    -input file=${COMULD2_KK0081_CUR} \
#        reclen=${ULD2_REC_LEN_KK0081} \
#        reconst="0.10,7.2,3.10,22.8,23.8" \
#        include="22.8asc.gt.' '.and.22.8asc.le.'${OPD}'.and.23.8asc.gt.' '" \
#    -output file=${FILE_KK0081_SVC_STA}
bsortex \
    -copy -record recform=txtcsv \
    -input file=${COMULD2_KK0081_CUR} \
        reclen=${ULD2_REC_LEN_KK0081} \
        reconst="0.10,7.2,3.10,22.8,23.8,8.3" \
        include="22.8asc.gt.' '.and.22.8asc.le.'${OPD}'.and.23.8asc.gt.' '" \
    -output file=${FILE_KK0081_SVC_STA}
# v39.00.00 MOD END

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

#
#--- 設備卸のお客様に紐付く未送信のサービス開始情報を取得する(マッチング)
#      結合条件:
#        サービス開始後のサービス契約.SYSID = 設備卸のお客様.SYSID
#        AND サービス契約(ネット).サービス契約番号 = サービス開始後のサービス契約.サービス契約番号
#        AND 卸先事業者契約異動通知.卸先事業者コード = 設備卸のお客様.卸先事業者コード
#        AND 卸先事業者契約異動通知.サービス契約番号 = サービス開始後のサービス契約.サービス契約番号
#      抽出条件:
#        卸先事業者契約異動通知.サービス契約番号 IS NULL
EDIT_MATCHING_QUERY ${DEFFILE_KK_CM_0652} "${FILE_CK0011_EQUIP_OROSI} ${FILE_KK0081_SVC_STA} ${FILE_KK0081_NET} ${FILE_KK3141}"
EXEC_MATCHING ${FILE_MI_SEND_SVC_STA} ${MATCHING_QUERY_WORK}

#
#--- サービス開始情報連携(全卸先事業者)を出力する
#    case1:料金グループコード = 「ｅｏ光ネットホームタイプ：02」
#    case2:料金グループコード = 「ｅｏ光電話：10」
#    case3:料金グループコード = 「ｅｏ光テレビ：11」 OR 「ｅｏ光テレビ(再送信)：13」
# v39.00.00 MOD START
#bsortex \
#    -copy -record recform=txtcsv \
#    -input file=${FILE_MI_SEND_SVC_STA} \
#        reclen=58 \
#    -output file=${FILE_KKIFM785001} case="2.2asc.eq.'02'" \
#        reconst="0.2,1.10,'1'.1ascA,EMPTYA,3.8,4.8" \
#    -output file=${FILE_KKIFM785002} case="2.2asc.eq.'10'" \
#        reconst="0.2,1.10,'2'.1ascA,5.10,3.8,4.8" \
#    -output file=${FILE_KKIFM785003} case="2.2asc.eq.'11'.or.2.2asc.eq.'13'" \
#        reconst="0.2,1.10,'3'.1ascA,5.10,3.8,4.8"
bsortex \
    -copy -record recform=txtcsv \
    -input file=${FILE_MI_SEND_SVC_STA} \
        reclen=64 \
    -output file=${FILE_KKIFM785001} case="2.2asc.eq.'02'" \
        reconst="0.2,1.10,'1'.1ascA,EMPTYA,3.8,4.8,6.3" \
    -output file=${FILE_KKIFM785002} case="2.2asc.eq.'10'" \
        reconst="0.2,1.10,'2'.1ascA,5.10,3.8,4.8,6.3" \
    -output file=${FILE_KKIFM785003} case="2.2asc.eq.'11'.or.2.2asc.eq.'13'" \
        reconst="0.2,1.10,'3'.1ascA,5.10,3.8,4.8,6.3"
# v39.00.00 MOD END

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

#
#--- サービス開始情報連携(全卸先事業者)を出力する
#
EXEC_TO_UTF8 ${FILE_KKIFM785001}
EXEC_TO_UTF8 ${FILE_KKIFM785002}
EXEC_TO_UTF8 ${FILE_KKIFM785003}
cat ${FILE_KKIFM785001} > ${FILE_KKIFM785}
cat ${FILE_KKIFM785002} >> ${FILE_KKIFM785}
cat ${FILE_KKIFM785003} >> ${FILE_KKIFM785}

#
#--- 一時ファイルの削除を行う
#
rm -f ${FILE_CK0011_EQUIP_OROSI}
rm -f ${FILE_KK3141}
rm -f ${FILE_KK0081_NET}
rm -f ${FILE_KK0081_SVC_STA}
rm -f ${FILE_MI_SEND_SVC_STA}
rm -f ${FILE_KKIFM785001}
rm -f ${FILE_KKIFM785002}
rm -f ${FILE_KKIFM785003}

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

exit ${G_RTN_NORMAL}
