#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：会計用コンテンツ決済売掛金データ抽出
#
# 機能          ：コンテンツクレカ課金スキーマより、クレジットカード決済対象の課金額を抽出する。
#
#
#【SQLPARAM】
#EVENT_CD(イベントコード):"33"(会計処理日（３日実行）)
#EVT_YMD(イベント年月日):バッチ運用日
#EVENT_CD(イベントコード):"33"(会計処理日（３日実行）)
#EVT_YMD(イベント年月日):バッチ運用日
#EVENT_CD(イベントコード):"33"(会計処理日（３日実行）)
#EVT_YMD(イベント年月日):バッチ運用日
#KUS_CD(会計内訳種別コード):"80"(会計用コンテンツ決済)
#KUS_DTL_CD(会計内訳種別詳細コード):"8010"(売掛金)
#B_DATE:バッチ運用日
#
# コマンド形式  ：EO30O1310J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v4.00			2013/3/26	FJ)早崎			【内部管理番号-0000854】
# v4.01			2013/5/28	FJ)小野			【TG1-2013-0000490】不要データの除外対応
# v39.00.00     2018/11/30  FJ）寺園        【OM-2018-0001095】会計二重計上対応
# v45.00.00     2019/10/15  FJ）寺園        【OM-2019-0001138】会計用コンテンツ決済売掛金データ不正
# v65.00.00     2023/04/13  FJ）中原        【ANK-4346-00-00】【eo定期】CCMG再構築対応
# v65.00.01     2023/09/27  FJ）渋谷        【ANK-4346-00-00】【eo定期】CCMG再構築対応
##############################################################

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

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

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

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

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

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

#
#---業務で必要な変数定義
#
#手修正あり
#v65.00.00 DEL START
#EVENT_CD="33"
#EVT_YMD="SQLPARAM_KEY_OPD_YYYYMMDD"
#KUS_CD="80"
#KUS_DTL_CD="8010"
#B_DATE="SQLPARAM_KEY_OPD_YYYYMMDD"
#v65.00.00 DEL END

#v65.00.00 ADD START
# ファイル定義
#v65.00.01 MOD START
#INPUT_FLIE=${SEND_DIR}/ACIFI060001.csv
INPUT_FLIE=${MID_DIR_AC}/ACIFM365000.csv
#v65.00.01 MOD END
MATCHINFILE=${MID_DIR_CC}/CCIFM019002.csv
MATCHDEF_ORSHI=${G_TOOLSH}/util/def/AC_CM_0195.def
MATCHOROSHI=${LOC_DIR_AC}/${JOBNAME}_OROSHI.csv

MATCHKAIKCHG=${LOC_DIR_AC}/${JOBNAME}_KAIKCHG.csv
MATCHKAIKCHG_SPACE=${LOC_DIR_AC}/${JOBNAME}_KAIKCHG_SPACE.csv
MATCHKAIKCHG_MARGE=${LOC_DIR_AC}/${JOBNAME}_KAIKCHG_MARGE.csv
OUTPUT_KAIKURI=${MID_DIR_AC}/ACIFM142022.csv
OUTPUT_KAIKURI_OROSHI=${MID_DIR_AC}/ACIFM142040.csv
MATCHDEF_KAIKURI=${G_TOOLSH}/util/def/AC_CM_0196.def
# ファイル（会計内訳変換抽出）
TMP_AC_U_CH0691_03=${LOC_DIR_AC}/${JOBNAME}_TMP_AC_U_CH0691_03.csv
# アンロード出力ファイル（会計内訳変換抽出）
TMP_AC_U_CH0691_03_OUT=${LOC_DIR_AC}/${JOBNAME}_TMP_AC_U_CH0691_03_OUT.csv
#--- アンロードSQL定義ファイル
# 会計内訳変換抽出
AC_U_CH0691_03=${SQL_DIR}/AC_U_CH0691_03.sql

#v65.00.00 ADD END

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

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

#v65.00.00 DEL START
##v39.00.00 MOD START
##P1="OPD=,"
##P1="OPD=$RSLT_OPEDATE,"
##v39.00.00 MOD END
#P2="SVCCTL=JBSbatMultiServiceControl,"
#P3="JOB=EO30O1310J0,"
#P4="IND1=,"
#P5="INF1=,"
#P6="IND2=,"
#P7="INF2=,"
#P8="OTD1=ACIFM142.def,"
#P9="OTF1=${MID_DIR_AC}/ACIFM142022.csv,"
#P10="OTD2=,"
#P11="OTF2=,"
#P12="TABLENAME=CN_T_CONT_CRECA_CHRG,"
#P13="SQLKEY=AC_SELECT_001,"
##v39.00.00 MOD START
##P14="SQLPARAM=${EVENT_CD};${EVT_YMD};${EVENT_CD};${EVT_YMD};${EVENT_CD};${EVT_YMD};${KUS_CD};${KUS_DTL_CD};${B_DATE};${B_DATE};${B_DATE};${B_DATE},"
##v45.00.00 MOD START
##P14="SQLPARAM=${EVENT_CD};${EVT_YMD};${EVENT_CD};${EVT_YMD};${EVENT_CD};${EVT_YMD};${KUS_CD};${KUS_DTL_CD};${B_DATE};${B_DATE};${B_DATE};${B_DATE};${B_DATE},"
#P14="SQLPARAM=${EVENT_CD};${EVT_YMD};${EVENT_CD};${EVT_YMD};${EVENT_CD};${EVT_YMD};${KUS_CD};${KUS_DTL_CD};${B_DATE};${B_DATE};${B_DATE};${B_DATE};${B_DATE};${B_DATE};${B_DATE},"
##v45.00.00 MOD END
##v39.00.00 MOD END
#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
#
##
##---ＡＰＬ起動
##
#
#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
#
#exit_rc=$rc
#v65.00.00 DEL END

#v65.00.00 ADD START
##############################################################
# 初期処理
##############################################################
#
#---コンテンツクレジット請求_チェック済ファイルの存在チェックを行う
#
if [ ! -r ${INPUT_FLIE} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($INPUT_FLIE) "
    echo $JOBNAME " File is nonexist($INPUT_FLIE) "
    exit ${G_RTN_ERROR}
fi

#---サービス開始後共通アンロードのお客様カレントファイルの存在チェックを行う
#
if [ ! -r ${MATCHINFILE} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($MATCHINFILE) "
    echo $JOBNAME " File is nonexist($MATCHINFILE) "
    exit ${G_RTN_ERROR}
fi


#

##############################################################
# 共通関数
##############################################################

#
#--- アンロード関数
#       p1：出力ファイル名
#       p2：クエリファイル名
#       p3：バインド変数置換文字
EXEC_UNLOAD()
{
    local _OTF=$1
    local _SQL_FILE=$2
    local _BIND_VAL=$3
    local _SQL_WORK_FILE=${ULD_WORK_DIR}/${JOBNAME}.W_ULD.sql

    # SQLクエリファイル初期化
    cat /dev/null > ${_SQL_WORK_FILE}
    
    # SQL定義ファイルが存在しない場合エラー
    if [ ! -r ${_SQL_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${_SQL_FILE}) "
        echo $JOBNAME " File is nonexist(${_SQL_FILE}) "
        exit ${G_RTN_ERROR}
    fi

    cat ${_SQL_FILE} > ${_SQL_WORK_FILE}

    # バインド変数を置き換える
    if [ "${_BIND_VAL}" != "" ]
    then
        for bind in ${_BIND_VAL}
        do
            sed -i -e 0,/?/s/?/"'"$bind"'"/ ${_SQL_WORK_FILE}
        done
    fi

    # 出力ファイルの初期化
    cat /dev/null > ${_OTF}

    # アンロード
    sh ${G_TOOLSH}/EOKULD02.sh ${_SQL_WORK_FILE} ${_OTF}
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error(${_SQL_FILE}:rc=$rc) "
        echo $JOBNAME " unload error(${_SQL_FILE}:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi

    # 一時ファイル削除
    rm -f ${_SQL_WORK_FILE}
}

#
#--- マッチング処理
#      p1：出力ファイルパス
#      p2：マッチングクエリファイルパス
EXEC_MATCHING()
{
    local _OUTFILE=$1
    local _MATCHING_FILE=$2

    # マッチングクエリファイルの存在チェック
    if [ ! -r ${_MATCHING_FILE} ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${_MATCHING_FILE}) "
        echo $JOBNAME " File is nonexist(${_MATCHING_FILE}) "
        exit ${G_RTN_ERROR}
    fi

    # 出力ファイルの初期化
    cat /dev/null > ${_OUTFILE}

    # マッチング実行
    export ZTLOUTFILE=${_OUTFILE}
    ${G_TOOLSH}/util/bin/ZTLMAT01 ${_MATCHING_FILE}
    rc=$?
    if [ $rc -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " matching error($2:rc=$rc) "
        echo $JOBNAME " matching error($2:rc=$rc) "
        exit ${G_RTN_ERROR}
    fi
}

##############################################################
# １．卸先事業者コードの取得（マッチング処理）
##############################################################


# 入力ファイルとお客様カレントをマッチング
export INPUT_FLIE
export MATCHINFILE
EXEC_MATCHING ${MATCHOROSHI} ${MATCHDEF_ORSHI}



##############################################################
# ２．会計内訳変換系項目の取得（マッチング処理）
##############################################################
#会計内訳変換アンロード
# 引数　出力ファイル名、クエリファイル名、運用日付（YMD）、運用日付（YMD）、運用日付（YMD）、運用日付（YMD）、運用日付（YMD）、運用日付（YMD）
EXEC_UNLOAD ${TMP_AC_U_CH0691_03_OUT} ${AC_U_CH0691_03} "${RSLT_OPEDATE} ${RSLT_OPEDATE} ${RSLT_OPEDATE} ${RSLT_OPEDATE} ${RSLT_OPEDATE} ${RSLT_OPEDATE}"

# 会計内訳変換アンロードをマッチング
export MATCHOROSHI
export TMP_AC_U_CH0691_03_OUT
EXEC_MATCHING ${MATCHKAIKCHG} ${MATCHDEF_KAIKURI}

##############################################################
# ３．マッチング後ファイルに空白項目を追加
##############################################################
bsortex \
	-copy -record recform=txtcsv  \
	-input reclen=1000 file=${MATCHKAIKCHG} \
	-output file=${MATCHKAIKCHG_SPACE} \
		reconst="0.99,1.99,2.99,EMPTY,3.99,4.99,5.99,6.99,7.99,8.99,EMPTY,'1'.1ascA,9.99,EMPTY,EMPTY,EMPTY,EMPTY,10.99,11.99,EMPTY" 
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " COPY Error($SVC copy:rc=$rc) "
    echo $JOBNAME " COPY Error($SVC copy:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


##############################################################
# ４．ファイル集計処理
##############################################################
#ソートキー=卸先事業者コード、会計内訳変換.クレジットカード会社コード、会計内訳変換.コンテンツサービスコード、会計内訳変換.会計内訳種別コード、会計内訳変換.会計内訳種別詳細コード、コンテンツクレカ会計用情報.請求月、会計内訳変換.会計内訳コード、会計内訳変換.料金項目コード
#集計キー=件数、課金額
bsort -s -z1200 -Tcsv -0.99asca,17.99asca,18.99asca,1.99asca,2.99asca,4.99asca,5.99asca,9.99asca \
-g11.99ascd,12.99ascd \
-o ${MATCHKAIKCHG_MARGE} ${MATCHKAIKCHG_SPACE}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    echo $JOBNAME " SORT Error($SVC sort:rc=$rc) "
    exit ${G_RTN_ERROR}
fi


##############################################################
# ５．ファイル分割処理
##############################################################
#卸先事業者コードの設定有無によりファイルを分割
bsortex \
	-copy -record recform=txtcsv  \
	-input reclen=1000 file=${MATCHKAIKCHG_MARGE} \
	-output file=${OUTPUT_KAIKURI} case="0.1asc.lt.'0'" \
		reconst="1.99,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.99,15.99,16.99,17.99,18.99,19.99" \
	-output file=${OUTPUT_KAIKURI_OROSHI} case=other
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " COPY Error($SVC copy:rc=$rc) "
    echo $JOBNAME " COPY Error($SVC copy:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

# ""ダブルクォート削除
sed -i -e 's/\"//g' ${OUTPUT_KAIKURI}
sed -i -e 's/\"//g' ${OUTPUT_KAIKURI_OROSHI}

#v65.00.00 ADD END


#v65.00.00 ADD START
# 一時ファイルを削除
rm -f {MATCHKAIKCHG}
rm -f {MATCHKAIKCHG_SPACE}
rm -f {MATCHKAIKCHG_MARGE}
rm -f {TMP_AC_U_CH0691_03}
rm -f {TMP_AC_U_CH0691_03_OUT}
rm -f {MATCHOROSHI}
#v65.00.00 ADD END

#v65.00.00 ADD START
exit_rc=$rc
#v65.00.00 ADD END

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

exit $exit_rc
