#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：請求書内訳情報組立ファイルマージソート
#
# 機能          ：３つの請求書内訳情報組立ファイル(窓口/口振/クレジット)をマージしてソートを行う。
#
# コマンド形式  ：EO61O0505J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v67.00.00       2023/08/21  FJ）松永     【ANK-4401-14-00】請求書送信不可リストの出力条件、出力項目の変更 新規作成
#                 2023/08/28  FJ) 松永     【IT1-2023-0000047】口振の請求書で修正内訳レコードの差込位置が違う
#                 2023/09/04  FJ) 松永     【IT2-2023-0000007】泣き別れ請求書データ不正
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#--- ディレクトリ定義
#
MATCHING_DIR=${G_TOOLSH}/util/def

#
#---業務で必要な変数定義
# 
# 内訳情報組立ファイル(口振)
INFILE_CHIFM429001=${MID_DIR_CH}/CHIFM429001.tsv
# 内訳情報組立ファイル(窓口)
INFILE_CHIFM429002=${MID_DIR_CH}/CHIFM429002.tsv
# 内訳情報組立ファイル(クレジット)
INFILE_CHIFM429003=${MID_DIR_CH}/CHIFM429003.tsv
# 内訳情報組立マージファイル
TSVFILE_CHIFM429004=${MID_DIR_CH}/TSVFILE_CHIFM429004.tsv

#▼▼▼ IT1-2023-0000047 MOD START ▼▼▼
# 内訳情報組立マージファイル(CSV変換)
CSVFILE_CHIFM429004=${MID_DIR_CH}/CSVFILE_CHIFM429004.csv
# 請求料金情報ファイルとマッチングしていない内訳情報組立マージファイル
CSVFILE_CHIFM429004_SORT_1=${MID_DIR_CH}/CSVFILE_CHIFM429004_SORT_1.csv
# 請求料金情報ファイルとマッチングした内訳情報組立マージファイル
CSVFILE_CHIFM429004_SORT_2=${MID_DIR_CH}/CSVFILE_CHIFM429004_SORT_2.csv
# 上記2ファイルをマージしたファイル
CSVFILE_CHIFM429004_MERGE=${MID_DIR_CH}/CSVFILE_CHIFM429004_MERGE.csv
# 上記をソートしたファイル
CSVFILE_CHIFM429004_MERGE_SORT=${MID_DIR_CH}/CSVFILE_CHIFM429004_MERGE_SORT.csv
# 内訳情報組立マージファイル(ソート後)
#TMPFILE_CHIFM429004_SORT=${MID_DIR_CH}/TMPFILE_CHIFM429004_SORT.tsv
# 出力される内訳情報組立マージファイル
OUTFILE_CHIFM429004=${MID_DIR_CH}/CHIFM429004.txt
# 請求書料金情報ファイル(口振)
INFILE_CHIFM088001=${MID_DIR_CH}/CHIFM088001.tsv
# 請求書料金情報ファイル(窓口)
INFILE_CHIFM088003=${MID_DIR_CH}/CHIFM088003.tsv
# 請求書料金情報ファイル(クレジット)
INFILE_CHIFM088004=${MID_DIR_CH}/CHIFM088004.tsv
# 請求書料金情報マージファイル
TSVFILE_CHIFM088005=${MID_DIR_CH}/TSVFILE_CHIFM088005.tsv
# 請求書料金情報マージファイル(CSV変換)
CSVFILE_CHIFM088005=${MID_DIR_CH}/CSVFILE_CHIFM088005.csv
# マッチング定義
DEFFILE_CH0269=${MATCHING_DIR}/CH_CM_0269.def
# マッチング後ファイル
CSVFILE_CH0269=${MID_DIR_CH}/CHIFM429004_MATCHING.csv
#▲▲▲ IT1-2023-0000047 MOD END ▲▲▲

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

#
#---パラメタ定義
#
P1="OPD=,"
P2="SVCCTL=,"
P3="JOB=,"
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

#▼▼▼ IT1-2023-0000047 ADD START ▼▼▼
# 内訳情報組立ファイル(口振・窓口・クレジット)の３つのファイルをマージする。
#
bsortex -sort key="0.1asc,12.10asc,9.6asc,11.5asc" \
        -record recform=txttsv \
        -input file=${INFILE_CHIFM429001},${INFILE_CHIFM429002},${INFILE_CHIFM429003} \
               reclen=2000 \
        -output file=${TSVFILE_CHIFM429004}
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

#▼▼▼ IT2-2023-0000007 MOD START ▼▼▼
# 請求書料金情報ファイル(口振・窓口・クレジット)の３つのファイルをマージする。
#
#bsortex -sort key="0.1asc,11.10asc,9.6asc" \
#        -record recform=txttsv \
#        -input file=${INFILE_CHIFM088001},${INFILE_CHIFM088003},${INFILE_CHIFM088004} \
#               reclen=2000 \
#        -output file=${TSVFILE_CHIFM088005}
# 請求契約番号＜請求年月＜領収のみフラグの昇順でソートを行い、同じ請求契約番号が存在する場合、領収のみ以外を優先して取得する。
bsortex -sort key="11.10asc,9.6asc,29.1asc" \
        -record recform=txttsv \
        -input file=${INFILE_CHIFM088001},${INFILE_CHIFM088003},${INFILE_CHIFM088004} \
               reclen=2000 \
 | bsortex -merge key="11.10asc" \
        -record recform=txttsv \
        -input reclen=2000 \
        -summary suppress first \
        -output file=${TSVFILE_CHIFM088005}
#▲▲▲ IT2-2023-0000007 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

# TSVからCSVに変換
#
cat ${TSVFILE_CHIFM429004} | tr "\\t" "," > ${CSVFILE_CHIFM429004}
cat ${TSVFILE_CHIFM088005} | tr "\\t" "," > ${CSVFILE_CHIFM088005}

# 修正版請求内訳レコードが存在する場合
if [ -s ${CSVFILE_CHIFM429004} ];then

# 請求契約番号をキーにマッチング処理を行う。
#
  export UCWK_INFO_KUMI=${CSVFILE_CHIFM429004}
  export SEIKYUS_PRC_INFO=${CSVFILE_CHIFM088005}

#---マッチング処理でLeftjoinがNULL時に"を付けなくする（マッチング使用時は必須）
#
  export ZTLQUOTES=''
  export ZTLOUTFILE=${CSVFILE_CH0269}
  ${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_CH0269}
  rc=$?
  if [ $rc -ne 0 ]
    then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " ZTLMAT01 error(${DEFFILE_CH0269}:rc=$rc) "
      echo $JOBNAME " ZTLMAT01 error(${DEFFILE_CH0269}:rc=$rc) "
    exit ${G_RTN_ERROR}
  fi

# 請求料金情報ファイルとマッチングできたレコードは支払方法を請求料金情報から
# できなかったレコードは修正版請求内訳レコードから支払方法を取得する。
#
  bsortex -copy \
        -record recform=txtcsv \
        -input file=${CSVFILE_CH0269} reclen=2000 \
        -output file=${CSVFILE_CHIFM429004_SORT_1} case="0.1asc.lt.' '" reconst="1.1,2.END" \
        -output file=${CSVFILE_CHIFM429004_SORT_2} case=other reconst="0.1,2.END" \


# 上記で2つに出力方法を分けたファイルをマージする。
#
  cat ${CSVFILE_CHIFM429004_SORT_1} ${CSVFILE_CHIFM429004_SORT_2} > ${CSVFILE_CHIFM429004_MERGE}

# 支払方法＜請求契約番号＜請求年月＜シーケンス番号の昇順でソートを行う
#
  bsortex -sort key="0.1asc,12.10asc,9.6asc,11.5asc" -record recform=txtcsv \
          -input file=${CSVFILE_CHIFM429004_MERGE} reclen=2000 \
          -output file=${CSVFILE_CHIFM429004_MERGE_SORT}
  rc=$?
  if [ $rc -ne 0 ]
    then
      BSORT_ERROR ${rc} ${CSVFILE_CHIFM429004_MERGE}
  fi

#--- カンマを削除する
#
  sed -i -e 's/,//g' ${CSVFILE_CHIFM429004_MERGE_SORT}

# マージソートした内訳情報組立ファイルからタブを削除した出力ファイルを作成
#
  tr -d '\011' < ${CSVFILE_CHIFM429004_MERGE_SORT} > ${OUTFILE_CHIFM429004}
#▲▲▲ IT1-2023-0000047 ADD END ▲▲▲

# 修正版請求内訳レコードが存在しない場合
else
  mv ${CSVFILE_CHIFM429004} ${OUTFILE_CHIFM429004}
fi

#▼▼▼ IT1-2023-0000047 DEL START ▼▼▼
# 支払方法＜請求契約番号＜請求年月＜シーケンス番号の昇順にソートを行う。
#bsortex -sort key="0.1asc,4.12asc,57.6asc,66.5asc" -record recform=txtcsv \
#        -input file=${CSVFILE_CHIFM429004_MERGE} reclen=2000 \
#        -output file=${OUTFILE_CHIFM429004}
#rc=$?
#if [ $rc -ne 0 ]
#  then
#    BSORT_ERROR ${rc} ${TMPFILE_CHIFM429004}
#fi
#▲▲▲ IT1-2023-0000047 DEL END ▲▲▲

#
# 一時ファイル削除
#
#▼▼▼ IT1-2023-0000047 ADD START ▼▼▼
rm -f ${CSVFILE_CHIFM429004}
rm -f ${TSVFILE_CHIFM429004}
rm -f ${CSVFILE_CHIFM429004_SORT_1}
rm -f ${CSVFILE_CHIFM429004_SORT_2}
rm -f ${CSVFILE_CHIFM429004_MERGE}
rm -f ${CSVFILE_CHIFM429004_MERGE_SORT}
rm -f ${TSVFILE_CHIFM088005}
rm -f ${CSVFILE_CHIFM088005}
rm -f ${CSVFILE_CH0269}
#▲▲▲ IT1-2023-0000047 ADD END ▲▲▲

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

exit $exit_rc
