#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：料金計算結果リスト卸・スキーム事業者請求情報付加
#
# 機能          ：卸先事業者コード・スキーム事業者コードの付加とソートを行い、料金計算結果リスト(当日分)卸付加スキーム事業者付加ファイルを出力する。
#
# コマンド形式  ：EO3011588J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v37.00.00       2018/04/13  FJ)柳        【ANK-3366-00-00】eo光設備卸対応
# v57.00.00       2022/01/28  FJ）麻生     【ANK-4075-00-00】マンション卸回線(WI-FIスキーム)の不備対応
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=

#
#--- ファイル定義
#
# 請求契約インターフェイス情報
TMPFILE_CHIFI001=${SEND_DIR}/CHIFI001001.csv
# 請求契約インターフェイス情報項目抽出ファイル
TMPFILE_CHIFI001_EXTRACT=${LOC_DIR_AC}/CHIFI001001_extract.csv
# 請求契約インターフェイス情報ワークファイル
TMPFILE_CHIFI001_WORK=${LOC_DIR_AC}/CHIFI001001_work.csv
# v57.00.00 ANK-4075-00-00 ADD START
# 保守・Wi-Fiスキーム用請求契約情報
TMPFILE_ACIFM355=${MID_DIR_AC}/ACIFM355001.csv
TMPFILE_ACIFM355_WORK=${LOC_DIR_AC}/ACIFM355001_work.csv
# v57.00.00 ANK-4075-00-00 ADD END
# 料金計算結果リスト(当日分)
TMPFILE_ACIFM244=${MID_DIR_AC}/ACIFM244006.csv
# 料金計算結果リスト(当日分)ワークファイル
TMPFILE_ACIFM244_WORK=${LOC_DIR_AC}/ACIFM244006_work.csv
# 料金計算結果リスト(当日分)卸・スキーム事業者付加_マッチング
TMPFILE_ACIFM304_MATCH=${LOC_DIR_AC}/ACIFM304001_match.csv
# v57.00.00 ANK-4075-00-00 ADD START
# 料金計算結果リスト(当日分)卸・スキーム事業者付加_バックアップ
TMPFILE_ACIFM304_BACK=${LOC_DIR_AC}/ACIFM304001_back.csv
# v57.00.00 ANK-4075-00-00 ADD END
# 料金計算結果リスト(当日分)卸・スキーム事業者付加_ソート
TMPFILE_ACIFM304_SORT=${LOC_DIR_AC}/ACIFM304001_sort.csv
# 料金計算結果リスト(当日分)卸・スキーム事業者付加
TMPFILE_ACIFM304=${MID_DIR_AC}/ACIFM304001.csv
# マッチングツール定義ファイル(料金計算結果リスト(当日分)－請求契約インターフェイス情報)
MATCHDEF_KK0491=${G_TOOLSH}/util/def/AC_CM_0138.def

#
#--- レコード長定義
#
# 請求契約インターフェイス情報のレコード長
RECLEN_CHIFI001=2757
# 料金計算結果リスト(当日分)卸・スキーム事業者付加_マッチングのレコード長
RECLEN_ACIFM304_MATCH=732

#
#--- マッチングツール環境変数
#
export ZTLTMPDIR=$ULD_WORK_DIR
export ZTLOUTFILE=$TMPFILE_ACIFM304_MATCH
export TMPFILE_ACIFM244_WORK
export TMPFILE_CHIFI001_WORK
# v57.00.00 ANK-4075-00-00 ADD START
export TMPFILE_ACIFM355_WORK
# v57.00.00 ANK-4075-00-00 ADD END

##############################################################
# 共通関数
##############################################################

#
#--- bsortexコマンド実行時のエラー処理
#      p1：bsortexコマンドの終了コード
#      p2：bsortexコマンドの入力ファイル
#
BSORT_ERROR()
{
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " BSORTEX error(input file=$2:rc=$1) "
    echo $JOBNAME " BSORTEX error(input file=$2:rc=$1) "
    exit ${G_RTN_ERROR}
}

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

#
#--- 請求契約インターフェイス情報から必要項目を抽出
#
# bsort用項目定義
BSORT_DEF_CHIFI001="@SEIKY_KEI_NO=0.10 @ORSJGS_CD=55.2"
bsortex -define $BSORT_DEF_CHIFI001 -copy -record recform=txtcsv \
        -input file=$TMPFILE_CHIFI001 reclen=$RECLEN_CHIFI001 \
               reconst="@SEIKY_KEI_NO,@ORSJGS_CD" \
        -output file=$TMPFILE_CHIFI001_EXTRACT

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $TMPFILE_CHIFI001
fi

#
#--- 文字コードUTF-8、改行コードLFに変換して請求契約インターフェイス情報ワークファイルを作成する。
#
nkf -x -w -Lu < $TMPFILE_CHIFI001_EXTRACT > $TMPFILE_CHIFI001_WORK

#
#--- 請求契約インターフェイス情報ワークファイルにダブルクォーテーションを付与する。
#
sed -i -e 's/,/\",\"/g' -e 's/^/\"/g' -e 's/$/\"/g' $TMPFILE_CHIFI001_WORK

#
#--- 文字コードUTF-8、改行コードLFに変換して料金計算結果リスト(当日分)ワークファイルを作成する。
#
nkf -x -w -Lu < $TMPFILE_ACIFM244 > $TMPFILE_ACIFM244_WORK

#
#--- 料金計算結果リスト(当日分)の「,」を「#」に置換して料金計算結果リスト(当日分)ワークファイルを作成する。
#--- (マッチング時に項目内の「,」をカンマ区切りの「,」とみなしてしまうことの回避策)
#
sed -i -e 's/\",\"/\"@\"/g' -e 's/,/#/g' -e 's/@/,/g' $TMPFILE_ACIFM244_WORK

# v57.00.00 ANK-4075-00-00 ADD START
#
#--- 文字コードUTF-8、改行コードLFに変換して保守・Wi-Fiスキーム用請求契約情報ワークファイルを作成する。
#
nkf -x -w -Lu < $TMPFILE_ACIFM355 > $TMPFILE_ACIFM355_WORK

#
#--- 保守・Wi-Fiスキーム用請求契約情報ワークファイルにダブルクォーテーションを付与する。
#
sed -i -e 's/,/\",\"/g' -e 's/^/\"/g' -e 's/$/\"/g' $TMPFILE_ACIFM355_WORK
# v57.00.00 ANK-4075-00-00 ADD END

#
#--- ファイルのマッチングを行う。
#
${G_TOOLSH}/util/bin/ZTLMAT01 $MATCHDEF_KK0491

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

#
#--- 料金計算結果リスト(当日分)卸・スキーム事業者付加_マッチングの「#」を「,」に戻す
#
# v57.00.00 ANK-4075-00-00 MOD START
#sed -i -e 's/#/,/g' $TMPFILE_ACIFM304_MATCH
sed -e 's/#/,/g' $TMPFILE_ACIFM304_MATCH > $TMPFILE_ACIFM304_BACK
# v57.00.00 ANK-4075-00-00 MOD END

# v57.00.00 ANK-4075-00-00 ADD START
awk 'BEGIN{FS="\",\"";OFS="\",\""}{sub("\"$","",$17);if($17!=""){$16=$17};NF-=1;print $0 "\""}' $TMPFILE_ACIFM304_BACK > $TMPFILE_ACIFM304_MATCH
# v57.00.00 ANK-4075-00-00 ADD END

#
#--- ソート機能(bsortexコマンド)を使用して並べ替えを行う。
#
# bsort用項目定義
BSORT_DEF_ACIFM304_MATCH="@RSLT_NYO_CD=0.3 @TRN_YMD=2.10 @SEIKY_KEI_NO=3.10 @SVC_KEI_NO=5.10 @PCRS_CD=8.3 @PRC_SVC_CD=9.12 @PRC_KMK_CD=10.11 @ORSJGS_CD=15.2"
bsortex -define $BSORT_DEF_ACIFM304_MATCH \
        -sort key="@RSLT_NYO_CDasca,@ORSJGS_CDasca,@TRN_YMDasca,@SEIKY_KEI_NOasca,@SVC_KEI_NOasca,@PCRS_CDasca,@PRC_SVC_CDasca,@PRC_KMK_CDasca" \
        -record recform=txtcsv \
        -input file=$TMPFILE_ACIFM304_MATCH reclen=$RECLEN_ACIFM304_MATCH \
        -output file=$TMPFILE_ACIFM304_SORT

rc=$?
if [ $rc -ne 0 ]
then
    BSORT_ERROR $rc $TMPFILE_ACIFM304_MATCH
fi

#
#--- 文字コードShift-JIS、改行コードCR+LFに変換して 料金計算結果リスト(当日分)卸・スキーム事業者付加を作成する。
#
nkf -x -s -Lw < $TMPFILE_ACIFM304_SORT > $TMPFILE_ACIFM304

#
#--- Javaプログラムログ
#--- (本shはJavaプログラムを呼び出してはいないが、出力しておく)
#
# Javaプログラム開始(Program_Start)
sh ${G_TOOLSH}/EOK010210J0.sh CS00027I $JOBNAME
# Javaプログラム終了(Program_End)
sh ${G_TOOLSH}/EOK010210J0.sh CS00028I $JOBNAME

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

exit ${G_RTN_NORMAL}
