#!/bin/bash
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：料金管理
#
# シェル名      ：FUGA用会計データ作成(割引一覧)
#
# 機能          ：「会計情報(集計済)売掛（卸）」と「会計情報(集計済)売掛」の各ファイルをマージ後、必要な項目のみ抽出する。
#                 会計内訳変換、会計内訳アンロードファイルを取得する。
#                 取得したアンロードファイルから、「会計情報(集計済)売掛（卸）」と「会計情報(集計済)売掛」各ファイルの下記キー項目をキーにデータを取得し、マッチングさせる
#                 【キー項目】
#                    ・会計内訳種別詳細コード：1310
#                    ・料金グループコード
#                    ・料金コースコード
#                    ・料金サービスコード
#                    ・料金項目コード
#                    ・会計内訳コード
#                 それぞれマッチングした「会計情報(集計済)売掛（卸）」と「会計情報(集計済)売掛」のファイルを結合し、「グループ大経理売掛金・預り金データ（割引額一覧）」を作成する。
#
#マージ対象ファイル(卸)「会計情報(集計済)売掛（卸）」
#・会計用売掛金（ACIFM295201.csv）
#・会計用売掛金調整分（ACIFM295202.csv）
#・会計用売掛金変更分（ACIFM295203.csv）
#マージ対象ファイル「会計情報(集計済)売掛」
#・会計用売掛金（ACIFM145201.csv）
#・会計用売掛金調整分（ACIFM145202.csv）
#・会計用売掛金変更分（ACIFM145203.csv）
#
# コマンド形式  ：EO30Q0850J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v78.00          2024/05/15  FJ）吉田あ   新規作成
# v78.01          2024/06/07  FJ）吉田あ   IT1-2024-0000015 
#
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---バッチ運用日付取得
#---運用日の指定がない場合、運用日付を取得する
if [ "${OPD}" = "" ]; then
   . EOK010310J0.sh "BDATE"
   OPD="${RSLT_OPEDATE}"
fi



##############################################################
# 業務処理
##############################################################
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


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

#--- アンロードSQL定義ファイル
#--- 会計内訳変換（CH_M_KAIK_UCWK_CHG）
SQLFILE_CH0691_06=${SQL_DIR}/AC_U_CH0691_06.sql

#IT1-2024-0000015 ADD START
#--- 会計内訳（CH_M_KAIK_UCWK）
SQLFILE_CH0441_01=${SQL_DIR}/AC_U_CH0441_01.sql
#IT1-2024-0000015 ADD END

# マッチングツール定義ファイル
DEFFILE=${G_TOOLSH}/util/def/AC_CM_0202.def
DEFFILE_1=${G_TOOLSH}/util/def/AC_CM_0203.def


#
#-- 内部生成一時ファイル
#

#--- アンロードSQL定義ファイル一時ファイル
SQLFILE_CH0691_06_WRK=${SQL_DIR}/${JOBNAME}_AC_U_CH0691_06_UNLOADER_WK_1.sql
#IT1-2024-0000015 ADD START
SQLFILE_CH0441_01_WRK=${SQL_DIR}/${JOBNAME}_AC_U_CH0441_01_UNLOADER_WK_1.sql
#IT1-2024-0000015 ADD END

#--- アンロードSQL定義ファイル一時出力ファイル
CSVFILE_CH0691_06=${MID_DIR_AC}/${JOBNAME}_AC_U_CH0691_06_UNLOADER_WK_1.csv
#IT1-2024-0000015 ADD START
CSVFILE_CH0441_01=${MID_DIR_AC}/${JOBNAME}_AC_U_CH0441_01_UNLOADER_WK_1.csv
#IT1-2024-0000015 ADD END

#-- マッチングツール定義一時ファイル
TMPDEFFILE=${G_TOOLSH}/util/def/AC_CM_0202.tmp.${JOBNAME}.def
TMPDEFFILE_1=${G_TOOLSH}/util/def/AC_CM_0203.tmp.${JOBNAME}.def


#--- # マッチング結果ファイル
OUTFILE=${MID_DIR_AC}/${JOBNAME}_AC_CM_0202.csv
OUTFILE_1=${MID_DIR_AC}/${JOBNAME}_AC_CM_0203.csv

URIKKO_SORT_001=${MID_DIR_AC}/${JOBNAME}_URIKKO_SORT_001.csv
URIKKO_FILE_001=${MID_DIR_AC}/${JOBNAME}_URIKKO_FILE_001.csv
URIKKO_FILE_BFMERGE=${MID_DIR_AC}/${JOBNAME}_URIKKO_FILE_BFMERGE.csv

URIKK_SORT_001=${MID_DIR_AC}/${JOBNAME}_URIKK_SORT_001.csv
URIKK_FILE_001=${MID_DIR_AC}/${JOBNAME}_URIKK_FILE_001.csv
URIKK_FILE_BFMERGE=${MID_DIR_AC}/${JOBNAME}_URIKK_FILE_BFMERGE.csv



#-- 文字コード、改行コード変換
CSVFILE_CH0691_06_CHGE=${MID_DIR_AC}/${JOBNAME}_AC_U_CH0691_06_UNLOADER_WK_1_CHGE.csv
URIKKO_FILE_001_CHGE=${MID_DIR_AC}/${JOBNAME}_URIKKO_FILE_001_CHGE.csv
URIKK_FILE_001_CHGE=${MID_DIR_AC}/${JOBNAME}_URIKK_FILE_001_CHGE.csv
OUTFILE_ACIFM370000=${MID_DIR_AC}/ACIFM370000.csv

#
#-- 出力ファイル
#
OUTFILE_ACIFM370001=${MID_DIR_AC}/ACIFM370001.csv


#
#--- 各ファイルの存在チェックを行う
#
#--- 会計内訳変換（CH_M_KAIK_UCWK_CHG）
if [ ! -r $SQLFILE_CH0691_06 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQLFILE_CH0691_06}) "
    echo $JOBNAME " File is nonexist(${SQLFILE_CH0691_06}) "
    exit ${G_RTN_ERROR}
fi
#IT1-2024-0000015 ADD START
if [ ! -r $SQLFILE_CH0441_01 ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${SQLFILE_CH0441_01}) "
    echo $JOBNAME " File is nonexist(${SQLFILE_CH0441_01}) "
    exit ${G_RTN_ERROR}
fi
#IT1-2024-0000015 ADD END
#

#--- マッチングツール定義ファイル（AC_CM_0202.def）
if [ ! -r ${DEFFILE} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${DEFFILE}) "
    echo $JOBNAME " File is nonexist($DEFFILE) "
    exit ${G_RTN_ERROR}
fi

#--- マッチングツール定義ファイル（AC_CM_0203.def）
if [ ! -r ${DEFFILE_1} ]
then
    sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " File is nonexist(${DEFFILE_1}) "
    echo $JOBNAME " File is nonexist($DEFFILE_1) "
    exit ${G_RTN_ERROR}
fi



#--- SQLパラメータセット
#--- 会計内訳変換（CH_M_KAIK_UCWK_CHG）
cp -f ${SQLFILE_CH0691_06} ${SQLFILE_CH0691_06_WRK}
sed -i -e "s/\:OPE_DATE/'${OPD}'/"       ${SQLFILE_CH0691_06_WRK} 

#IT1-2024-0000015 ADD START
#--- 会計内訳（CH_M_KAIK_UCWK）
cp -f ${SQLFILE_CH0441_01} ${SQLFILE_CH0441_01_WRK}
sed -i -e "s/\:OPE_DATE/'${OPD}'/"       ${SQLFILE_CH0441_01_WRK} 
#IT1-2024-0000015 ADD END

#--- サブルーチン（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($2:rc=$rc) "
    echo $JOBNAME " unload error($2:rc=$rc) "
    exit ${G_RTN_ERROR}
fi
}


#
#--- UNLOAD処理
#
#--- 会計内訳変換（CH_M_KAIK_UCWK_CHG）
UNLOAD ${SQLFILE_CH0691_06_WRK} ${CSVFILE_CH0691_06} $
#IT1-2024-0000015 ADD START
#--- 会計内訳（CH_M_KAIK_UCWK）
UNLOAD ${SQLFILE_CH0441_01_WRK} ${CSVFILE_CH0441_01} $
#IT1-2024-0000015 ADD END

#
#--「会計情報(集計済)売掛（卸）」の各ファイルをマージする。
#
cat ${MID_DIR_AC}/ACIFM295201.csv \
${MID_DIR_AC}/ACIFM295202.csv \
${MID_DIR_AC}/ACIFM295203.csv \
> ${URIKKO_SORT_001}


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 file=${URIKKO_SORT_001} reclen=1000 \
  reconst="4.6,5.12,22.120,1.2,2.4,6.2,7.3,8.12,9.11,11.10,12.12,13.12,14.12,16.6,18.1,19.5,20.4,21.6,0.2"\
  -output file=${URIKKO_FILE_001}


#マッチングする時の入力ファイルの改行コード変換（CRLF⇒LF,SJIS⇒UTF-8）
nkf -Lu -x -w  < ${URIKKO_FILE_001} > ${URIKKO_FILE_001_CHGE}



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


#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE} > ${TMPDEFFILE}
sed -i -e s@':CSVFILE_CH0691_06'@${CSVFILE_CH0691_06}@g ${TMPDEFFILE}
sed -i -e s@':URIKKO_FILE_001_CHGE'@${URIKKO_FILE_001_CHGE}@g ${TMPDEFFILE}
#IT1-2024-0000015 ADD START
sed -i -e s@':CSVFILE_CH0441_01'@${CSVFILE_CH0441_01}@g ${TMPDEFFILE}
#IT1-2024-0000015 ADD END

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

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


#
#--レコードの先頭に卸区分"1"を付与して、
#--レコードの末尾に"eouser"(伝票入力者コード)を付与する。
#
bsortex -copy -record recform=txtcsv -input file=${OUTFILE} reclen=1000 \
  reconst="'1'.1asc,0.END"\
  -output file=${URIKKO_FILE_BFMERGE}\
  reconst="0.END,'eouser'.6asc"


#--「会計情報(集計済)売掛」の各ファイルをマージする。
#
cat ${MID_DIR_AC}/ACIFM145201.csv \
${MID_DIR_AC}/ACIFM145202.csv \
${MID_DIR_AC}/ACIFM145203.csv \
> ${URIKK_SORT_001}


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 file=${URIKK_SORT_001} reclen=1000 \
  reconst="3.6,4.12,21.120,0.2,1.4,5.2,6.3,7.12,8.11,10.10,11.12,12.12,13.12,15.6,17.1,18.5,19.4,20.6,EMPTYL" \
  -output file=${URIKK_FILE_001}


#マッチングする時の入力ファイルの改行コード変換（CRLF⇒LF,SJIS⇒UTF-8）
nkf -Lu -x -w  < ${URIKK_FILE_001} > ${URIKK_FILE_001_CHGE}


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


#
#--- 定義ファイル環境変数設定処理
#
cat ${DEFFILE_1} > ${TMPDEFFILE_1}
sed -i -e s@':CSVFILE_CH0691_06'@${CSVFILE_CH0691_06}@g ${TMPDEFFILE_1}
sed -i -e s@':URIKK_FILE_001_CHGE'@${URIKK_FILE_001_CHGE}@g ${TMPDEFFILE_1}
#IT1-2024-0000015 ADD START
sed -i -e s@':CSVFILE_CH0441_01'@${CSVFILE_CH0441_01}@g ${TMPDEFFILE_1}
#IT1-2024-0000015 ADD END


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


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


#
#--レコードの先頭に卸区分"0"を付与して、
#--レコードの末尾に"eouser"(伝票入力者コード)を付与する。
#
bsortex -copy -record recform=txtcsv -input file=${OUTFILE_1} reclen=1000 \
  reconst="'0'.1asc,0.END"\
  -output file=${URIKK_FILE_BFMERGE}\
  reconst="0.END,'eouser'.6asc"


#
#--「会計情報(集計済)売掛（卸）ファイル_集約前」と「会計情報(集計済)売掛ファイル_集約前」を結合して、
#--FUGA連携用ファイル「グループ大経理売掛金・預り金データファイル」を作成する。
#
cat ${URIKKO_FILE_BFMERGE} ${URIKK_FILE_BFMERGE} > ${OUTFILE_ACIFM370000} 


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


#出力ファイルの改行コードのみ変換（LF⇒CRLF）
#IT1-2024-0000015 MOD START
#nkf -s  < ${OUTFILE_ACIFM370000} > ${OUTFILE_ACIFM370001}
nkf -x -s -S -Lw  < ${OUTFILE_ACIFM370000} > ${OUTFILE_ACIFM370001}
#IT1-2024-0000015 MOD END



# 一時ファイル削除※EO30O0110J0より引き継いだアンロードファイルも削除する
#
rm -f ${TMPDEFFILE}
rm -f ${TMPDEFFILE_1}
rm -f ${OUTFILE}
rm -f ${OUTFILE_1}
rm -f ${URIKKO_SORT_001}
rm -f ${URIKKO_FILE_001}
rm -f ${URIKKO_FILE_BFMERGE}
rm -f ${URIKK_SORT_001}
rm -f ${URIKK_FILE_001}
rm -f ${URIKK_FILE_BFMERGE}
rm -f ${CSVFILE_CH0691_06}
rm -f ${SQLFILE_CH0691_06_WRK}
rm -f ${URIKKO_FILE_001_CHGE}
rm -f ${URIKK_FILE_001_CHGE}
rm -f ${OUTFILE_ACIFM370000}
#IT1-2024-0000015 ADD START
rm -f ${CSVFILE_CH0441_01}
rm -f ${SQLFILE_CH0441_01_WRK}
#IT1-2024-0000015 ADD END


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

exit ${G_RTN_NORMAL}
