#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：カード預りＩＤ採番対象抽出＿02
#
# 機能          ：ISPの移行対象クレジットカード番号を抽出する。
#
#<<(1)アンロード条件>>
#【クレジットカード】
#　・クレジットカード.クレジットカード番号預りID     = NULL
#　・クレジットカード.請求方法番号(クレジットカード) = 請求契約.請求方法番号(クレジットカード)
#
# コマンド形式  ：EO2F70220J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v20.00.00      2015/12/22   FJ)黒田      【ANK-2565-00-00】（新規作成）
# v20.00.01      2016/01/22   FJ)黒田      【ST-2016-0000009】対応
#
##############################################################

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

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

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

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

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

sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#=============================================================
# 出力ファイル
#=============================================================

# クリパ連携ファイル(送信)(仕向先算出前)
KKIFM678001=${MID_DIR_KK}/KKIFM678001.csv

#=============================================================

#--- アンロードファイル
SQLFILE=${SQL_DIR}/KK_U_KK0521_04.sql
IN_FILE_1=${MID_DIR_KK}/${JOBNAME}_UNLD.csv

#--- defファイル
MATCHING_DEF=${G_TOOLSH}/util/def/KK_CM_0568.def

#--- ワークファイル
DEF_FILE=${G_TOOLSH}/util/def/DEF.tmp.${JOBNAME}.def
IN_FILE_1_SORT=${MID_DIR_KK}/${JOBNAME}_UNLD_SORT.csv
IN_FILE_1_WK=${MID_DIR_KK}/${JOBNAME}_UNLD_WK.csv
IN_FILE_2=${MID_DIR_KK}/KKIFM679001_MERGE.csv
IN_FILE_2_WK=${MID_DIR_KK}/KKIFM679001_WK.csv
IN_FILE_2_SORT=${MID_DIR_KK}/KKIFM679001_SORT.csv

#--クリパ連携ファイル(受信)(1)を検索
CPR=$(find ${MID_DIR_KK}/KKIFM679C01_*.csv 2> /dev/null)

#=============================================================
# (2-1) UNLD
#=============================================================

	#
	#--- アンロードファイルのクリアを行う
	#
	cat /dev/null > $IN_FILE_1

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File cat error($TMPSQLFILE:rc=$rc) "
	    echo $JOBNAME " File cat error($TMPSQLFILE:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

	#
	#--- UNLOAD処理
	#
	sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE $IN_FILE_1 $JOBNAME

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) " 
	    echo $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

	#
	#--- ダブルコーテーションを削除する
	#
	sed -i -e "s/\"//g" ${IN_FILE_1}

#=============================================================
# (2-2) 集約
#=============================================================

	#
	#--- クレジットカード情報を下記のKEYでソートする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限
	#
	bsortex \
	    -sort key=1.10asc,2.16asc,3.6asc \
	    -record recform=txtcsv \
	    -input reclen=100 file=${IN_FILE_1} \
	    -output file=${IN_FILE_1_SORT}

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT1 Error($SVC sort:rc=$rc) "
	    echo $JOBNAME " SORT1 Error($SVC sort:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

	#
	#--- クレジットカード情報を集約する
	#--- クリパ連携ファイル(送信)中間とする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限
	#
	bsortex -merge key=1.10asc,2.16asc,3.6asc \
	        -record recform=txtcsv \
	        -input file=${IN_FILE_1_SORT} reclen=100 \
	        -summary suppress last \
	        -output file=${IN_FILE_1_WK}

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MERGE1 Error($SVC sort:rc=$rc) "
	    echo $JOBNAME " MERGE1 Error($SVC sort:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

#=============================================================
# (2-3) マージ
#=============================================================

	#
	#--- アンロードファイルのクリアを行う
	#
	cat /dev/null > ${IN_FILE_2}

	#--クリパ連携ファイル(受信)(1)がある場合処理を行う
	if [ -n "${CPR}" ]; then
		#--クリパ連携ファイル(受信)(1)をマージ
		for input in ${CPR}
		do
			cat ${input%.*}.csv >> ${IN_FILE_2}
		done
	fi

#=============================================================
# (2-4) マッチング(不一致)
#=============================================================

	#
	#--- クリパ連携ファイル(受信マージ)をカンマで区切る
	#--- クレジットカード番号、クレジットカード有効期限、請求契約番号、クレジットカード番号預りIDのみ抽出
	#
#ST-2016-0000009 MOD START
#	while read data
#	do
#		DATA_NO1=`echo "${data}" | cut -b10-25`
#		DATA_NO2=`echo "${data}" | cut -b26-29`
#		DATA_NO3=`echo "${data}" | cut -b30-39`
#		DATA_NO4=`echo "${data}" | cut -b70-85`
#		OUT_DATA=${DATA_NO1}",20"${DATA_NO2}","${DATA_NO3}","${DATA_NO4}
#		echo ${OUT_DATA}
#	done < ${IN_FILE_2} > ${IN_FILE_2_WK}
	gawk 'BEGIN {FS=",";OFS=","}{print substr($0,10,16),"20"substr($0,26,4),substr($0,30,10),substr($0,70,16)}' ${IN_FILE_2} > ${IN_FILE_2_WK}

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
    	sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " AWK1 Error($SVC awk:rc=$rc) " 
    	echo $JOBNAME " AWK1 Error($SVC awk:rc=$rc) "
    	exit ${G_RTN_ERROR}
	fi
#ST-2016-0000009 MOD END

	#
	#--- クリパ連携ファイル(受信)(1)を下記のKEYでソートする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限
	#
	bsortex \
	    -sort key=2.10asc,0.16asc,1.6asc \
	    -record recform=txtcsv \
	    -input reclen=100 file=${IN_FILE_2_WK} \
	    -output file=${IN_FILE_2_SORT}

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT2 Error($SVC sort:rc=$rc) "
	    echo $JOBNAME " SORT2 Error($SVC sort:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

	#
	#--- defファイルをワークファイルにコピー
	#
	cp ${MATCHING_DEF} ${DEF_FILE}

	#
	#--- defファイルにinputファイルを設定
	#
	sed -i -e "s%:IN_FILE_1%${IN_FILE_1_WK}%"    ${DEF_FILE} 
	sed -i -e "s%:IN_FILE_2%${IN_FILE_2_SORT}%"    ${DEF_FILE} 

	#
	#--- クリパ連携ファイル(送信)中間とクリパ連携ファイル(受信マージ)をマッチングする
	#--- 不一致を抽出し、KKIFM678001(クリパ連携ファイル(送信)(仕向先算出前))とする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限
	#
	export ZTLOUTFILE=${KKIFM678001}
	${G_TOOLSH}/util/bin/ZTLMAT01 ${DEF_FILE}

	#--- エラー処理
	rc=$?
	if [ $rc -ne 0 ]
	then
	    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MATCHING1 Error($SVC match:rc=$rc) "
	    echo $JOBNAME " MATCHING1 Error($SVC match:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

#
#--- ワーク削除
#
rm -f ${IN_FILE_1}
rm -f ${IN_FILE_2}
rm -f ${IN_FILE_2_SORT}
rm -f ${IN_FILE_2_WK}
rm -f ${IN_FILE_1_SORT}
rm -f ${IN_FILE_1_WK}
rm -f ${DEF_FILE}

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

exit ${G_RTN_NORMAL}
