#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：ｅｏチケット付与対象者リスト作成
#
# 機能          ：サービス契約アンロードファイルから情報を抽出後、ｅｏチケット付与対象者リストファイルを作成し、ファイルを出力する
#
# コマンド形式  ：EO2GD0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v33.00.00      2017/10/19   FJ）孫     【ANK-3232-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 "NDATE"
  OPD=${RSLT_OPEDATE}
fi

##############################################################
# 共通関数
##############################################################

ZM_M_WORK_PARAM_KNRI_ULD=${SQL_DIR}/KK_U_ZM0321_12.sql

#
#--- ファイルの存在チェックを行う
#
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) "
    exit ${G_RTN_ERROR}
fi

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

#-------------------------------------------------------------
#---業務パラメータ管理から請求書発行手数料課金サービス(KK_SKSHAK_CHRG_SVC)を取得
#-------------------------------------------------------------
# 業務パラメータ
WORK_PARAM_ID_KK_SKSHAK_CHRG_SVC="'KK_TICKET_LIST_JUDGE'"
ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_WK=${SQL_DIR}/${JOBNAME}_KK_TICKET_LIST_JUDGE.sql
ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_1_FILE=${MID_DIR_KK}/${JOBNAME}_KK_TICKET_LIST_JUDGE_FILE_1.csv
ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_2_FILE=${MID_DIR_KK}/${JOBNAME}_KK_TICKET_LIST_JUDGE_FILE_2.csv

#
#--- 一時ファイル生成
#

touch ${ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_1_FILE}
touch ${ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_2_FILE}

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

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

# カンマ区切りの業務パラメータ設定値抽出
cp  -f ${ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_1_FILE} ${ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_2_FILE}

KK_SKSHAK_CHRG_SVC_1=`head -n1 ${ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_2_FILE}`

SAVE_STT_MNTH=`date -d "${KK_SKSHAK_CHRG_SVC_1} months ago ${RSLT_OPEDATE}" +%Y%m`

OPD_MNTH=`echo ${OPD}|cut -c-6`
echo '■パラメータ年月日---------------------->'${OPD_MNTH}
echo '■業務パラメータ抽出結果---------------->'${KK_SKSHAK_CHRG_SVC_1}
echo '■運用日付年月-------------------------->'$SAVE_STT_MNTH

#-------------------------------------------------------------
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：マッチングクエリファイルパス
#-------------------------------------------------------------

EXEC_MATCHING()
{
    local _OUTFILE=$1
    local _MATCHING_FILE=$2

    # マッチングクエリファイルの存在チェック
    if [ ! -r ${_MATCHING_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${_MATCHING_FILE}) "
        echo $JOBNAME " File is nonexist(${_MATCHING_FILE}) "
        exit ${G_RTN_ERROR}
    fi

    # 出力ファイルの初期化
    cat /dev/null > ${_OUTFILE}

    # マッチング実行
    export ZTLOUTFILE=${_OUTFILE}
    ${G_TOOLSH}/util/bin/ZTLMAT01 ${_MATCHING_FILE}

    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
}

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

#--- 共通アンロードファイル
# サービス契約共通アンロードファイル<カレント>
COMULD2_KK0081_CUR=${MID_DIR_CC}/CCIFM020002.csv

#--- マッチングツール定義ファイル
# マッチングツール定義ファイル(サービス契約)
MATCHDEF_KK0081=${G_TOOLSH}/util/def/KK_CM_0640.def

#-------------------------------------------------------------
#--- 一時ファイル
#-------------------------------------------------------------

# サービス契約抽出結果ファイル(eo電気、mineo)
TMPFILE_KK0081=${LOC_DIR_KK}/${JOBNAME}_KK0081.csv
#サービス契約抽出結果ファイル(サービス提供中）
TMPFILE_KK0081_1=${LOC_DIR_KK}/${JOBNAME}_KK0081_1.csv
#サービス契約抽出結果から重複情報の削除ファイル
TMPFILE_KK0081_2=${LOC_DIR_KK}/${JOBNAME}_KK0081_2.csv
# サービス契約マッチング結果ファイル
TMPFILE_KK0081_MATCH=${LOC_DIR_KK}/${JOBNAME}_KK0081_MATCH.csv
# サービスコードが「05」の場合、結果ファイル 
TMPFILE_KKIFE365_1=${LOC_DIR_KK}/${JOBNAME}_TMPFILE_KKIFE365_1.csv
# サービスコードが「51」の場合、結果ファイル 
TMPFILE_KKIFE365_2=${LOC_DIR_KK}/${JOBNAME}_TMPFILE_KKIFE365_2.csv
# サービスコード別結果ファイルのマージ結果ファイル
TMPFILE_KKIFE365_MAJI=${LOC_DIR_KK}/${JOBNAME}_TMPFILE_KKIFE365_MAJI.csv

#-------------------------------------------------------------
#--- 出力ファイル
#-------------------------------------------------------------

# eoチケット付与対象者リストファイル
OUTFILE_KKIFE365=${GAIBU_SEND_DIR_KK}/KKIFE365/TB0028_`date +%Y%m%d`.csv
# eoチケット付与対象者リストファイルのレコード長
RECLEN_KKIFE365=161

#-------------------------------------------------------------
#--- 一時ファイルの生成
#-------------------------------------------------------------

touch ${TMPFILE_KK0081}
touch ${TMPFILE_KK0081_1}
touch ${TMPFILE_KK0081_2}
touch ${TMPFILE_KK0081_MATCH}
touch ${TMPFILE_KKIFE365_1}
touch ${TMPFILE_KKIFE365_2}
touch ${TMPFILE_KKIFE365_MAJI}
touch ${OUTFILE_KKIFE365}

#-------------------------------------------------------------
#--- 1. アンロードファイルから取得する
#-------------------------------------------------------------

# bsort用項目定義
#
#    2.3 = サービス契約コード
#   3.10 = SYSID
#    4.2 = サービスコード
#    7.2 = 料金グループコード
#   22.8 = サービス開始年月日
#

#--- サービス契約アンロードファイル<カレント>
#	抽出条件 : サービスコード = '05'(eo電気)、'51'(mineo)、サービス開始年月 = 運用日付年月 - 業務パラメータの設定値、'サービス契約ステータス = '100'（サービス提供中）

BSORT_DEF_KK0081_CUR="@SVC_KEI_STAT=2.3 @SYSID=3.10 @SVC_CD=4.2 @PRC_GRP_CD=7.2 @SVC_STA_YMD=22.8"
bsortex -define ${BSORT_DEF_KK0081_CUR} -copy -record recform=txtcsv \
        -input file=${COMULD2_KK0081_CUR} reclen=${ULD2_REC_LEN_KK0081} \
               reconst="@SYSID,@SVC_CD,@SVC_STA_YMD" \
               include="(@SVC_CDasc.eq.'05'.or.@SVC_CDasc.eq.'51').and.22.6asc.eq.'${SAVE_STT_MNTH}'.and.@SVC_KEI_STATasc.eq.'100'" \
        -output file=${TMPFILE_KK0081}
        
rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${COMULD2_KK0081_CUR}
fi

#--- サービス契約アンロードファイル<カレント>
#	抽出条件 : サービス契約ステータス = '100'（サービス提供中）、サービスコード = '01'、料金グループコード = '02', '03', '04''

bsortex -define ${BSORT_DEF_KK0081_CUR} -copy -record recform=txtcsv \
        -input file=${COMULD2_KK0081_CUR} reclen=${ULD2_REC_LEN_KK0081} \
               reconst="@SYSID,@SVC_CD,@SVC_KEI_STAT,@PRC_GRP_CD,@SVC_STA_YMD" \
               include="@SVC_KEI_STATasc.eq.'100'.and.@SVC_CDasc.eq.'01'.and.(7.2asc.eq.'02'.or.7.2asc.eq.'03'.or.7.2asc.eq.'04')" \
        -output file=${TMPFILE_KK0081_1}
rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${COMULD2_KK0081_CUR}
fi

#--- 重複情報（SYSID）削除処理

bsortex -sort key="0.10asc" -record recform=txtcsv -input reclen=${ULD2_REC_LEN_KK0081} < ${TMPFILE_KK0081_1} \
	  | bsortex -merge key="0.10asc" -record recform=txtcsv -input reclen=${ULD2_REC_LEN_KK0081} -summary suppress last -output file=${TMPFILE_KK0081_2}
	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

#-------------------------------------------------------------
#--- 2. ファイルのマッチングする
#-------------------------------------------------------------

export TMPFILE_KK0081
export TMPFILE_KK0081_1
export TMPFILE_KK0081_2

EXEC_MATCHING ${TMPFILE_KK0081_MATCH} ${MATCHDEF_KK0081}

#-------------------------------------------------------------
#--- 3. ファイルの情報を設定する
#-------------------------------------------------------------

export TMPFILE_KK0081_MATCH
# bsort用項目定義
BSORT_DEF_KKIFE365="@SYSID=0.10 @SVC_CD=1.2"

# マッチング結果に固定値を入力する
bsortex -define ${BSORT_DEF_KKIFE365} -copy -record recform=txtcsv \
     -input file=${TMPFILE_KK0081_MATCH} reclen=${RECLEN_KKIFE365} \
     -output file=${TMPFILE_KKIFE365_1} case="@SVC_CDasc.eq.'05'" reconst="@SYSID","'0'.1ascA","'1'.1ascA","'eo電気契約者へのeoチケット進呈キャンペーン'.61ascA","'eo電気契約者へのeoチケット進呈キャンペーン'.61ascA",EMPTYA,"'1'.1ascA","'1'.1ascA" \
     -output file=${TMPFILE_KKIFE365_2} case=other reconst="@SYSID","'0'.1ascA","'1'.1ascA","'mineo契約者へのeoチケット進呈キャンペーン'.58ascA","'mineo契約者へのeoチケット進呈キャンペーン'.58ascA",EMPTYA,"'0'.1ascA","'1'.1ascA"
rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${TMPFILE_KK0081_MATCH}
fi

#-------------------------------------------------------------
#--- 4．二つのファイルをマージする
#-------------------------------------------------------------

cat ${TMPFILE_KKIFE365_1} ${TMPFILE_KKIFE365_2} > ${TMPFILE_KKIFE365_MAJI}

#-------------------------------------------------------------
#--- 5. eoチケット付与対象者リスト(MVNO_電力新規契約)の出力ファイルを作成する
#-------------------------------------------------------------

# ① eoチケット付与対象者リスト(MVNO_電力新規契約)ファイルのファイル名をシステム日時(年月日)から生成する。
# ② マージしたファイルを入力する。
# ③ SYSID(昇順)をソートする。
# ④ 改行コードをCRLFに変換する。

bsortex -define ${BSORT_DEF_KK0081_CUR} -sort key="@SYSIDasc" -record recform=txtcsv \
     -input file=${TMPFILE_KKIFE365_MAJI} reclen=${RECLEN_KKIFE365} \
     -output file=${OUTFILE_KKIFE365} linedlmt=crlf
rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${TMPFILE_KKIFE365_MAJI}
fi

#SJISに変換
nkf -x -s --overwrite ${OUTFILE_KKIFE365}

#-------------------------------------------------------------
#--- 一時ファイルの削除
#-------------------------------------------------------------

rm -f ${TMPFILE_KK0081}
rm -f ${TMPFILE_KK0081_1}
rm -f ${TMPFILE_KK0081_2}
rm -f ${TMPFILE_KK0081_MATCH}
rm -f ${TMPFILE_KKIFE365_1}
rm -f ${TMPFILE_KKIFE365_2}
rm -f ${TMPFILE_KKIFE365_MAJI}
rm -f ${ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_1_FILE}
rm -f ${ZM_M_WORK_PARAM_KNRI_ULD_KK_TICKET_LIST_JUDGE_2_FILE}

#
#--- ジョブの終了メッセージを出力する
#

sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit ${G_RTN_NORMAL}
