#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：設備卸契約情報集計（継続利用料金）
#
# 機能          ：継続利用契約件数を「卸先事業者／サービスコード／継続利用月数」単位に集計し、卸先事業者別集計情報(継続利用契約料金)を作成する。
#
#
#
# コマンド形式  ：EO31N0134J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v39.00.00        2018/9/26 FJ)寺園     ANK-3478-00-00 新規作成 ｅｏ光設備卸対応(サービス開始対応)
# v39.00.01       2018/11/07 FJ)寺園    【ANK-3478-01-00】eo光設備卸（サービス開始対応）【12月末商用リリース分】 インセンティブ処理データ管理
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

# v39.00.01 ADD START
#
#---ファイル定義
#
# 卸先事業者インセンティブ設定アンロードSQL定義ファイル
ULDSQL_CH0921=${SQL_DIR}/AC_U_CH0921_02.sql

#-- 入力ファイル
#-- 設備卸契約情報(継続利用契約料金)
INFILE_ACIFM315=${MID_DIR_AC}/ACIFM315001.csv
#  卸先事業者インセンティブ実績管理アンロード
INFILE_ACIFM321=${MID_DIR_AC}/ACIFM321001.csv

#-- 出力ファイル
#-- 卸先事業者別集計情報(継続利用契約料金)
OUTFILE=${MID_DIR_AC}/ACIFM319001.csv
#-- インセンティブ料金計算（継続利用料金）対象
OUTFILE2=${MID_DIR_AC}/ACIFM322001.csv

#-- 中間ファイル
#-- 卸先事業者インセンティブ設定アンロード
ULDFILE_CH0921_WK=${MID_DIR_AC}/AC_U_CH0921_02_WK.csv
# マッチング結果ファイル
MATCHING_FILE1=${MID_DIR_AC}/ACIFM315001_match1.csv
MATCHING_FILE2=${MID_DIR_AC}/ACIFM315001_match2.csv
ORSINV_JSK_KNRI_CP=${MID_DIR_AC}/ACIFM321001_cp_EO31N0120J0.csv
ORSINV_JSK_KNRI_KEIZOKU_MSKM=${MID_DIR_AC}/ACIFM321001_keizoku_mskm.csv

#-- マッチングファイル定義
MATCHDEFFILE1=${G_TOOLSH}/util/def/AC_CM_0160.def
MATCHDEFFILE2=${G_TOOLSH}/util/def/AC_CM_0161.def
#
#--- アンロード関数
#       p1：出力ファイル名
#       p2：クエリファイル名
#       p3：バインド変数置換文字
EXEC_UNLOAD()
{
    local _OTF=$1
    local _SQL_FILE=$2
    local _BIND_VAL=$3
    local _SQL_WORK_FILE=${ULD_WORK_DIR}/${JOBNAME}.W_ULD.sql

    # SQLクエリファイル初期化
    cat /dev/null > ${_SQL_WORK_FILE}
    
    # SQL定義ファイルが存在しない場合エラー
    if [ ! -r ${_SQL_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${_SQL_FILE}) "
        echo $JOBNAME " File is nonexist(${_SQL_FILE}) "
        exit ${G_RTN_ERROR}
    fi

    cat ${_SQL_FILE} > ${_SQL_WORK_FILE}

    # バインド変数を置き換える
    if [ "${_BIND_VAL}" != "" ]
    then
        for bind in ${_BIND_VAL}
        do
            sed -i -e 0,/?/s/?/"'"$bind"'"/ ${_SQL_WORK_FILE}
        done
    fi

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

    # アンロード
    sh ${G_TOOLSH}/EOKULD02.sh ${_SQL_WORK_FILE} ${_OTF}
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error(${_SQL_FILE}:rc=$rc) "
        echo $JOBNAME " unload error(${_SQL_FILE}:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # 一時ファイル削除
    rm -f ${_SQL_WORK_FILE}
}

#
#--- マッチング処理
#      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
}
# v39.00.01 ADD END

#運用月月初取得
OPEDATE_YYYYMM=`echo ${RSLT_OPEDATE} |cut -c 1-6`
OPEDATE_STADAY=${OPEDATE_YYYYMM}"01"

# v39.00.01 ADD START
#
#--- 卸先事業者インセンティブ実績管理アンロードファイルの複製
#
# ファイルの存在チェック
if [ ! -r ${INFILE_ACIFM321} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${INFILE_ACIFM321}) "
    echo $JOBNAME " File is nonexist(${INFILE_ACIFM321}) "
    exit ${G_RTN_ERROR}
fi
cp -fp ${INFILE_ACIFM321} ${ORSINV_JSK_KNRI_CP}

#
#--- 卸先事業者インセンティブ実績管理アンロード複製ファイルから
#--- インセンティブ計算区分が”2：継続利用料金”であるデータを取得する。
#
bsortex -sort key=1.10asc -record recform=txtcsv \
        -input file=${ORSINV_JSK_KNRI_CP} reclen=55 \
         include="3.1ascn.eq.'2'" \
        -output file=${ORSINV_JSK_KNRI_KEIZOKU_MSKM} \
        reconst="1.10,4.5"
# v39.00.02 ADD END
#
#---1.卸先事業者インセンティブ設定アンロード処理
#
EXEC_UNLOAD ${ULDFILE_CH0921_WK} ${ULDSQL_CH0921} ${RSLT_OPEDATE}

#
# --- 2.マッチング１
#
# 設備卸契約情報(継続利用契約料金)、卸先事業者インセンティブ設定アンロードをマッチング
export INFILE_ACIFM315
export ULDFILE_CH0921_WK
EXEC_MATCHING ${MATCHING_FILE1} ${MATCHDEFFILE1}

#
# --- 4.マッチング２
#
# 設備卸契約情報(継続利用契約料金)、設備卸インセンティブ実績管理アンロードをマッチング
export MATCHING_FILE1
export ORSINV_JSK_KNRI_KEIZOKU_MSKM
EXEC_MATCHING ${MATCHING_FILE2} ${MATCHDEFFILE2}

#-- 対象外データ除外処理
#-- 特定したデータを除外する。
#-- 【出力情報】
#--   0.卸先事業者コード
#--   1.サービス契約番号
#--   2.サービスコード
#--   3.サービス開始年月日
#--   4.抽出件数
#--   5.インセンティブ計算区分枝番
bsortex -sort key=0.2asca,2.2asca,1.10asca \
    -record recform=txtcsv \
    -input reclen=80 file=${MATCHING_FILE2} \
    include="8.10asc.lt.' '" \
    -output reconst=0.2,1.10,2.2,3.8,6.10,7.1 \
    file=${OUTFILE2}

# v39.00.01 ADD END

#
#--- サマリー処理
#     設備卸契約情報(継続利用契約料金)
#
# v39.00.01 MOD START
#-- 【出力情報】
#--   0.卸先事業者コード
#--   1.サービスコード
#--   2.インセンティブ計算区分枝番
#--   3.抽出件数
#bsortex -sort key="0.2asc,2.2asc,5.3asc" -record recform=txtcsv \
#-input file=${MID_DIR_AC}/ACIFM315001.csv reclen=100 include="4.8asc.ge.'${OPEDATE_STADAY}'" -summary field="6.10ascud" \
#-output file=${MID_DIR_AC}/ACIFM319001.csv reconst="0.2,2.2,5.3,6.10" 
#bsortex -sort key=0.2asca,2.2asca,7.1asca \
#    -record recform=txtcsv -summary field=4.10ascd first \
#    -input reclen=100 file=${OUTFILE2} \
#    -output reconst=0.2,2.2,7.1,4.10 \
#    file=${OUTFILE}
bsortex -sort key=0.2asca,2.2asca,5.5asca \
    -record recform=txtcsv -summary field=4.10ascd first \
    -input reclen=100 file=${OUTFILE2} \
    -output reconst=0.2,2.2,5.5,4.10 \
    file=${OUTFILE}
# v39.00.01 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

# v39.00.01 ADD START
#
#--- 不要ファイルの削除を行う
#
	rm -f ${ORSINV_JSK_KNRI_CP}
	rm -f ${ULDFILE_CH0921_WK}
	rm -f ${ORSINV_JSK_KNRI_KEIZOKU_MSKM}
	rm -f ${MATCHING_FILE1}
	rm -f ${MATCHING_FILE2}
# v39.00.01 ADD END

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

exit ${G_RTN_NORMAL}
