#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：利用料金情報マージ・ソート２
#
# 機能          ：料金集計先データ作成の前処理としてファイルをマージしソートする。
#ソートキー：料金項目コード（昇順）
#
#なお、利用料金情報（ACIFM057001.csv）のファイルのみ項目数が異なるため、ファイルを再編成したのちマージソートを行う。
#
# コマンド形式  ：EO3011310J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00         ：2012/05/04  FJ)本多      【ANK-0024-04-00】ファイルの再編成を削除
# v3.01           2012/08/15  FJ）岡田     【ST2-2012-0001464】マンション課題対応
# v4.00           2012/09/27  FJ）鈴木     【ANK-0546-00-00】宅内PF事業本格対応（AC）
# v4.01           2013/02/11  FJ) 小柴     【内部管理番号-0000722】違約金計算（経過措置）のファイル名を変更
# v4.02           2013/03/12  FJ) 浜口     【IT1-2013-0000377】マージ対象にマンション違約金情報（ACIFI016100.csv）を追加
# v4.03           2013/03/23  FJ）今井     【契約障害対応】マンションオーナー向け利用不可期間減処理の追加対応
# v4.04           2013/04/10  FJ）後藤     【ST4-2013-0000413】性能改善_定額料金計算を多重化
# v5.00           2013/08/14  FJ）狭間     【TG1-2013-0000990】利用開始日・利用終了日が空の場合、請求年月の月初月末をセットする
# v5.01           2013/08/27  FJ）狭間     【OM-2013-0000945】サービス番号がnullまたは半角空白20桁の場合は半角空白10桁に置換にする
# v5.02           2013/10/12  FJ) 黒木     【ANK-1580-00-00】eoスマートリンク改修対応
# v8.00           2013/12/23  FJ) 後藤     【ANK-1794-00-00】L2-MVNO対応（請求書電話番号表示（LC含む））＿項目追加
# v9.00           2014/07/07  FJ) 岡田     【OM-2014-0000119】INファイル「ACIFI016076.csv」削除
# v36.00          2018/01/25  FJ) 森       【ANK-3296-00-00】INファイル「ACIFI016119.csv」追加
# v38.00          2018/06/22  FJ) 木村     【ANK-3404-00-00】【性能改善】MVNO料金計算夜間処理のmineo単独契約切離し
# v38.01          2018/08/13  FJ) 原田     【ST-2018-0000030】mineo単独料金データファイル名変更
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

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

EVENT_CD_USE_STA="01"
EVENT_CD_USE_END="02"

#---運用日付取得
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
else
   RSLT_OPEDATE="${OPD}"
fi
#- バッチ運用日
OPEDATE=${RSLT_OPEDATE}
#- 請求年月取得（SEIKY_YM）
. EO3SEIKYYM.sh '03' ${OPEDATE} ${JOBNAME}
#- 月初日取得
. EO3EVENTYMD.sh ${EVENT_CD_USE_STA} ${SEIKY_YM} ${JOBNAME}
USE_STA_YMD=${EVENT_YMD}
#- 月末日取得
. EO3EVENTYMD.sh ${EVENT_CD_USE_END} ${SEIKY_YM} ${JOBNAME}
USE_END_YMD=${EVENT_YMD}

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

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

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

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

# 利用料金情報
ORIGINAL_FILE="${MID_DIR_AC}/ACIFM057001.csv"

# 利用料金情報（マンション項目削除）
EDIT_FILE_01="${MID_DIR_AC}/ACIFM057001_TEMP01_EO3011310J0.csv"

CSVFILE_CAT_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI016106_CAT_WK1.csv
CSVFILE_BSORT_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI016106_BSORT_WK1.csv
CSVFILE_BSORT_WK2=${MID_DIR_AC}/${JOBNAME}_ACIFI016106_BSORT_WK2.csv

# 利用料金情報（サービス番号置換処理、編集元のレコード）
CSVFILE_PADSP_WK0=${MID_DIR_AC}/${JOBNAME}_ACIFI016106_ADSP_WK0.csv

# 利用料金情報（サービス番号置換処理、サービス番号＝null（空文字）のレコード）
CSVFILE_PADSP_WK1=${MID_DIR_AC}/${JOBNAME}_ACIFI016106_ADSP_WK1.csv

# 利用料金情報（サービス番号置換処理、サービス番号＝半角空白（20桁）のレコード）
CSVFILE_PADSP_WK2=${MID_DIR_AC}/${JOBNAME}_ACIFI016106_ADSP_WK2.csv

# 利用料金情報（サービス番号置換処理、上記以外のレコード）
CSVFILE_PADSP_WK3=${MID_DIR_AC}/${JOBNAME}_ACIFI016106_ADSP_WK3.csv

# 利用料金情報（出力）
OUTFILE_ACIFI016106=${MID_DIR_AC}/ACIFI016106.csv

#
#---入力ファイルチェック関数
#
SF_fileCheck() {

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

#
#---入力ファイル存在チェック（利用料金情報）
#
SF_fileCheck ${ORIGINAL_FILE}

#
#---マンション系３項目を削除
#
cat ${ORIGINAL_FILE} | cut -d, -f1-30,34 > ${EDIT_FILE_01}
rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " CAT Error($SVC cat:rc=$rc) "
    echo $JOBNAME " CAT Error($SVC cat:rc=$rc) "
    exit ${G_RTN_ERROR}
fi

#
#---入力ファイルを結合
#
#ANK-3296-00-00 MOD START
#OM-2014-0000119 MOD START
#cat ${MID_DIR_AC}/ACIFI016009_[0-9].csv \
#    ${MID_DIR_AC}/ACIFI016102.csv \
#    ${MID_DIR_AC}/ACIFI016003.csv \
#    ${MID_DIR_AC}/ACIFI016076.csv \
#    ${MID_DIR_AC}/ACIFI016098.csv \
#    ${EDIT_FILE_01} \
#    ${MID_DIR_AC}/ACIFM084045.csv \
#    ${MID_DIR_AC}/ACIFM084046.csv \
#    ${MID_DIR_AC}/ACIFI016080.csv \
#    ${MID_DIR_AC}/ACIFI016089.csv \
#    ${MID_DIR_AC}/ACIFI016088.csv \
#    ${MID_DIR_AC}/ACIFI016100.csv \
#    > ${CSVFILE_CAT_WK1}
#cat ${MID_DIR_AC}/ACIFI016009_[0-9].csv \
#    ${MID_DIR_AC}/ACIFI016102.csv \
#    ${MID_DIR_AC}/ACIFI016003.csv \
#    ${MID_DIR_AC}/ACIFI016098.csv \
#    ${EDIT_FILE_01} \
#    ${MID_DIR_AC}/ACIFM084045.csv \
#    ${MID_DIR_AC}/ACIFM084046.csv \
#    ${MID_DIR_AC}/ACIFI016080.csv \
#    ${MID_DIR_AC}/ACIFI016089.csv \
#    ${MID_DIR_AC}/ACIFI016088.csv \
#    ${MID_DIR_AC}/ACIFI016100.csv \
#    > ${CSVFILE_CAT_WK1}
#OM-2014-0000119 MOD END
#ANK-3404-00-00 MOD START
#cat ${MID_DIR_AC}/ACIFI016009_[0-9].csv \
#    ${MID_DIR_AC}/ACIFI016102.csv \
#    ${MID_DIR_AC}/ACIFI016003.csv \
#    ${MID_DIR_AC}/ACIFI016098.csv \
#    ${EDIT_FILE_01} \
#    ${MID_DIR_AC}/ACIFM084045.csv \
#    ${MID_DIR_AC}/ACIFM084046.csv \
#    ${MID_DIR_AC}/ACIFI016080.csv \
#    ${MID_DIR_AC}/ACIFI016089.csv \
#    ${MID_DIR_AC}/ACIFI016088.csv \
#    ${MID_DIR_AC}/ACIFI016100.csv \
#    ${MID_DIR_AC}/ACIFI016119.csv \
#    > ${CSVFILE_CAT_WK1}
#ANK-3296-00-00 MOD END
#
#---mineo単独料金情報ファイルの存在チェック
#
# ST-2018-0000030 MOD START
#if [ ! -r ${MID_DIR_AC}/ACIFI016120.csv ]; then
if [ ! -r ${MID_DIR_AC}/ACIFI016121.csv ]; then
# ST-2018-0000030 MOD END
    cat ${MID_DIR_AC}/ACIFI016009_[0-9].csv \
        ${MID_DIR_AC}/ACIFI016102.csv \
        ${MID_DIR_AC}/ACIFI016003.csv \
        ${MID_DIR_AC}/ACIFI016098.csv \
        ${EDIT_FILE_01} \
        ${MID_DIR_AC}/ACIFM084045.csv \
        ${MID_DIR_AC}/ACIFM084046.csv \
        ${MID_DIR_AC}/ACIFI016080.csv \
        ${MID_DIR_AC}/ACIFI016089.csv \
        ${MID_DIR_AC}/ACIFI016088.csv \
        ${MID_DIR_AC}/ACIFI016100.csv \
        ${MID_DIR_AC}/ACIFI016119.csv \
        > ${CSVFILE_CAT_WK1}
else
# ST-2018-0000030 MOD START
#    cat ${MID_DIR_AC}/ACIFI016009_[0-9].csv \
#        ${MID_DIR_AC}/ACIFI016102.csv \
#        ${MID_DIR_AC}/ACIFI016003.csv \
#        ${MID_DIR_AC}/ACIFI016098.csv \
#        ${EDIT_FILE_01} \
#        ${MID_DIR_AC}/ACIFM084045.csv \
#        ${MID_DIR_AC}/ACIFM084046.csv \
#        ${MID_DIR_AC}/ACIFI016080.csv \
#        ${MID_DIR_AC}/ACIFI016089.csv \
#        ${MID_DIR_AC}/ACIFI016088.csv \
#        ${MID_DIR_AC}/ACIFI016100.csv \
#        ${MID_DIR_AC}/ACIFI016119.csv \
#        ${MID_DIR_AC}/ACIFI016120.csv \
    cat ${MID_DIR_AC}/ACIFI016009_[0-9].csv \
        ${MID_DIR_AC}/ACIFI016102.csv \
        ${MID_DIR_AC}/ACIFI016003.csv \
        ${MID_DIR_AC}/ACIFI016098.csv \
        ${EDIT_FILE_01} \
        ${MID_DIR_AC}/ACIFM084045.csv \
        ${MID_DIR_AC}/ACIFM084046.csv \
        ${MID_DIR_AC}/ACIFI016080.csv \
        ${MID_DIR_AC}/ACIFI016089.csv \
        ${MID_DIR_AC}/ACIFI016088.csv \
        ${MID_DIR_AC}/ACIFI016100.csv \
        ${MID_DIR_AC}/ACIFI016119.csv \
        ${MID_DIR_AC}/ACIFI016121.csv \
        > ${CSVFILE_CAT_WK1}
# ST-2018-0000030 MOD END
fi
#ANK-3404-00-00 MOD END

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

#
#---利用開始日の有無で分割
#
bsortex -copy -record recform=txtcsv \
  -input reclen=450 file=${CSVFILE_CAT_WK1} \
  -output file=${CSVFILE_BSORT_WK1} case="14.8asc.le.'0'" \
   reconst="0.10,1.6,2.14,3.12,4.11,5.20,6.12,7.1,8.2,9.3,10.12,11.11,12.2,13.12,'${USE_STA_YMD}'.8asc,'${USE_END_YMD}'.8asc,16.END" \
  -output file=${CSVFILE_BSORT_WK2} case=other
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

#
#---再結合
#
cat ${CSVFILE_BSORT_WK1} ${CSVFILE_BSORT_WK2} > ${CSVFILE_PADSP_WK0}

#
#---サービス番号がnull（空文字）のレコードと半角空白20桁のレコード、それ以外のレコードに分割する
#---その際、サービス番号がnullまたは半角空白20桁のものは半角空白10桁に置き換える
#
bsortex \
  -copy \
  -record recform=txtcsv \
  -input reclen=450 file=${CSVFILE_PADSP_WK0} \
  -output file=${CSVFILE_PADSP_WK1} case="5.20asc.lt.' '" \
    reconst="0.10,1.6,2.14,3.12,4.11,'          '.10asc,6.END" \
  -output file=${CSVFILE_PADSP_WK2} case="5.20asc.eq.'                    '" \
    reconst="0.10,1.6,2.14,3.12,4.11,'          '.10asc,6.END" \
  -output file=${CSVFILE_PADSP_WK3} case=other \
    reconst="0.END"
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

#
#---再結合してソート
#
bsort -s -z450 -0.10asc,5.20asc,7.1asc,25.1ascr -Tflt -t, \
  -o ${OUTFILE_ACIFI016106} \
  ${CSVFILE_PADSP_WK1} \
  ${CSVFILE_PADSP_WK2} \
  ${CSVFILE_PADSP_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

#
#---中間ファイルの削除
#
rm -f ${EDIT_FILE_01} ${CSVFILE_CAT_WK1} ${CSVFILE_BSORT_WK1} ${CSVFILE_BSORT_WK2} \
  ${CSVFILE_PADSP_WK0} ${CSVFILE_PADSP_WK1} ${CSVFILE_PADSP_WK2} ${CSVFILE_PADSP_WK3}
# ST-2018-0000030 DEL START
#ANK-3404-00-00 ADD START
#if [ -r ${MID_DIR_AC}/ACIFI016120.csv ]; then
#    rm -f ${MID_DIR_AC}/ACIFI016120.csv
#fi
#ANK-3404-00-00 ADD END
# ST-2018-0000030 DEL END
#
#--- ジョブの終了メッセージを出力する
#
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME
sh ${G_TOOLSH}/EOK010210J0.sh CS00026I $JOBNAME

exit ${G_RTN_NORMAL}
