#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：未収残高対象翌月計上充当抽出
#
# 機能          ：料金計算月翌月初日以降に充当された金額は翌月会計計上対象として扱うため、充当額から除外する必要がある。
#除外情報として、収納日が料金計算月翌月初日以降の入金に紐付く充当情報を抽出し、未収残高対象翌月計上充当情報を作成する。
#
#未収残高対象債権特定条件
#（ア）会計処理日時点で未収残が存在する債権(※)
#　　債権ステータス：リアル収納("030")、仮収納("040")、一部収納("060")
#（イ）料金計算月末日までに充当完了した債権
#　　債権ステータス：収納済み("050")
#　　充当完了日≧料金計算月翌月以降
#（ウ）料金計算翌月に貸倒登録された債権
#　　債権ステータス：貸倒登録済("080")
#　　債権償却日≧料金計算月翌月以降
#　　
#上記未収残高対象債権に対応する、収納日が翌会計年月の充当額を抽出する。
#但し、金庫充当の場合は、充当日が翌会計年月の充当額を抽出する。
#
#出力ファイルを以下の順にソートを行う。
#ソート順：請求契約番号(昇順)＞債権番号(昇順)
#
#【使用アンロードＳＱＬ】
#CH_U_CH0011_27.sql
#CH_U_CH0011_28.sql
#CH_U_CH0011_29.sql
#
#
# コマンド形式  ：EO61002DHJ0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v10.00          2014/07/15  FJ) 江森     【ANK-2053-00-00】貸倒れ対象者一覧の免税額追加対応
# v14.00          2015/05/26  FJ）土井     【OM-2015-0001265】バックグラウンド実行削除
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#

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

[ $# -eq 2 ] &&TAJUKIDO="_$2" ;
#---ワークファイル削除モード
WK_RM=true

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

#--- 請求年月(yyyymm)取得
EVENT_CD="'21'"
. EO3SEIKYYM.sh ${EVENT_CD} ${RSLT_OPEDATE} ${JOBNAME}
SEIKY_YM_WK=${SEIKY_YM}"01"

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

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

P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=EO61002DHJ0,"
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=${MID_DIR_CH}/CHIFM232004.csv

#-------------------------------------------------------------
#--- サブルーチン（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
}

#-------------------------------------------------------------
#--- 未収債権（定例請求以外）（ア）
#-------------------------------------------------------------
SQLFILE_CH0011_27=${SQL_DIR}/CH_U_CH0011_27.sql
SQLFILE_CH0011_27_WK=${SQL_DIR}/${JOBNAME}_CH_U_CH0011_27_WK_1.sql

CSVFILE_CH0011_27_UNLOAD=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0011_27_UNLOAD_WK_1.cs

#-------------------------------------------------------------
#--- 充当完了債権（イ）
#-------------------------------------------------------------
SQLFILE_CH0011_28=${SQL_DIR}/CH_U_CH0011_28.sql
SQLFILE_CH0011_28_WK=${SQL_DIR}/${JOBNAME}_CH_U_CH0011_28_WK_1.sql

CSVFILE_CH0011_28_UNLOAD=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0011_28_UNLOAD_WK_1.cs

#-------------------------------------------------------------
#--- 貸倒登録債権（ウ）
#-------------------------------------------------------------
SQLFILE_CH0011_29=${SQL_DIR}/CH_U_CH0011_29.sql
SQLFILE_CH0011_29_WK=${SQL_DIR}/${JOBNAME}_CH_U_CH0011_29_WK_1.sql

CSVFILE_CH0011_29_UNLOAD=${MID_DIR_CH}/${JOBNAME}_CH_U_CH0011_29_UNLOAD_WK_1.cs

#-------------------------------------------------------------
#--- 未収残高対象翌月計上充当取得
#-------------------------------------------------------------
#料金計算月翌月初日
PRC_CAL_NEXT_MONTH_FIRSTYMD_WK=$(date +%Y%m%d --date "${SEIKY_YM_WK} 1 month")

# 2015/05/26  FJ）土井 【OM-2015-0001265】バックグラウンド実行削除 MOD START
# バックグランド実行の & を削除し、実行後をプロセスID取得から実行結果取得に変更

#(
#  sed -e "s/:PRC_CAL_NEXT_MONTH_FIRSTYMD/'${PRC_CAL_NEXT_MONTH_FIRSTYMD_WK}'/" ${SQLFILE_CH0011_27} > ${SQLFILE_CH0011_27_WK}
#  UNLOAD ${SQLFILE_CH0011_27_WK}  ${CSVFILE_CH0011_27_UNLOAD}
#) &
#pid_0011_27=$!
sed -e "s/:PRC_CAL_NEXT_MONTH_FIRSTYMD/'${PRC_CAL_NEXT_MONTH_FIRSTYMD_WK}'/" ${SQLFILE_CH0011_27} > ${SQLFILE_CH0011_27_WK}
UNLOAD ${SQLFILE_CH0011_27_WK}  ${CSVFILE_CH0011_27_UNLOAD}
rc_0011_27=$?

#(
#  sed -e "s/:PRC_CAL_NEXT_MONTH_FIRSTYMD/'${PRC_CAL_NEXT_MONTH_FIRSTYMD_WK}'/" ${SQLFILE_CH0011_28} > ${SQLFILE_CH0011_28_WK}
#  UNLOAD ${SQLFILE_CH0011_28_WK}  ${CSVFILE_CH0011_28_UNLOAD}
#) &
#pid_0011_28=$!
sed -e "s/:PRC_CAL_NEXT_MONTH_FIRSTYMD/'${PRC_CAL_NEXT_MONTH_FIRSTYMD_WK}'/" ${SQLFILE_CH0011_28} > ${SQLFILE_CH0011_28_WK}
UNLOAD ${SQLFILE_CH0011_28_WK}  ${CSVFILE_CH0011_28_UNLOAD}
rc_0011_28=$?

#(
#  sed -e "s/:PRC_CAL_NEXT_MONTH_FIRSTYMD/'${PRC_CAL_NEXT_MONTH_FIRSTYMD_WK}'/" ${SQLFILE_CH0011_29} > ${SQLFILE_CH0011_29_WK}
#  UNLOAD ${SQLFILE_CH0011_29_WK}  ${CSVFILE_CH0011_29_UNLOAD}
#) &
#pid_0011_29=$!
sed -e "s/:PRC_CAL_NEXT_MONTH_FIRSTYMD/'${PRC_CAL_NEXT_MONTH_FIRSTYMD_WK}'/" ${SQLFILE_CH0011_29} > ${SQLFILE_CH0011_29_WK}
UNLOAD ${SQLFILE_CH0011_29_WK}  ${CSVFILE_CH0011_29_UNLOAD}
rc_0011_29=$?

# 2015/05/26  FJ）土井 【OM-2015-0001265】バックグラウンド実行削除 MOD END

#-------------------------------------------------------------
#--- 4.エラーハンドリング
#-------------------------------------------------------------
# 2015/05/26  FJ）土井 【OM-2015-0001265】バックグラウンド実行削除 DEL START
#wait ${pid_0011_27}
#rc_0011_27=$?
#
#wait ${pid_0011_28}
#rc_0011_28=$?
#
#wait ${pid_0011_29}
#rc_0011_29=$?
# 2015/05/26  FJ）土井 【OM-2015-0001265】バックグラウンド実行削除 DEL END

if [ ${rc_0011_27} -ne 0 ] || [ ${rc_0011_28} -ne 0 ] || [ ${rc_0011_29} -ne 0 ]
then
    #- エラーメッセージ出力
    if [ ${rc_0011_27} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD ERROR(CH0011_27:rc=${rc_0011_27}) "
        echo $JOBNAME "UNLOAD ERROR(CH0011_18_02:rc=${rc_0011_27}) "
    fi
    if [ ${rc_0011_28} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD ERROR(CH0011_18_12:rc=${rc_0011_28}) "
        echo $JOBNAME "UNLOAD ERROR(CH0011_18_12:rc=${rc_0011_28}) "
    fi
    if [ ${rc_0011_29} -ne 0 ]
    then
        sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD ERROR(CH0011_18_24:rc=${rc_0011_29}) "
        echo $JOBNAME "UNLOAD ERROR(CH0011_18_24:rc=${rc_0011_29}) "
    fi
    
    #- 異常終了
    exit ${G_RTN_ERROR}
fi

#-----------------------------------------------------------------------------------------------
#--- 取得した未収残高対象翌月計上充当をマージ・ソート（ソート順：請求契約番号(昇順)＞債権番号(昇順)
#-----------------------------------------------------------------------------------------------
bsort -s -z100 -0.10asca,1.12asca -Tflt -t, -o ${OUTFILE} ${CSVFILE_CH0011_27_UNLOAD} ${CSVFILE_CH0011_28_UNLOAD} ${CSVFILE_CH0011_29_UNLOAD}

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 ${SQLFILE_CH0011_27_WK}
    rm -f ${CSVFILE_CH0011_27_UNLOAD}
    rm -f ${SQLFILE_CH0011_28_WK}
    rm -f ${CSVFILE_CH0011_28_UNLOAD}
    rm -f ${SQLFILE_CH0011_29_WK}
    rm -f ${CSVFILE_CH0011_29_UNLOAD}
fi

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

exit ${G_RTN_NORMAL}
