#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：クレジット請求データ結果チェック(オーソリ無）
#
# 機能          ：1. クレジット請求データ結果チェック(オーソリ無）
# 
#(1)
# クレジット請求データ分割で分割された、コンテンツクレジット請求結果受信データファイル(オーソリ無）を
# コンテンツクレカ請求集計チェック結果を利用してチェックする。
# 受信データファイル、またはコンテンツクレカ請求集計結果にしか存在しないデータがある場合、ワーニングを出力し、
# エラーファイルに対象データを出力する。
# チェック結果が正常の場合、コンテンツ事業クレジットカードスキーマを更新する。
# チェック結果が異常の場合、ワーニングを出力する。
# 
#
# コマンド形式  ：EO40V0410J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v58.00.00       2022/05/12  FJ）吉田     【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1
#---運用日の指定がない場合、運用日付を取得する
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
   OPD="${RSLT_OPEDATE}"
fi


#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
exit_rc=0
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

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

P1="OPD=$OPD,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO40V0420J0,"
P4="IND1=CNIFI002.def,"
P5="INF1=${MID_DIR_CN}/CNIFI002002_MATCH.csv,"
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=2"
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

#
#--- ファイル定義
#
#--- 入力ファイル(コンテンツクレジット請求依頼送信データファイル(オーソリ無）)
SEND_FILE=${SEND_DIR}/CHIFI004002.csv
#--- 入力ファイル(コンテンツクレジット請求結果受信データファイル(オーソリ無）)
RECIVE_FILE=${SEND_DIR}/CNIFI002002.csv

#--- マッチング定義ファイル
DEFFILE_CN0010=${G_TOOLSH}/util/def/CN_CM_0010.def
DEFFILE_CN0011=${G_TOOLSH}/util/def/CN_CM_0011.def

#-- 一時ファイル
CNIFI002002_MATCH=${MID_DIR_CN}/CNIFI002002_MATCH.csv
CNIFI002002_UNMATCH_SEND=${MID_DIR_CN}/CNIFI002002_UNMATCH_SEND.csv
CNIFI002002_UNMATCH_RECIVE=${MID_DIR_CN}/CNIFI002002_UNMATCH_RECIVE.csv
CNIFI002002_UNMATCH=${MID_DIR_CN}/CNIFI002002_UNMATCH.csv


#-- 送受信ともに存在するレコードを抜き出す
export ZTLQUOTES=''
export ZTLOUTFILE=${CNIFI002002_MATCH}
export INFILE_MAIN=${RECIVE_FILE}
export INFILE_SUB=${SEND_FILE}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_CN0010}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " マッチング処理 Error (${ZTLOUTFILE}:rc=$rc) "
    echo $JOBNAME " マッチング処理 Error (${ZTLOUTFILE}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#-- 送信データにのみ存在するレコードを抜き出す
export ZTLQUOTES=''
export ZTLOUTFILE=${CNIFI002002_UNMATCH_RECIVE}
export INFILE_MAIN=${RECIVE_FILE}
export INFILE_SUB=${CNIFI002002_MATCH}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_CN0011}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " マッチング処理 Error (${ZTLOUTFILE}:rc=$rc) "
    echo $JOBNAME " マッチング処理 Error (${ZTLOUTFILE}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#-- 受信データにのみ存在するレコードを抜き出す
export ZTLQUOTES=''
export ZTLOUTFILE=${CNIFI002002_UNMATCH_SEND}
export INFILE_MAIN=${SEND_FILE}
export INFILE_SUB=${CNIFI002002_MATCH}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_CN0011}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " マッチング処理 Error (${ZTLOUTFILE}:rc=$rc) "
    echo $JOBNAME " マッチング処理 Error (${ZTLOUTFILE}:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# アンマッチデータ
HEADER1="レコードID,サイトID,マーチャント取引ＩＤ,決済ID,決済金額,カード番号,カード有効期限,支払区分,予備項目,予備項目,分割回数,参照マーチャント取引ＩＤ,カード情報お預りモード,顧客ID,顧客カードID,同時売上モード,利用者請求日,処理結果,レスポンスコード,レスポンス詳細,イシュア区分,取扱カード会社コード,取扱カード会社名,カード発行会社コード,カード発行会社名,承認番号"
echo "○送信" > ${CNIFI002002_UNMATCH}
echo ${HEADER1} >> ${CNIFI002002_UNMATCH}
cat ${CNIFI002002_UNMATCH_SEND} >> ${CNIFI002002_UNMATCH}
echo "○受信" >> ${CNIFI002002_UNMATCH}
echo ${HEADER1} >> ${CNIFI002002_UNMATCH}
cat ${CNIFI002002_UNMATCH_RECIVE} >> ${CNIFI002002_UNMATCH}

nkf -s -Lw --overwrite ${CNIFI002002_UNMATCH}


# 受信/送信のアンマッチデータが存在するかチェックする。
RECCNT=$((`wc -l ${CNIFI002002_UNMATCH_SEND} | awk '{printf $1}'`+`wc -l ${CNIFI002002_UNMATCH_RECIVE} | awk '{printf $1}'`))
# 0件でなければワーニングを出力し、マッチデータはそのまま処理する。
if [ $RECCNT -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " コンテンツクレカ未受信データあり Warning (${CNIFI002002_UNMATCH})  "
    echo $JOBNAME " コンテンツクレカ未受信データあり Warning (${CNIFI002002_UNMATCH}) "
    exit_rc=${G_RTN_WARN}
fi


#
#---ＡＰＬ起動
#

java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA

rc=$?
ERR_FLG=0
if [ $rc -ne 0 ]
then
   if [ $rc -ne 4 ]
   then
       if [ $rc -ne 8 ]
       then
           if [ $rc -ne 127 ]
           then
              sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              echo $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              exit ${G_RTN_ERROR}
           fi
       fi
    fi
    ERR_FLG=1
fi

if [ $((rc)) -gt $((exit_rc)) ]
then
    exit_rc=$rc
fi

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

exit ${exit_rc}
