#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：請求書発行手数料抑止情報作成
#
# 機能          ：1.請求書発行手数料抑止情報作成
#
#(１)
#請求書印刷情報（インフォメーション設定）を元に、請求書発行手数料抑止になっている請求先情報を抽出し、抑止情報（請求書発行手数料）を作成する。
#
#
# コマンド形式  ：EO60301N0J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# 5.00           2013/07/04   FJ) 小柴    【IT1-2013-0001453】入力ファイルの変更
# 5.01           2013/11/15   FJ) 柴田    【OM-2013-0004214】 Javaを廃止し、アンロードとマッチングで処理をするように変更。
# v24.00         2015/12/07   FJ）古田    【ANK-2691-00-00】ソート修正（請求書発行手数料課金判定（課金対象サービス）（EO3010440J0.sh）のマッチング不具合）

##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#---ワークファイル削除モード
WK_RM=true
#WK_RM=false

#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''


#---手修正あり
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=,"
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


#--- 入力ファイル
INFILE_CHIFM072001=${MID_DIR_CH}/CHIFM072001.csv

#--- 出力ファイル
CHIFM072001_WRK=${MID_DIR_CH}/CHIFM072001_WRK.csv
SEIKY_YOKSI_WRK=${MID_DIR_CH}/${JOBNAME}_KK_T_SEIKY_YOKSI_WRK.csv
MATCHING_WRK=${MID_DIR_CH}/${JOBNAME}_MATCHING_WRK.csv
OUTFILE=${MID_DIR_CH}/CHIFM065004.csv

# v24.00 ANK-2691-00-00 ADD STA
CHIFM065004_SORT_WRK=${MID_DIR_CH}/CHIFM065004_SORT_WRK.csv
# v24.00 ANK-2691-00-00 ADD END

#--- アンロード用ファイル
SQLFILE_KK0541_03=${SQL_DIR}/CH_U_KK0541_03.sql

#--- マッチング用ファイル
CH_CM_0108_DEF=${G_TOOLSH}/util/def/CH_CM_0108.def
CH_CM_0108_DEF_WK=${G_TOOLSH}/util/def/CH_CM_0108_DEF_WK_${JOBNAME}.def


#-------------------------------------------------------------
#--- サブルーチン（UNLOAD）
#-------------------------------------------------------------
UNLOAD(){

#unload
sh ${G_TOOLSH}/EOKULD03.sh $1 $2

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


#
#１．-入力ファイルの改行コードをunix (LF)に変換する
#
(
tr -d "\r" < ${INFILE_CHIFM072001} > ${CHIFM072001_WRK}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " tr Error($SVC ${INFILE_CHIFM072001}:rc=$rc) "
    echo $JOBNAME " tr Error($SVC ${INFILE_CHIFM072001}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
) &
pid_CHIFM072001_WRK=$!


#
#２．請求抑止アンロード
#
(
UNLOAD ${SQLFILE_KK0541_03} ${SEIKY_YOKSI_WRK}
) &
pid_SEIKY_YOKSI_WRK=$!


#
#上記１．と２．が終わるまで待つ
#
wait ${pid_CHIFM072001_WRK}
rc_CHIFM072001_WRK=$?

wait ${pid_SEIKY_YOKSI_WRK}
rc_SEIKY_YOKSI_WRK=$?

#- エラー処理
if [ ${rc_CHIFM072001_WRK} -ne 0 ] || [ ${rc_SEIKY_YOKSI_WRK} -ne 0 ]
then
    #- エラーメッセージ出力
    if [ ${rc_CHIFM072001_WRK} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD ERROR(CHIFM072001_WRK:rc=${rc_CHIFM072001_WRK}) "
        echo $JOBNAME "UNLOAD ERROR(CHIFM072001_WRK:rc=${rc_CHIFM072001_WRK}) "
    fi
    if [ ${rc_SEIKY_YOKSI_WRK} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD ERROR(UNLOAD_KK0541_03:rc=${rc_SEIKY_YOKSI_WRK}) "
        echo $JOBNAME "UNLOAD ERROR(UNLOAD_KK0541_03:rc=${rc_SEIKY_YOKSI_WRK}) "
    fi
    #- 異常終了
    exit ${G_RTN_ERROR}
fi


#
#３．上記１．の出力ファイルと２．の出力ファイルをマッチング
#
# defバインド置き換え
cp -f ${CH_CM_0108_DEF} ${CH_CM_0108_DEF_WK}
SED "s%:INF1%${CHIFM072001_WRK}%g"        ${CH_CM_0108_DEF_WK}
SED "s%:INF2%${SEIKY_YOKSI_WRK}%g"        ${CH_CM_0108_DEF_WK}

# matching
(export ZTLOUTFILE=${MATCHING_WRK}
${G_TOOLSH}/util/bin/ZTLMAT01 ${CH_CM_0108_DEF_WK})
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching error(matching:rc=$rc) "
      echo $JOBNAME " matching error(matching:rc=$rc) "
      exit ${G_RTN_ERROR}
fi


#
#４．上記３．の出力ファイルを編集
#
bsortex \
  -copy \
  -record recform=txtcsv \
  -input  reclen=30 \
          file=${MATCHING_WRK} \
  -output file=${OUTFILE} \
          reconst="0.10,1.6,'06'.2asc" \
          linedlmt=crlf 


#
#---ファイルが存在しない場合作成
#
touch ${MID_DIR_CH}/CHIFM065004.csv
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " TOUCH Error($SVC touch:rc=$rc) "
    echo $JOBNAME " TOUCH Error($SVC touch:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# v24.00 ANK-2691-00-00 ADD STA
# 請求契約番号の昇順に並び替え
bsort -s -Tflt -t, -z30 -0.10asca -o ${CHIFM065004_SORT_WRK} ${OUTFILE}
# v24.00 ANK-2691-00-00 ADD END

#
#---コピーを行う　※上書き可
#
# v24.00 ANK-2691-00-00 MOD STA
#cp -p -f ${MID_DIR_CH}/CHIFM065004.csv ${SEND_DIR}/ACIFI011001.csv
cp -p -f ${CHIFM065004_SORT_WRK} ${SEND_DIR}/ACIFI011001.csv
# v24.00 ANK-2691-00-00 MOD END

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " COPY Error($SVC copy:rc=$rc) "
    echo $JOBNAME " COPY Error($SVC copy:rc=$rc) "
    exit ${G_RTN_ERROR}
fi



#
#- 一時ファイル削除
#
if [ ${WK_RM} = "true" ] ;then 
    rm -f ${CHIFM072001_WRK}
    rm -f ${SEIKY_YOKSI_WRK}
    rm -f ${MATCHING_WRK}
    rm -f ${CH_CM_0108_DEF_WK}
# v24.00 ANK-2691-00-00 ADD STA
    rm -f ${CHIFM065004_SORT_WRK}
# v24.00 ANK-2691-00-00 ADD END
fi ;



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

exit $exit_rc
