#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：ｅｏ電気課金先情報付加
#
# 機能          ：eo電気再送信付与地域契約情報と課金先情報（カレント）のマッチングを行い、請求契約番号を付加する。（キー：サービス契約番号）
#
# コマンド形式  ：EO6260200J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v54.00.00       2021/07/20  FJ)鈴木      【ANK-3992-00-00】eo電気の権利付与地域における請求書発行および窓口払い手数料判定の見直し
########################################################################

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

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

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

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

##############################################################
#
#--- 共通サブルーチン
#
##############################################################
#--- SED
##############################################################
SED(){
    sed -i -e $1 $2
    rc=$?
    if [ $rc -ne 0 ]
    then
          sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sed error($1 $2:rc=$rc) "
          echo $JOBNAME " sed error($1 $2:rc=$rc) "
          exit ${G_RTN_ERROR}
    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}
}

# eo電気再送信付与地域契約情報（データ） EO31Q0130J0.sh
ELEC_FILE=${MID_DIR_AC}/ACIFM349001.csv

# eo電気再送信付与地域契約情報（データ） EO31Q0130J0.sh (ソート）
ELEC_FILE_SORT=${MID_DIR_AC}/ACIFM349001_SORT.csv

# eo電気再送信付与地域契約情報（データ） EO31Q0130J0.sh (LFに変換）
ELEC_FILE_TMP=${MID_DIR_AC}/ACIFM349001_TMP.csv

# 課金先サービス契約情報 EO3490130J0.sh
KAKINS_FILE=${LOC_DIR_AC}/ACIFM332001_CUR_EO3490130J0.csv

# 課金先サービス契約情報 EO3490130J0.sh (ダブルクォート削除）
KAKINS_FILE_TMP=${LOC_DIR_AC}/ACIFM332001_CUR_TMP.csv

# 課金先アンマッチファイル
TMP_FILE=${MID_DIR_AC}/ACIFM334003_UNMATCH.csv



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

# マッチング結果ファイル
MATCH_FILE1=${MID_DIR_AC}/ACIFM334003_MATCH.csv

#マッチングツール定義 桁数
MATCHING_FILE_REC_LEN=60

# 出力ファイル
OUT_FILE=${MID_DIR_AC}/ACIFM334003.csv


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


#
# eo電気再送信付与地域契約情報（データ）
#--- ファイルの存在チェック
if [ ! -r $ELEC_FILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($ELEC_FILE) "
    echo $JOBNAME " File is nonexist($ELEC_FILE) "
    exit ${G_RTN_ERROR}
fi

#
#---ＳＯＲＴ
#

bsortex -sort key=0.10asc -record recform=txtcsv \
    -input reclen=60 file=${ELEC_FILE} \
    -output file=${ELEC_FILE_SORT}



##---ELEC_FILE_SORTの改行コード変換(CRLF⇒LF)
#
nkf -Lu -s ${ELEC_FILE_SORT} > ${ELEC_FILE_TMP}



#
# 課金先サービス契約情報
#
#--- ダブルクォーテーションを除去
#
# KAKINS_FILE
cat ${KAKINS_FILE} > ${KAKINS_FILE_TMP}
sed -i -e "s/\"//g" ${KAKINS_FILE_TMP}



#
# --- マッチング:eo電気再送信付与地域契約情報と課金先ソートをサービス契約番号で紐づけて、請求契約番号を連結する。
#
#
export ELEC_FILE_TMP
export KAKINS_FILE_TMP
#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''
EXEC_MATCHING ${MATCH_FILE1} ${MATCHDEFFILE1}


#
# --- DB不整合：請求契約番号が存在しないため、エラー
#

bsortex -sort key=0.10asc -record recform=txtcsv -input file=${MATCH_FILE1} include="1.10asc.lt.' '" reclen=1100 -output file=${TMP_FILE}


if [  -s $TMP_FILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($TMP_FILE) "
    echo $JOBNAME " File is nonexist($TMP_FILE) "
    exit ${G_RTN_ERROR}
fi

#
# --- 出力ファイル作成
#
bsortex -copy -record recform=txtcsv -input file=${MATCH_FILE1} reclen=1100 -output file=${OUT_FILE} reconst="1.10"


#
#--- 出力ファイルにダブルクォーテーションを付加
#
sed -i -e "s/,/\",\"/g" ${OUT_FILE}
sed -i -e "s/^/\"/" ${OUT_FILE}
sed -i -e "s/$/\"/" ${OUT_FILE}



# 一時ファイル削除

rm -f ${ELEC_FILE_SORT}
rm -f ${ELEC_FILE_TMP}
rm -f ${KAKINS_FILE_TMP}
rm -f ${MATCH_FILE1}
rm -f ${TMP_FILE}

# 


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

exit ${G_RTN_NORMAL}
