#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：契約管理
#
# シェル名      ：カード預りＩＤ採番対象抽出＿09_2
#
# 機能          ：検証ツール。
#
# コマンド形式  ：EO2F70292J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v20.00.00      2016/01/25   FJ)黒田      【ANK-2565-07-00】（新規作成）
#
##############################################################

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

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

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

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

#
#---サービス(業務プロセス)
#
SVC=$JOBNAME

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

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

KKIFM678003=${MID_DIR_KK}/KKIFM678003.csv
UNLD_FILE=${MID_DIR_KK}/KKIFM694001.csv

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

#--- アンロードファイル
SQLFILE=${SQL_DIR}/KK_U_KK0521_06.sql

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

#--- ワークファイル
DEF_FILE=${G_TOOLSH}/util/def/${JOBNAME}.def
IN_FILE_1=${MID_DIR_KK}/${JOBNAME}_UNLD_SORT.csv
IN_FILE_2=${MID_DIR_KK}/KKIFM679001_MERGE.csv
IN_FILE_3=${MID_DIR_KK}/KKIFM678002_MERGE.csv
IN_FILE_2_WK=${MID_DIR_KK}/${JOBNAME}_KKIFM679001_WK.csv
IN_FILE_2_SORT=${MID_DIR_KK}/${JOBNAME}_KKIFM679001_SORT.csv
IN_FILE_3_SORT=${MID_DIR_KK}/${JOBNAME}_KKIFM678002_SORT.csv
IN_FILE_4=${MID_DIR_KK}/${JOBNAME}_IN_FILE_4.csv
MATCHING_OUTFILE=${MID_DIR_KK}/${JOBNAME}_MATCHING_OUTFILE.csv

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

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

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

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

	#--- エラー処理
	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 $UNLD_FILE $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" ${UNLD_FILE}

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

	#
	#--- クリパ連携ファイル(受信マージ)のクリアを行う
	#
	cat /dev/null > ${IN_FILE_2}

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

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

	#
	#--- クリパ連携ファイル(送信マージ)のクリアを行う
	#
	cat /dev/null > ${IN_FILE_3}

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

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

	#
	#--- クリパ連携ファイル(受信マージ)をカンマで区切る
	#--- クレジットカード番号、クレジットカード有効期限、請求契約番号、クレジットカード番号預りIDのみ抽出
	#
	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

	#
	#--- クリパ連携ファイル(受信マージ)を下記の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 " SORT1 Error($SVC sort:rc=$rc) "
	    echo $JOBNAME " SORT1 Error($SVC sort:rc=$rc) "
	    exit ${G_RTN_ERROR}
	fi

	#
	#--- クリパ連携ファイル(送信マージ)を下記のKEYでソートする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限
	#
	bsortex \
	    -sort key=1.10asc,2.16asc,3.6asc,6.5asc,8.16asc \
	    -record recform=txtcsv \
	    -input reclen=100 file=${IN_FILE_3} \
	    -output file=${IN_FILE_3_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_2_SORT}%"    ${DEF_FILE} 
	sed -i -e "s%:IN_FILE_2%${IN_FILE_3_SORT}%"    ${DEF_FILE} 

	#
	#--- クリパ連携ファイル(受信マージ)とクリパ連携ファイル(送信マージ)をマッチングする
	#--- 一致を抽出し、クリパ連携ファイル(送受信マージ)とする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限
	#
	export ZTLOUTFILE=${MATCHING_OUTFILE}
	${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

#=============================================================
# (9-2-5) マッチング(不一致)
#=============================================================
	#
	#--- アンロードファイルを下記のKEYでソートする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限,仕向先会社コード,クレジットカード番号預りID
	#
	bsortex \
	    -sort key=1.10asc,2.16asc,3.6asc,6.5asc,8.16asc \
	    -record recform=txtcsv \
	    -input reclen=100 file=${UNLD_FILE} \
	    -output file=${IN_FILE_1}

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

	#
	#--- クリパ連携ファイル(送受信マージ)を下記のKEYでソートする
	#---  KEY : 請求契約番号,クレジットカード番号,クレジットカード有効期限,仕向先会社コード,クレジットカード番号預りID
	#
	bsortex \
	    -sort key=1.10asc,2.16asc,3.6asc,6.5asc,8.16asc \
	    -record recform=txtcsv \
	    -input reclen=100 file=${MATCHING_OUTFILE} \
	    -output file=${IN_FILE_4}

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

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

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

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

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

#
#--- ワーク削除
#
rm -f ${IN_FILE_1}
rm -f ${IN_FILE_2}
rm -f ${IN_FILE_3}
rm -f ${IN_FILE_4}
rm -f ${IN_FILE_2_SORT}
rm -f ${IN_FILE_3_SORT}
rm -f ${IN_FILE_2_WK}
rm -f ${DEF_FILE}
rm -f ${MATCHING_OUTFILE}

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

exit ${G_RTN_NORMAL}
