#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：回復契約更新運用年月日更新
#
# 機能          ：請求契約インターフェイス情報は、解約している場合もサービス提供中として連携されてくる場合がある。
#ただし、請求スキーマには請求契約配下契約状態判定で取得した請求契約配下サービス契約状態コードを反映しているため、請求．請求契約配下サービス契約状態コード＝"910"(解約済)・請求契約インターフェイス情報．請求契約配下サービス契約状態コード＝"100"(サービス提供中)の状態が発生する。その状態からサービス回復した場合、請求契約配下契約状態判定で取得した請求契約配下サービス契約状態コードと請求契約インターフェイス情報．請求契約配下サービス契約状態コードが同じとなり、請求契約配下契約状態反映での更新運用年月日設定が行われない。そのため、請求契約配下契約状態判定で取得した請求契約配下サービス契約状態コードと請求．請求契約配下サービス契約状態コードが異なる場合、請求スキーマに反映するために請求契約インターフェイス情報．更新運用年月日更新にバッチ運用日を設定する。
#請求契約インターフェイス情報(契約状態付与)．請求契約番号が当月請求アンロードファイルに存在した場合、請求契約配下サービス契約状態コード・請求契約配下サービス契約解約理由識別コードを比較し、いずれかが異なる場合、更新運用年月日にバッチ運用日を設定する。
#
# コマンド形式  ：EO6010540J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v5.00           2013/08/01  FJ) 狭間     【TG1-2013-0000731】新規作成
# v5.01           2013/08/12  FJ) 小柴     【TG1-2013-0000929】出力ファイルを編集し、別の出力ファイルを作成する処理を追加
#                                                              更新チェックで差異ありとして出力するファイルをワークではなく、個別のインターフェースファイルに変更
# v8.00           2014/04/02  FJ) 後藤     【OM-2014-0001324】bsortexのreconst桁数修正
# v20.00          2015/11/04  FJ)山裾      【ANK-2565-00-00】クレジットカード番号預かりサービス導入（Step3：預かり番号化）
# v20.01          2015/12/10  FJ) 山裾     【IT2-2015-0000040】BSORT中のコメント行を外出し
# v37.00.00       2013/12/16  FJ)酒井       ANK-3366-00-00
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

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

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

#- 請求年月取得（SEIKY_YM）
. EO3SEIKYYM.sh '04' ${RSLT_OPEDATE} ${JOBNAME}

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

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

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO6010540J0,"
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_CHIFI001007=${MID_DIR_CH}/CHIFI001007.csv
INFILE_CHIFI001007_WRK1=${MID_DIR_CH}/${JOBNAME}_CHIFI001007_WRK1.csv

#--- 入力ファイル（請求アンロードファイル）
INFILE_CHIFM186001=${MID_DIR_CH}/CHIFM186001.csv
INFILE_CHIFM186001_WRK1=${MID_DIR_CH}/${JOBNAME}_CHIFM186001_WRK1.csv

#--- 出力ファイル（請求契約インターフェース情報（回復契約反映済））
INFILE_CHIFI001005=${MID_DIR_CH}/CHIFI001005.csv
INFILE_CHIFI001005_WRK1=${MID_DIR_CH}/${JOBNAME}_CHIFI001005_WRK1.csv

#--- 出力ファイル（請求契約インターフェース情報（アンマッチ情報抽出））
OUTFILE_CHIFM048007=${MID_DIR_CH}/CHIFM048007.csv

#--- マッチング定義97（請求契約インターフェース情報、請求アンロードファイル）
DEFFILE_CM_0097=${G_TOOLSH}/util/def/CH_CM_0097.def
DEFFILE_CM_0097_WRK=${G_TOOLSH}/util/def/${JOBNAME}_CH_CM_0097_MATCHIG_WRK1.def

CSVFILE_CM_0097_WRK1=${MID_DIR_CH}/${JOBNAME}_CM_0097_MATCHING_WRK1.csv

#--- ワークファイル（チェック結果）
CSVFILE_CHK_OK_WRK1=${MID_DIR_CH}/${JOBNAME}_CHK_OK_WRK1.csv
CSVFILE_CHK_OK_WRK2=${MID_DIR_CH}/${JOBNAME}_CHK_OK_WRK2.csv
CSVFILE_CHK_NG=${MID_DIR_CH}/CHIFI001008.csv

#----------------------------------------------------------------------------------------------------
#--- 各ファイルの存在チェックを行う
#----------------------------------------------------------------------------------------------------
#--- 入力ファイル（CHIFI001007）
if [ ! -r ${INFILE_CHIFI001007} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${INFILE_CHIFI001007}) "
    echo $JOBNAME " File is nonexist(${INFILE_CHIFI001007}) "
    exit ${G_RTN_ERROR}
fi
#--- 入力ファイル（CHIFM186001）
if [ ! -r ${INFILE_CHIFM186001} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${INFILE_CHIFM186001}) "
    echo $JOBNAME " File is nonexist(${INFILE_CHIFM186001}) "
    exit ${G_RTN_ERROR}
fi
#--- マッチング定義97（CH_CM_0097）
if [ ! -r ${DEFFILE_CM_0097} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${DEFFILE_CM_0097}) "
    echo $JOBNAME " File is nonexist(${DEFFILE_CM_0097}) "
    exit ${G_RTN_ERROR}
fi

#----------------------------------------------------------------------------------------------------
#--- マッチング処理（請求契約インターフェース情報、請求アンロードファイル）
#----------------------------------------------------------------------------------------------------
#- 入力ファイルの改行コード変換（CR+LF→LF）
tr -d "\r" < ${INFILE_CHIFI001007} > ${INFILE_CHIFI001007_WRK1}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " tr Error(${INFILE_CHIFI001007} tr:rc=$rc) "
    echo $JOBNAME " tr Error(${INFILE_CHIFI001007} tr:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#- 請求アンロードファイルを請求年月で絞り込む
bsortex \
  -sort key="6.10asca" \
  -record recform=txtcsv \
  -input reclen=150 file=${INFILE_CHIFM186001} \
    include="2.6asc.eq.'${SEIKY_YM}'.and.9.1asc.eq.'0'" \
  -output file=${INFILE_CHIFM186001_WRK1}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sort Error(${INFILE_CHIFM186001_WRK1} sort:rc=$rc) "
    echo $JOBNAME " sort Error(${INFILE_CHIFM186001_WRK1} sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#- パラメータセット
#--- マッチング定義（請求契約インターフェース情報、請求アンロードファイル）
cp -f ${DEFFILE_CM_0097} ${DEFFILE_CM_0097_WRK}
sed -i -e "s%\:CHIFI001007%${INFILE_CHIFI001007_WRK1}%"  ${DEFFILE_CM_0097_WRK}
sed -i -e "s%\:CHIFM186001%${INFILE_CHIFM186001_WRK1}%"  ${DEFFILE_CM_0097_WRK}

# マッチング処理→入力ファイルへ
(export ZTLOUTFILE=${CSVFILE_CM_0097_WRK1}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_CM_0097_WRK})
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " マッチング処理 Error(${DEFFILE_CM_0097_WRK} ZTLOUTFILE:rc=$rc) "
    echo $JOBNAME " マッチング処理 Error(${DEFFILE_CM_0097_WRK} ZTLOUTFILE:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#----------------------------------------------------------------------------------------------------
#--- 更新チェック処理
#----------------------------------------------------------------------------------------------------
#- 請求契約インターフェース情報、請求アンロードファイルそれぞれの
#- 「請求契約配下サービス契約状態コード」と「請求契約配下サービス契約解約理由識別コード」を比較して
#- 結果ファイルに分ける。
#- １．マッチングなし  →CSVFILE_CHK_OK_WRK1
#- ２．比較結果同じ    →CSVFILE_CHK_OK_WRK2
#- ３．比較結果差異あり→CSVFILE_CHK_NG
#- この時に頭に付けた請求アンロードファイルの「請求契約配下サービス契約状態コード」と「請求契約配下サービス契約解約理由識別コード」
#- を除外する。
#- また、３．比較結果差異ありの場合は「更新運用年月日」をバッチ運用日に置き換える。
# 2015/12/10 IT2-2015-0000040 Del Start
#bsortex \
#  -copy \
#  -record recform=txtcsv \
#  -input reclen=3000 file=${CSVFILE_CM_0097_WRK1} \
#  -output file=${CSVFILE_CHK_OK_WRK1} case="0.3asc.lt.'0'" \
#    reconst="2.END" \
#  -output file=${CSVFILE_CHK_OK_WRK2} case="0.3asc.eq.3.3asc.and.1.2asc.eq.8.2asc" \
#    reconst="2.END" \
#  -output file=${CSVFILE_CHK_NG} case=other \
## 2015/11/04 ANK-2565-00-00 Mod Start
##    reconst="2.99,3.99,4.99,5.99,6.99,7.99,8.99,9.99,10.99,11.99,12.99,13.99,14.242,15.242,16.242,17.242,18.99,19.99,20.99,21.99,22.99,23.99,24.99,25.99,26.122,27.99,28.99,29.256,30.99,31.99,'${RSLT_OPEDATE}'.8asc,33.99,34.99,35.99,36.99,37.99,38.99,39.99,40.99,41.242,42.242,43.99,44.99,45.99,46.99,47.99,48.99,49.99,50.99,51.99,52.242,53.99,54.99"
#    reconst="2.99,3.99,4.99,5.99,6.99,7.99,8.99,9.99,10.99,11.99,12.99,13.99,14.242,15.242,16.242,17.242,18.99,19.99,20.99,21.99,22.99,23.99,24.99,25.99,26.122,27.99,28.99,29.256,30.99,31.99,'${RSLT_OPEDATE}'.8asc,33.99,34.99,35.99,36.99,37.99,38.99,39.99,40.99,41.242,42.242,43.99,44.99,45.99,46.99,47.99,48.99,49.99,50.99,51.99,52.242,53.99,54.99,55.99,56.99"
## 2015/11/04 ANK-2565-00-00 Del End
# v37.00.00 ANK-3366-00-00 MOD STA
## 2015/12/10 IT2-2015-0000040 Add Start
#bsortex \
#  -copy \
#  -record recform=txtcsv \
#  -input reclen=3000 file=${CSVFILE_CM_0097_WRK1} \
#  -output file=${CSVFILE_CHK_OK_WRK1} case="0.3asc.lt.'0'" \
#    reconst="2.END" \
#  -output file=${CSVFILE_CHK_OK_WRK2} case="0.3asc.eq.3.3asc.and.1.2asc.eq.8.2asc" \
#    reconst="2.END" \
#  -output file=${CSVFILE_CHK_NG} case=other \
#    reconst="2.99,3.99,4.99,5.99,6.99,7.99,8.99,9.99,10.99,11.99,12.99,13.99,14.242,15.242,16.242,17.242,18.99,19.99,20.99,21.99,22.99,23.99,24.99,25.99,26.122,27.99,28.99,29.256,30.99,31.99,'${RSLT_OPEDATE}'.8asc,33.99,34.99,35.99,36.99,37.99,38.99,39.99,40.99,41.242,42.242,43.99,44.99,45.99,46.99,47.99,48.99,49.99,50.99,51.99,52.242,53.99,54.99,55.99,56.99"
## 2015/12/10 IT2-2015-0000040 Add End
bsortex \
  -copy \
  -record recform=txtcsv \
  -input reclen=3000 file=${CSVFILE_CM_0097_WRK1} \
  -output file=${CSVFILE_CHK_OK_WRK1} case="0.3asc.lt.'0'" \
    reconst="2.END" \
  -output file=${CSVFILE_CHK_OK_WRK2} case="0.3asc.eq.3.3asc.and.1.2asc.eq.8.2asc" \
    reconst="2.END" \
  -output file=${CSVFILE_CHK_NG} case=other \
    reconst="2.99,3.99,4.99,5.99,6.99,7.99,8.99,9.99,10.99,11.99,12.99,13.99,14.242,15.242,16.242,17.242,18.99,19.99,20.99,21.99,22.99,23.99,24.99,25.99,26.122,27.99,28.99,29.256,30.99,31.99,'${RSLT_OPEDATE}'.8asc,33.99,34.99,35.99,36.99,37.99,38.99,39.99,40.99,41.242,42.242,43.99,44.99,45.99,46.99,47.99,48.99,49.99,50.99,51.99,52.242,53.99,54.99,55.99,56.99,57.99"
# v37.00.00 ANK-3366-00-00 MOD END
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sort Error(${CSVFILE_CHK_OK_WRK1} sort:rc=$rc) "
    echo $JOBNAME " sort Error(${CSVFILE_CHK_OK_WRK1} sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#- 再結合してSORT
cat ${CSVFILE_CHK_OK_WRK1} ${CSVFILE_CHK_OK_WRK2} ${CSVFILE_CHK_NG} > ${INFILE_CHIFI001005_WRK1}
bsortex \
  -sort key="0.10asca" \
  -record recform=txtcsv \
  -input reclen=3000 file=${INFILE_CHIFI001005_WRK1} \
  -output file=${INFILE_CHIFI001005} \
    linedlmt=crlf ;
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sort Error(${INFILE_CHIFI001005} sort:rc=$rc) "
    echo $JOBNAME " sort Error(${INFILE_CHIFI001005} sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#--- 出力ファイルをコピーして編集する（EO6010170J0で使用）
# v37.00.00 ANK-3366-00-00 MOD STA
## 2015/11/04 ANK-2565-00-00 Mod Start
##bsortex \
##  -sort key="0.10asca" \
##  -record recform=txtcsv \
##  -input reclen=3000 file=${INFILE_CHIFI001005} \
##  -output file=${OUTFILE_CHIFM048007} reconst="0.END,EMPTY,EMPTY" \
##    linedlmt=crlf ;
#bsortex \
#  -sort key="0.10asca" \
#  -record recform=txtcsv \
#  -input reclen=3000 file=${INFILE_CHIFI001005} \
#  -output file=${OUTFILE_CHIFM048007} reconst="0.99,1.99,2.99,3.99,4.99,5.99,6.99,7.99,8.99,9.99,10.99,11.99,12.242,13.242,14.242,15.242,16.99,17.99,18.99,19.99,20.99,21.99,22.99,23.99,24.122,25.99,26.99,27.256,28.99,29.99,30.99,31.99,32.99,33.99,34.99,35.99,36.99,37.99,38.99,39.242,40.242,41.99,42.99,43.99,44.99,45.99,46.99,47.99,48.99,49.90,50.242,51.99,52.99,EMPTY,EMPTY,53.99,54.99" \
#    linedlmt=crlf ;
## 2015/11/04 ANK-2565-00-00 Mod End
bsortex \
  -sort key="0.10asca" \
  -record recform=txtcsv \
  -input reclen=3000 file=${INFILE_CHIFI001005} \
  -output file=${OUTFILE_CHIFM048007} reconst="0.99,1.99,2.99,3.99,4.99,5.99,6.99,7.99,8.99,9.99,10.99,11.99,12.242,13.242,14.242,15.242,16.99,17.99,18.99,19.99,20.99,21.99,22.99,23.99,24.122,25.99,26.99,27.256,28.99,29.99,30.99,31.99,32.99,33.99,34.99,35.99,36.99,37.99,38.99,39.242,40.242,41.99,42.99,43.99,44.99,45.99,46.99,47.99,48.99,49.90,50.242,51.99,52.99,EMPTY,EMPTY,53.99,54.99,55.99" \
    linedlmt=crlf ;
# v37.00.00 ANK-3366-00-00 MOD END
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sort Error(${INFILE_CHIFI001005} sort:rc=$rc) "
    echo $JOBNAME " sort Error(${INFILE_CHIFI001005} sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#ワーク削除
if [ $WK_RM = "true" ]
then
    rm -f ${INFILE_CHIFI001007_WRK1}
    rm -f ${INFILE_CHIFM186001_WRK1}
    rm -f ${INFILE_CHIFI001005_WRK1}
    rm -f ${DEFFILE_CM_0097_WRK}
    rm -f ${CSVFILE_CM_0097_WRK1}
    rm -f ${CSVFILE_CHK_OK_WRK1}
    rm -f ${CSVFILE_CHK_OK_WRK2}
fi

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

exit ${G_RTN_NORMAL}
