#!/bin/bash 
##############################################################
# システム名    ：eo顧客基幹システム
#
# サブシステム名：請求収納
#
# シェル名      ：当月請求データ抽出
#
# 機能          ：当月請求データを抽出し、当月請求データを作成する。
#
# コマンド形式  ：EO6030110J0.sh
#
# 実行環境      ：.../app/shl
#
# 終了ステータス：ゼロ以外異常
#
# 特記事項      ：特になし
#
# 変更履歴      ：変更日      変更者       障害／仕様変更No.
# v3.00           2012/05/07  FJ) 本多     【ANK-0024-04-00】SQLPARAM引数変更対応
# v3.01           2012/07/27  FJ）冨井     【ST2-2012-0001211】ヒープサイズ拡張
# v3.02           2012/10/10  FJ）後藤     【ST3-2012-0000338】督促取得条件追加
# v3.03           2012/11/02  FJ）加島     【ST4-2012-0000006】ヒープサイズ指定方法変更
# v4.00           2012/12/13  FJ）今井     【ST3-2012-0000444】請求ステータス遷移箇所不備による売り上げオーソリチェック未抽出
# v4.01           2013/03/09  FJ）岡田     【ST4-2012-0000152】性能改善
# v4.02           2013/03/22  FJ）狭間     【ST4-2012-0000152】マッチング結合順序見直し及びワークファイル名標準化対応
# v4.03           2013/04/03  FJ）後藤     【ST4-2012-0000406】UNLOAD統一化
# v5.00           2013/06/27  FJ）後藤     【ST4-2013-0000479】nkf除去対応
# v8.00           2014/02/21  FJ）後藤     【IT1-2013-0000066】税額合算
# v8.01           2014/02/26  FJ）後藤     【IT1-2014-0000073】税額合算処理について未収のみの場合の考慮対応
# v67.0.0         2023/08/18  FJ）中原     【IT2-2023-0000006】請求書印刷データを確認したら消費税が「＊＊＊＊」で表示されるべきところ消費税が０円で表示された
##############################################################

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

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

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

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

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

#
#---OPD
#
OPD=$1

#
#---システム日時取得
#
. EOK010410J0.sh "1"
SYSDATE=${RSLT_SYSDATE}

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

#
#---業務パラメータID="CH_WKS_SIKY_AMNT"（請求データ作成（請求額））
#
WKPARA_ID_SIKY="CH_WKS_SIKY_AMNT"

#
#---業務パラメータID="CH_WKS_SAIKEN_U_STAX"（請求データ作成（消費税））
#
WKPARA_ID_TAX="CH_WKS_SAIKEN_U_STAX"

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

#---ワークファイル削除モード
#
WK_RM=true

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

#-------------------------------------------------------------
# ディレクトリ定義
#-------------------------------------------------------------
#
#--- bsort定義ファイル
#
BSORT_DIR=${G_TOOLSH}/bsort/def


#-------------------------------------------------------------
# ファイル定義
#-------------------------------------------------------------
#
#--- 出力ファイル
#
OUTFILE=${MID_DIR_CH}/CHIFM070001.csv
OUTFILE_WRK=${MID_DIR_CH}/CHIFM070001_WRK_${JOBNAME}.csv
OUTFILE_WRK2=${MID_DIR_CH}/CHIFM070001_WRK2_${JOBNAME}.csv
OUTFILE_WRK3=${MID_DIR_CH}/CHIFM070001_WRK3_${JOBNAME}.csv

OUTFILE_TEMP=${MID_DIR_CH}/CHIFM070001_TEMP_${JOBNAME}.csv
OUTFILE_TEMP2=${MID_DIR_CH}/CHIFM070001_TEMP2_${JOBNAME}.csv
OUTFILE_TEMP3=${MID_DIR_CH}/CHIFM070001_TEMP3_${JOBNAME}.csv

#
#--- 1.請求 CH_T_SEIKY
#
CSVFILE_CH0051=${MID_DIR_CH}/CHIFM184001.csv
CSVFILE_CH0051_WRK=${MID_DIR_CH}/${JOBNAME}CHIFM184001_WRK.csv

TABLEDEF_CH0051=${BSORT_DIR}/CH_BS_CH0051_001.bsdef

#
#--- 2.請求内訳 CH_T_SEIKY_UCWK
#
CSVFILE_CH0101=${MID_DIR_CH}/CHIFM182003.csv

#
#--- 3.料金項目抽出変換マスタ CH_M_PRC_KMK_CS_CHGE
#
CSVFILE_CH0401=${MID_DIR_CH}/${JOBNAME}_CH0401.csv
CSVFILE_CH0401_WRK=${MID_DIR_CH}/${JOBNAME}_CH0401_WRK_${JOBNAME}.csv
CSVFILE_CH0401_WRK2=${MID_DIR_CH}/${JOBNAME}_CH0401_WRK2_${JOBNAME}.csv

TABLEDEF_CH0401=${BSORT_DIR}/CH_BS_CH0401_001.bsdef
CSVFILEDEF_CH0401=${BSORT_DIR}/CH_BS_CH0401_002.bsdef

#
#--- 4.督促 CH_T_TOKUSOKU
#
CSVFILE_CH0231=${MID_DIR_CH}/CHIFM183001.csv

#
#--- 5.業務パラメータ管理 ZM_M_WORK_PARAM_KNRI
#
SQLFILE_ZM0321=${SQL_DIR}/CH_U_ZM0321_01.sql
SQLFILE_ZM0321_WRK=${SQL_DIR}/ZM_U_ZM0321_01_WRK_${JOBNAME}.sql
SQLFILE_ZM0321_AMNT_WRK=${SQL_DIR}/ZM_U_ZM0321_AMNT_01_WRK_${JOBNAME}.sql
SQLFILE_ZM0321_TAX_WRK=${SQL_DIR}/ZM_U_ZM0321_TAX_01_WRK_${JOBNAME}.sql

CSVFILE_ZM0321_AMNT=${MID_DIR_CH}/${JOBNAME}_ZM0321_AMNT_.csv
CSVFILE_ZM0321_TAX=${MID_DIR_CH}/${JOBNAME}_ZM0321_TAX_.csv
CSVFILE_ZM0321_TAX_WRK=${MID_DIR_CH}/${JOBNAME}_ZM0321_TAX_WRK.csv

#-------------------------------------------------------------
# マッチングファイル定義
#-------------------------------------------------------------
DEFFILE_WRK=${G_TOOLSH}/util/def/CH_CM_0037.def
DEFFILE_WRK2=${G_TOOLSH}/util/def/CH_CM_0038.def

#-------------------------------------------------------------
# マッチングファイル環境定義
#-------------------------------------------------------------
export ZTL_DEFINE_SEIKY=SEIKY_NO,SEIKY_STAT,SEIKY_KEI_NO,TOKUSOKU_NO,SEIKY_YM,SEIKY_FIX_YMD,SEIKY_SBT_CD,KEI_SEIKY_WAY_CD,SEIKY_WAY_CD,KYOSEI_MADOGUCHI_FLG,SEIKY_REQ_YMD,DOFU_CD,SKS_HAKKO_SEQ,CUSTOMER_BARCODE,INFO_PATTERN_CD,DOHUBT_PATTERN_CD,SOHUS_AD_CD,SOHUS_PCD,SOHUS_STATE_NM,SOHUS_CITY_NM,SOHUS_OAZTSU_NM,SOHUS_AZCHO_NM,SOHUS_AD_BNCHIGO,SOHUS_ADRTTM,SOHUS_ADRRM,SOHUS_TELNO,SOHUS_NM,SOHUS_BKM,SOHUS_TNTSHA_NM,SHS_HOJIN_SBT_CD,SHS_HOJIN_ZENGO_SHITEI_CD,SHS_KANA,SOHUS_MLAD,SKHK_SVKEI_STAT_CD,SKHK_SVKEI_DLRE_SKBT_CD,SEIKYUS_HAKKO_YH,NEXT_SEIKY_WAY_DIV,RECEIPT_AMNT_OUTPUT_UM,PAY_KIGEN_YMD,SEIKYUS_HIKINUKI_FLG,SEIKYUS_HAKKO_TG_FLG,SEIKYUS_HAKKO_YMD,SEIKY_AMNT_ADJ_YMD,SEIKY_AMNT_CHGE_YMD,SEIKY_CL_YMD,BANK_CD,BANK_SHITEN_CD,YOKIN_SHUMOKU_CD,KOZA_NO,NEW_CD,TSUCHO_SYMBOL,TSUCHO_NO,KOZA_MEIGIN_KANA,KHRI_RSLT_RTN_YMD,KHRI_RSLT_CD,FLRLMT_CHOK_FLG,CRECARD_COMP_CD,CRECARD_NM_KANA,CRECARD_NM_ROMAJI,AUTHORI_RSLT_CD,MEMBSTR_NO_15,CRECARD_NO,CRECARD_YK_KIGEN,CREDIT_KOKAN_CD,DEAL_YMD,SALES_AUTHORI_JSSI_DTM,AUTHORI_SHONIN_NO,DEAL_SKBT_NO,SALES_DENPYO_NO,SHANAIUSE_SKBT_FLG,EAN_BARCODE,EAN_MAKER_CD,EAN_TRAT_LIMIT_YMD,OCR_BARCODE
export ZTL_DEFINE_TOKUSOKU=TOKUSOKU_NO,TOKUSOKU_STAT,SEIKY_KEI_NO,TOKUSOKU_AMNT
export ZTL_DEFINE_SEIKY_UCWK=SEIKY_NO,SEIKY_KEI_NO,SEIKY_YM,SEIRI_NO,SVC_KEI_NO,PRC_GRP_CD,PCRS_CD,PRC_SVC_CD,PRC_KMK_CD,GSAN_SEIKY_YM,USE_STAYMD,USE_ENDYMD,AMNT,PRC_TEISE_ADD_FLG
export ZTL_DEFINE_PRC_KMK_CS_CHGE=SYS_CD,WORK_KINO_SKBT_CD,CHSHT_CHG_CD,PRC_GRP_CD,PCRS_CD,PRC_SVC_CD,PRC_KMK_CD,PRC_KMK_CS_CHGE_TSTAYMD,PRC_KMK_CS_CHGE_TENDYMD,MK_FLG
export ZTL_DEFINE_ZM0321_TAX=WORK_PARAM_SETTE_VALUE
export ZTL_DEFINE_ZM0321_AMNT=WORK_PARAM_SETTE_VALUE
export ZTL_DEFINE_SUB_SEIKY_UCWK=SEIKY_NO,SEIKY_YM,AMNT

#
#--- アンロードファイルのクリアを行う
#
cat /dev/null > $OUTFILE_WRK
cat /dev/null > $OUTFILE

#-------------------------------------------------------------
# サブルーチン
#-------------------------------------------------------------
#
#--- サブルーチン（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

}

#
#--- サブルーチン（CH_T_SEKY_SORT)
#
CH_T_SEKY_SORT(){

bsortex \
  -define \
  -a ${TABLEDEF_CH0051} \
  -record recform=txtcsv \
  -input reclen=@{RECLEN} \
         include="@{SEIKY_STAT}asc.eq.'020'.and.@{SEIKY_SBT_CD}asc.eq.'0'" \
  -copy \
 < ${CSVFILE_CH0051} \
 > ${CSVFILE_CH0051_WRK}
echo "sort CH_T_SEKY_SORT.csv"
}

#
#--- サブルーチン（CH_M_PRC_KMK_CS_CHGE_SORT_AMNT)
#
CH_M_PRC_KMK_CS_CHGE_AMNT_SORT(){

bsortex \
  -define \
  -a ${TABLEDEF_CH0401} \
  -a ${CSVFILEDEF_CH0401} \
    -record recform=txtcsv \
    -input reclen=@{RECLEN} \
           reconst="@{SYS_CD},@{WORK_KINO_SKBT_CD},@{CHSHT_CHG_CD},@{PRC_GRP_CD},@{PCRS_CD},@{PRC_SVC_CD},@{PRC_KMK_CD},@{PRC_KMK_CS_CHGE_TSTAYMD},@{PRC_KMK_CS_CHGE_TENDYMD},@{MK_FLG}" \
           include="@{CHSHT_CHG_CD}asc.eq.'1'.and.@{SYS_CD}asc.eq.'CH'.and.@{MK_FLG}asc.eq.'0'.and.@{PRC_KMK_CS_CHGE_TSTAYMD}asc.le.'$RSLT_OPEDATE'.and.@{PRC_KMK_CS_CHGE_TENDYMD}asc.gt.'$RSLT_OPEDATE'.and.@{WORK_KINO_SKBT_CD}asc.eq.'$SETTE_VALUE_AMNT'" \
    -copy \
 < ${CSVFILE_CH0401} \
 > ${CSVFILE_CH0401_WRK}
echo "sort CH_M_PRC_KMK_CS_CHGE.csv"
}

#
#--- サブルーチン（CH_M_PRC_KMK_CS_CHGE_SORT_TAX)
#
CH_M_PRC_KMK_CS_CHGE_TAX_SORT(){

bsortex \
  -define \
  -a ${TABLEDEF_CH0401} \
  -a ${CSVFILEDEF_CH0401} \
    -record recform=txtcsv \
    -input reclen=@{RECLEN} \
           reconst="@{SYS_CD},@{WORK_KINO_SKBT_CD},@{CHSHT_CHG_CD},@{PRC_GRP_CD},@{PCRS_CD},@{PRC_SVC_CD},@{PRC_KMK_CD},@{PRC_KMK_CS_CHGE_TSTAYMD},@{PRC_KMK_CS_CHGE_TENDYMD},@{MK_FLG}" \
           include="@{CHSHT_CHG_CD}asc.eq.'1'.and.@{SYS_CD}asc.eq.'CH'.and.@{MK_FLG}asc.eq.'0'.and.@{PRC_KMK_CS_CHGE_TSTAYMD}asc.le.'$RSLT_OPEDATE'.and.@{PRC_KMK_CS_CHGE_TENDYMD}asc.gt.'$RSLT_OPEDATE'.and.@{WORK_KINO_SKBT_CD}asc.eq.'$SETTE_VALUE_TAX'" \
    -copy \
 < ${CSVFILE_CH0401} \
 > ${CSVFILE_CH0401_WRK2}
echo "sort CH_M_PRC_KMK_CS_CHGE.csv"
}

#-------------------------------------------------------------
# メイン処理
#-------------------------------------------------------------

#
#-- SETTE_VALUEの設定
#-- AMNT
#
sed -e "s/\:OPE_DATE/${RSLT_OPEDATE}/"      ${SQLFILE_ZM0321}     > ${SQLFILE_ZM0321_WRK}
sed -e "s/\:WORK_PARAM/${WKPARA_ID_SIKY}/"  ${SQLFILE_ZM0321_WRK} > ${SQLFILE_ZM0321_AMNT_WRK}
UNLOAD ${SQLFILE_ZM0321_AMNT_WRK}  ${CSVFILE_ZM0321_AMNT}
eval SETTE_VALUE_AMNT=`cat  ${CSVFILE_ZM0321_AMNT}`

#
#--- TAX
#
sed -e "s/\:WORK_PARAM/${WKPARA_ID_TAX}/"   ${SQLFILE_ZM0321_WRK} > ${SQLFILE_ZM0321_TAX_WRK}
UNLOAD ${SQLFILE_ZM0321_TAX_WRK}  ${CSVFILE_ZM0321_TAX}
eval SETTE_VALUE_TAX=`cat  ${CSVFILE_ZM0321_TAX}`

################################
#トランザクションアンロード処理
################################

#
#--- CH_T_SEIKYデータの絞込み
#
CH_T_SEKY_SORT &

#
#--- CH_M_PRC_KMK_CS_CHGEデータを取得(UNLOAD)
#
UNLOAD CH_M_PRC_KMK_CS_CHGE  ${CSVFILE_CH0401}

#
#--- CH_M_PRC_KMK_CS_CHGEデータの絞込み
#
CH_M_PRC_KMK_CS_CHGE_AMNT_SORT &
CH_M_PRC_KMK_CS_CHGE_TAX_SORT 

wait

##############################
#マッチング処理
##############################

#
#--- 入力ファイル定義
#
export CSVFILE_CH0101_WRK=${CSVFILE_CH0101}
export CSVFILE_CH0051_WRK=${CSVFILE_CH0051_WRK}
export CSVFILE_CH0401_WRK=${CSVFILE_CH0401_WRK}
export CSVFILE_CH0401_WRK2=${CSVFILE_CH0401_WRK2}
export CSVFILE_CH0231_WRK=${CSVFILE_CH0231}
export CSVFILE_ZM0321_AMNT=${CSVFILE_ZM0321_AMNT}
export CSVFILE_ZM0321_TAX=${CSVFILE_ZM0321_TAX}
export OUTFILE_TEMP=${OUTFILE_TEMP}

#
#--- マッチング1(マッチング2の為のデータを抽出)
#
(export ZTLQUOTES=''
export ZTLOUTFILE=${OUTFILE_TEMP}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_WRK2})

#
#--- マッチング2
#
(export ZTLQUOTES=''
export ZTLOUTFILE=${OUTFILE_WRK}
${G_TOOLSH}/util/bin/ZTLMAT01 ${DEFFILE_WRK})

#
#--- 抽出処理
#
# 税額集計処理の前処理として、未納のみの消費税額に"0"を設定する
# IT2-2023-0000006 MOD START
#bsortex \
#  -copy \
#  -record recform=txtcsv \
#  -input  reclen=1500 file=${OUTFILE_WRK} \
#  -output file=${OUTFILE_WRK2} case="39.12asc.lt.'0'" \
#          reconst="0.12,1.10,2.6,4.1,38.12,5.8,40.8,41.8,'0'.1asc,4.1,6.4,7.3,8.1,9.7,10.3,11.8,12.242,13.5,EMPTY,15.5,16.242,17.1,18.12,19.11,20.7,21.8,22.24,23.36,24.24,25.122,26.90,27.30,28.242,29.242,30.242,31.3,32.2,33.1,42.2,36.1,34.1,EMPTY,EMPTY,'0'.1asc" \
#  -output file=${OUTFILE_WRK3} case=other \
#          reconst="0.12,1.10,2.6,4.1,38.12,5.8,40.8,41.8,39.12,4.1,6.4,7.3,8.1,9.7,10.3,11.8,12.242,13.5,EMPTY,15.5,16.242,17.1,18.12,19.11,20.7,21.8,22.24,23.36,24.24,25.122,26.90,27.30,28.242,29.242,30.242,31.3,32.2,33.1,42.2,36.1,34.1,EMPTY,EMPTY,'0'.1asc"
bsortex \
  -copy \
  -record recform=txtcsv \
  -input  reclen=1500 file=${OUTFILE_WRK} \
  -output file=${OUTFILE_WRK2} case="39.12asc.lt.' '" \
          reconst="0.12,1.10,2.6,4.1,38.12,5.8,40.8,41.8,'0'.1asc,4.1,6.4,7.3,8.1,9.7,10.3,11.8,12.242,13.5,EMPTY,15.5,16.242,17.1,18.12,19.11,20.7,21.8,22.24,23.36,24.24,25.122,26.90,27.30,28.242,29.242,30.242,31.3,32.2,33.1,42.2,36.1,34.1,EMPTY,EMPTY,'0'.1asc" \
  -output file=${OUTFILE_WRK3} case=other \
          reconst="0.12,1.10,2.6,4.1,38.12,5.8,40.8,41.8,39.12,4.1,6.4,7.3,8.1,9.7,10.3,11.8,12.242,13.5,EMPTY,15.5,16.242,17.1,18.12,19.11,20.7,21.8,22.24,23.36,24.24,25.122,26.90,27.30,28.242,29.242,30.242,31.3,32.2,33.1,42.2,36.1,34.1,EMPTY,EMPTY,'0'.1asc"
# IT2-2023-0000006 MOD END
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sort error(bsortex:rc=$rc) "
      echo $JOBNAME " sort error(bsortex:rc=$rc) "
      exit ${G_RTN_ERROR}
fi

# 消費税額を合算し、改行コードをCRLFに変換する。
bsortex \
  -sort key=0.12asc \
  -record recform=txtcsv -summary field=8.12ascud \
  -input  reclen=1500 file=${OUTFILE_WRK2},${OUTFILE_WRK3} \
  -output file=${OUTFILE} linedlmt=crlf
rc=$?
if [ $rc -ne 0 ]
then
      sh ${G_TOOLSH}/EOK010210J0.sh CS00002E $JOBNAME " sort error(bsortex:rc=$rc) "
      echo $JOBNAME " sort error(bsortex:rc=$rc) "
      exit ${G_RTN_ERROR}
fi

#
#--- ワーク削除
#
if [ $WK_RM = "true" ]
then
    rm -f ${OUTFILE_WRK}
    rm -f ${OUTFILE_WRK2}
    rm -f ${OUTFILE_WRK3}
    rm -f ${OUTFILE_TEMP}
    rm -f ${SQLFILE_ZM0321_WRK}
    rm -f ${SQLFILE_ZM0321_AMNT_WRK}
    rm -f ${SQLFILE_ZM0321_TAX_WRK}
    rm -f ${CSVFILE_CH0051_WRK}
    rm -f ${CSVFILE_CH0401}
    rm -f ${CSVFILE_CH0401_WRK}
    rm -f ${CSVFILE_CH0401_WRK2}
    rm -f ${CSVFILE_CH0501_WRK}
    rm -f ${CSVFILE_ZM0321_TAX}
    rm -f ${CSVFILE_ZM0321_AMNT}
fi

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

exit ${G_RTN_NORMAL}
