#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：請求内訳情報（未納分）ソート
#
# 機能          ：次処理「合算情報付加」にてマッチングを行う為、請求内訳情報（未納分）のソートを行う。（キー：請求契約番号）
#
# コマンド形式  ：EO6030160J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
#
# 37.00.00        2018/05/10  FJ)大崎     【IT2-2018-0000036】請求契約インターフェイス情報を参照しeo光設備卸契約者を除外する。
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
# IT2-2018-0000036 ADD START
#--- 入力ファイル
# 請求内訳情報（未納分）
INFILE1=${MID_DIR_CH}/CHIFM050001.csv
# 請求契約インターフェイス
INFILE2=${SEND_DIR}/CHIFI001001.csv

#--- マッチングツール定義ファイル
# マッチングツール定義ファイル(請求内訳情報（未納分）-請求契約インターフェイス)
MATCHDEF_0191=${G_TOOLSH}/util/def/CH_CM_0191.def

#--- 一時ファイル
INFILE1_WK=${MID_DIR_CH}/CHIFM050001_${JOBNAME}.csv
INFILE2_WK=${MID_DIR_CH}/CHIFI001001_${JOBNAME}.csv
# 請求内訳情報（未納分）_マッチング後
TEMPFILE1=${MID_DIR_CH}/CHIFM050001_MATCH.csv

#--- 出力ファイル
# 請求内訳情報（未納分）ソート
OUTFILE1=${MID_DIR_CH}/CHIFM050002.csv

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

#
#--- マッチング処理
#      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}
}

#
#--- 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}
}
# IT2-2018-0000036 ADD END
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#
#---パラメタ定義
#

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO6030160J0,"
P4="IND1=,"
P5="INF1=,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=,"
P9="OTF1=,"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE="
PARA="$P1$P2$P3$P4$P5$P6$P7$P8$P9$P10$P11$P12$P13$P14$P15$P16$P17$P18"

sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME

# IT2-2018-0000036 DEL START
##
##---ＳＯＲＴ
##
#bsort -su -z200 -0.99asca -Tflt -t, -o ${MID_DIR_CH}/CHIFM050002.csv ${MID_DIR_CH}/CHIFM050001.csv 
#
#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
# IT2-2018-0000036 DEL END

# IT2-2018-0000036 ADD START
# 入力ファイルの改行コード変換(CRLF→LF)
nkf -Lu <  ${INFILE1} > ${INFILE1_WK}
nkf -Lu <  ${INFILE2} > ${INFILE2_WK}
# 入力ファイルの文字コード変換(SJIS→UTF8)
nkf -x -w80 --overwrite ${INFILE1_WK}
nkf -x -w80 --overwrite ${INFILE2_WK}

#--- マッチング処理
export INFILE1_WK
export INFILE2_WK
EXEC_MATCHING ${TEMPFILE1} ${MATCHDEF_0191}

#
#--- 請求内訳情報（未納分）ソート
#
# 抽出条件：卸先事業者コード = ""（空文字）
# マージ条件：請求契約番号
bsortex -sort key=0.10asc -record recform=txtcsv \
        -input file=${TEMPFILE1} reclen=166 \
         include="16.2asc.lt.' '" \
         |    bsortex -merge key=0.10asc  -record recform=txtcsv \
                      -input reclen=166 \
                      -summary suppress first \
                      -output reconst="0.10,1.8,2.10,3.14,4.10,5.2,6.3,7.12,8.11,9.8,10.8,11.10,12.6,13.12,14.12,15.30" \
                              file=${OUTFILE1} linedlmt=crlf

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

# 入力ファイルの文字コード変換(UTF8→SJIS)
nkf -x -s --overwrite ${OUTFILE1}

# 一時ファイルを削除する
rm -f ${INFILE1_WK}
rm -f ${INFILE2_WK}
rm -f ${TEMPFILE1}
# IT2-2018-0000036 ADD END

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

exit ${G_RTN_NORMAL}
