#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：過去直近負担方式抽出
#
# 機能          ：請求スキーマをアンロードし、請求契約番号単位に過去直近定例請求の請求手数料負担方式が企業負担のレコードを取得する。
#
# コマンド形式  ：EO6260220J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v54.00.00       2021/09/03  FJ)西窪     【ANK-4102-00-00】窓口払い手数料の顧客負担方式導入　STEP3
#
##############################################################

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

#
#---ツール格納場所
#
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
OPEDATE="'${RSLT_OPEDATE}'"


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

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


#--- 前月請求年月取得
SEIKY_YYYYMM01=${SEIKY_YM}"01"
SEIKY_YYYYMM01_ZEN=`date -d "1 day ago ${SEIKY_YYYYMM01}" +'%Y%m%d'`
SEIKY_YYYYMM_ZEN=`echo ${SEIKY_YYYYMM01_ZEN} |cut -c 1-6`


#--- 抽出開始対象請求年月取得(2年間)
SEIKY_YYYYMM01_TWO_YEAR_AGO=`date -d "2 years ago ${SEIKY_YYYYMM01}" +%Y%m%d`
TARGET_SEIKY_YM_STA=`echo ${SEIKY_YYYYMM01_TWO_YEAR_AGO} |cut -c 1-6`

TARGET_YM="202104"

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

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

#-- ファイル定義
SQLFILE_SEIKY=${SQL_DIR}/CH_U_CH0051_44.sql
OUTFILE_SEIKY=${MID_DIR_AC}/ACIFM334008.csv
OUTFILE_SEIKY_WK1=${LOC_DIR_AC}/ACIFM334008_WK1.csv
OUTFILE_SEIKY_WK2=${LOC_DIR_AC}/ACIFM334008_WK2.csv
OUTFILE_SEIKY_WK3=${LOC_DIR_AC}/ACIFM334008_WK3.csv


####################################################
#--------- メイン処理 ---------#
####################################################

#-- アンロード
UNLOAD ${SQLFILE_SEIKY} ${OUTFILE_SEIKY_WK1}

#--- 抽出開始対象請求年月の最過去は2021年3月
if [ "$TARGET_SEIKY_YM_STA" -lt "202103" ]; then
    TARGET_SEIKY_YM_STA="202103"
fi

#--「請求年月が2021年3月～請求月前月」かつ「無効フラグが"0"」かつ「請求種別コードが'0'」を抽出
bsortex -copy -record recform=txtcsv \
        -input  reclen=1000 file=${OUTFILE_SEIKY_WK1} \
        include="1.6asc.ge.'${TARGET_SEIKY_YM_STA}'.and.1.6asc.le.'${SEIKY_YYYYMM_ZEN}'.and.4.1asc.eq.'0'.and.2.1asc.eq.'0'" \
        -output file=${OUTFILE_SEIKY_WK2} 
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 \
	-sort key="0.10asc,1.6asc" \
	-input reclen=1000 file=${OUTFILE_SEIKY_WK2} \
	-record recform=txtcsv \
	-output reconst="0.10,3.1" \
| bsortex \
	-merge key="0.10asc" \
	-input reclen=1000 \
	-record recform=txtcsv \
	-summary suppress last \
	-output file=${OUTFILE_SEIKY_WK3} 

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

#--手数料負担方式コードが"2"(企業負担）のレコードのみ出力
bsortex -copy -record recform=txtcsv \
        -input  reclen=1000 file=${OUTFILE_SEIKY_WK3} \
        include="1.1asc.eq.'2'" \
        -output reconst="0.10" file=${OUTFILE_SEIKY}

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



# 一時ファイル削除
rm -f ${OUTFILE_SEIKY_WK1}
rm -f ${OUTFILE_SEIKY_WK2}
rm -f ${OUTFILE_SEIKY_WK3}

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

exit ${G_RTN_NORMAL}
