/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom						 *
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW21301SFLogic
*   ソースファイル名：KKW21301SFLogic.java
*   作成者          ：富士通
*   日付            ：2015年06月22日
*＜機能概要＞
*   機器代金請求登録画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v15.00.00   2015/06/22   FJ）富士通    新規作成
*   v15.00.01   2015/07/16   FJ)舘山     【IT1-2015-0000058】確認メッセージの追加
*   v25.00.00	2016/05/24	 FJ)佐々木	 【ANK-2671-00-00】機器代金請求機能の追加改修
*   v33.00.00	2017/07/19	 FJ)永井	 【ANK-3085-00-00】機器代金請求の仕様改修
*   v49.00.00	2020/03/11	 FJ)謝		 【ANK-3783-00-00】【eo】機器代金請求登録画面の使用終了日変更対応
**********************************************************************/
package eo.web.webview.KKW21301SF;


import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKCommonActUtil;
import eo.common.util.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKAgntScreenUtil;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKPulldownUtil;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0818_KKSV0818OPDBMapper;
import eo.web.webview.mapping.KKSV0819_KKSV0819OPDBMapper;

/**
 * KKW03301のビューロジック
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW21301SFLogic extends JCCWebBusinessLogic
{
	/** 本体付属品コード 付属品なし */
	private static final String MAINP_HZKHIN_HZKHIN_NON = "0"; 
	/** 本体付属品コード 本体 */
	private static final String MAINP_HZKHIN_MAINP = "1";
	/** 本体付属品コード 付属品 */
	private static final String MAINP_HZKHIN_HZKHIN = "2";

	/** 記事の編集項目の定義 タイトル */
	private static final String KIJI_TITLE = "機器代金請求による一時金登録";	
	/** 記事の編集項目の定義 文中タイトル */
	private static final String KIJI_INNER_TITLE    = "【機器代金請求】";
	/** 記事の編集項目の定義 文中使用開始日 */
	private static final String KIJI_INNER_STR_YMD  = "　使用開始日　：";
	/** 記事の編集項目の定義 文中使用終了日*/
	private static final String KIJI_INNER_END_YMD  = "　使用終了日　：";
	/** 記事の編集項目の定義 文中型番 */
	private static final String KIJI_INNER_MODEL    = "　型番（%s)　";
	/** 記事の編集項目の定義 文中型番（付属品） */
	private static final String KIJI_INNER_MODEL_HZKHIN    = "　型番（%s：付属品)　：　%,d円";
	/** 記事の編集項目の定義 文中製造番号 */
	private static final String KIJI_INNER_SEIZO_NO = "　製造番号（%s）　：　%,d円";
	/** 記事の編集項目の定義 文中事務手数料*/
	private static final String KIJI_INNER_JIMTE = "　事務手数料　：　%,d円";
	/** 記事の編集項目の定義 文中合計 */
	private static final String KIJI_INNER_TOTAL = "　合計　：　%,d円";
	
	/**
	 * 画面初期表示処理
	 * 
	 * @return true: 正常終了
	 * @throws Exception 処理中に発生した例外
	 */
	public boolean actionInit() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを取得
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 画面毎に処理分岐
		if (JKKScreenConst.SCREEN_ID_KKW21301.equals(screenId)) 
		{
			return actionInitKKW21301();
		}
		else if (JKKScreenConst.SCREEN_ID_KKW21302.equals(screenId))
		{
			// 確認画面初期表示は何もしない
		}
		else if (JKKScreenConst.SCREEN_ID_KKW21302.equals(screenId))
		{
			// 完了画面初期表示は何もしない
		}
		else 
		{
			// 何もしない
		}
		return true;
	}
	
	/**
	 * 機器代金請求登録画面初期表示処理
	 * 
	 * @return true : 正常終了
	 * @throws Exception 異常発生した場合の例外
	 */
	private boolean actionInitKKW21301() throws Exception
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		// (1) 引継ぎ情報の取得
		HashMap<String, Object> hktgdata = JCCWebCommon.getScreenInfo(this);
		if (hktgdata != null)
		{
			// 初回データの連携
			X31SDataBeanAccessArray arrayBean = svcFormBean.getDataBeanArray(KKW21301SFConst.CUST_KEI_HKTGI_LIST);
			X31SDataBeanAccess htgBean = arrayBean.getDataBean(0);
			String svcKeiNo = htgBean.sendMessageString(KKW21301SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
			
			svcFormBean.sendMessageString(KKW21301SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		}
		// 機器利用期間別一時金候補のクリア
		svcFormBean.getDataBeanArray(KKW21301SFConst.EKK2991B010CBSMSG1LIST).clearArray();

		// 処理年月日時分秒を設定する
		svcFormBean.sendMessageString(KKW21301SFConst.TRAN_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTime(this, null));
		
		// (2) サービス呼出処理
		HashMap<String, Object> paramMap  = new HashMap<String, Object>();		// ユースケースID格納用のHashMap
		HashMap<String, Object> inputMap  = new HashMap<String, Object>();		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		// サービス呼出結果を格納するHashMap

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0818);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0818OP);
		KKSV0818_KKSV0818OPDBMapper mapper = new KKSV0818_KKSV0818OPDBMapper();
		
		String keyTaknkikiModelCd = svcFormBean.sendMessageString(KKW21301SFConst.TAKNKIKI_MODEL_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String keyAplyYmd = svcFormBean.sendMessageString(KKW21301SFConst.KIKI_TK_END_YMD, X31CWebConst.DATABEAN_GET_VALUE);

		if (keyAplyYmd == null || "".equals(keyAplyYmd))
		{
			keyAplyYmd = JCCWebCommon.getOpeDate(this, null);
		}
		
		mapper.setKKSV081801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, keyTaknkikiModelCd, keyAplyYmd);
		mapper.setKKSV081802SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		mapper.setKKSV081803SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		mapper.setKKSV081804SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV081805SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV081806SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
// ANK-3783-00-00 ADD START
		mapper.setKKSV081807CC(paramBean, inputMap);
// ANK-3783-00-00 ADD END
		
		invokeService(paramMap, inputMap, outputMap);
		
		// (3)サービス処理結果の取得
		mapper.getKKSV081801SC(paramBean, outputMap);
		mapper.getKKSV081805SC(paramBean, outputMap);
		mapper.getKKSV081806SC(paramBean, outputMap);
// ANK-3783-00-00 ADD START
		mapper.getKKSV081807CC(paramBean, outputMap);
// ANK-3783-00-00 ADD END
		
		// (4)表示用画面項目の編集
		setupInitialDisplay_KKW21301(outputMap);


		// (8)遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21301);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21301);

		return true;
	}

	/**
	 * KKW2130画面の初期表示設定を行う。
	 * 
	 * @param outputMap		サービス呼び出しからの結果マップ
	 * @throws Exception	異常が発生した場合の例外
	 */
	private void setupInitialDisplay_KKW21301(HashMap<String, Object> outputMap) throws Exception
	{
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		String strYmd = "";
// ANK-3783-00-00 MOD START
//		String btHzNo = svcFormBean.sendMessageString(KKW21301SFConst.BTRYHOZN_NO, X31CWebConst.DATABEAN_GET_VALUE);
//		if (JKKAgntScreenUtil.isNull(btHzNo))
//		{
//			// 機器提供日
//			strYmd = svcFormBean.sendMessageString(KKW21301SFConst.KIKI_TK_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE);
//		}
//		else 
//		{
//			// 出荷日
//			strYmd = svcFormBean.sendMessageString(KKW21301SFConst.SHUKKA_YMD, X31CWebConst.DATABEAN_GET_VALUE);
//		}
		// 場所設置年月日
		String plcStcYmd = svcFormBean.sendMessageString(KKW21301SFConst.PLC_STC_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		if (JKKAgntScreenUtil.isNull(plcStcYmd))
		{
			// 出荷日
			String shukkaYmd = svcFormBean.sendMessageString(KKW21301SFConst.SHUKKA_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			
			if (!JKKAgntScreenUtil.isNull(shukkaYmd))
			{
				// 出荷日＋10日
				strYmd = JPCDateUtil.addDay(shukkaYmd, 10);
			}
		}
		else
		{
			// 場所設置年月日
			strYmd = plcStcYmd;
		}
// ANK-3783-00-00 MOD END
		// 開始日を設定
		if (JKKAgntScreenUtil.isNull(strYmd))
		{
			svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_YEAR, X31CWebConst.DATABEAN_SET_VALUE, "");
			svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_MON, X31CWebConst.DATABEAN_SET_VALUE, "");
			svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
		} 
		else 
		{
			svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_YEAR, X31CWebConst.DATABEAN_SET_VALUE, strYmd.substring(0, 4));
			svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_MON, X31CWebConst.DATABEAN_SET_VALUE, strYmd.substring(4, 6));
			svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_DAY, X31CWebConst.DATABEAN_SET_VALUE, strYmd.substring(6));
		
		}
		// 終了日を設定
// ANK-3783-00-00 MOD START
//		String endYmd = svcFormBean.sendMessageString(KKW21301SFConst.KIKI_TK_END_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		String endYmd = svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YMD, X31CWebConst.DATABEAN_GET_VALUE);
// ANK-3783-00-00 MOD END
		if (JKKAgntScreenUtil.isNull(endYmd))
		{
			svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YEAR, X31CWebConst.DATABEAN_SET_VALUE, "");
			svcFormBean.sendMessageString(KKW21301SFConst.USE_END_MON, X31CWebConst.DATABEAN_SET_VALUE, "");
			svcFormBean.sendMessageString(KKW21301SFConst.USE_END_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else 
		{
			svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YEAR, X31CWebConst.DATABEAN_SET_VALUE, endYmd.substring(0, 4));
			svcFormBean.sendMessageString(KKW21301SFConst.USE_END_MON, X31CWebConst.DATABEAN_SET_VALUE, endYmd.substring(4, 6));
			svcFormBean.sendMessageString(KKW21301SFConst.USE_END_DAY, X31CWebConst.DATABEAN_SET_VALUE, endYmd.substring(6));
		}
		// ドロップダウンを初期化する
		if (svcFormBean.getDataBeanArray(KKW21301SFConst.JIMU_COMMISION).getCount() == 0)
		{
			svcFormBean.getDataBeanArray(KKW21301SFConst.JIMU_COMMISION).addDataBean();
		}
		if (svcFormBean.getDataBeanArray(KKW21301SFConst.MAINP_HZKHIN).getCount() == 0)
		{
			svcFormBean.getDataBeanArray(KKW21301SFConst.MAINP_HZKHIN).addDataBean();
		}
		if (svcFormBean.getDataBeanArray(KKW21301SFConst.SEIKY_DKN).getCount() == 0)
		{
			svcFormBean.getDataBeanArray(KKW21301SFConst.SEIKY_DKN).addDataBean();
		}
		
		// ドロップダウンの設定

		// 事務手数料
		JKKPulldownUtil.setPulldownList(svcFormBean, outputMap, KKW21301SFConst.JIMU_COMMISION, "KKSV081802SC", false);
		// 本体付属品区分
		JKKPulldownUtil.setPulldownList(svcFormBean, outputMap, KKW21301SFConst.MAINP_HZKHIN, "KKSV081803SC",  true);

		// 検索結果が「付属品なし」か？
		boolean success =  isFuzokuhinNashi(svcFormBean);
		if (success)
		{
			// プルダウンに設定
			int useNansu = getUseNensu(svcFormBean);
			createPullDownListForSeikyDkn(svcFormBean, useNansu, MAINP_HZKHIN_HZKHIN_NON);
			// 「付属品なし」にプルダウンを設定
			setSelectedPulldownValue(svcFormBean, KKW21301SFConst.MAINP_HZKHIN, MAINP_HZKHIN_HZKHIN_NON);
			svcFormBean.sendMessageBoolean(KKW21301SFConst.MAINP_HZKHIN_USE_KH, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		} 
		else 
		{
			// プルダウンをクリア
			createPullDownListForSeikyDkn(svcFormBean, 0, "");
		}
	}

	/**
	 * プルダウンを指定した値に設定する
	 * 
	 * @param svcFormBean	サービスフォームbean
	 * @param pulldownKey	プルダウンキー
	 * @param newValue		設定値
	 */
	private void setSelectedPulldownValue(X31SDataBeanAccess svcFormBean, String pulldownKey, String newValue)
	{
		X31SDataBeanAccessArray pdwnListBean = svcFormBean.getDataBeanArray(pulldownKey);
		X31SDataBeanAccess pulldown_subbean = pdwnListBean.getDataBean(0);
		
		Integer count = (Integer)pulldown_subbean.sendMessage(KKW21301SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0 ; i < count; i++)
		{
			String cdDiv = pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, i);
			if (newValue.equals(cdDiv))
			{
				pulldown_subbean.sendMessageString(KKW21301SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, Integer.toString(i));
				return;
			}
		}
	}

	/**
	 * プルダウンから指定した値を取得する。
	 * 
	 * @param svcFormBean	サービスフォーム
	 * @param pulldownKey	プルダウンBeanキー
	 * @param mode	1: ID　2:メニュー表示項目  3:先頭数値を除いた文字列
	 * @return	選択結果を返す
	 */
	private String getSelectedPulldownValue(X31SDataBeanAccess svcFormBean, String pulldownKey, int mode)
	{
		X31SDataBeanAccessArray pdwnListBean = svcFormBean.getDataBeanArray(pulldownKey);
		X31SDataBeanAccess pulldown_subbean = pdwnListBean.getDataBean(0);
		String value = null;

		String sIndex = pulldown_subbean.sendMessageString(KKW21301SFConst.INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
		if (sIndex != null && !"".equals(sIndex))
		{
			switch (mode)
			{
			case 1:
				value = pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
				break;
				
			case 2:
				value = pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
				break;
				
			case 3:
				value = pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
				int pos = value.indexOf(".");
				if (pos >= 0)
				{
					value = value.substring(pos + 1);
				}
				break;
				
			default:
			}
		}
		if (value == null)
		{
			value = "";		// 空文字が必ず設定されるようにする
		}
		return value.trim();
	}

	/**
	 * 付属品なしかどうかを返す。
	 * 
	 * @param svcFormBean	サービスフォームbean
	 * @return true : 付属品なし false : 付属品あり
	 */
	private boolean isFuzokuhinNashi(X31SDataBeanAccess svcFormBean)
	{
		X31SDataBeanAccessArray listBean = svcFormBean.getDataBeanArray(KKW21301SFConst.EKK2991B010CBSMSG1LIST);
		for (int i = 0; i < listBean.getCount(); i++)
		{
			X31SDataBeanAccess itemBean = listBean.getDataBean(i);
			String mainHzkhin = itemBean.sendMessageString(KKW21301SFConst.MAINP_HZKHIN_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
			if (!MAINP_HZKHIN_HZKHIN_NON.equals(mainHzkhin))
			{
				return false;
			}
		}
		
		return true;
	}

	/**
	 * 機器代金プルダウンを作成する
	 * 
	 * @param svcFormBean	サービスフォームbean
	 * @param useNensu		使用年数
	 * @param checkMainHzhin	本体付属品区分
	 */
	private void createPullDownListForSeikyDkn(X31SDataBeanAccess svcFormBean, int useNensu, String checkMainHzhin)
	{
		X31SDataBeanAccessArray listBean = svcFormBean.getDataBeanArray(KKW21301SFConst.EKK2991B010CBSMSG1LIST);
		
		X31SDataBeanAccessArray pdwnListBean = svcFormBean.getDataBeanArray(KKW21301SFConst.SEIKY_DKN);
		X31SDataBeanAccess pulldown_subbean = pdwnListBean.getDataBean(0);

		//プルダウン情報Beanのコードリスト領域のクリア
		pulldown_subbean.sendMessage(KKW21301SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_CLEAR);
		pulldown_subbean.sendMessage(KKW21301SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_CLEAR);

		// ブランクを１行追加する
		pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
		pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, "");
		
		int selectIndex = 0;
		int currentIndex = 0;
		int previousNensu = -1;
		for (int i = 0; i < listBean.getCount(); i++)
		{
			X31SDataBeanAccess itemBean = listBean.getDataBean(i);
			String mainHzkhin = itemBean.sendMessageString(KKW21301SFConst.MAINP_HZKHIN_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
			if (!checkMainHzhin.equals(mainHzkhin))
			{
				// 指定された本体付属品区分以外がリストに含まれている場合はスキップする
				continue;
			}
			currentIndex++;

			// 条件に一致する候補を探す
			int nensu = Integer.parseInt(itemBean.sendMessageString(KKW21301SFConst.KIKI_USE_NENSU_02, X31CWebConst.DATABEAN_GET_VALUE));
			if (selectIndex == 0)
			{
				if (nensu == useNensu || (previousNensu < useNensu && nensu == 99))
				{
					selectIndex = currentIndex;
				}
				else if (previousNensu < useNensu && useNensu < nensu && nensu != 99)
				{
					selectIndex = currentIndex - 1;
				}
			}
			previousNensu = nensu;
			
			// プルダウンの設定値
			String keyVal = itemBean.sendMessageString(KKW21301SFConst.KKUPB_ICJKN_KHO_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
			String khoName = itemBean.sendMessageString(KKW21301SFConst.KKUPB_ICJKN_KHO_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			long icjknAmnt = Long.parseLong(itemBean.sendMessageString(KKW21301SFConst.ICJKN_AMNT_02, X31CWebConst.DATABEAN_GET_VALUE));
			String dispName = String.format("%s : %,d円", khoName, icjknAmnt);

			// プルダウンに設定
			pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, keyVal);
			pulldown_subbean.sendMessageString(KKW21301SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_ADD_VALUE, dispName);
		}
		// 初期表示位置
		pulldown_subbean.sendMessageString(KKW21301SFConst.INDEX_04, X31CWebConst.DATABEAN_SET_VALUE, Integer.toString(selectIndex)); 
	}
	
	/**
	 * 機器使用年を求める。
	 * 
	 * @param svcFormBean	サービスBean
	 * @return 機器を使用した年差
	 */
	private int getUseNensu(X31SDataBeanAccess svcFormBean)
	{
		// 適用開始年月を取得
		String staY = svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String staM = svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String staD = svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		String staYMD = JKKCommonActUtil.concatYmd(staY, staM, staD);
		
		// 適用終了年月を取得
		String endY = svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String endM = svcFormBean.sendMessageString(KKW21301SFConst.USE_END_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String endD = svcFormBean.sendMessageString(KKW21301SFConst.USE_END_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		String endYMD = JKKCommonActUtil.concatYmd(endY, endM, endD);

		// 開始年月日/終了年月日が入っていなければ計算できない
		if (JKKAgntScreenUtil.isNull(staYMD) || JKKAgntScreenUtil.isNull(endYMD))
		{
			return -1;
		}

		// 逆転している場合は計算できない
		if (staYMD.compareTo(endYMD) > 0)
		{
			return -1;
		}
		
		// 年差を求める
		int rValue = Integer.parseInt(endY) - Integer.parseInt(staY);
		if (rValue > 0)
		{
			// 月の差から1年経過しているか判断する
			int amount = Integer.parseInt(endM) - Integer.parseInt(staM);
			if (amount < 0)
			{
				rValue = rValue - 1;
			}
		}
		return rValue;
	}
	
	/**
	 * 再取得ボタンの押下
	 * 
	 * @return true : 正常終了
	 * @throws Exception 処理中に発生した例外
	 */
	public boolean actionReStku() throws Exception 
	{
		// サービスフォームを取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		// 機器利用期間別一時金候補のクリア
		svcFormBean.getDataBeanArray(KKW21301SFConst.EKK2991B010CBSMSG1LIST).clearArray();
		
		// (1) サービス呼出処理
		HashMap<String, Object> paramMap  = new HashMap<String, Object>();		// ユースケースID格納用のHashMap
		HashMap<String, Object> inputMap  = new HashMap<String, Object>();		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		// サービス呼出結果を格納するHashMap

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0818);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0818OP);
		KKSV0818_KKSV0818OPDBMapper mapper = new KKSV0818_KKSV0818OPDBMapper();
		
		// マッピングデータを取得
		String keyTaknkikiModelCd = svcFormBean.sendMessageString(KKW21301SFConst.TAKNKIKI_MODEL_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// 適用終了日の設定
		String keyAplyYmd = JKKCommonActUtil.concatYmd(
				svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
				svcFormBean.sendMessageString(KKW21301SFConst.USE_END_MON, X31CWebConst.DATABEAN_GET_VALUE),
				svcFormBean.sendMessageString(KKW21301SFConst.USE_END_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		if (JKKAgntScreenUtil.isNull(keyAplyYmd))
		{
			keyAplyYmd = JCCWebCommon.getOpeDate(this, null);	// 未入力の場合
		}
		
		// 付属品の選択結果
		if (svcFormBean.sendMessageBoolean(KKW21301SFConst.MAINP_HZKHIN_USE_KH, X31CWebConst.DATABEAN_GET_VALUE) == false)
		{
			// 画面からの入力データがクリアされるため、再設定する
			setSelectedPulldownValue(svcFormBean, KKW21301SFConst.MAINP_HZKHIN, MAINP_HZKHIN_HZKHIN_NON);
		}
		String  mainHzk = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.MAINP_HZKHIN, 1);

		// 上りマッピング
		mapper.setKKSV081801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, keyTaknkikiModelCd, keyAplyYmd);
		
		invokeService(paramMap, inputMap, outputMap);
		
		// (2)サービス処理結果の取得
		mapper.getKKSV081801SC(paramBean, outputMap);
		
// ANK-2671-00-00 ADD START
		//KKW21301で再取得ボタンを複数回押した時のために継続利用（表示）の初期化
		svcFormBean.sendMessageBoolean(KKW21301SFConst.KEIZOKU_USE_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
		
		//継続利用がONのとき継続利用（表示）をONにする
		if (svcFormBean.sendMessageBoolean(KKW21301SFConst.KEIZOKU_USE, X31CWebConst.DATABEAN_GET_VALUE))
		{
			svcFormBean.sendMessageBoolean(KKW21301SFConst.KEIZOKU_USE_DSP, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
	
// ANK-2671-00-00 ADD END
		// (3) 画面表示処理
		int useNansu = getUseNensu(svcFormBean);
		createPullDownListForSeikyDkn(svcFormBean, useNansu, mainHzk);
		
// ANK-2671-00-00 ADD START
		//コンボボックスを整理しなおした後の請求代金を取得
		X31SDataBeanAccessArray pdwnListBean = svcFormBean.getDataBeanArray(KKW21301SFConst.SEIKY_DKN);
		X31SDataBeanAccess pulldown_subbean = pdwnListBean.getDataBean(0);
		//コード名リストの要素数を取得
		int count = (Integer)pulldown_subbean.sendMessage(KKW21301SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_GET_COUNT);
		//本体付属品コードに対応するコンボボックスが空の時（ブランクは必ず１行設定されるので「count == 1」の時）、エラーメッセージを表示
		if (count == 1)
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, new String[]{"対象の機器", "請求代金"}, "seiky_dkn_list");
		}
// ANK-2671-00-00 ADD END
		return true;
	}

	/**
	 * 更新確認ボタンの押下
	 * 
	 * @return	true : 正常終了
	 * @throws Exception	異常が発生した場合の例外
	 */
	public boolean actionConfirm() throws Exception 
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// (1)チェック（事務手数料）
		String jimute = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.JIMU_COMMISION, 1);
		String amount = svcFormBean.sendMessageString(KKW21301SFConst.JIMU_COMMISION_AMNT, X31CWebConst.DATABEAN_GET_VALUE);
		if (JKKCommonConst.JIMU_COMMISION_3.equals(jimute) && "".equals(amount))
		{
			JCCWebCommon.setMessageInfo(this, "EKB0710-NW", new String[]{"事務手数料に「指定額」", "、事務手数料（指定）"}, "jimu_commision_amnt");
			return true;
		}
		
// ANK-3085-00-00 ADD START
		// 請求代金の選択状態を取得する
		String kkupbIcjknKhoNo = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.SEIKY_DKN, 1);

		// 明細から一時金額を取得する
		X31SDataBeanAccessArray listBean = svcFormBean.getDataBeanArray(KKW21301SFConst.EKK2991B010CBSMSG1LIST);
		String seikyDkn = "";
		
		for (int i = 0; i < listBean.getCount(); i++)
		{
			X31SDataBeanAccess itemBean = listBean.getDataBean(i);
			// キー情報
			String keyVal = itemBean.sendMessageString(KKW21301SFConst.KKUPB_ICJKN_KHO_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
			if (kkupbIcjknKhoNo.equals(keyVal))
			{
				// 請求代金
				seikyDkn = itemBean.sendMessageString(KKW21301SFConst.ICJKN_AMNT_02, X31CWebConst.DATABEAN_GET_VALUE);
				break;
			}
		}		

		// (2)チェック（0円チェック）
		if ("0".equals(seikyDkn) && (JKKCommonConst.JIMU_COMMISION_0.equals(jimute)
				|| (JKKCommonConst.JIMU_COMMISION_3.equals(jimute) && "0".equals(amount))))
		{
			JCCWebCommon.setMessageInfo(this, "EKB0710-NW", new String[]{"請求代金（一時金）に「0円」", "、事務手数料を「有」または「指定額」"}, "jimu_commision_list");
			JCCWebCommon.setMessageInfo(this, "EKB0710-NW", new String[]{"請求代金（一時金）に「0円」", "、事務手数料を「有」または「指定額」"}, "jimu_commision_amnt");
			return true;
		}
// ANK-3085-00-00 ADD END
		// (2)サービスを呼び出すために、Beanに値を設定する。
		editBeanData(jimute);
		
		// (3)サービス呼出処理を実行する。
		invokeServiceKKSV0819(JPCModelConstant.FUNC_CD_2, jimute);

		// ▼▼▼ IT1-2015-0000058 2015/07/16 ADD START  ▼▼▼
		// 確認メッセージ
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[] { "機器代金請求登録" });
		// ▲▲▲ IT1-2015-0000058 2015/07/16 ADD END    ▲▲▲
		
		// (5)遷移先画面の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21302);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21302);

		return true;
	}
	
	/**
	 * データ編集処理
	 * 
	 * @param jimute	事務手数料区分
	 */
	private void editBeanData(String jimute)
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 一時金額（事務手数料）
		String jimute_amount = "";
		if (JKKCommonConst.JIMU_COMMISION_3.equals(jimute))
		{
			jimute_amount = svcFormBean.sendMessageString(KKW21301SFConst.JIMU_COMMISION_AMNT, X31CWebConst.DATABEAN_GET_VALUE);
			jimute_amount = jimute_amount.replaceAll(",", ""); // カンマを削除する
		}
		else
		{
			svcFormBean.sendMessageString(KKW21301SFConst.JIMU_COMMISION_AMNT, X31CWebConst.DATABEAN_SET_VALUE, "");
			if (JKKCommonConst.JIMU_COMMISION_1.equals(jimute) || JKKCommonConst.JIMU_COMMISION_2.equals(jimute))
			{
				X31SDataBeanAccessArray array = svcFormBean.getDataBeanArray(KKW21301SFConst.EKK0721A010CBSMSG1LIST);
				X31SDataBeanAccess subBean = array.getDataBean(0);
				jimute_amount = subBean.sendMessageString(KKW21301SFConst.TMP_PAY_PRC_AMNT_06, X31CWebConst.DATABEAN_GET_VALUE);
	
				if (JKKCommonConst.JIMU_COMMISION_2.equals(jimute)) 
				{
					jimute_amount = Long.toString(Long.parseLong(jimute_amount) / 2);
				}
			}
		}
		// 一時金額（事務手数料）
		svcFormBean.sendMessageString(KKW21301SFConst.ICJKN_AMNT_JMTE, X31CWebConst.DATABEAN_SET_VALUE,  jimute_amount);

		// 一時支払料金番号（手数料）
		X31SDataBeanAccessArray arrayTpBean = svcFormBean.getDataBeanArray(KKW21301SFConst.EKK0721A010CBSMSG1LIST);
		X31SDataBeanAccess tpBean = arrayTpBean.getDataBean(0);
		if (tpBean != null)
		{
			svcFormBean.sendMessageString(KKW21301SFConst.TMP_PAY_PRC_NO, X31CWebConst.DATABEAN_SET_VALUE, 
									tpBean.sendMessageString(KKW21301SFConst.TMP_PAY_PRC_NO_06, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// 請求代金の選択状態を取得
		String kkupbIcjknKhoNo = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.SEIKY_DKN, 1);

		// 明細から一時支払料金番号と一時金額を設定する
		X31SDataBeanAccessArray listBean = svcFormBean.getDataBeanArray(KKW21301SFConst.EKK2991B010CBSMSG1LIST);
		String mainp = ""; 
		for (int i = 0; i < listBean.getCount(); i++)
		{
			X31SDataBeanAccess itemBean = listBean.getDataBean(i);
			// キー情報
			String keyVal = itemBean.sendMessageString(KKW21301SFConst.KKUPB_ICJKN_KHO_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
			if (kkupbIcjknKhoNo.equals(keyVal))
			{
				// 一時支払料金番号（機器）
				svcFormBean.sendMessageString(KKW21301SFConst.TMP_PAY_PRC_NO_KIKI, X31CWebConst.DATABEAN_SET_VALUE, 
											itemBean.sendMessageString(KKW21301SFConst.TMP_PAY_PRC_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
				// 一時金額（機器）
				svcFormBean.sendMessageString(KKW21301SFConst.ICJKN_AMNT_KIKI, X31CWebConst.DATABEAN_SET_VALUE, 
											itemBean.sendMessageString(KKW21301SFConst.ICJKN_AMNT_02, X31CWebConst.DATABEAN_GET_VALUE));
				// 本体付属品区分
				mainp = itemBean.sendMessageString(KKW21301SFConst.MAINP_HZKHIN_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
				break;
			}
		}

		// タイトル
		svcFormBean.sendMessageString(KKW21301SFConst.TITLE, X31CWebConst.DATABEAN_SET_VALUE, KIJI_TITLE);

		// 記事（表示用）
		String staY = svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String staM = svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String staD = svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_DAY, X31CWebConst.DATABEAN_GET_VALUE);

		String endY = svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String endM = svcFormBean.sendMessageString(KKW21301SFConst.USE_END_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String endD = svcFormBean.sendMessageString(KKW21301SFConst.USE_END_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		
		String modelName = svcFormBean.sendMessageString(KKW21301SFConst.TAKNKIKI_MODEL_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String seizoNo   = svcFormBean.sendMessageString(KKW21301SFConst.KIKI_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String icjkn     = svcFormBean.sendMessageString(KKW21301SFConst.ICJKN_AMNT_KIKI, X31CWebConst.DATABEAN_GET_VALUE);
		String kiji      = svcFormBean.sendMessageString(KKW21301SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE);

		// 記事の編集仕様
		StringBuilder buf = new StringBuilder();
		buf.append(KIJI_INNER_TITLE).append(JCRStrConst.KAIGYO_CD)
			.append(KIJI_INNER_STR_YMD).append(getFormatDate(staY, staM, staD)).append(JCRStrConst.KAIGYO_CD)
			.append(KIJI_INNER_END_YMD).append(getFormatDate(endY, endM, endD)).append(JCRStrConst.KAIGYO_CD);

		// 本体・付属品ごとに出力内容を変更
		if (MAINP_HZKHIN_HZKHIN.equals(mainp))
		{
			// 付属品
			buf.append(String.format(KIJI_INNER_MODEL_HZKHIN, modelName, Long.parseLong(icjkn)))
				.append(JCRStrConst.KAIGYO_CD);
		} 
		else 
		{
			// 本体
			buf.append(String.format(KIJI_INNER_MODEL, modelName))
				.append(JCRStrConst.KAIGYO_CD)
				.append(String.format(KIJI_INNER_SEIZO_NO, seizoNo, Long.parseLong(icjkn)))
				.append(JCRStrConst.KAIGYO_CD);
		}

		// 事務手数料に関する出力
		if (!"".equals(jimute) && !JKKCommonConst.JIMU_COMMISION_0.equals(jimute))
		{
			buf.append(String.format(KIJI_INNER_JIMTE, Long.parseLong(jimute_amount)))
				.append(JCRStrConst.KAIGYO_CD)
				.append(String.format(KIJI_INNER_TOTAL, Long.parseLong(icjkn) + Long.parseLong(jimute_amount)))
				.append(JCRStrConst.KAIGYO_CD);
		}
		// 記事を出力
		buf.append(JCRStrConst.KAIGYO_CD).append(kiji);

		// 作成した文書を記事にセット
		svcFormBean.sendMessageString(KKW21301SFConst.KIJI_DSP, X31CWebConst.DATABEAN_SET_VALUE, buf.toString());
		// 処理年月日時分秒
		svcFormBean.sendMessageString(KKW21301SFConst.TRAN_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTime(this, null));
		// ログインユーザーID
		svcFormBean.sendMessageString(KKW21301SFConst.LOGIN_USER_ID, X31CWebConst.DATABEAN_SET_VALUE, 
									commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE));
		// ログインユーザー名
		svcFormBean.sendMessageString(KKW21301SFConst.LOGIN_USER_NM, X31CWebConst.DATABEAN_SET_VALUE, 
									commoninfoBean.sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE));

		// 権限リストの２レコード目を取得
		X31SDataBeanAccessArray arryBean = commoninfoBean.getDataBeanArray(CommonInfoCFConst.KGGRP_CD_LIST);
		X31SDataBeanAccess  subBean = arryBean.getDataBean(1);

		// 業務個別設定組織コード
		svcFormBean.sendMessageString(KKW21301SFConst.WKKBT_ORG_CD, X31CWebConst.DATABEAN_SET_VALUE, 
									subBean.sendMessageString(CommonInfoCFConst.ORG_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
		// 業務個別設定組織名
		svcFormBean.sendMessageString(KKW21301SFConst.WKKBT_ORG_NM, X31CWebConst.DATABEAN_SET_VALUE, 
									subBean.sendMessageString(CommonInfoCFConst.ORG_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
		

		// 事務手数料
		String jimuteNm = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.JIMU_COMMISION, 3);
		svcFormBean.sendMessageString(KKW21301SFConst.JIMU_COMMISION_DSP, X31CWebConst.DATABEAN_SET_VALUE, jimuteNm);
		
		// 使用開始日
		String strYmd = JKKCommonActUtil.concatYmd(
									svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
									svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_MON, X31CWebConst.DATABEAN_GET_VALUE),
									svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		svcFormBean.sendMessageString(KKW21301SFConst.USE_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, (strYmd == null ? "" : strYmd));
		
		// 使用終了日
		String endYmd = JKKCommonActUtil.concatYmd(
									svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE),
									svcFormBean.sendMessageString(KKW21301SFConst.USE_END_MON, X31CWebConst.DATABEAN_GET_VALUE),
									svcFormBean.sendMessageString(KKW21301SFConst.USE_END_DAY, X31CWebConst.DATABEAN_GET_VALUE));
		svcFormBean.sendMessageString(KKW21301SFConst.USE_END_YMD, X31CWebConst.DATABEAN_SET_VALUE, (endYmd == null ? "" : endYmd));
		
		// 付属品
		if (svcFormBean.sendMessageBoolean(KKW21301SFConst.MAINP_HZKHIN_USE_KH, X31CWebConst.DATABEAN_GET_VALUE) == false)
		{
			// 画面からの入力データがクリアされるため、再設定する
			setSelectedPulldownValue(svcFormBean, KKW21301SFConst.MAINP_HZKHIN, MAINP_HZKHIN_HZKHIN_NON);
		}
		String mainpHzk = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.MAINP_HZKHIN, 3);
		svcFormBean.sendMessageString(KKW21301SFConst.MAINP_HZKHIN_DSP, X31CWebConst.DATABEAN_SET_VALUE, mainpHzk);
		
		// 請求代金（一時金）
		String ichj = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.SEIKY_DKN, 2);
		svcFormBean.sendMessageString(KKW21301SFConst.SEIKY_DKN_KINGAKU, X31CWebConst.DATABEAN_SET_VALUE, ichj);
		
		// 請求年月
		X31SDataBeanAccessArray arrayYmBean = svcFormBean.getDataBeanArray(KKW21301SFConst.ECH0501A010CBSMSG1LIST);
		X31SDataBeanAccess ymBean = arrayYmBean.getDataBean(0);
		if (ymBean != null)
		{
			svcFormBean.sendMessageString(KKW21301SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, 
									ymBean.sendMessageString(KKW21301SFConst.SEIKY_YM_05, X31CWebConst.DATABEAN_GET_VALUE));
		}
	}

	/**
	 * 機器代金請求登録実行
	 * 
	 * @param funcCode	処理コード
	 * @param jimute	事務手数料区分
	 */
	private void invokeServiceKKSV0819(String funcCode, String jimute)
	{
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = new X31SDataBeanAccess[] {svcFormBean};

		HashMap<String, Object> paramMap  = new HashMap<String, Object>();		// ユースケースID格納用のHashMap
		HashMap<String, Object> inputMap  = new HashMap<String, Object>();		// マッピングクラスの結果を格納するHashMap
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		// サービス呼出結果を格納するHashMap

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0819);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0819OP);
		KKSV0819_KKSV0819OPDBMapper mapper = new KKSV0819_KKSV0819OPDBMapper();

		// 上りマッピング
		mapper.setKKSV081901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
// ANK-3085-00-00 MOD START
//		mapper.setKKSV081902SC(paramBean, inputMap, funcCode);
		String seikyDkn = svcFormBean.sendMessageString(KKW21301SFConst.ICJKN_AMNT_KIKI, X31CWebConst.DATABEAN_GET_VALUE);
		// 請求代金が０円の場合は設定しない
		if (!"0".equals(seikyDkn))
		{
			mapper.setKKSV081902SC(paramBean, inputMap, funcCode);
		}
// ANK-3085-00-00 MOD END
		if (!"".equals(jimute) && !JKKCommonConst.JIMU_COMMISION_0.equals(jimute))
		{
			mapper.setKKSV081903SC(paramBean, inputMap, funcCode);
		}
		mapper.setKKSV081904SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV081905SC(paramBean, inputMap, funcCode);
		if (!JPCModelConstant.FUNC_CD_2.equals(funcCode))
		{
			mapper.setKKSV081906SC(paramBean, inputMap, funcCode);
			mapper.setKKSV081907SC(paramBean, inputMap, funcCode);
			mapper.setKKSV081901CC(paramBean, inputMap, funcCode);
			mapper.setKKSV081908SC(paramBean, inputMap, funcCode);
		}
		invokeService(paramMap, inputMap, outputMap);

		// (4)サービス処理結果の取得
		// 下りで取得するものは無いので何もしない。
		
	}

	/**
	 * 編集された日付を返す
	 * 
	 * @param yy	年の文字列
	 * @param mm	月の文字列
	 * @param dd	日の文字列
	 * @return	年月日を/区切りで編集した文字列
	 */
	private String getFormatDate(String yy, String mm, String dd)
	{
		if (JKKAgntScreenUtil.isNull(yy)) 
		{
			return "";
		}
		if (JKKAgntScreenUtil.isNull(mm)) 
		{
			return "";
		}
		if (JKKAgntScreenUtil.isNull(dd))
		{
			return "";
		}
		
		return new StringBuilder()
				.append(yy).append("/")
				.append(mm).append("/")
				.append(dd).toString();
	}

	/**
	 * 再編集ボタン押下処理
	 * 
	 * @return	true : 正常終了
	 */
	public boolean actionRevise()
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 編集画面を表示
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21301);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21301);
		return true;
	}
	
	/**
	 * 完了ボタン押下処理
	 * 
	 * @return	true : 正常終了
	 */
	public boolean actionFix()
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 処理年月日時分秒を設定する
		svcFormBean.sendMessageString(KKW21301SFConst.TRAN_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTime(this, null));


		// サービスの呼出
		String jimute = getSelectedPulldownValue(svcFormBean, KKW21301SFConst.JIMU_COMMISION, 1);
		invokeServiceKKSV0819(JPCModelConstant.FUNC_CD_1, jimute);
		
		// 完了メッセージ
		JCCWebCommon.setMessageInfo(this, "EKB4390--I", new String[] { "機器代金請求の一時金登録" });

		// 完了画面を表示
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21303);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21303);

		return true;
	}
}
