#!/bin/bash
##############################################################
# システム名    ： eo顧客基幹システム
#
# サブシステム名： 料金管理
#
# シェル名      ： EO3010640J0.sh
#
# 機能          ：違約金再計算対象抽出
#                 当処理で作成された違約金再計算対象ファイルは、翌日（異動２日目）夜間のEO22S0310J0.shで処理される。
#
# コマンド形式  ：EO3010640J0.sh
#
# 実行環境      ： ../app/shl
#
# 終了ステータス： ゼロ以外異常
#
# 特記事項      ： 特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v48.00.00     2020/02/23  FJ）星野   【IT1-2020-0000011】
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

#---OPD
OPD=$1

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

OUT_FILE=${MID_DIR_KK}/KKIFM279034.csv

ULDSQL_AC0221_01=${SQL_DIR}/AC_U_AC0221_01.sql
ULDSQL_AC0221_01_TMP=${LOC_DIR_AC}/${JOBNAME}.AC_U_AC0221_01_work.sql
AC0221_01=${LOC_DIR_AC}/${JOBNAME}.AC_U_AC0221_01.csv

COMULD2_KK0341_ALL=${MID_DIR_CC}/CCIFM025001.csv
KK0341_WORK_OUTFILE=${LOC_DIR_AC}/${JOBNAME}.KK0341_work.csv
KK0341_MAT_OUTFILE=${LOC_DIR_AC}/${JOBNAME}.KK0341_mat.csv

COMULD2_KK0241_ALL=${MID_DIR_CC}/CCIFM022001.csv

SVC_KEI_NO_FILE=${LOC_DIR_AC}/${JOBNAME}.SVC_KEI_NO_FILE.csv
SVC_KEI_NO_FILE2=${LOC_DIR_AC}/${JOBNAME}.SVC_KEI_NO_FILE2.csv
KAISEN_NO_FILE=${LOC_DIR_AC}/${JOBNAME}.KAISEN_NO_FILE.csv

MATCHDEF_AC_CM_0176_01=${G_TOOLSH}/util/def/AC_CM_0176.def
TMPFILE_MATCHDEF_AC_CM_0176_01=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0176_TMP.def
MATCHDEF_AC_CM_0177_01=${G_TOOLSH}/util/def/AC_CM_0177.def
TMPFILE_MATCHDEF_AC_CM_0177_01=${G_TOOLSH}/util/def/${JOBNAME}_AC_CM_0177_TMP.def


#
#-- エラー処理
#
PRC_ERR()
{
	ERR_CD=$1
	ERR_MSG=$2
	
	if [ $ERR_CD -ne 0 ]
	then
		sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME ${ERR_MSG}
		echo $JOBNAME ${ERR_MSG}
		exit ${G_RTN_ERROR}
	fi
}

#
#--- アンロード関数
#       p1：テーブル名／クエリファイル名
#       p2：出力ファイル名
#
EXEC_UNLOAD()
{
	# 出力ファイルの初期化
	cat /dev/null > $2
	
	rc=$?
	PRC_ERR $rc " File cat error($2:rc=$rc) "
	
	sh ${G_TOOLSH}/EOKULD02.sh $1 $2
	
	rc=$?
	PRC_ERR $rc " unload error($2:rc=$rc) "
}



# 1. unload
cat /dev/null > $ULDSQL_AC0221_01_TMP
cp -f ${ULDSQL_AC0221_01} ${ULDSQL_AC0221_01_TMP}
sed -i -e s@':OPE_DATE'@${OPD}@g ${ULDSQL_AC0221_01_TMP}

EXEC_UNLOAD ${ULDSQL_AC0221_01_TMP} ${AC0221_01}

# 2.filtering
UNYO_YM=`echo ${OPD} |cut -c 1-6`
UNYO_YM_GESSHO=${UNYO_YM}"01"
UNYO_ZENGETSU_LAST=`date -d "1 day ago ${UNYO_YM_GESSHO}" +'%Y%m%d'`

#前月末日でプラン課金終了している交換前機器レコードを抽出
cat /dev/null > $KK0341_WORK_OUTFILE
bsortex -copy -record recform=txtcsv -input reclen=${ULD2_REC_LEN_KK0341} file=${COMULD2_KK0341_ALL} include="24.1asc.eq.'1'.and.23.8asc.eq.'${UNYO_ZENGETSU_LAST}'" -output file=${KK0341_WORK_OUTFILE}

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


# 3.matching
#
# 出力ファイルレイアウト：
# 0.機器提供サービス契約番号(12)
# 1.料金プランコード(6)
# 2.親契約識別コード(2)
# 3.サービス契約番号(10)
# 4.サービス契約内訳番号(12)
# 5.サービス契約回線内訳番号(12)
# 6.オプションサービス契約番号(12)

cat /dev/null > ${KK0341_MAT_OUTFILE}
export ZTLOUTFILE=${KK0341_MAT_OUTFILE}

cat /dev/null > ${TMPFILE_MATCHDEF_AC_CM_0176_01}
cp -f ${MATCHDEF_AC_CM_0176_01} ${TMPFILE_MATCHDEF_AC_CM_0176_01}
# Change contents to CSV files used
sed -i -e s@':ULD_AC_CM_0176_01'@${AC0221_01}@g ${TMPFILE_MATCHDEF_AC_CM_0176_01}
sed -i -e s@':CCIFM025'@${KK0341_WORK_OUTFILE}@g ${TMPFILE_MATCHDEF_AC_CM_0176_01}

# ファイルマッチング
${G_TOOLSH}/util/bin/ZTLMAT01 $TMPFILE_MATCHDEF_AC_CM_0176_01

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


# 4.機器の紐付先に応じてファイル分割 出力はサービス契約番号/サービス契約回線内訳番号
bsortex -copy -record recform=txtcsv -input reclen=100 file=${KK0341_MAT_OUTFILE} \
    -output file=${SVC_KEI_NO_FILE} include="3.10asc.gt.' '" reconst="3.10"\
    -output file=${KAISEN_NO_FILE} include="3.10asc.le.' '.and.5.12asc.gt.' '" reconst="5.12"

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


# 5.回線対象サービス契約をマッチング 出力はサービス契約番号
cat /dev/null > ${SVC_KEI_NO_FILE2}
export ZTLOUTFILE=${SVC_KEI_NO_FILE2}

cat /dev/null > ${TMPFILE_MATCHDEF_AC_CM_0177_01}
cp -f ${MATCHDEF_AC_CM_0177_01} ${TMPFILE_MATCHDEF_AC_CM_0177_01}

# Change contents to CSV files used
sed -i -e s@':KAISEN_NO_FILE'@${KAISEN_NO_FILE}@g ${TMPFILE_MATCHDEF_AC_CM_0177_01}
sed -i -e s@':CCIFM022'@${COMULD2_KK0241_ALL}@g ${TMPFILE_MATCHDEF_AC_CM_0177_01}

# ファイルマッチング
${G_TOOLSH}/util/bin/ZTLMAT01 $TMPFILE_MATCHDEF_AC_CM_0177_01

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


# 6.マージして出力
cat /dev/null > ${OUT_FILE}
cat ${SVC_KEI_NO_FILE} ${SVC_KEI_NO_FILE2} > ${OUT_FILE}

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

rm -f ${ULDSQL_AC0221_01_TMP}
rm -f ${AC0221_01}
rm -f ${KK0341_WORK_OUTFILE}
rm -f ${KK0341_MAT_OUTFILE}
rm -f ${SVC_KEI_NO_FILE}
rm -f ${SVC_KEI_NO_FILE2}
rm -f ${KAISEN_NO_FILE}
rm -f ${TMPFILE_MATCHDEF_AC_CM_0176_01}
rm -f ${TMPFILE_MATCHDEF_AC_CM_0177_01}

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

exit ${G_RTN_NORMAL}
