#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：前受金取消再計算トリガー作成
#
# 機能          ：継続計算開始日に前受金相殺依頼情報バックアップの結果をクリアする。
#                 前日起動の前受金相殺依頼情報バックアップの結果と、当日依頼分のファイルを以下のキーにてマッチングし、当日依頼分に存在しない請求契約番号をファイルに出力する。
#
#マッチングキー：請求契約番号
#
# コマンド形式  ：EO3012040J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v8.00         2014/06/12    FJ) 小掠     【OM-2014-0001815】新規作成
#
##############################################################

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

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

#
#---業務で必要な変数定義
#
#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#---イベントコード　継続計算開始日
EVENT_CD_CONTYMD="71"

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

#- 入力ファイル1：前受金相殺依頼情報（前日分）
IN_FILE1=${MID_DIR_AC}/ACIFI009004.csv
IN_FILE1_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI009004_WK1.csv

#- 入力ファイル2：前受金相殺依頼情報（当日分）
IN_FILE2=${MID_DIR_AC}/ACIFI009002.csv
IN_FILE2_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI009002_WK1.csv

#- 出力ファイル：前受金取消対象請求契約番号
OUT_FILE=${MID_DIR_AC}/ACIFM050033.csv
OUT_FILE_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFM050033_WK1.csv

#- マッチング定義ファイル
DEF_FILE_AC_CM_0094=${G_TOOLSH}/util/def/AC_CM_0094.def
DEF_FILE_AC_CM_0094_WK1=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0094_WK1.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
}

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

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

#- 請求年月取得（料金計算日基準）
EVENT_CD="03"
. EO3SEIKYYM.sh ${EVENT_CD} ${RSLT_OPEDATE} ${JOBNAME}
#- 継続計算開始日取得
. EO3EVENTYMD.sh ${EVENT_CD_CONTYMD} ${SEIKY_YM} ${JOBNAME}
CONTYMD=${EVENT_YMD}

#
#--- バッチ運用日が継続計算開始日なら
#    前受金相殺依頼情報（前日分）をクリアする
#
if [ ${RSLT_OPEDATE} -eq ${CONTYMD} ]
then
    #
    #---ファイルのクリア
    #
    cat /dev/null > ${IN_FILE1}
    
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
        echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi
fi

#--- 入力ファイル1　CRLF → LF
bsortex -copy \
  -record recform=txtcsv \
  -input reclen=100 file=${IN_FILE1} \
  -output file=${IN_FILE1_WK1} linedlmt=lf

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

#--- 入力ファイル2 改行コード CRLF → LF
bsortex -copy \
  -record recform=txtcsv \
  -input reclen=100 file=${IN_FILE2} \
  -output file=${IN_FILE2_WK1} linedlmt=lf

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

#---------------------------------------------------------------------
#--- 前受金相殺依頼情報（前日分）と前受金相殺依頼情報（当日分）のマッチング
#    請求契約番号でマッチング
#---------------------------------------------------------------------
#- マッチング定義にパラメータをセット
cp -f ${DEF_FILE_AC_CM_0094}                ${DEF_FILE_AC_CM_0094_WK1}
sed -i -e "s%:ACIFI009004%${IN_FILE1_WK1}%" ${DEF_FILE_AC_CM_0094_WK1} 
sed -i -e "s%:ACIFI009002%${IN_FILE2_WK1}%" ${DEF_FILE_AC_CM_0094_WK1} 

#- マッチング実行
MATCHING ${DEF_FILE_AC_CM_0094_WK1} ${OUT_FILE_WK1}

#--- マッチング結果、当日分にない請求契約のみを出力
#    改行コード LF → CRLF
bsortex -copy \
  -record recform=txtcsv \
  -input reclen=100 file=${OUT_FILE_WK1} \
  -output file=${OUT_FILE} case="1.10asc.lt.'0'" reconst=0.10 \
    linedlmt=crlf

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

#--- ワークファイルを削除する
if [ $WK_RM = "true" ]
then
    rm -f ${IN_FILE1_WK1}
    rm -f ${IN_FILE2_WK1}
    rm -f ${OUT_FILE_WK1}
    rm -f ${DEF_FILE_AC_CM_0094_WK1}
fi

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

exit ${G_RTN_NORMAL}
