#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：ＢＢＳＳ社事業者間精算情報作成
#
# 機能          ：ＢＢＳＳ社事業者間精算情報を作成する。
#
# コマンド形式  ：EO31M0110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v32.00.00      2017/05/02   FJ)寺園     【ANK-3149-00-00】新セキュリティパック導入
# v32.00.01      2017/05/11   FJ)寺園     【ANK-3149-00-00】新セキュリティパック導入（再）
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---業務で必要な変数定義
#
#xxx=xxxxxxx
##############################################################
# 業務処理
##############################################################
sh ${G_TOOLSH}/EOK010210J0.sh CS00025I $JOBNAME

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

#---前月末日を取得
NOW_MONTH_ONEDAY=`date -d "${RSLT_OPEDATE}" +'%Y%m'`01
PREV_MONTH_LASTDAY=`date -d "-1 day ${NOW_MONTH_ONEDAY}" +'%Y%m%d'`
#---前月1日を取得
PREV_MONTH_ONEDAY=`date -d "-1 month ${RSLT_OPEDATE}" +'%Y%m'`01
#---翌月1日を取得
NEXT_MONTH_ONEDAY=`date -d "1 month ${RSLT_OPEDATE}" +'%Y%m'`01

#---請求年月を取得
SEIKY_YM=`echo ${PREV_MONTH_ONEDAY} | cut -c 1-6`

#
#---ファイル定義
#
DEFFILE1=${G_TOOLSH}/util/def/KK_CM_0618.def
DEFFILE2=${G_TOOLSH}/util/def/KK_CM_0619.def
DEFFILE4=${G_TOOLSH}/util/def/KK_CM_0621.def
TMPDEFFILE1=${ULD_WORK_DIR}/KK_CM_0618_tmp.def
TMPDEFFILE2=${ULD_WORK_DIR}/KK_CM_0619_tmp.def
TMPDEFFILE4=${ULD_WORK_DIR}/KK_CM_0621_tmp.def

#
#---ワークファイル
#
OUTFILE1=${MID_DIR_AC}/EO31M0110J0_OUT1_SORT.csv
OUTFILE1_SORT=${MID_DIR_AC}/EO31M0110J0_KK0351_SORT1.csv
OUTFILE2=${MID_DIR_AC}/EO31M0110J0_OUT2_UNLOAD.csv
OUTFILE3=${MID_DIR_AC}/EO31M0110J0_OUT3_SORT.csv
OUTFILE4=${MID_DIR_AC}/EO31M0110J0_OUT4_SORT.csv
OUTFILE5=${MID_DIR_AC}/EO31M0110J0_OUT5_SORT.csv
OUTFILE5_SORT1=${MID_DIR_AC}/EO31M0110J0_KK0081_SORT.csv
OUTFILE5_SORT2=${MID_DIR_AC}/EO31M0110J0_KK0351_SORT2.csv
OUTFILE5_MATCHING=${MID_DIR_AC}/EO31M0110J0_MATCHING2.csv
OUTFILE6=${MID_DIR_AC}/EO31M0110J0_OUT6_SORT.csv
OUTFILE7_REPLACEMENT_BF=${MID_DIR_AC}/EO31M0110J0_SUMMARY.csv
OUTFILE7=${MID_DIR_AC}/ACIFM281001.csv
OUTFILE8=${MID_DIR_AC}/ACIFM282001.csv

#オプションサービス契約(カレント)
COMULD2_KK0351_CUR=${MID_DIR_CC}/CCIFM026002.csv
#サービス契約(カレント)
COMULD2_KK0081_CUR=${MID_DIR_CC}/CCIFM020002.csv

#請求内訳アンロードＳＱＬ
SQLFILE_01=${SQL_DIR}/AC_U_CH0101_03.sql
SQLFILE_01_WRK=${SQL_DIR}/AC_U_CH0101_03_WORK.sql
#他事業者契約異動通知アンロードＳＱＬ
SQLFILE_02=${SQL_DIR}/AC_U_KK3081_01.sql
#他事業者契約異動通知アンロードファイル
COMULD2_KK3081_UNLD=${MID_DIR_AC}/EO31M0110J0_KK3081_UNLOAD.csv

#v32.00.01 ADD START
OUTFILE1_SORT_WK=${MID_DIR_AC}/EO31M0110J0_KK0351_SORT1_WK.csv
#請求内訳アンロードＳＱＬ（セット割分）
SQLFILE_03=${SQL_DIR}/AC_U_CH0101_06.sql
SQLFILE_03_WRK=${SQL_DIR}/AC_U_CH0101_06_WORK.sql
OUTFILE9=${MID_DIR_AC}/EO31M0110J0_OUT7_UNLOAD.csv
#v32.00.01 ADD END

#
#---キー項目でソート（オプションサービス契約(カレント)）
#   ソートＫＥＹ
#   3.4     オプションサービスコード
#   7.10    サービス契約番号
#   0.12    オプションサービス契約番号
#   出力項目
#   3.4     オプションサービスコード
#   0.12    オプションサービス契約番号
#   7.10    サービス契約番号
#   32.8    照査年月日
#   2.3     オプションサービス契約ステータス
#   17.8    サービスキャンセル年月日
#   24.8    サービス解約年月日
#v32.00.01 MOD START
#bsortex -sort key="0.4asc,2.10asc" -record recform=txtcsv -input file=${COMULD2_KK0351_CUR} reclen=${ULD2_REC_LEN_KK0351} reconst="3.4,0.12,7.10,32.8,2.3,17.8,24.8" \
#        include="2.3asc.ge.'020'.and.(3.4asc.eq.'B131'.or.3.4asc.eq.'B132')" \
# -output file=${OUTFILE1_SORT}
bsortex -sort key="0.4asc,2.10asc,1.12asc" -record recform=txtcsv -input file=${COMULD2_KK0351_CUR} reclen=${ULD2_REC_LEN_KK0351} reconst="3.4,0.12,7.10,32.8,2.3,17.8,24.8" \
        include="2.3asc.ge.'020'.and.(3.4asc.eq.'B131'.or.3.4asc.eq.'B132')" \
 -output file=${OUTFILE1_SORT_WK}
#v32.00.01 MOD END

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

#v32.00.01 ADD START
#
#--- マージ（同一サービス契約番号内の最新オプションのみを残す）
#
bsortex -merge key=0.4asc,2.10asc -record recform=txtcsv -input file=${OUTFILE1_SORT_WK} reclen=${ULD2_REC_LEN_KK0351} -summary suppress last -output file=${OUTFILE1_SORT}

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " MERGE Error($SVC merge:rc=$rc) "
    echo $JOBNAME " MERGE Error($SVC merge:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
#v32.00.01 ADD END

#
#---前月オプション新規申込分を抽出
#   出力項目
#   0.4     オプションサービスコード
#   2.10    サービス契約番号
#           件数（"1"を設定）
#   抽出条件
#   照査年月日＝運用日の前月
bsortex -sort key="0.4asc,1.10asc" -record recform=txtcsv -input file=${OUTFILE1_SORT} reclen=100 reconst="0.4,2.10" \
         include="3.8asc.ge.'${PREV_MONTH_ONEDAY}'.and.3.8asc.le.'${PREV_MONTH_LASTDAY}'" \
 -output file=${OUTFILE1} reconst="0.4,1.10,'1'.1ascA"

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_01} ${SQLFILE_01_WRK}
sed -i -e "s/\:SEIKY_YM/'${SEIKY_YM}'/"       ${SQLFILE_01_WRK} 

sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_01_WRK $OUTFILE2

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

#
#--- UNLOAD処理(他事業者契約異動通知)
#
sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_02 $COMULD2_KK3081_UNLD

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

#
#---前月オプション解約分を抽出
#   出力項目
#   0.4     オプションサービスコード
#   2.10    サービス契約番号
#           件数（"1"を設定）
#   抽出条件
#   他事業者契約異動発生年月日＝運用日の前月
#   他事業者契約異動通知状態コード＝「0：未通知」「1：通知済」「3：通知処理中」
bsortex -sort key="0.4asc,1.10asc" -record recform=txtcsv -input file=${COMULD2_KK3081_UNLD} reclen=100 reconst="0.4,2.10" \
         include="4.8asc.ge.'${PREV_MONTH_ONEDAY}'.and.4.8asc.le.'${PREV_MONTH_LASTDAY}'.and.(5.1asc.eq.'0'.or.5.1asc.eq.'1'.or.5.1asc.eq.'3')" \
  -output file=${OUTFILE3} reconst="0.4,1.10,'1'.1ascA"

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

#
#--- 前月オプション契約分を抽出
#    出力項目
#    0.4     オプションサービスコード
#    2.10    サービス契約番号
#            件数（"1"を設定）
#   抽出条件
#   ・オプションサービス契約．照査年月日≦運用日の前月
#   ・（オプションサービス契約．サービスキャンセル年月日＝未設定
#        または
#       オプションサービス契約．サービスキャンセル年月日≧運用日の前月）
#   ・（オプションサービス契約．サービス解約年月日＝未設定
#        または
#       オプションサービス契約．サービス解約年月日≧運用日の前月）
#
bsortex -sort key="0.4asc,2.10asc" -record recform=txtcsv -input file=${OUTFILE1_SORT} reclen=100 \
         include="3.8asc.le.'${PREV_MONTH_LASTDAY}'.and.(5.8asc.lt.' '.or.5.8asc.ge.'${PREV_MONTH_ONEDAY}').and.(6.8asc.lt.' '.or.6.8asc.ge.'${PREV_MONTH_ONEDAY}')" \
  -output file=${OUTFILE4} reconst="0.4,2.10,'1'.1ascA"

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

#
#--- キー項目でソート（サービス契約(カレント)）
#    ソートＫＥＹ
#    0.10    サービス契約番号
#    出力項目
#    0.10    サービス契約番号
#
bsortex -sort key="0.10asc" -record recform=txtcsv -input file=${COMULD2_KK0081_CUR} reclen=${ULD2_REC_LEN_KK0081} reconst="0.10" \
         include="(2.3asc.eq.'020'.or.2.3asc.eq.'030')" \
  -output file=${OUTFILE5_SORT1}

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.10    サービス契約番号
#    出力項目
#    0.4     オプションサービスコード
#    1.12    オプションサービス契約番号
#    2.10    サービス契約番号
#    3.8     照査年月日
#    4.3     オプションサービス契約ステータス
#    5.8     サービスキャンセル年月日
#    6.8     サービス解約年月日
bsortex -sort key=2.10asc -record recform=txtcsv \
  -input file=${OUTFILE1_SORT} reclen=100 \
         include="(4.3asc.eq.'020'.or.4.3asc.eq.'030')" \
  -output file=${OUTFILE5_SORT2}

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

#
#--- 環境変数の設定を行う（出力ファイル情報の設定）
#
export ZTLTMPDIR=${ULD_WORK_DIR}
export ZTLOUTFILE=${OUTFILE5_MATCHING}

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE2} > ${TMPDEFFILE2}

sed -i -e s@'${MID_DIR_AC}'@${MID_DIR_AC}@g ${TMPDEFFILE2}

#
#--- ファイルマッチング処理
#     ・オプションサービス契約新規申込ファイル２
#     ・ネット未開通契約ファイル
#
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE2}

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

#
#--- 回線開通遅延のオプション契約分を抽出
#    出力項目
#    0.4     オプションサービスコード
#    2.10    サービス契約番号
#            件数（"1"を設定）
bsortex -sort key="0.4asc,1.10asc" -record recform=txtcsv -input file=${OUTFILE5_MATCHING} reclen=100 reconst="0.4,1.10" \
  -output file=${OUTFILE5} reconst="0.4,1.10,'1'.1ascA"

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

#
#--- 強制解約済み未連携分のオプション契約を抽出
#    出力項目
#    0.4     オプションサービスコード
#    2.10    サービス契約番号
#            件数（"1"を設定）
#   抽出条件
#   オプションサービスコード＝「B131：インターネットサギウォールライセンス解約依頼」
#   他事業者契約異動詳細コード＝「01：強制解約」
#   他事業者契約異動通知状態コード＝「0：未通知」
#   他事業者契約異動発生年月日≦運用日の前月
#   他事業者契約異動通知予定年月日≧運用日の前月
bsortex -sort key="0.4asc,2.10asc" -record recform=txtcsv -input file=${COMULD2_KK3081_UNLD} reclen=100 \
         include="0.4asc.eq.'B131'.and.3.2asc.eq.'01'.and.5.1asc.eq.'0'.and.4.8asc.le.'${PREV_MONTH_LASTDAY}'.and.6.8asc.ge.'${NEXT_MONTH_ONEDAY}'" \
  -output file=${OUTFILE6} reconst="0.4,2.10,'1'.1ascA"

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

#v32.00.01 ADD START
#
#--- UNLOAD処理(請求内訳)（セット割分）
#
cp -f ${SQLFILE_03} ${SQLFILE_03_WRK}
sed -i -e "s/\:SEIKY_YM/'${SEIKY_YM}'/"       ${SQLFILE_03_WRK} 

sh ${G_TOOLSH}/EOKULD02.sh $SQLFILE_03_WRK $OUTFILE9

rc=$?
if [ $rc -ne 0 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) " 
    echo $JOBNAME " UNLOAD Error($SVC unload:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
#v32.00.01 ADD END

#
#--- 環境変数の設定を行う（出力ファイル情報の設定）
#
export ZTLTMPDIR=${ULD_WORK_DIR}
export ZTLOUTFILE=${OUTFILE7_REPLACEMENT_BF}

#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE4} > ${TMPDEFFILE4}

sed -i -e s@'${MID_DIR_AC}'@${MID_DIR_AC}@g ${TMPDEFFILE4}

#
#--- ファイルマッチング処理
#     ・オプションサービス契約前月新規申込ファイル
#     ・オプション料金課金ファイル
#     ・オプションサービス契約前月解約ファイル
#     ・オプションサービス契約ファイル
#     ・回線開通遅延オプションサービス契約ファイル
#     ・オプションサービス契約強制解約済み未連携ファイル
#     ・オプション料金課金（セット割）ファイル
#
${G_TOOLSH}/util/bin/ZTLMAT01 ${TMPDEFFILE4}

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

#
#--- サマリー処理
#     ・オプションサービス契約前月新規申込ファイル
#     ・オプション料金課金ファイル
#     ・オプションサービス契約前月解約ファイル
#     ・オプションサービス契約ファイル
#     ・回線開通遅延オプションサービス契約ファイル
#     ・オプションサービス契約強制解約済み未連携ファイル
#     ・オプション料金課金（セット割）ファイル
#
cat ${OUTFILE7_REPLACEMENT_BF} | sed -e 's/\"\"/\"0\"/g' > ${OUTFILE7}

# ファイルサイズが0バイト以上の場合、サマリー処理を行なう
if [ -s ${OUTFILE7} ]
then
#v32.00.01 MOD START
#    bsortex -sort key="0.4asc" -record recform=txtcsv -input file=${OUTFILE7} reclen=100 -summary field="1.10ascud,2.10ascud,3.10ascud,4.10ascud,5.10ascud,6.10ascud" \
#    -output file=${OUTFILE8} reconst="0.4,1.10,2.10,3.10,4.10,5.10,6.10" linedlmt=crlf
    bsortex -sort key="0.4asc" -record recform=txtcsv -input file=${OUTFILE7} reclen=200 -summary field="1.10ascud,2.10ascud,3.10ascud,4.10ascud,5.10ascud,6.10ascud,7.10ascud" \
    -output file=${OUTFILE8} reconst="0.4,1.10,2.10,3.10,4.10,5.10,6.10,7.10" linedlmt=crlf
#v32.00.01 MOD END
fi

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

#-- 出力ファイルパス
OUTPUT_DATA_FILE=${MID_DIR_AC}/BBSS_JIGYOSHA_CHK_DATA_$SEIKY_YM.csv

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

P1="OPD=$OPD,"
P2="SVCCTL=JBSbatMultiServiceControl,"
P3="JOB=EO31M0110J0,"
P4="IND1=ACIFM282.def,"
P5="INF1=${MID_DIR_AC}/ACIFM282001.csv,"
P6="IND2=,"
P7="INF2=,"
P8="OTD1=ACIFM282.def,"
P9="OTF1=${OUTPUT_DATA_FILE},"
P10="OTD2=,"
P11="OTF2=,"
P12="TABLENAME=,"
P13="SQLKEY=,"
P14="SQLPARAM=,"
P15="ERRFILE=,"
P16="RECOVERY=,"
P17="BREAKPTN=,"
P18="FREE=ACIFM282.def"
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

#
#---ＡＰＬ起動
#

java ${JAVA_OPTION} -jar ${JAR_DIR}/koptBatch.jar $PARA

rc=$?
ERR_FLG=0
if [ $rc -ne 0 ]
then
   if [ $rc -ne 4 ]
   then
       if [ $rc -ne 8 ]
       then
           if [ $rc -ne 127 ]
           then
              sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              echo $JOBNAME " PROGRAM Error($SVC program:rc=$rc) "
              exit ${G_RTN_ERROR}
           fi
       fi
   fi
    ERR_FLG=1
fi

#exit_rc=$rc

#ワーク削除
rm -f ${OUTFILE1}
rm -f ${OUTFILE1_SORT}
rm -f ${OUTFILE2}
rm -f ${OUTFILE3}
rm -f ${OUTFILE4}
rm -f ${OUTFILE5}
rm -f ${OUTFILE5_SORT1}
rm -f ${OUTFILE5_SORT2}
rm -f ${OUTFILE5_MATCHING}
rm -f ${OUTFILE6}
rm -f ${OUTFILE7_REPLACEMENT_BF}
rm -f ${OUTFILE8}
rm -f ${COMULD2_KK3081_UNLD}
#v32.00.01 ADD START
rm -f ${OUTFILE9}
rm -f ${OUTFILE1_SORT_WK}
#v32.00.01 ADD END

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

exit $exit_rc
