#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：料金再調整対象抽出
#
# 機能          ：当日契約異動により再計算された請求内訳情報を料金Sより受取り、該当請求先に料金調整されたか
#一時金を参照し確認する。
#一時金に料金調整の実績が格納されている場合、料金再調整対象としてデータ抽出し、料金再調整
#対象データを調整差額の料金で作成する。
#
#
# コマンド形式  ：EO61Z0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.01.01        2013/04/08  FJ) 狭間     【ST4-2013-0000286】性能改善の為、アンロード並列化及び処理見直しと水平展開
# v5.00           2013/08/09  FJ) 吉田     【IT1-2013-0001571】ログ出力不具合対応
# v5.01           2013/08/31  FJ) 狭間     【OM-2013-0001137】料金再調整対象抽出のソートキー変更＆多重化＆料金訂正区分の修正
# v8.00           2013/12/23  FJ) 後藤     【ANK-1794-00-00】L2-MVNO対応（請求書電話番号表示（LC含む））＿項目追加
# v8.01           2014/02/03  FJ) 伊藤     【ANK-1794-00-00】上記本格対応
# v8.02           2014/02/28  FJ) 伊藤     【IT2-2014-0000145】請求内訳抽出、マッチング処理戻し
# v8.03           2014/03/03  FJ) 小掠     【OM-2014-0000574】入力ファイルをCHIFM005001からCHIFM002001に変更。一時金(CHIFM180001)の請求処理年月での絞込追加。
# v9.00           2014/04/11  FJ) 小野     【OM-2014-0001471】出力ファイルCHIFM103(料金再調整対象)のソート順を1.一時金更新年月日時分秒、2.請求契約番号、3.一時金更新ユーザーＩＤに変更。
# v44.00          2019/06/04  FJ) 大崎     【ANK-3514-00-00】マンションオーナーに対する料金計算日前の料金調整不具合対応（OM-2017-0000033）
##############################################################

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

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

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

#
#---ＪＯＢ名
#
JOBNAME=`basename $0 | sed -e "s/\.sh//g"`
[ $# -eq 2 ] &&JOBNAME=${JOBNAME}"_$2" ;

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

#
#---OPD
#
OPD=$1

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

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

#- 請求年月取得（請求処理日基準）
EVENT_CD="04"
. EO3SEIKYYM.sh ${EVENT_CD} ${RSLT_OPEDATE} ${JOBNAME}
TOGETSU=${SEIKY_YM}

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

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

#---ワークファイル
INFILE=${MID_DIR_CH}/CHIFM180001.csv
INFILE_WK=${MID_DIR_CH}/CHIFM180001_WK.csv
TMP_FILE_01=${MID_DIR_CH}/${JOBNAME}_WK_1 ;
touch ${TMP_FILE_01} ;

#
#--- サブルーチン（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
}
#
#--- サブルーチン（bsort）
#
BSORT(){
	bsort -s -z$1 -Tcsv -f -$2 -o $3 $4
	rc=$?
	if [ $rc -ne 0 ]
	then
	      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " BSORT error($1 $2 $3 $4:rc=$rc) "
	      echo $JOBNAME " BSORT error($1 $2 $3 $4:rc=$rc) "
	      exit ${G_RTN_ERROR}
	fi
}
#
#--- サブルーチン（マッチング）
#
MATCHING(){
	export ZTLOUTFILE=$2
	${G_TOOLSH}/util/bin/ZTLMAT01 $1
	rc=$?
	if [ $rc -ne 0 ]
	then
	      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " ZTLMAT01 error($1 $2:rc=$rc) "
	      echo $JOBNAME " ZTLMAT01 error($1 $2:rc=$rc) "
	      exit ${G_RTN_ERROR}
	fi
}

######################################################################
#
#--- 請求内訳情報をマッチング用にソートと請求年月、請求契約番号でグルーピングする。
#--- 出力ファイル:${MID_DIR_CH}/${JOBNAME}_CHIFM230001_BSORT.csv
#
######################################################################
bsortex \
    -sort key="1.6asca,0.10asca" \
    -record recform=txtcsv \
    -option fifo \
    -input reclen=160 \
           file=${MID_DIR_CH}/CHIFM230001.csv \
    -output reconst="0.10,'${TOGETSU}'.6asc,'              '.14asc" \
|bsortex \
    -merge key="1.6asca,0.10asca" \
    -record recform=txtcsv \
    -input reclen=50 \
    -summary suppress first \
    -output linedlmt=lf file=${MID_DIR_CH}/${JOBNAME}_CHIFM230001_BSORT.csv
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(${MID_DIR_CH}/${JOBNAME}_CHIFM230001_BSORT.csv:rc=$rc) "
      echo $JOBNAME " bsortex error(${MID_DIR_CH}/${JOBNAME}_CHIFM230001_BSORT.csv:rc=$rc) "
      exit ${G_RTN_ERROR}
fi

######################################################################
#
#--- 一時金(CHIFM180001)の請求年月を請求処理年月で絞り込む
#
######################################################################
bsortex \
    -copy \
    -input reclen=200 file=${INFILE} \
    -record recform=txtcsv \
    -output include="1.6asc.eq.'${TOGETSU}'" file=${INFILE_WK}

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

######################################################################
#
#--- 請求内訳情報と一時金をマッチングする。
#--- 出力ファイル:${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_WK_1.csv
#
######################################################################
DEFFILE_CH0040=${G_TOOLSH}/util/def/CH_CM_0040.def
DEFFILE_CH0040_WK=${G_TOOLSH}/util/def/${JOBNAME}_CH_CM_0040_WK_1.def
cp -f ${DEFFILE_CH0040} ${DEFFILE_CH0040_WK}
SED "s%:AC_T_ICJKN%${INFILE_WK}%" ${DEFFILE_CH0040_WK}
SED "s%:SEIKY_CAN%${MID_DIR_CH}/${JOBNAME}_CHIFM230001_BSORT.csv%"    ${DEFFILE_CH0040_WK}
MATCHING ${DEFFILE_CH0040_WK} ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_WK_1.csv
######################################################################
#
#--- 対処区分の設定
#--- 出力ファイル:${MID_DIR_CH}/CHIFM103001.csv
#
#対象料金グループコード、対象料金コースコード、対象料金サービスコード、対象料金項目コードが空白なら
#  →'1'：追加
#料金グループコード、料金コースコード、料金サービスコード、料金項目コードが空白なら
#  →'3'：削除
#上記以外なら
#  →'2'：変更
#
######################################################################
touch ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO1_WK_1.csv ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO2_WK_1.csv ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO3_WK_1.csv ;
#v44.00.00 ANK-3514-00-00 MOD START
#bsortex \
#    -copy \
#    -input reclen=200 file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_WK_1.csv \
#    -record recform=txtcsv \
#    -output file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO1_WK_1.csv case="8.2asc.eq.'  '.and.9.3asc.eq.'   '.and.10.12asc.eq.'            '.and.11.11asc.eq.'           '" \
#            reconst="0.10,1.6,2.14,3.10,4.2,5.3,6.12,7.11,12.12,13.10,14.17,15.20,16.2,'1'.1asc,17.30" \
#    -output file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO2_WK_1.csv case="4.2asc.eq.'  '.and.5.3asc.eq.'   '.and.6.12asc.eq.'            '.and.7.11asc.eq.'           '" \
#            reconst="0.10,1.6,2.14,3.10,8.2,9.3,10.12,11.11,12.12,13.10,14.17,15.20,16.2,'3'.1asc,17.30" \
#    -output file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO3_WK_1.csv case=other \
#            reconst="0.10,1.6,2.14,3.10,8.2,9.3,10.12,11.11,12.12,13.10,14.17,15.20,16.2,'2'.1asc,17.30"
bsortex \
    -copy \
    -input reclen=200 file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_WK_1.csv \
    -record recform=txtcsv \
    -output file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO1_WK_1.csv case="8.2asc.eq.'  '.and.9.3asc.eq.'   '.and.10.12asc.eq.'            '.and.11.11asc.eq.'           '" \
            reconst="0.10,1.6,2.14,3.10,4.2,5.3,6.12,7.11,12.12,13.10,14.17,15.20,16.2,'1'.1asc,17.30,18.10" \
    -output file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO2_WK_1.csv case="4.2asc.eq.'  '.and.5.3asc.eq.'   '.and.6.12asc.eq.'            '.and.7.11asc.eq.'           '" \
            reconst="0.10,1.6,2.14,3.10,8.2,9.3,10.12,11.11,12.12,13.10,14.17,15.20,16.2,'3'.1asc,17.30,18.10" \
    -output file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO3_WK_1.csv case=other \
            reconst="0.10,1.6,2.14,3.10,8.2,9.3,10.12,11.11,12.12,13.10,14.17,15.20,16.2,'2'.1asc,17.30,18.10"
#v44.00.00 ANK-3514-00-00 MOD END
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(TAISYO KBN:rc=$rc) "
      echo $JOBNAME " bsortex error(TAISYO KBN:rc=$rc) "
      exit ${G_RTN_ERROR}
fi

#-一時金更新年月日時分秒（昇順）、請求契約番号（昇順）、一時金更新ユーザーＩＤ（昇順）でソートし、改行コードをCRLFにする
bsortex \
    -sort key="10.17asca,0.10asca,9.10asca" \
    -record recform=txtcsv \
    -input reclen=200 file=${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO1_WK_1.csv,${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO2_WK_1.csv,${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO3_WK_1.csv \
    -output file=${TMP_FILE_01} linedlmt=crlf
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(-sort:rc=$rc) "
      echo $JOBNAME " bsortex error(-sort:rc=$rc) "
      exit ${G_RTN_ERROR}
fi
#-１０多重用に分割する
#請求契約番号の末尾で判断する為に固定長として読み込み10byte目を判定する
bsortex \
    -copy \
    -record recform=txtfix \
    -input reclen=160 file=${TMP_FILE_01} \
    -output file=${MID_DIR_CH}/CHIFM103001_0.csv case="9.1asc.eq.'0'" \
    -output file=${MID_DIR_CH}/CHIFM103001_1.csv case="9.1asc.eq.'1'" \
    -output file=${MID_DIR_CH}/CHIFM103001_2.csv case="9.1asc.eq.'2'" \
    -output file=${MID_DIR_CH}/CHIFM103001_3.csv case="9.1asc.eq.'3'" \
    -output file=${MID_DIR_CH}/CHIFM103001_4.csv case="9.1asc.eq.'4'" \
    -output file=${MID_DIR_CH}/CHIFM103001_5.csv case="9.1asc.eq.'5'" \
    -output file=${MID_DIR_CH}/CHIFM103001_6.csv case="9.1asc.eq.'6'" \
    -output file=${MID_DIR_CH}/CHIFM103001_7.csv case="9.1asc.eq.'7'" \
    -output file=${MID_DIR_CH}/CHIFM103001_8.csv case="9.1asc.eq.'8'" \
    -output file=${MID_DIR_CH}/CHIFM103001_9.csv case="9.1asc.eq.'9'"
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex error(-copy:rc=$rc) "
      echo $JOBNAME " bsortex error(-copy:rc=$rc) "
      exit ${G_RTN_ERROR}
fi
######################################################################
#
#--- ワークファイル削除
#
######################################################################
if [ ${WK_RM} = "true" ]
then
    rm -f ${INFILE_WK} ;
    rm -f ${TMP_FILE_01} ;
    rm -f ${MID_DIR_CH}/${JOBNAME}_CHIFI005001_BSORT.csv
    rm -f ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_WK_1.csv
    rm -f ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO1_WK_1.csv
    rm -f ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO2_WK_1.csv
    rm -f ${MID_DIR_CH}/${JOBNAME}_CH_CM_0040_TAISYO3_WK_1.csv
    rm -f ${DEFFILE_CH0040_WK}
fi
#
#--- ジョブの終了メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit ${G_RTN_NORMAL}
