#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：請求削除情報抽出
#
# 機能          ：請求削除された情報を抽出する。
#
# コマンド形式  ：EO60301V0J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v6.00           2013/11/26  FJ）早崎    【OM-2012-0004219】新規作成
# v8.00           2014/05/23  FJ）小掠    【OM-2014-0001820】債権額を取得できた場合の請求削除判定（出力しない）、請求額合計を取得できた場合の判定追加（請求番号は空設定）
# v8.01           2014/06/02  FJ）小掠    【OM-2014-0001820】追加　CH_U_CH0401_03.sql、CH_U_CH0041_07.sqlを修正を戻し、CH_U_CH0401_19.sql、CH_U_CH0041_09.sqlで新規で作成
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
EVENT_CD="04"
WORK_PARAM_ID_1="CH_WKS_SAIKEN_AMNT"
WORK_PARAM_ID_2="CH_WKS_SIKY_AMNT"
SYS_CD="CH"
CHSHT_CHG_CD="1"
SEIKY_SBT_CD="0"
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
export ZTLQUOTES=''

#---ワークファイル削除モード
WK_RM=true

#--- サブルーチン（UNLOAD）
UNLOAD(){
	#unload
	sh ${G_TOOLSH}/EOKULD03.sh $1 $2

	rc=$?
	if [ $rc -ne 0 ]
	then
	      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " unload error($1 $2:rc=$rc) "
	      echo $JOBNAME " unload error($1 $2:rc=$rc) "
	      exit ${G_RTN_ERROR}
	fi
}


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


#--- 請求年月(当月)取得
. EO3SEIKYYM2.sh ${EVENT_CD} ${RSLT_OPEDATE} ${JOBNAME}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " EO3SEIKYYM2 Error($EO3SEIKYYM2:rc=$rc) " 
    echo $JOBNAME " EO3SEIKYYM2 Error($EO3SEIKYYM2:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
echo ${SEIKY_YM}



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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO60301V0J0,"
P4="IND1=,"
P5="INF1=,"
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="
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

#
#--- ファイル定義
#

#--- 出力ファイル
OUTFILE_WK1=${MID_DIR_CH}/CHIFM223001_WK1_${JOBNAME}.csv
OUTFILE_WK2=${MID_DIR_CH}/CHIFM223001_WK2_${JOBNAME}.csv
OUTFILE_WK3=${MID_DIR_CH}/CHIFM223001_WK3_${JOBNAME}.csv
OUTFILE=${MID_DIR_CH}/CHIFM223001.csv

#--- 1.請求・請求債権関連・債権
SQLFILE_CH0041=${SQL_DIR}/CH_U_CH0041_09.sql
SQLFILE_CH0041_WK1=${SQL_DIR}/CH_U_CH0041_09_UNLOADER_WK1_${JOBNAME}.sql
INFILE_CH0041_WK1=${MID_DIR_CH}/CH0041_WK1_${JOBNAME}.csv

#--- 2.請求内訳（CH_T_SEIKY_UCWK）
#--- (当月)請求内訳情報を他ジョブより取得
INFILE_CHIFM182_WK=${MID_DIR_CH}/CHIFM182003.csv
INFILE_CH0101_WK1=${MID_DIR_CH}/CH0101_WK1_${JOBNAME}.csv
INFILE_CH0101_WK2=${MID_DIR_CH}/CH0101_WK2_${JOBNAME}.csv
INFILE_CH0101_2_WK2=${MID_DIR_CH}/CH0101_2_WK2_${JOBNAME}.csv

#--- 3-1.料金項目抽出変換(債権額)
SQLFILE_CH0401=${SQL_DIR}/CH_U_CH0401_19.sql
SQLFILE_CH0401_WK1=${SQL_DIR}/CH_U_CH0401_19_UNLOADER_WK1_${JOBNAME}.sql
INFILE_CH0401_WK1=${MID_DIR_CH}/CH0401_WK1_${JOBNAME}.csv

#--- 3-2.料金項目抽出変換(請求額合計)
SQLFILE_CH0401_2_WK1=${SQL_DIR}/CH_U_CH0401_2_03_UNLOADER_WK1_${JOBNAME}.sql
INFILE_CH0401_2_WK1=${MID_DIR_CH}/CH0401_2_WK1_${JOBNAME}.csv

#--- 4.マッチングDEF
CH0101_CH0401_DEFFILE=${G_TOOLSH}/util/def/CH_CM_0033.def
CH0101_CH0401_DEFFILE_WK1=${G_TOOLSH}/util/def/CH_CM_0033_${JOBNAME}.def
CH0101_CH0401_2_DEFFILE_WK1=${G_TOOLSH}/util/def/CH_CM_0033_2_${JOBNAME}.def
DEFFILE=${G_TOOLSH}/util/def/CH_CM_0113.def
DEFFILE_WK1=${G_TOOLSH}/util/def/CH_CM_0113_${JOBNAME}.def


#
#--- 各ファイルの存在チェックを行う
#

if [ ! -r $INFILE_CHIFM182_WK ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($INFILE_CHIFM182_WK) "
    echo $JOBNAME " File is nonexist($INFILE_CHIFM182_WK) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $SQLFILE_CH0041 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE_CH0041) "
    echo $JOBNAME " File is nonexist($SQLFILE_CH0041) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $SQLFILE_CH0401 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($SQLFILE_CH0401) "
    echo $JOBNAME " File is nonexist($SQLFILE_CH0401) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $CH0101_CH0401_DEFFILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($CH0101_CH0401_DEFFILE) "
    echo $JOBNAME " File is nonexist($CH0101_CH0401_DEFFILE) "
    exit ${G_RTN_ERROR}
fi

if [ ! -r $DEFFILE ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist($DEFFILE) "
    echo $JOBNAME " File is nonexist($DEFFILE) "
    exit ${G_RTN_ERROR}
fi


#
#--- UNLOAD処理
#

#--- 請求・請求債権関連・債権(UNLOAD処理)
cp -f ${SQLFILE_CH0041} ${SQLFILE_CH0041_WK1}
sed -i -e "s/:SEIKY_YM/'${SEIKY_YM}'/"          ${SQLFILE_CH0041_WK1} 
sed -i -e "s/:SEIKY_SBT_CD/'${SEIKY_SBT_CD}'/"  ${SQLFILE_CH0041_WK1} 

UNLOAD ${SQLFILE_CH0041_WK1} ${INFILE_CH0041_WK1}


#--- 請求内訳
bsortex \
  -copy \
  -record recform=txtcsv \
  -input reclen=200 \
  file=${INFILE_CHIFM182_WK} \
  -output reconst=0.12,5.2,6.3,7.12,8.11,12.12 \
  file=${INFILE_CH0101_WK1}
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

#--- 料金項目抽出変換(UNLOAD処理)(債権額)
cp -f ${SQLFILE_CH0401} ${SQLFILE_CH0401_WK1}
sed -i -e "s%\:SYS_CD%'${SYS_CD}'%"                  ${SQLFILE_CH0401_WK1}
sed -i -e "s%\:WORK_PARAM_ID%'${WORK_PARAM_ID_1}'%"  ${SQLFILE_CH0401_WK1}
sed -i -e "s%\:OPEDATE%'${RSLT_OPEDATE}'%"           ${SQLFILE_CH0401_WK1}
sed -i -e "s%\:CHSHT_CHG_CD%'${CHSHT_CHG_CD}'%"      ${SQLFILE_CH0401_WK1}

UNLOAD ${SQLFILE_CH0401_WK1} ${INFILE_CH0401_WK1}

#--- 料金項目抽出変換(UNLOAD処理)(請求額合計)
cp -f ${SQLFILE_CH0401} ${SQLFILE_CH0401_2_WK1}
sed -i -e "s%\:SYS_CD%'${SYS_CD}'%"                  ${SQLFILE_CH0401_2_WK1}
sed -i -e "s%\:WORK_PARAM_ID%'${WORK_PARAM_ID_2}'%"  ${SQLFILE_CH0401_2_WK1}
sed -i -e "s%\:OPEDATE%'${RSLT_OPEDATE}'%"           ${SQLFILE_CH0401_2_WK1}
sed -i -e "s%\:CHSHT_CHG_CD%'${CHSHT_CHG_CD}'%"      ${SQLFILE_CH0401_2_WK1}

UNLOAD ${SQLFILE_CH0401_2_WK1} ${INFILE_CH0401_2_WK1}

#--- 請求内訳・料金項目抽出変換マッチング(債権額)
cp ${CH0101_CH0401_DEFFILE} ${CH0101_CH0401_DEFFILE_WK1}
sed -i -e "s%:CH_T_SEIKY_UCWK%${INFILE_CH0101_WK1}%"      ${CH0101_CH0401_DEFFILE_WK1}
sed -i -e "s%:CH_M_PRC_KMK_CS_CHGE%${INFILE_CH0401_WK1}%" ${CH0101_CH0401_DEFFILE_WK1}

export ZTLOUTFILE=${INFILE_CH0101_WK2}
${G_TOOLSH}/util/bin/ZTLMAT01 ${CH0101_CH0401_DEFFILE_WK1}

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

#--- 請求内訳・料金項目抽出変換マッチング(請求額合計)
cp ${CH0101_CH0401_DEFFILE} ${CH0101_CH0401_2_DEFFILE_WK1}
sed -i -e "s%:CH_T_SEIKY_UCWK%${INFILE_CH0101_WK1}%"        ${CH0101_CH0401_2_DEFFILE_WK1}
sed -i -e "s%:CH_M_PRC_KMK_CS_CHGE%${INFILE_CH0401_2_WK1}%" ${CH0101_CH0401_2_DEFFILE_WK1}

export ZTLOUTFILE=${INFILE_CH0101_2_WK2}
${G_TOOLSH}/util/bin/ZTLMAT01 ${CH0101_CH0401_2_DEFFILE_WK1}

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


#--- マッチング
cp ${DEFFILE} ${DEFFILE_WK1}
sed -i -e "s%:CH_T_SEIKY_SKN_KNRN%${INFILE_CH0041_WK1}%" ${DEFFILE_WK1}
sed -i -e "s%:CH_T_SEIKY_UCWK_2%${INFILE_CH0101_2_WK2}%" ${DEFFILE_WK1}
sed -i -e "s%:CH_T_SEIKY_UCWK%${INFILE_CH0101_WK2}%"     ${DEFFILE_WK1}


export ZTLOUTFILE=${OUTFILE_WK1}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_WK1}

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


#1:請求契約番号
#2:債権番号
#3:請求番号
#4:請求年月
#5:債権額あり     '1'
#6:請求額合計あり '1'
#--- 請求削除判定　債権額取得ありは出力しない
#--- 請求番号設定　請求額合計なしは請求番号をセットしない
#--- 改行コード変換
bsortex \
  -copy \
  -record recform=txtcsv \
  -input reclen=100 include="4.1asc.ne.'1'" file=${OUTFILE_WK1} \
  -output file=${OUTFILE_WK2} case="5.1asc.ne.'1'" reconst=0.10,1.12,2.12,3.6 linedlmt=crlf \
  -output file=${OUTFILE_WK3} case=other reconst=0.10,1.12,EMPTY,3.6 linedlmt=crlf
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


#---ファイルマージ
cat ${OUTFILE_WK2} ${OUTFILE_WK3} > ${OUTFILE}
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


#ワーク削除
if [ $WK_RM = "true" ]
then
    rm -f ${OUTFILE_WK1}
    rm -f ${OUTFILE_WK2}
    rm -f ${OUTFILE_WK3}
    rm -f ${SQLFILE_CH0041_WK1}
    rm -f ${INFILE_CH0041_WK1}
    rm -f ${INFILE_CH0101_WK1}
    rm -f ${INFILE_CH0101_WK2}
    rm -f ${INFILE_CH0101_2_WK2}
    rm -f ${SQLFILE_CH0401_WK1}
    rm -f ${SQLFILE_CH0401_2_WK1}
    rm -f ${INFILE_CH0401_WK1}
    rm -f ${INFILE_CH0401_2_WK1}
    rm -f ${CH0101_CH0401_DEFFILE_WK1}
    rm -f ${CH0101_CH0401_2_DEFFILE_WK1}
    rm -f ${DEFFILE_WK1}
fi

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

exit ${G_RTN_NORMAL}
