#!/bin/sh
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：会計ＤＢ登録
#
# 機能          ：会計ＤＢ一括登録
#
#
# コマンド形式  ：EO30Q0570J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/05/21  FJ）山下     新規作成
# v4.01           2013/02/27  FJ）広野     【ST4-2013-0000098】冗長的なDB登録手順を変更
# v4.02           2013/05/27  FJ）黒木     【TAI-2013-0000027】オラクルユーザ変更等
# v5.00           2013/06/13  FJ) 早崎     【ST4-2013-0000495】スキーマ登録項目、登録運用年月日,更新運用年月日に運用年月日を設定
# v5.01           2013/06/20  FJ) 早崎     【ST4-2013-0000495】スキーマ登録項目、登録処理ID,更新処理IDにジョブIDを設定
# v15.00          2015/06/04  FJ）小島     【OM-2015-0001160】処理が異常終了した際もインデックスリビルド処理が実行されるよう修正
# v35.00.00       2017/10/12  FJ）寺園     【ANK-3243-00-00】社内利用回線の会計処理業務変更に伴う改修
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

# OM-2015-0001160 ADD START
#
#---リターンコード
#
RTN=${G_RTN_NORMAL}
# OM-2015-0001160 ADD END

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx

#---システム日時取得
. EOK010410J0.sh "1"
SYSDATE=${RSLT_SYSDATE}

LOG_FILE=${SQL_LOADER_LOG_DIR}/EO30Q0570J0_${SYSDATE}.log
BAD_FILE=${SQL_LOADER_BAD_DIR}/EO30Q0570J0_${SYSDATE}.bad

LOAD_SCHEMA=CH_T_KAIK

#ワークファイル
INPUT_FILE=${MID_DIR_AC}/ACIFM147106.csv

OUTFILE_WRK_01=${MID_DIR_AC}/ACIFM147106_${JOBNAME}_WK_01.csv
OUTFILE_WRK_02=${MID_DIR_AC}/ACIFM147106_${JOBNAME}_WK_02.csv

# v35.00.00 Add Start
IN_CHIFI001=${SEND_DIR}/CHIFI001001.csv
OUTFILE_WRK_03=${MID_DIR_AC}/ACIFM147106_${JOBNAME}_WK_03.csv
OUTFILE_WRK_04=${MID_DIR_AC}/ACIFM147106_${JOBNAME}_WK_04.csv
OUTFILE_WRK_05=${MID_DIR_AC}/ACIFM147106_${JOBNAME}_WK_05.csv
# v35.00.00 Add End

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

# v35.00.00 Add Start

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

#
#---ＳＯＲＴ
#会計情報を請求契約番号でソートする
#

bsortex -sort key="1.10asc" -record recform=txtcsv -input file=${INPUT_FILE} reclen=200 -output file=${OUTFILE_WRK_03}

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

#---マッチング定義
DEF_DIR=${G_TOOLSH}/util/def
DEF_CM0127=${DEF_DIR}/AC_CM_0127.def
##############################################################
#--- MATCHING
##############################################################
MATCHING(){
    export ZTLOUTFILE=$2
    ${G_TOOLSH}/util/bin/ZTLMAT01 $1
    rc=$?
    if [ $rc -ne 0 ]
    then
          sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching error(matching:$1=$rc) "
          echo $JOBNAME " matching error(matching:$1=$rc) "
          exit ${G_RTN_ERROR}
    fi
}

#
#--- ファイルマッチング処理
#会計情報と請求（社用分）を請求契約番号でマッチングし、社内使用識別フラグを付加する
#
export INPUTFILE1_MAST=${OUTFILE_WRK_03}
export INPUTFILE2_TRAN=${IN_CHIFI001}
MATCHING ${DEF_CM0127} ${OUTFILE_WRK_04}

#
#---ＳＯＲＴ
#会計情報から社用分を除外する

bsortex -copy -record recform=txtcsv -input file=${OUTFILE_WRK_04} reclen=200 include="0.1asc.ne.'1'" -output file=${OUTFILE_WRK_05}

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
# v35.00.00 Add End

#
#--- SQL*Loader情報定義
#
#入力ファイルの改行コード変換(CRLF→LF)
# v35.00.00 Mod Start
#nkf -Lu  < ${INPUT_FILE} > ${OUTFILE_WRK_01}
nkf -Lu  < ${OUTFILE_WRK_05} > ${OUTFILE_WRK_01}

#bsort -s -z200 -Tflt -t, -e0.END,\'${OPEDATE}\'.8asc,\'${OPEDATE}\'.8asc,\'${SVC}\'.11asc,\'${SVC}\'.11asc -o ${OUTFILE_WRK_02} ${OUTFILE_WRK_01} 
bsort -s -z200 -Tflt -t, -e1.END,\'${OPEDATE}\'.8asc,\'${OPEDATE}\'.8asc,\'${SVC}\'.11asc,\'${SVC}\'.11asc -o ${OUTFILE_WRK_02} ${OUTFILE_WRK_01} 
# v35.00.00 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

sqlldr ${ORACLEUSER}/${ORACLEPASS}@${SID_S},CONTROL=${SQL_LOADER_CTL_DIR}/CH_T_KAIK_01.ctl,DATA=${OUTFILE_WRK_02},LOG=${LOG_FILE},BAD=${BAD_FILE}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " LOAD Error($SVC load:rc=$rc) ログを確認してください。ログファイル：${LOG_FILE}、不良ファイル：${BAD_FILE} "
    echo $JOBNAME " LOAD Error($SVC load:rc=$rc) "
# OM-2015-0001160 MOD START
#    exit ${G_RTN_ERROR}
    RTN=${G_RTN_ERROR}
# OM-2015-0001160 MOD END
fi

#
#--- インデックスリビルド
#
sh ${G_TOOLSH}/EOKINDEXREBUILD.sh -t ${LOAD_SCHEMA} -m ${IDX_REBUILD_PARALLEL_CNT} -e
rbldrc=$?
if [ $rbldrc -ne 0 ]
then
    ERRMSG=" インデックスの再作成に失敗しました。ログを確認してください。($SVC rebuild:rbldrc=$rbldrc) "
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME ${ERRMSG}
    echo $JOBNAME ${ERRMSG}
# OM-2015-0001160 MOD START
#    exit ${G_RTN_ERROR}
    RTN=${G_RTN_ERROR}
# OM-2015-0001160 MOD END
fi

#
#--- ワークファイル削除
#
rm ${OUTFILE_WRK_01}
rm ${OUTFILE_WRK_02}
# v35.00.00 Add Start
rm ${OUTFILE_WRK_03}
rm ${OUTFILE_WRK_04}
rm ${OUTFILE_WRK_05}
# v35.00.00 Add End

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

# OM-2015-0001160 MOD START
#exit ${G_RTN_NORMAL}
exit ${RTN}
# OM-2015-0001160 MOD END
