#!/bin/bash
########################################################################
#
# システム名    ：eo顧客基幹システム
#
# サブシステム名：共通制御
#
# シェル名      ： mineo／メルアド／ｅｏ電気契約者抽出
#
# 機能          ： 共通アンロードのサービス契約と課金先から、mineo／メルアド／ｅｏ電気の契約者と
#                  それ以外の契約を抽出する。
#
# コマンド形式  ：EO6260260J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更№
# v56.00.00       2021/11/01  FJ)吉田     【ANK-4131-00-00】窓口払い手数料の顧客負担方式導入　STEP4
########################################################################

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

##############################################################
#
#--- 共通サブルーチン
#
##############################################################
#
#--- マッチング処理
#      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
}

#
#--- bsortexコマンド実行時のエラー処理
#      p1：bsortexコマンドの終了コード
#      p2：bsortexコマンドの入力ファイル
BSORT_ERROR()
{
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(input file=$2:rc=$1) "
    echo $JOBNAME " bsortex error(input file=$2:rc=$1) "
    exit ${G_RTN_ERROR}
}

####################################################
#--------- ファイル定義 ---------#
####################################################

#-- 入力ファイル
# サービス契約アンロード(開始後)(カレント)
INFILE_SVC_KEI=${MID_DIR_CC}/CCIFM020002.csv
# 課金先アンロード(開始後)
INFILE_KAKINS=${MID_DIR_CC}/CCIFM024001.csv

#--- 一時ファイル
# サービス契約
INFILE1=${LOC_DIR_AC}/KK_T_SVC_KEI_${JOBNAME}_TG.csv
# 課金先情報
INFILE2=${LOC_DIR_AC}/KK_T_KAKINS_${JOBNAME}_TG.csv

TMPFILE_MATCH_01=${LOC_DIR_AC}/MATCH_01_$JOBNAME.csv

TMPFILE_OUT1=${LOC_DIR_AC}/ACIFM334013_BF_MARGE.csv
TMPFILE_OUT2=${LOC_DIR_AC}/ACIFM334014_BF_MARGE.csv

#-- 出力ファイル
# mineo／メルアド／ｅｏ電気契約者データ
OUTFILE1=${MID_DIR_AC}/ACIFM334013.csv
# mineo／メルアド／ｅｏ電気契約者以外データ
OUTFILE2=${MID_DIR_AC}/ACIFM334014.csv

#-- マッチングツール定義ファイル
MATCHDEFFILE1=${G_TOOLSH}/util/def/AC_CM_0191.def

#
#---ワークファイル削除モード
#
WK_RM=false


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

#-------------------------------------------------------------
#---請求年月初日(GUN_STRDAY)
#-------------------------------------------------------------
#--- イベントコード（利用開始日）
EVENT_CD_USE_STAYMD="01"
#--- イベントコード（利用終了日）
EVENT_CD_USE_ENDYMD="02"

#- 請求年月取得（請求処理日）
EVENT_CD="04"
. EO3SEIKYYM.sh ${EVENT_CD} ${RSLT_OPEDATE} ${JOBNAME}
TOGETSU=${SEIKY_YM}

#- 月初日取得（請求処理日）
. EO3EVENTYMD.sh ${EVENT_CD_USE_STAYMD} ${TOGETSU} ${JOBNAME}
GUN_STRDAY=${EVENT_YMD}

#- 月末日取得（請求処理日）
. EO3EVENTYMD.sh ${EVENT_CD_USE_ENDYMD} ${TOGETSU} ${JOBNAME}
GUN_ENDDAY=${EVENT_YMD}


#
#--- サービス契約情報契約抽出
#
#サービス契約．サービス開始年月日	≦		料金計算月末日
#サービス契約．解約起算年月日		＞		料金計算月初日
#サービス契約．サービス契約ステータス	≠	"920"：キャンセル済
bsortex \
   -copy -record recform=txtcsv \
   -input file=${INFILE_SVC_KEI} \
          reclen=${ULD2_REC_LEN_KK0081} \
          reconst="0.10,7.2" \
          include="(22.8asc.le.'${GUN_ENDDAY}'.and.22.8asc.ge.'0').and.(31.8asc.gt.'${GUN_STRDAY}'.or.31.8asc.lt.'0').and.(2.3asc.ne.'920')" \
   -output file=${INFILE1} 

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${INFILE_SVC_KEI}
fi


#
#--- 課金先情報契約抽出
#
#課金先．サービス契約番号		≠	null
#課金先．課金先適用開始年月日	≦	夜間バッチ運用年月日
#課金先．課金先適用終了年月日	＞	夜間バッチ運用年月日
bsortex \
   -copy -record recform=txtcsv \
   -input file=${INFILE_KAKINS} \
          reclen=${ULD2_REC_LEN_KK0321} \
          reconst="0.10,1.10" \
          include="(1.10asc.ge.' ').and.(8.8asc.le.'${RSLT_OPEDATE}').and.(9.8asc.gt.'${RSLT_OPEDATE}')" \
   -output file=${INFILE2} 

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${INFILE_KAKINS}
fi


#
#--- マッチング サービス契約番号でマッチングを行う
#
#ファイルレイアウト：
#    課金先．請求契約番号,サービス契約．サービス契約番号,サービス契約．料金グループコード
export INFILE1
export INFILE2
EXEC_MATCHING ${TMPFILE_MATCH_01} ${MATCHDEFFILE1}

#
#--- ファイル分割処理
#
bsortex \
   -copy -record recform=txtcsv \
   -input file=${TMPFILE_MATCH_01} \
          reclen=50 \
   -output file=${TMPFILE_OUT1} reconst="0.10" case="(2.2asc.eq.'51'.or.2.2asc.eq.'16'.or.2.2asc.eq.'17')" \
   -output file=${TMPFILE_OUT2} reconst="0.10" case=other

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${TMPFILE_MATCH_01}
fi

#--- 重複削除処理
bsortex \
   -sort key=0.10asc \
   -record recform=txtcsv \
   -input file=${TMPFILE_OUT1} \
          reclen=30 \
   -summary suppress first \
   -output file=${OUTFILE1}

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${TMPFILE_OUT1}
fi

bsortex \
   -sort key=0.10asc \
   -record recform=txtcsv \
   -input file=${TMPFILE_OUT2} \
          reclen=30 \
   -summary suppress first \
   -output file=${OUTFILE2}

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR ${rc} ${TMPFILE_OUT2}
fi

# 一時ファイル削除
if [ $WK_RM = "true" ]
then
    rm ${TMPFILE_SVC_KEI}
    rm ${TMPFILE_SVC_KEI_TG}
    rm ${TMPFILE_KAKINS}
    rm ${TMPFILE_KAKINS_TG}
    rm ${TMPFILE_MATCH_01}
    rm ${TMPFILE_OUT1}
    rm ${TMPFILE_OUT2}
fi

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

exit ${G_RTN_NORMAL}
