#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：クレジット請求データ抽出
#
# 機能          ：1. クレジット請求データ抽出
# 
#(1) 
#請求スキーマ・請求内訳スキーマより、クレジット請求を行った情報を抽出する。
#※「CHPRC03101：社内使用分入金データ作成」の「社内使用分請求データ抽出」と同じ処理を使用する。
#
#
# コマンド形式  ：EO60U0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/07/27  FJ）冨井     【ST2-2012-0001211】ヒープサイズ拡張
# v3.01           2012/11/02  FJ）加島     【ST4-2012-0000006】ヒープサイズ指定方法変更
# v4.02           2013/05/21  FJ) 前田     【TA1-2013-0000026】バッチ運用日を日中バッチ運用日から取得するように修正
# v6.00           2013/12/19  FJ) 狭間     【OM-2013-0005256】性能改善の為、javaを廃止し、アンロード＆bsortex化
##############################################################

##############################################################
# 環境変数定義
##############################################################
#---ワークファイル削除モード
WK_RM=true

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

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

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

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

#
#---OPD
#
OPD=$1

#---日中運用日付取得
if [ "${OPD}" = "" -o "${OPD}" = "20991231" ]; then
   . EOK010310J0.sh "NDATE"
fi

#- 請求年月取得
EVENT_CD="04"
. EO3SEIKYYM2.sh ${EVENT_CD} ${RSLT_OPEDATE} ${JOBNAME}

#- クレジット請求依頼日取得
EVENT_CD_CRE="05"
. EO3EVENTYMD.sh ${EVENT_CD_CRE} ${SEIKY_YM} ${JOBNAME}
CRE_SEIKY_YMD=${EVENT_YMD}

#
#---業務で必要な変数定義
#
# システムコード
SYS_CD="CH"

#- 業務パラメータＩＤ（業務機能識別コードクレジット入金データ作成）
WORK_PARAM_ID_CRE="CH_WKS_CRDT_NKDT_SKS"

#- 業務パラメータＩＤ（業務機能識別コード請求依頼金額）
WORK_PARAM_ID_IRI="CH_WKS_SEIKY_IRAI"

# 抽出変換コード（抽出のみ） 
CHSHT_CHG_CD="1"

# 請求ステータス（請求済） 
SEIKY_STAT="020"

# 請求方法コード（クレジット）
SEIKY_WAY_CD="4"

# 請求種別コード（定例請求）
SEIKY_SBT_CD1="0"

# 請求種別コード（遅延分）
SEIKY_SBT_CD2="4"

#
#--- ファイル定義
#
#--- 出力ファイル
OUTFILE_CHIFM042001=${MID_DIR_CH}/CHIFM042001.csv

#--- 1.業務パラメータ管理（ZM_M_WORK_PARAM_KNRI）
SQLFILE_ZM0321_01=${SQL_DIR}/AC_U_ZM0321_01.sql
SQLFILE_ZM0321_01_WK_CRE=${SQL_DIR}/${JOBNAME}_AC_U_ZM0321_01_WK_CRE.sql
SQLFILE_ZM0321_01_WK_IRI=${SQL_DIR}/${JOBNAME}_AC_U_ZM0321_01_WK_IRI.sql

CSVFILE_ZM0321_01_WK_CRE=${MID_DIR_CH}/${JOBNAME}_AC_U_ZM0321_01_WK_CRE.csv
CSVFILE_ZM0321_01_WK_IRI=${MID_DIR_CH}/${JOBNAME}_AC_U_ZM0321_01_WK_IRI.csv

#--- 2.クレジット請求データ（CH_T_SEIKY...）
SQLFILE_CH0051_25=${SQL_DIR}/CH_U_CH0051_25.sql
SQLFILE_CH0051_25_WK=${SQL_DIR}/${JOBNAME}_CH_U_CH0051_25_WK.sql

CSVFILE_CH0051_25_UL1=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0051_25_UL1.csv

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

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO60U0110J0,"
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

#
#--- サブルーチン（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($2:rc=$rc) "
    echo $JOBNAME " unload error($2:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
}

#
#--- 各ファイルの存在チェックを行う
#
if [ ! -r ${SQLFILE_ZM0321_01} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQLFILE_ZM0321_01}) "
    echo $JOBNAME " File is nonexist(${SQLFILE_ZM0321_01}) "
    exit ${G_RTN_ERROR}
fi
if [ ! -r ${SQLFILE_CH0051_25} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQLFILE_CH0051_25}) "
    echo $JOBNAME " File is nonexist(${SQLFILE_CH0051_25}) "
    exit ${G_RTN_ERROR}
fi

#-------------------------------------------------------------------------------
#--- 業務パラメータを取得
#-------------------------------------------------------------------------------
#--- パラメータセット
cp -f ${SQLFILE_ZM0321_01} ${SQLFILE_ZM0321_01_WK_CRE}
sed -i -e "s%:OPE_DATE%'${RSLT_OPEDATE}'%"         ${SQLFILE_ZM0321_01_WK_CRE}
sed -i -e "s%:WORK_PARAM%'${WORK_PARAM_ID_CRE}'%"  ${SQLFILE_ZM0321_01_WK_CRE}

cp -f ${SQLFILE_ZM0321_01} ${SQLFILE_ZM0321_01_WK_IRI}
sed -i -e "s%:OPE_DATE%'${RSLT_OPEDATE}'%"         ${SQLFILE_ZM0321_01_WK_IRI}
sed -i -e "s%:WORK_PARAM%'${WORK_PARAM_ID_IRI}'%"  ${SQLFILE_ZM0321_01_WK_IRI}

#--- UNLOAD処理
UNLOAD ${SQLFILE_ZM0321_01_WK_CRE} ${CSVFILE_ZM0321_01_WK_CRE} &
pid_ZM0321_01_WK_CRE=$!

UNLOAD ${SQLFILE_ZM0321_01_WK_IRI} ${CSVFILE_ZM0321_01_WK_IRI} &
pid_ZM0321_01_WK_IRI=$!

#--- すべての抽出が終了するのを待つ
wait ${pid_ZM0321_01_WK_CRE}
rc_ZM0321_01_WK_CRE=$?

wait ${pid_ZM0321_01_WK_IRI}
rc_ZM0321_01_WK_IRI=$?

#- エラー処理
if [ ${rc_ZM0321_01_WK_CRE} -ne 0 ] || [ ${rc_ZM0321_01_WK_IRI} -ne 0 ]
then
    #- エラーメッセージ出力
    if [ ${rc_ZM0321_01_WK_CRE} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD SQLFILE_ZM0321_01_WK_CRE Error($SVC UNLOAD:rc=${rc_ZM0321_01_WK_CRE}) "
        echo $JOBNAME " UNLOAD SQLFILE_ZM0321_01_WK_CRE Error($SVC UNLOAD:rc=${rc_ZM0321_01_WK_CRE}) "
    fi
    if [ ${rc_ZM0321_01_WK_IRI} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD SQLFILE_ZM0321_01_WK_CRE Error($SVC UNLOAD:rc=${rc_ZM0321_01_WK_IRI}) "
        echo $JOBNAME " UNLOAD SQLFILE_ZM0321_01_WK_CRE Error($SVC UNLOAD:rc=${rc_ZM0321_01_WK_IRI}) "
    fi
    #- 異常終了
    exit ${G_RTN_ERROR}
fi

# 業務機能識別コード（クレジット入金データ作成）
WORK_KINO_SKBT_CD_CRE=`cat ${CSVFILE_ZM0321_01_WK_CRE}`

# 業務機能識別コード（請求依頼金額）
WORK_KINO_SKBT_CD_IRI=`cat ${CSVFILE_ZM0321_01_WK_IRI}`

#-------------------------------------------------------------------------------
#--- クレジット請求データを取得
#-------------------------------------------------------------------------------
#--- パラメータセット
cp -f ${SQLFILE_CH0051_25} ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:SYS_CD%'${SYS_CD}'%"                               ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:WORK_KINO_SKBT_CD_CRE%'${WORK_KINO_SKBT_CD_CRE}'%" ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:CHSHT_CHG_CD%'${CHSHT_CHG_CD}'%"                   ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:OPE_DATE%'${RSLT_OPEDATE}'%"                       ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:WORK_KINO_SKBT_CD_IRI%'${WORK_KINO_SKBT_CD_IRI}'%" ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:SEIKY_STAT%'${SEIKY_STAT}'%"                       ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:SEIKY_YM%'${SEIKY_YM}'%"                           ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:SEIKY_REQ_YMD%'${CRE_SEIKY_YMD}'%"                 ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:SEIKY_WAY_CD%'${SEIKY_WAY_CD}'%"                   ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:SEIKY_SBT_CD1%'${SEIKY_SBT_CD1}'%"                 ${SQLFILE_CH0051_25_WK}
sed -i -e "s%:SEIKY_SBT_CD2%'${SEIKY_SBT_CD2}'%"                 ${SQLFILE_CH0051_25_WK}

#--- UNLOAD処理
UNLOAD ${SQLFILE_CH0051_25_WK} ${CSVFILE_CH0051_25_UL1}
rc_CH0051_25=$?

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

#-------------------------------------------------------------------------------
#--- クレジット請求データを編集
#-------------------------------------------------------------------------------
# アンロード項目
#   「請求番号、請求契約番号、請求年月、請求ステータス、請求方法コード、請求金額、支払期限日、利用開始年月日、利用終了年月日」
# を以下の形（CHIFM042）
#   「請求番号、請求契約番号、請求年月、債権年月（空）、債権区分（空）、債権ステータス（空）、請求ステータス、請求繰越フラグ（空）、
#     請求方法コード、初回請求番号（空）、サービスコード（空）、料金項目コード（空）、請求金額、支払期限日、利用開始年月日、利用終了年月日」
# に編集する。
bsortex \
  -copy\
  -input  reclen=80 \
          file=${CSVFILE_CH0051_25_UL1} \
  -record recform=txtcsv \
  -output file=${OUTFILE_CHIFM042001} \
          reconst="0.12,1.10,2.6,EMPTY,EMPTY,EMPTY,3.3,EMPTY,4.1,EMPTY,EMPTY,EMPTY,5.12,6.8,7.8,8.8" \
          linedlmt=crlf ;
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " bsortex -copy Error($SVC bsortex:rc=$rc) "
    echo $JOBNAME " bsortex -copy Error($SVC bsortex:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

exit_rc=$rc

#-------------------------------------------------------------------------------
#- 一時ファイル削除
#-------------------------------------------------------------------------------
if [ ${WK_RM} = "true" ] ;then 
    rm -f ${SQLFILE_ZM0321_01_WK_CRE}
    rm -f ${SQLFILE_ZM0321_01_WK_IRI}
    rm -f ${SQLFILE_CH0051_25_WK}
    rm -f ${CSVFILE_ZM0321_01_WK_CRE}
    rm -f ${CSVFILE_ZM0321_01_WK_IRI}
    rm -f ${CSVFILE_CH0051_25_UL1}
fi ;

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

exit $exit_rc
