/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CHW00211SFLogic
 *	ソースファイル名：CHW00211SFLogic.java
 *	作成者			：富士通
 *	日付			：2012年09月14日
 *＜機能概要＞
 *	FTTH通信量訂正ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00
 *	v1.01.00	2013/05/08	FJ)大塚     メッセージ領域の背景色の設定対応
 *	v5.00.00    2013/08/06  FJ) 林     【IT1-2013-0001502】通信料（従量制）の場合のみFTTH通信量訂正画面を起動する対応
 *	v8.00.00	2013/12/25  FJ)小野    【ANK-1584-00-00】MVNO（本体）対応
 *	v8.00.01    2014/04/09  FJ) 林     【OM-2014-0001415】FTTH従量制サービス消費税対応
 *
 ********************************************************************************/

/**
 * <DL>
 * <DT>名前
 * <p>
 * <DT>説明: 
 * <DD>データの初期化.
 * <DD> generated by Web Client tool V01/L01.
 * </DL>
*/
package eo.web.webview.CHW00211SF;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JACStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JCHCommonFormatUtil;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHCommonConst;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CHSV0070_CHSV0070OPDBMapper;
import eo.web.webview.mapping.CHSV0071_CHSV0071OPDBMapper;
import eo.web.webview.mapping.CHSV0072_CHSV0072OPDBMapper;

/**
 * FTTH通信量訂正ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CHW00211SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(FTTH通信量訂正画面情報取得) */
	private static final String USECASE_ID_CHSV0070 = "CHSV0070";

	/** ユースケースID(FTTH通信料情報算出) */
	private static final String USECASE_ID_CHSV0071 = "CHSV0071";

	/** ユースケースID(FTTH通信量訂正画面確定完了) */
	private static final String USECASE_ID_CHSV0072 = "CHSV0072";

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示を行う。<br>
	 * <br>
	 * FTTH通信量訂正画面の初期表示を行います。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	public boolean init() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		HashMap<String, Object> hktgMap = JCCWebCommon.getScreenInfo(this);

		// 請求内訳情報引継処理(list→bean変換)
		setHktgInfoList2Bean(hktgMap);

		// 税率識別コード
		String taxRtSkbtCd = (String) hktgMap.get(JACStrConst.FTTH_TAX_RT_SKBT_CD);

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 初期値設定
		setDefaultBean();

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0070);

		// マッピングクラス
		CHSV0070_CHSV0070OPDBMapper mapper = new CHSV0070_CHSV0070OPDBMapper();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// マッピング処理（上り）
		mapper.setGETPRCKMKCSCHGELISTCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCALCTEIZORYOKINCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1, taxRtSkbtCd);
		mapper.setGETWORKPARAMLISTCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCHSV007001SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// 各inputリスト編集
		setPrcKmkCsChgList(dataMap);
		setWorkParamList(dataMap);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// マッピング処理（下り）
		mapper.getGETPRCKMKCSCHGELISTCC(paramBean, outputMap, taxRtSkbtCd);
		mapper.getGETWORKPARAMLISTCC(paramBean, outputMap);
		mapper.getCALCTEIZORYOKINCC(paramBean, outputMap);
		mapper.getCHSV007001SC(paramBean, outputMap);


		// 金額、通信料初期値の設定
		setDefaultGakuAmnt();
		// 総合計（通信量）← 訂正前合計（通信量） + 訂正分（通信量）
		calcTotalA();
		// 総合計（内訳額）← 訂正前合計（内訳額） + 訂正分（内訳額）
		calcTotalG();

		// -------------------------------------------------- //
		// (5)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00211);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00211);

		return true;
	}

	/**
	 * 登録確認処理を行う。<br>
	 * <br>
	 * FTTH通信量訂正画面に戻る。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean regist() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 訂正前合計（通信量）← 利用分（通信量） + 無料分（通信量）+ 補正分（通信量）
		calcTeiseimaeA();
		// 総合計（通信量）← 訂正前合計（通信量） + 訂正分（通信量）
		calcTotalA();
		// 訂正前合計（内訳額）＿入力区分 初期化(true)
		bean.sendMessageBoolean(CHW00211SFConst.TEISEIMAE_TOTAL_TSUSIN_INPUT_KBN, X31CWebConst.DATABEAN_SET_VALUE, true);

		// -------------------------------------------------- //
		// (2)サービス呼出処理
		// -------------------------------------------------- //
		String kidoMode = bean.sendMessageString(CHW00211SFConst.FTTH_KIDO_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		String tsMaeGokei = bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE);

		// 訂正前合計（内訳額）が入力されていない場合、falseにする
		if (JCRUtilCommon.isNull(tsMaeGokei))
		{
			bean.sendMessageBoolean(CHW00211SFConst.TEISEIMAE_TOTAL_TSUSIN_INPUT_KBN, X31CWebConst.DATABEAN_SET_VALUE, false);
		}

		if (JACStrConst.FTTH_KIDO_MODE_TEISEI.equals(kidoMode) ||
				(JACStrConst.FTTH_KIDO_MODE_ADD.equals(kidoMode) && JCRUtilCommon.isNull(tsMaeGokei)))
		{
			// ユースケースID格納用マップ
			HashMap<Object, String> paramMap = new HashMap<Object, String>();

			// ユースケースID格納
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0071);

			// マッピングクラス
			CHSV0071_CHSV0071OPDBMapper mapper = new CHSV0071_CHSV0071OPDBMapper();

			// マッピング用Map
			HashMap<String, Object> dataMap = new HashMap<String, Object>();

			// マッピングクラスを使用する為、配列化
			X31SDataBeanAccess[] paramBean = {bean};

			// マッピング処理（上り）
			mapper.setCALCTEIZORYOKINCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

			// 各inputリスト編集
			setCalcTeizoInfoList(dataMap);

			// サービス実行結果データ用Map
			HashMap<String, Object> outputMap = new HashMap<String, Object>();

			// サービス実行
			invokeService(paramMap, dataMap, outputMap);

			// -------------------------------------------------- //
			// (3)サービス処理結果の設定
			// -------------------------------------------------- //
			// マッピング処理（下り）
			mapper.getCALCTEIZORYOKINCC(paramBean, outputMap);

			// 訂正分（内訳額）← 総合計（内訳額） - 訂正前合計（内訳額）
			calcTeiseiG();
		}
		else
		{
			// 総合計（内訳額）← 訂正前合計（内訳額） + 訂正分（内訳額）
			calcTotalG();
		}

		// -------------------------------------------------- //
		// (4)エラーチェック
		// -------------------------------------------------- //
		if (!checkAmnt())
		{
			// 遷移先画面IDを共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_ID_CHW00211);

			// 遷移先画面名を共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_NAME_CHW00211);

			return true;
		}

		// メッセージ領域の背景色の設定
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"訂正"});

		// -------------------------------------------------- //
		// (5)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00212);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00212);

		return true;
	}

	/**
	 * 確定完了処理を行う。<br>
	 * <br>
	 * FTTH通信量訂正画面に戻る。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean fixFin() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 訂正前合計（通信量）← 利用分（通信量） + 補正分（通信量）
		calcTeiseimaeA();
		// 総合計（通信量）← 訂正前合計（通信量） + 訂正分（通信量）
		calcTotalA();

		// -------------------------------------------------- //
		// (2)サービス呼出処理
		// -------------------------------------------------- //
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0072);

		// マッピングクラス
		CHSV0072_CHSV0072OPDBMapper mapper = new CHSV0072_CHSV0072OPDBMapper();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// マッピング処理（上り）
		mapper.setCALCTEIZORYOKINCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCHSV007201SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// 各inputリスト編集
		setCalcTeizoInfoList(dataMap);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// -------------------------------------------------- //
		// (3)サービス処理結果の設定
		// -------------------------------------------------- //
		// マッピング処理（下り）
		mapper.getCALCTEIZORYOKINCC(paramBean, outputMap);
		mapper.getCHSV007201SC(paramBean, outputMap);

		// 訂正分（内訳額）← 総合計（内訳額） - 訂正前合計（内訳額）
		calcTeiseiG();

		// -------------------------------------------------- //
		// (4)エラーチェック
		// -------------------------------------------------- //
		if (!checkAmnt())
		{
			// 遷移先画面IDを共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_ID_CHW00212);

			// 遷移先画面名を共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_NAME_CHW00212);

			return true;
		}

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// 引き継ぎの情報を格納するMAPを生成する。 
		HashMap<String, Object> hktgMap = new HashMap<String, Object>();

		List<HashMap<String, Object>> list1 = new ArrayList<HashMap<String, Object>>();
		List<HashMap<String, Object>> list2 = new ArrayList<HashMap<String, Object>>();

		if (JACStrConst.FTTH_KIDO_MODE_ADD.equals(bean.sendMessageString(CHW00211SFConst.FTTH_KIDO_MODE, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 追加モード用 返却用請求内訳情報作成
			createFtthListAdd(list1, list2);
		}
		else
		{
			// 訂正モード用 返却用請求内訳情報作成
			createFtthListUpd(list1, list2);
		}

		// 請求内訳情報用
		hktgMap.put(JACStrConst.FTTH_HKTG_LIST, list1);
		// 請求内訳情報（非表示）用
		hktgMap.put(JACStrConst.FTTH_HKTG_LIST2, list2);

		hktgMap.put(JCHCommonConst.UW_ADD_POSITION, bean.sendMessageString(CHW00211SFConst.UW_ADD_POSITION, X31CWebConst.DATABEAN_GET_VALUE));

		// 戻り先画面ID取得（JCCWebCommon.getScreenInfo)を使用し、戻り先画面IDを取得する。
		String screenId = JCRWebCommon.getScreenId(this);

		// 画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, screenId, hktgMap);

		// -------------------------------------------------- //
		// (6)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;
	}

	/**
	 * 修正処理を行う。<br>
	 * <br>
	 * FTTH通信量訂正画面に戻る。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean shusei() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		String kidoMode = bean.sendMessageString(CHW00211SFConst.FTTH_KIDO_MODE, X31CWebConst.DATABEAN_GET_VALUE);

		if (JACStrConst.FTTH_KIDO_MODE_ADD.equals(kidoMode))
		{
			bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (6)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00211);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00211);

		return true;
	}

	/**
	 * 請求内訳情報引継処理<br>
	 * <br>
	 * 親画面から引継いだ請求内訳情報(List)を引継＿請求内訳情報(bean)に移送する。
	 * 
	 * @param hktgMap 引継用Map
	 */
	@SuppressWarnings("unchecked")
	private void setHktgInfoList2Bean(HashMap<String, Object> hktgMap)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// beanのListをクリア
		bean.getDataBeanArray(CHW00211SFConst.HKTG_SEIKY_UW_INFO).clearArray();
		X31SDataBeanAccessArray seikyUwInfo = bean.getDataBeanArray(CHW00211SFConst.HKTG_SEIKY_UW_INFO);

		// 引継用Mapから引継リストを取得
		ArrayList<HashMap<String, Object>> hktgList = (ArrayList<HashMap<String, Object>>)hktgMap.get(JACStrConst.FTTH_HKTG_LIST);

		for (int i = 0; i < hktgList.size(); i++)
		{
			// 1件追加
			X31SDataBeanAccess subBean = seikyUwInfo.addDataBean();

			// -------------------------------------------------- //
			// 引継リストの中のmapから、DataBeanに移送する。
			// -------------------------------------------------- //
			HashMap<String, Object> childMap = hktgList.get(i);

			// List(map)⇒beanへ移送
			moveList2Bean(childMap, subBean);
		}

		// beanのListをクリア
		bean.getDataBeanArray(CHW00211SFConst.HKTG_SEIKY_UW_DB_CTL).clearArray();
		X31SDataBeanAccessArray seikyUwInfo2 = bean.getDataBeanArray(CHW00211SFConst.HKTG_SEIKY_UW_DB_CTL);

		// 引継用Mapから引継リスト2を取得
		ArrayList<HashMap<String, Object>> hktgList2 = (ArrayList<HashMap<String, Object>>)hktgMap.get(JACStrConst.FTTH_HKTG_LIST2);

		for (int i = 0; i < hktgList2.size(); i++)
		{
			// 1件追加
			X31SDataBeanAccess subBean = seikyUwInfo2.addDataBean();

			// -------------------------------------------------- //
			// 引継リストの中のmapから、DataBeanに移送する。
			// -------------------------------------------------- //
			HashMap<String, Object> childMap = hktgList2.get(i);

			// List(map)⇒beanへ移送
			moveList2Bean(childMap, subBean);
		}
	}

	/**
	 * 請求内訳情報移送処理<br>
	 * <br>
	 * 請求内訳情報(List(map))をBeanに移送する。
	 * 
	 * @param childMap 引継情報map
	 * @param subBean データタイプBean
	 */
	private void moveList2Bean(HashMap<String, Object> childMap, X31SDataBeanAccess subBean)
	{
		// 請求内訳情報.Ｎｏ ← no
		subBean.sendMessageString(CHW00211SFConst.NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("no"));

		// 請求内訳情報.ＩＤ番号 ← id_no
		subBean.sendMessageString(CHW00211SFConst.ID_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("id_no"));

		// 請求内訳情報.利用開始日 ← use_staymd
		subBean.sendMessageString(CHW00211SFConst.USE_STAYMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_staymd"));

		// 請求内訳情報.利用終了日 ← use_endymd
		subBean.sendMessageString(CHW00211SFConst.USE_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_endymd"));

		// 請求内訳情報.料金内訳 ← prc_uw
		subBean.sendMessageString(CHW00211SFConst.PRC_UW_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_uw"));

		// 請求内訳情報.税区分 ← tax_div
		subBean.sendMessageString(CHW00211SFConst.TAX_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tax_div"));

		// 請求内訳情報.調整区分 ← div_adj_prc
		subBean.sendMessageString(CHW00211SFConst.AJST_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ajst_div"));

		// 請求内訳情報.調整区分名称 ← div_adj_prc_nm
		subBean.sendMessageString(CHW00211SFConst.AJST_DIV_NM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ajst_div_nm"));

		// 請求内訳情報.調整前金額 ← amnt_adj_bf_prc
		subBean.sendMessageString(CHW00211SFConst.AJST_BF_AMNT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("amnt_adj_bf_prc"));

		// 請求内訳情報.調整後金額 ← amnt_adj_af_prc
		subBean.sendMessageString(CHW00211SFConst.AJST_AF_AMNT_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("amnt_adj_af_prc"));

		// 請求内訳情報.行番号 ← row_no
		subBean.sendMessageString(CHW00211SFConst.ROW_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("row_no"));

		// 請求内訳情報.変更前利用開始日 ← use_staymd_bf
		subBean.sendMessageString(CHW00211SFConst.USE_STAYMD_BF_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_staymd_bf"));

		// 請求内訳情報.変更前利用終了日 ← use_endymd_bf
		subBean.sendMessageString(CHW00211SFConst.USE_ENDYMD_BF_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_endymd_bf"));

		// 請求内訳情報.削除取消ボタン表示区分 ← dsp_del_cl_kbn
		subBean.sendMessageString(CHW00211SFConst.DSP_KBN_DEL_CL_BTN_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_kbn_del_cl_btn"));

		// 請求内訳情報.訂正ボタン表示区分 ← dsp_kbn_teisei_btn
		subBean.sendMessageString(CHW00211SFConst.DSP_KBN_TEISEI_BTN_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_kbn_teisei_btn"));

		// 請求内訳情報.利用期間表示制御フラグ ← use_prd_dsp_ctrl_flg
		subBean.sendMessageString(CHW00211SFConst.USE_PRD_DSP_CTRL_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_prd_dsp_ctrl_flg"));

		// 請求内訳情報.調整フラグ ← ajst_flg
		subBean.sendMessageString(CHW00211SFConst.AJST_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ajst_flg"));

		// 請求内訳情報.料金訂正可否 ← prc_teisei_kh
		subBean.sendMessageString(CHW00211SFConst.PRC_TEISEI_KH_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_teisei_kh"));

		// 請求内訳情報.行区分 ← gyo_div
		subBean.sendMessageString(CHW00211SFConst.GYO_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("gyo_div"));

		// 請求内訳情報.整理番号 ← seiri_no
		subBean.sendMessageString(CHW00211SFConst.SEIRI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiri_no"));

		// 請求内訳情報.マンションＩＤ ← mansion_id
		subBean.sendMessageString(CHW00211SFConst.MANSION_ID_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mansion_id"));

		// 請求内訳情報.回線場所住所補記＿部屋番号 ← kaisen_place_adrrm
		subBean.sendMessageString(CHW00211SFConst.KAISEN_PLACE_ADRRM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kaisen_place_adrrm"));

		// 請求内訳情報.サービス契約番号 ← key_svc_kei_no
		subBean.sendMessageString(CHW00211SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_no"));

		// 請求内訳情報.料金グループコード ← key_prc_grp_cd
		subBean.sendMessageString(CHW00211SFConst.KEY_PRC_GRP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_cd"));

		// 請求内訳情報.料金コースコード ← key_pcrs_cd
		subBean.sendMessageString(CHW00211SFConst.KEY_PCRS_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));

		// 請求内訳情報.料金サービスコード ← key_prc_svc_cd
		subBean.sendMessageString(CHW00211SFConst.KEY_PRC_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_svc_cd"));

		// 請求内訳情報.内訳新規区分 ← is_new_ucwk
		subBean.sendMessageString(CHW00211SFConst.IS_NEW_UCWK_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("is_new_ucwk"));

		// 請求内訳情報.請求契約番号追加区分 ← is_add_seiky_kei_no
		subBean.sendMessageString(CHW00211SFConst.IS_ADD_SEIKY_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("is_add_seiky_kei_no"));

		// 請求内訳情報.料金項目コード ← key_prc_kmk_cd
		subBean.sendMessageString(CHW00211SFConst.KEY_PRC_KMK_CD_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_kmk_cd"));
		
		// 請求内訳情報.合算請求年月 ← gsan_seiky_ym
		subBean.sendMessageString(CHW00211SFConst.GSAN_SEIKY_YM_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("gsan_seiky_ym"));
		
		// 請求内訳情報.サービス詳細識別番号 ← svc_dtl_skbt_no
		subBean.sendMessageString(CHW00211SFConst.SVC_DTL_SKBT_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_dtl_skbt_no"));
		
		// 請求内訳情報.請求内訳番号 ← seiky_ucwk_no
		subBean.sendMessageString(CHW00211SFConst.SEIKY_UCWK_NO_01, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_ucwk_no"));
	}

	/**
	 * 請求内訳情報移送処理<br>
	 * <br>
	 * 請求内訳情報(Bean)をList(map)に移送する。
	 * 
	 * @param subBean データタイプBean
	 * @param inMap 引継情報map
	 */
	private void moveBean2List(X31SDataBeanAccess subBean, HashMap<String, Object> inMap)
	{
		// 請求内訳情報.Ｎｏ ← no
		inMap.put("no", subBean.sendMessageString(CHW00211SFConst.NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.ＩＤ番号 ← id_no
		inMap.put("id_no", subBean.sendMessageString(CHW00211SFConst.ID_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.利用開始日 ← use_staymd
		inMap.put("use_staymd", subBean.sendMessageString(CHW00211SFConst.USE_STAYMD_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.利用終了日 ← use_endymd
		inMap.put("use_endymd", subBean.sendMessageString(CHW00211SFConst.USE_ENDYMD_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.料金内訳 ← prc_uw
		inMap.put("prc_uw", subBean.sendMessageString(CHW00211SFConst.PRC_UW_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.税区分 ← tax_div
		inMap.put("tax_div", subBean.sendMessageString(CHW00211SFConst.TAX_DIV_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.調整区分 ← div_adj_prc
		inMap.put("ajst_div", subBean.sendMessageString(CHW00211SFConst.AJST_DIV_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.調整区分名称 ← div_adj_prc_nm
		inMap.put("ajst_div_nm", subBean.sendMessageString(CHW00211SFConst.AJST_DIV_NM_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.調整前金額 ← amnt_adj_bf_prc
		inMap.put("amnt_adj_bf_prc", subBean.sendMessageString(CHW00211SFConst.AJST_BF_AMNT_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.調整後金額 ← amnt_adj_af_prc
		inMap.put("amnt_adj_af_prc", subBean.sendMessageString(CHW00211SFConst.AJST_AF_AMNT_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.行番号 ← row_no
		inMap.put("row_no", subBean.sendMessageString(CHW00211SFConst.ROW_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.変更前利用開始日 ← use_staymd_bf
		inMap.put("use_staymd_bf", subBean.sendMessageString(CHW00211SFConst.USE_STAYMD_BF_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.変更前利用終了日 ← use_endymd_bf
		inMap.put("use_endymd_bf", subBean.sendMessageString(CHW00211SFConst.USE_ENDYMD_BF_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.削除取消ボタン表示区分 ← dsp_del_cl_kbn
		inMap.put("dsp_kbn_del_cl_btn", subBean.sendMessageString(CHW00211SFConst.DSP_KBN_DEL_CL_BTN_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.訂正ボタン表示区分 ← dsp_kbn_teisei_btn
		inMap.put("dsp_kbn_teisei_btn", subBean.sendMessageString(CHW00211SFConst.DSP_KBN_TEISEI_BTN_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.利用期間表示制御フラグ ← use_prd_dsp_ctrl_flg
		inMap.put("use_prd_dsp_ctrl_flg", subBean.sendMessageString(CHW00211SFConst.USE_PRD_DSP_CTRL_FLG_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.調整フラグ ← ajst_flg
		inMap.put("ajst_flg", subBean.sendMessageString(CHW00211SFConst.AJST_FLG_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.料金訂正可否 ← prc_teisei_kh
		inMap.put("prc_teisei_kh", subBean.sendMessageString(CHW00211SFConst.PRC_TEISEI_KH_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.行区分 ← gyo_div
		inMap.put("gyo_div", subBean.sendMessageString(CHW00211SFConst.GYO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.整理番号 ← seiri_no
		inMap.put("seiri_no", subBean.sendMessageString(CHW00211SFConst.SEIRI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.マンションＩＤ ← mansion_id
		inMap.put("mansion_id", subBean.sendMessageString(CHW00211SFConst.MANSION_ID_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.回線場所住所補記＿部屋番号 ← kaisen_place_adrrm
		inMap.put("kaisen_place_adrrm", subBean.sendMessageString(CHW00211SFConst.KAISEN_PLACE_ADRRM_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.サービス契約番号 ← key_svc_kei_no
		inMap.put("svc_kei_no", subBean.sendMessageString(CHW00211SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.料金グループコード ← key_prc_grp_cd
		inMap.put("prc_grp_cd", subBean.sendMessageString(CHW00211SFConst.KEY_PRC_GRP_CD_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.料金コースコード ← key_pcrs_cd
		inMap.put("pcrs_cd", subBean.sendMessageString(CHW00211SFConst.KEY_PCRS_CD_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.料金サービスコード ← key_prc_svc_cd
		inMap.put("prc_svc_cd", subBean.sendMessageString(CHW00211SFConst.KEY_PRC_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.料金項目コード ← key_prc_kmk_cd
		inMap.put("prc_kmk_cd", subBean.sendMessageString(CHW00211SFConst.KEY_PRC_KMK_CD_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.内訳新規区分 ← is_new_ucwk
		inMap.put("is_new_ucwk", subBean.sendMessageString(CHW00211SFConst.IS_NEW_UCWK_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.請求契約番号追加区分 ← is_add_seiky_kei_no
		inMap.put("is_add_seiky_kei_no", subBean.sendMessageString(CHW00211SFConst.IS_ADD_SEIKY_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.合算請求年月 ← gsan_seiky_ym
		inMap.put("gsan_seiky_ym", subBean.sendMessageString(CHW00211SFConst.GSAN_SEIKY_YM_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.サービス詳細識別番号 ← svc_dtl_skbt_no
		inMap.put("svc_dtl_skbt_no", subBean.sendMessageString(CHW00211SFConst.SVC_DTL_SKBT_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求内訳情報.請求内訳番号 ← seiky_ucwk_no
		inMap.put("seiky_ucwk_no", subBean.sendMessageString(CHW00211SFConst.SEIKY_UCWK_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
	}

	/**
	 * 返却用請求内訳情報作成処理<br>
	 * <br>
	 * 親画面へ返すための請求内訳情報リストを作成する。
	 * 
	 * @param list1 返却用リスト
	 * @param list2 返却用リスト2
	 * @throws Exception 
	 * 
	 */
	private void createFtthListAdd(List<HashMap<String, Object>> list1, List<HashMap<String, Object>> list2) throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 通信量用金額編集共通部品の生成
		String[] workParamValue = getWorkParamArray();
		JCHCommonFormatUtil chComFmtUtil = new JCHCommonFormatUtil(workParamValue);

		// -------------------------------------------------- //
		// 料金項目コード＿通信料＿金額。
		// -------------------------------------------------- //
		HashMap<String, Object> map1 =
			editSeikyUwBeanKingaku(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TSUSIN_GAKU, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE), chComFmtUtil);
		list1.add(map1);

		// -------------------------------------------------- //
		// 料金項目コード＿利用通信量＿数量。
		// -------------------------------------------------- //
		HashMap<String, Object> map2 =
			editSeikyUwBeanKingaku(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_RIYO_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE),
				bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_RIYO_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE), chComFmtUtil);
		list1.add(map2);

		// 無料分（通信量）
		String amnt = getAmnt(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_FREE_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
		if (!"0".equals(amnt))
		{
			// -------------------------------------------------- //
			// 料金項目コード＿無料通信量＿数量。
			// -------------------------------------------------- //
			HashMap<String, Object> map3 =
				editSeikyUwBeanKingaku(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_FREE_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE),
					bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_FREE_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE), chComFmtUtil);
			list1.add(map3);
		}

		// 補正分（通信量）
		amnt = getAmnt(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_HOSEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
		if (!"0".equals(amnt))
		{
			// -------------------------------------------------- //
			// 料金項目コード＿補正通信量＿数量。
			// -------------------------------------------------- //
			HashMap<String, Object> map4 =
				editSeikyUwBeanKingaku(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_HOSEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE),
					bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_HOSEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE), chComFmtUtil);
			list1.add(map4);
		}

		// -------------------------------------------------- //
		// 通信料＿数量。
		// -------------------------------------------------- //
		HashMap<String, Object> map5 =
			editSeikyUwBeanSuryo(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
		list2.add(map5);
	}

	/**
	 * 返却用請求内訳情報作成処理<br>
	 * <br>
	 * 親画面へ返すための請求内訳情報リストを作成する。
	 * 
	 * @param list1 返却用リスト
	 * @param list2 返却用リスト2
	 * @throws Exception 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void createFtthListUpd(List<HashMap<String, Object>> list1, List<HashMap<String, Object>> list2) throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 通信量用金額編集共通部品の生成
		String[] workParamValue = getWorkParamArray();
		JCHCommonFormatUtil chComFmtUtil = new JCHCommonFormatUtil(workParamValue);

		// 請求内訳情報subBean
		// 料金項目コード＿通信料＿金額
		String prcKmkCd0 = bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TSUSIN_GAKU, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess seikyUwBean0 = JCHWebCommon.getSeikyUwBean(bean, CHW00211SFConst.HKTG_SEIKY_UW_INFO, prcKmkCd0);

		// 料金項目コード＿訂正通信量＿金額
		String prcKmkCd1 = bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TEISEI_TSUSIN_GAKU, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess seikyUwBean1 = JCHWebCommon.getSeikyUwBean(bean, CHW00211SFConst.SEIKY_UW_INFO, prcKmkCd1);

		// 料金項目コード＿訂正通信量＿数量
		String prcKmkCd2 = bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TEISEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE);

		// 請求内訳情報に料金項目コード＿訂正通信量＿金額が存在しない場合、
		// 料金項目コード＿訂正通信量＿金額を新規作成するため、料金項目コード＿通信料＿金額のコピーを使用して作成する
		if (seikyUwBean1 == null)
		{
			// 料金項目コード＿通信料＿金額のコピーを取得。
			HashMap<String, Object> map0 = new HashMap<String, Object>();
			moveBean2List(seikyUwBean0, map0);

			// map0のコピー
			HashMap<String, Object> map1 = (HashMap<String, Object>)map0.clone();

			// -------------------------------------------------- //
			// 訂正通信量＿金額。
			// -------------------------------------------------- //
			// 料金項目subBean
			X31SDataBeanAccess prcKmkCdNmBean = JCHWebCommon.getPrcKmkCdBean(bean, CHW00211SFConst.PRC_KMK_CD_NM_INFO, prcKmkCd1);

			// 請求内訳情報.料金項目コード ← key_prc_kmk_cd
			map0.put("prc_kmk_cd", prcKmkCd1);

			// 請求内訳情報.調整区分 ← "01"
			map0.put("ajst_div", JACStrConst.PRC_ADJ_DIV_ADD);

			// 請求内訳情報.調整区分名称 ← ""
			map0.put("ajst_div_nm", JACStrConst.KARA_MOJI);
			
			// 請求内訳情報.調整フラグ ← ""
			map0.put("ajst_flg", JACStrConst.KARA_MOJI);
			
			// 請求内訳情報.削除取消ボタン表示区分(削除ボタン表示) ← 削除取消表示区分（削除ボタン表示）
			map0.put("dsp_del_cl_kbn", JACStrConst.DEL_CL_DSP_KBN_DEL);
			map0.put("dsp_kbn_del_cl_btn", JACStrConst.DEL_CL_DSP_KBN_DEL);

			// 請求内訳情報.調整前金額 ← "0"
			map0.put("amnt_adj_bf_prc", "");

			// 請求内訳情報.調整後金額 ← amnt_adj_af_prc
			map0.put("amnt_adj_af_prc", getAmnt(prcKmkCd1));

			// 請求内訳情報.料金内訳 ← prc_uw
			String prcKmkNm = prcKmkCdNmBean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_NM_06, X31CWebConst.DATABEAN_GET_VALUE);

			String sUmkmPrcNmMojiHukaCd = "01";

			// 通信量用金額の編集を行う。
			ArrayList<String> list = chComFmtUtil.formatTushin(getAmnt(prcKmkCd2), sUmkmPrcNmMojiHukaCd);

			// 通信量用金額を取得する。
			String sTsryoAmnt = list.get(1);
			prcKmkNm = prcKmkNm.replace(JACStrConst.ZENKAKU_DOLLARS_SIGN, sTsryoAmnt);

			// 通信量桁あふれ付加文字を付加してセット
			map0.put("prc_uw", prcKmkNm.concat(list.get(0)));

			list1.add(map0);

			// -------------------------------------------------- //
			// 訂正通信量＿数量。
			// -------------------------------------------------- //
			// 請求内訳情報.料金項目コード ← key_prc_kmk_cd
			map1.put("prc_kmk_cd", prcKmkCd2);

			// 請求内訳情報.調整区分 ← "01"
			map1.put("ajst_div", JACStrConst.PRC_ADJ_DIV_ADD);

			// 請求内訳情報.調整区分名称 ← ""
			map1.put("ajst_div_nm", JACStrConst.KARA_MOJI);
			
			// 請求内訳情報.調整フラグ ← ""
			map1.put("ajst_flg", JACStrConst.KARA_MOJI);

			// 請求内訳情報.削除取消ボタン表示区分(削除ボタン表示) ← 削除取消表示区分（削除ボタン表示）
			map1.put("dsp_del_cl_kbn", JACStrConst.DEL_CL_DSP_KBN_DEL);
			map1.put("dsp_kbn_del_cl_btn", JACStrConst.DEL_CL_DSP_KBN_DEL);

			// 請求内訳情報.調整前金額 ← "0"
			map1.put("amnt_adj_bf_prc", "");

			// 請求内訳情報.調整後金額 ← amnt_adj_af_prc
			map1.put("amnt_adj_af_prc", getAmnt(prcKmkCd2));

			list2.add(map1);
		}
		else
		{
			// 請求内訳情報に料金項目コード＿訂正通信量＿金額が存在する場合、
			// -------------------------------------------------- //
			// 訂正通信量＿金額。
			// -------------------------------------------------- //
			HashMap<String, Object> map4 =
				editSeikyUwBeanKingaku(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TEISEI_TSUSIN_GAKU, X31CWebConst.DATABEAN_GET_VALUE),
					bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TEISEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE), chComFmtUtil);
			list1.add(map4);

			// -------------------------------------------------- //
			// 訂正通信量＿数量。
			// -------------------------------------------------- //
			HashMap<String, Object> map5 =
				editSeikyUwBeanSuryo(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TEISEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));

			// 請求内訳情報.調整区分 ← ""
			map5.put("ajst_div", JACStrConst.KARA_MOJI);

			list2.add(map5);
		}

	}

	/**
	 * 請求内訳情報編集処理<br>
	 * <br>
	 * 金額項目の計算、料金内訳の編集を行い、請求内訳情報を編集する。
	 * 
	 * @param prcKmkCd 料金項目コード
	 * @param amntPrcKmkCd 料金項目コード(数量)
	 * @param chComFmtUtil 請求収納システム共通編集クラスオブジェクト
	 * @return Hashmap
	 * @throws Exception
	 */
	private HashMap<String, Object> editSeikyUwBeanKingaku(String prcKmkCd, String amntPrcKmkCd, JCHCommonFormatUtil chComFmtUtil) throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 請求内訳subBean
		X31SDataBeanAccess seikyUwBean = JCHWebCommon.getSeikyUwBean(bean, CHW00211SFConst.HKTG_SEIKY_UW_INFO, prcKmkCd);

		// 料金項目subBean
		X31SDataBeanAccess prcKmkCdNmBean = JCHWebCommon.getPrcKmkCdBean(bean, CHW00211SFConst.PRC_KMK_CD_NM_INFO, prcKmkCd);

		// -------------------------------------------------- //
		// 請求内訳情報subBeanの値をmapに移送し、編集する。
		// -------------------------------------------------- //
		// 請求内訳情報subBeanの値をmapに移送
		HashMap<String, Object> map = new HashMap<String, Object>();
		moveBean2List(seikyUwBean, map);

		// 請求内訳情報.料金項目コード ← key_prc_kmk_cd
		map.put("prc_kmk_cd", prcKmkCd);

		// 請求内訳情報.調整後金額 ← amnt_adj_af_prc
		map.put("amnt_adj_af_prc", getAmnt(prcKmkCd));

		// 請求内訳情報.料金内訳 ← prc_uw
		String prcKmkNm = prcKmkCdNmBean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_NM_06, X31CWebConst.DATABEAN_GET_VALUE);

		String sUmkmPrcNmMojiHukaCd = "01";

		// 通信量用金額の編集を行う。
		ArrayList<String> list = chComFmtUtil.formatTushin(getAmnt(amntPrcKmkCd), sUmkmPrcNmMojiHukaCd);

		// 通信量用金額を取得する。
		String sTsryoAmnt = list.get(1);
		prcKmkNm = prcKmkNm.replace(JACStrConst.ZENKAKU_DOLLARS_SIGN, sTsryoAmnt);

		// 通信量桁あふれ付加文字を付加してセット
		map.put("prc_uw", prcKmkNm.concat(list.get(0)));

		return map;
	}

	/**
	 * 請求内訳情報（非表示）編集処理<br>
	 * <br>
	 * 金額項目の計算を行い、請求内訳情報を編集する。
	 * 
	 * @param prcKmkCd 料金項目コード
	 * @return Hashmap
	 */
	private HashMap<String, Object> editSeikyUwBeanSuryo(String prcKmkCd)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 請求内訳subBean
		X31SDataBeanAccess seikyUwBean = JCHWebCommon.getSeikyUwBean(bean, CHW00211SFConst.HKTG_SEIKY_UW_DB_CTL, prcKmkCd);

		// -------------------------------------------------- //
		// 請求内訳情報subBeanの値をmapに移送し、編集する。
		// -------------------------------------------------- //
		// 請求内訳情報subBeanの値をmapに移送
		HashMap<String, Object> map = new HashMap<String, Object>();
		moveBean2List(seikyUwBean, map);

		// -------------------------------------------------- //
		// 請求内訳subBeanの内容を編集する。
		// -------------------------------------------------- //
		// 請求内訳情報.料金項目コード
		map.put("prc_kmk_cd", prcKmkCd);

		// 請求内訳情報.調整後金額
		map.put("amnt_adj_af_prc", getAmnt(prcKmkCd));

		return map;
	}

	/**
	 * 業務パラメータ設定値配列取得処理<br>
	 * <br>
	 * beanの業務パラメータ情報から、請求収納システム共通編集クラスのコンストラクタの引数に
	 * 必要な業務パラメータ設定値配列数量を作成する。
	 * 
	 * 業務パラメータ情報には以下の情報が入っているため、当処理では２〜４件目の情報を使用する。
	 * １件目：FTTH通信量訂正表示
	 * ２件目：通信量桁あふれチェック
	 * ３件目：通信量桁あふれ表示
	 * ４件目：通信量表示
	 * ５件目：通信量文字数
	 * 
	 * @return 業務パラメータ設定値配列
	 */
	private String[] getWorkParamArray()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 業務パラメータ情報
		X31SDataBeanAccessArray workParamList = bean.getDataBeanArray(CHW00211SFConst.WORK_PARAM_INFO);

		// 業務パラメータ情報が5件存在する場合のみ実行
		String[] workParamValue = new String[4];
		if (workParamList.getCount() > 4)
		{
			// 1件目 通信量桁あふれチェック用
			X31SDataBeanAccess subBean = workParamList.getDataBean(1);
			String wkParamId = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_ID_05, X31CWebConst.DATABEAN_GET_VALUE);

			if (JACStrConst.WKPARA_CH_TSRYO_DGT_CHK.equals(wkParamId))
			{
				workParamValue[0] = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_SETTE_VALUE_05, X31CWebConst.DATABEAN_GET_VALUE);
			}

			// 2件目 通信量桁あふれ付加文字用
			subBean = workParamList.getDataBean(2);
			wkParamId = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_ID_05, X31CWebConst.DATABEAN_GET_VALUE);

			if (JACStrConst.WKPARA_CH_TSRYO_DGT_CHO_DSP.equals(wkParamId))
			{
				workParamValue[1] = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_SETTE_VALUE_05, X31CWebConst.DATABEAN_GET_VALUE);
			}

			// 3件目 通信量付加文字
			subBean = workParamList.getDataBean(3);
			wkParamId = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_ID_05, X31CWebConst.DATABEAN_GET_VALUE);

			if (JACStrConst.WKPARA_CH_TSRYO_DSP.equals(wkParamId))
			{
				workParamValue[2] = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_SETTE_VALUE_05, X31CWebConst.DATABEAN_GET_VALUE);
			}

			// 4件目 通信量文字数
			subBean = workParamList.getDataBean(4);
			wkParamId = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_ID_05, X31CWebConst.DATABEAN_GET_VALUE);

			if (JACStrConst.WKPARA_CH_TSRYO_DSP_LEN.equals(wkParamId))
			{
				workParamValue[3] = subBean.sendMessageString(CHW00211SFConst.WORK_PARAM_SETTE_VALUE_05, X31CWebConst.DATABEAN_GET_VALUE);
			}

		}

		return workParamValue;
	}

	/**
	 * 金額／数量情報取得処理<br>
	 * <br>
	 * Beanからパラメータの料金項目コードに関連する金額または数量を取得する。
	 * 
	 * @param prcKmkCd 料金項目コード
	 * @return String
	 */
	private String getAmnt(String prcKmkCd)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		String ret = "";
		if (prcKmkCd.equals(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TSUSIN_GAKU, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 訂正前合計（内訳額）
			ret = bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (prcKmkCd.equals(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 訂正前合計（内訳額）
			ret = bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (prcKmkCd.equals(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_RIYO_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 利用分（通信量）
			ret = bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (prcKmkCd.equals(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_FREE_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 無料分（通信量）
			ret = bean.sendMessageString(CHW00211SFConst.FREE_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (prcKmkCd.equals(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_HOSEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 補正分（通信量）
			ret = bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (prcKmkCd.equals(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TEISEI_TSUSIN_GAKU, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 訂正分（内訳額）
			ret = bean.sendMessageString(CHW00211SFConst.TEISEI_UCWK, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (prcKmkCd.equals(bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TEISEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 訂正分（通信量）
			ret = bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE);
		}

		return ret;
	}

	/**
	 * in料金項目抽出変換一覧照会明細リスト編集処理<br>
	 * <br>
	 * 料金項目抽出変換情報取得CCのin料金項目抽出変換一覧照会明細リスト編集を行う。
	 * 
	 * @param dataMap マッピング用Map
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private void setPrcKmkCsChgList(HashMap<String, Object> dataMap)
	{
		// in料金項目抽出変換一覧照会明細リスト
		ArrayList<HashMap<String, Object>> prcKmkCsChgList = new  ArrayList<HashMap<String, Object>>(); 

		// 料金項目コード（通信料＿金額）
		HashMap<String, Object> prcKmkCsChgMap0 = new HashMap<String, Object>();
		prcKmkCsChgMap0.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TSUSIN_G);
		prcKmkCsChgMap0.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap0.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap0.put("key_chsht_chg_cd", "1");
		prcKmkCsChgList.add(prcKmkCsChgMap0);

		// 料金項目コード（通信料＿数量）
		HashMap<String, Object> prcKmkCsChgMap1 = new HashMap<String, Object>();
		prcKmkCsChgMap1.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TSUSIN_A);
		prcKmkCsChgMap1.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap1.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap1.put("key_chsht_chg_cd", "1");
		prcKmkCsChgList.add(prcKmkCsChgMap1);

		// 料金項目コード（利用通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap2 = new HashMap<String, Object>();
		prcKmkCsChgMap2.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_RY_TSUSIN_A);
		prcKmkCsChgMap2.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap2.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap2.put("key_chsht_chg_cd", "1");
		prcKmkCsChgList.add(prcKmkCsChgMap2);

		// 料金項目コード（無料通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap3 = new HashMap<String, Object>();
		prcKmkCsChgMap3.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_MR_TSUSIN_A);
		prcKmkCsChgMap3.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap3.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap3.put("key_chsht_chg_cd", "1");
		prcKmkCsChgList.add(prcKmkCsChgMap3);

		// 料金項目コード（補正通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap4 = new HashMap<String, Object>();
		prcKmkCsChgMap4.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_HS_TSUSIN_A);
		prcKmkCsChgMap4.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap4.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap4.put("key_chsht_chg_cd", "1");
		prcKmkCsChgList.add(prcKmkCsChgMap4);

		// 料金項目コード（訂正通信量＿金額）
		HashMap<String, Object> prcKmkCsChgMap5 = new HashMap<String, Object>();
		prcKmkCsChgMap5.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TS_TSUSIN_G);
		prcKmkCsChgMap5.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap5.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap5.put("key_chsht_chg_cd", "1");
		prcKmkCsChgList.add(prcKmkCsChgMap5);

		// 料金項目コード（訂正通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap6 = new HashMap<String, Object>();
		prcKmkCsChgMap6.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TS_TSUSIN_A);
		prcKmkCsChgMap6.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap6.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap6.put("key_chsht_chg_cd", "1");
		prcKmkCsChgList.add(prcKmkCsChgMap6);

		((HashMap)dataMap.get("GETPRCKMKCSCHGELISTCC")).put("PRC_KMK_CS_CHGE_LIST", prcKmkCsChgList);
	}

	/**
	 * 業務パラメータIDリスト編集処理<br>
	 * <br>
	 * 業務パラメータ管理情報取得CCの業務パラメータIDリスト編集を行う。
	 * 
	 * @param dataMap マッピング用Map
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private void setWorkParamList(HashMap<String, Object> dataMap)
	{
		// 業務パラメータIDリスト
		ArrayList<HashMap<String, Object>> workParamList = new  ArrayList<HashMap<String, Object>>();

		HashMap<String, Object> workParamMap0 = new HashMap<String, Object>();
		workParamMap0.put("in_work_param_id", JACStrConst.WKPRA_CH_WKS_FTTH_CHG_DSP);
		workParamList.add(workParamMap0);

		HashMap<String, Object> workParamMap1 = new HashMap<String, Object>();
		workParamMap1.put("in_work_param_id", JACStrConst.WKPARA_CH_TSRYO_DGT_CHK);
		workParamList.add(workParamMap1);

		HashMap<String, Object> workParamMap2 = new HashMap<String, Object>();
		workParamMap2.put("in_work_param_id", JACStrConst.WKPARA_CH_TSRYO_DGT_CHO_DSP);
		workParamList.add(workParamMap2);

		HashMap<String, Object> workParamMap3 = new HashMap<String, Object>();
		workParamMap3.put("in_work_param_id", JACStrConst.WKPARA_CH_TSRYO_DSP);
		workParamList.add(workParamMap3);

		HashMap<String, Object> workParamMap4 = new HashMap<String, Object>();
		workParamMap4.put("in_work_param_id", JACStrConst.WKPARA_CH_TSRYO_DSP_LEN);
		workParamList.add(workParamMap4);

		((HashMap)dataMap.get("GETWORKPARAMLISTCC")).put("WORK_PARAM_ID_List", workParamList);
	}

	/**
	 * 逓増料金算出リスト編集処理<br>
	 * <br>
	 * 逓増料金取得CCの逓増料金算出リスト編集を行う。
	 * 
	 * @param dataMap マッピング用Map
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private void setCalcTeizoInfoList(HashMap<String, Object> dataMap)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 逓増料金算出リスト
		ArrayList<HashMap<String, Object>> teizoList = new  ArrayList<HashMap<String, Object>>(); 


		// 利用分（通信量）+ 補正分（通信量）
		BigDecimal riyoA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			riyoA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal hoseiA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			hoseiA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal teiseiMaeA = riyoA.add(hoseiA);
		HashMap<String, Object> teizoMap1 = new HashMap<String, Object>();
		teizoMap1.put("amount", teiseiMaeA.toString());
		teizoList.add(teizoMap1);

		// 利用分（通信量）+ 補正分（通信量）+ 訂正分（通信量）
		BigDecimal teiseiA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			teiseiA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal totalA = teiseiMaeA.add(teiseiA);
		HashMap<String, Object> teizoMap2 = new HashMap<String, Object>();
		teizoMap2.put("amount", totalA.toString());
		teizoList.add(teizoMap2);

		((HashMap)dataMap.get("CALCTEIZORYOKINCC")).put("CALC_TEIZO_INFO_List", teizoList);
	}

	/**
	 * 関連エラーチェック処理<br>
	 * <br>
	 * UI設計書の関連チェックエラー実行を行う。
	 * 
	 * @return boolean [エラーなし:true、エラーあり:false]
	 */
	private boolean checkAmnt()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 総合計（通信量）
		BigDecimal totalA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TOTAL_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		// 訂正分（内訳額）
		BigDecimal teiseiG = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TEISEI_UCWK, X31CWebConst.DATABEAN_GET_VALUE));

		if (totalA.compareTo(BigDecimal.ZERO) < 0)
		{
			// 総合計(通信量)が、０ＭＢ未満の場合
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA460_NW, new String[]{""});
			return false;
		}

		if (JACStrConst.FTTH_KIDO_MODE_TEISEI.equals(bean.sendMessageString(CHW00211SFConst.FTTH_KIDO_MODE, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			if(teiseiG.compareTo(BigDecimal.ZERO) == 0)
			{
				// 訂正分(内訳額)が、０円の場合
				JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA470_NW, new String[]{""});
				return false;
			}
		}
		return true;
	}

	/**
	 * 訂正前合計（通信量）計算処理<br>
	 * <br>
	 * 計算により訂正前合計（通信量）の算出を行う。
	 * 
	 */
	private void calcTeiseimaeA()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 訂正前合計（通信量）← 利用分（通信量） + 無料分（通信量）+ 補正分（通信量）
		BigDecimal riyoA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			riyoA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal muryoA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.FREE_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			muryoA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.FREE_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal hoseiA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			hoseiA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal maeTotalA = riyoA.add(muryoA).add(hoseiA);
		bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_TSUSIN, X31CWebConst.DATABEAN_SET_VALUE, maeTotalA.toString());
	}

	/**
	 * 訂正分（内訳額）計算処理<br>
	 * <br>
	 * 計算により訂正分（内訳額）の算出を行う。
	 * 
	 */
	private void calcTeiseiG()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 訂正分（内訳額）← 総合計（内訳額） - 訂正前合計（内訳額）
		BigDecimal totalG = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			totalG = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal maeG = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			maeG = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal teiseiG = totalG.subtract(maeG);
		bean.sendMessageString(CHW00211SFConst.TEISEI_UCWK, X31CWebConst.DATABEAN_SET_VALUE, teiseiG.toString());
	}

	/**
	 * 総合計（通信量）計算処理<br>
	 * <br>
	 * 計算により総合計（通信量）の算出を行う。
	 * 
	 */
	private void calcTotalA()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 総合計（通信量）← 訂正前合計（通信量） + 訂正分（通信量）
		BigDecimal teiseimaeTotalA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			teiseimaeTotalA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal teiseiA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			teiseiA = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal totalA = teiseimaeTotalA.add(teiseiA);
		bean.sendMessageString(CHW00211SFConst.TOTAL_TSUSIN, X31CWebConst.DATABEAN_SET_VALUE, totalA.toString());
	}

	/**
	 * 総合計（内訳額）計算処理<br>
	 * <br>
	 * 計算により総合計（内訳額）の算出を行う。
	 * 
	 */
	private void calcTotalG()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 総合計（内訳額）← 訂正前合計（内訳額） + 訂正分（内訳額）
		BigDecimal maeTotalG = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			maeTotalG = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal teiseiG = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(bean.sendMessageString(CHW00211SFConst.TEISEI_UCWK, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			teiseiG = new BigDecimal(bean.sendMessageString(CHW00211SFConst.TEISEI_UCWK, X31CWebConst.DATABEAN_GET_VALUE));
		}

		BigDecimal totalG = maeTotalG.add(teiseiG);
		bean.sendMessageString(CHW00211SFConst.TOTAL_UCWK, X31CWebConst.DATABEAN_SET_VALUE, totalG.toString());
	}

	/**
	 * サービスフォームBeanの初期値設定。<br>
	 * <br>
	 * サービスフォームBeanの初期値の設定を行う。
	 * 
	 */
	private void setDefaultBean()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 起動モードによるスタイルクラス、入力可否情報等の設定
		String kidoMode = bean.sendMessageString(CHW00211SFConst.FTTH_KIDO_MODE, X31CWebConst.DATABEAN_GET_VALUE);

		String styleClass = "";
		String styleClass2 = "";
		String readOnly = "";
		String readOnly2 = "";

		if (JACStrConst.FTTH_KIDO_MODE_TEISEI.equals(kidoMode))
		{
			// 訂正の場合
			styleClass = "clsReadOnly";
			styleClass2 = "clsInput";
			readOnly = "true";
			readOnly2 = "false";
		}
		else
		{
			// 追加の場合
			styleClass = "clsInput";
			styleClass2 = "clsReadOnly";
			readOnly = "false";
			readOnly2 = "true";
		}

		bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN_STYLECLASS, X31CWebConst.DATABEAN_SET_VALUE, styleClass);
		bean.sendMessageString(CHW00211SFConst.FREE_TSUSIN_STYLECLASS, X31CWebConst.DATABEAN_SET_VALUE, styleClass);
		bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN_STYLECLASS, X31CWebConst.DATABEAN_SET_VALUE, styleClass);
		bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK_STYLECLASS, X31CWebConst.DATABEAN_SET_VALUE, styleClass);
		bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN_STYLECLASS, X31CWebConst.DATABEAN_SET_VALUE, styleClass2);

		bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN_READONLY, X31CWebConst.DATABEAN_SET_VALUE, readOnly);
		bean.sendMessageString(CHW00211SFConst.FREE_TSUSIN_READONLY, X31CWebConst.DATABEAN_SET_VALUE, readOnly);
		bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN_READONLY, X31CWebConst.DATABEAN_SET_VALUE, readOnly);
		bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK_READONLY, X31CWebConst.DATABEAN_SET_VALUE, readOnly);
		bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN_READONLY, X31CWebConst.DATABEAN_SET_VALUE, readOnly2);

		bean.sendMessageString(CHW00211SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));
	}

	/**
	 * サービスフォームBeanの初期値設定。<br>
	 * <br>
	 * サービスフォームBeanの金額、通信量項目の初期値の設定を行う。
	 * 
	 */
	private void setDefaultGakuAmnt()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 訂正前合計（通信量）
		BigDecimal teiseiMaeA = BigDecimal.ZERO;

		// 訂正前合計（内訳額）
		String gaku = getDefaultKingaku(CHW00211SFConst.HKTG_SEIKY_UW_INFO, CHW00211SFConst.SEIKY_UW_INFO, bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_TSUSIN_GAKU, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_UCWK, X31CWebConst.DATABEAN_SET_VALUE, gaku);

		// 利用分（通信量）
		gaku = getDefaultKingaku(CHW00211SFConst.HKTG_SEIKY_UW_INFO, CHW00211SFConst.SEIKY_UW_INFO, bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_RIYO_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CHW00211SFConst.RIYO_TSUSIN, X31CWebConst.DATABEAN_SET_VALUE, gaku);
		BigDecimal riyoA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(gaku))
		{
			riyoA = new BigDecimal(gaku);
			teiseiMaeA = teiseiMaeA.add(riyoA);
		}

		// 無料分（通信量）
		gaku = getDefaultKingaku(CHW00211SFConst.HKTG_SEIKY_UW_INFO, CHW00211SFConst.SEIKY_UW_INFO, bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_FREE_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CHW00211SFConst.FREE_TSUSIN, X31CWebConst.DATABEAN_SET_VALUE, gaku);
		BigDecimal muryoA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(gaku))
		{
			muryoA = new BigDecimal(gaku);
			teiseiMaeA = teiseiMaeA.add(muryoA);
		}

		// 補正分（通信量）
		gaku = getDefaultKingaku(CHW00211SFConst.HKTG_SEIKY_UW_INFO, CHW00211SFConst.SEIKY_UW_INFO, bean.sendMessageString(CHW00211SFConst.PRC_KMK_CD_HOSEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(CHW00211SFConst.HOSEI_TSUSIN, X31CWebConst.DATABEAN_SET_VALUE, gaku);
		BigDecimal hoseiA = BigDecimal.ZERO;
		if (!JCRUtilCommon.isNull(gaku))
		{
			hoseiA = new BigDecimal(gaku);
			teiseiMaeA = teiseiMaeA.add(hoseiA);
		}

		// 訂正分（内訳額）
		bean.sendMessageString(CHW00211SFConst.TEISEI_UCWK, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 訂正前合計（通信量）
		bean.sendMessageString(CHW00211SFConst.TEISEIMAE_TOTAL_TSUSIN, X31CWebConst.DATABEAN_SET_VALUE, teiseiMaeA.toString());

		// 訂正分（通信量）
		bean.sendMessageString(CHW00211SFConst.TEISEI_TSUSIN, X31CWebConst.DATABEAN_SET_VALUE, "0");
	}

	/**
	 * 金額、通信量項目の初期値取得。<br>
	 * <br>
	 * 金額、通信量項目の初期値の取得を行う。
	 * 
	 */
	private String getDefaultKingaku(String hktgListName, String dbCtlListName, String prcKmkCd)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		String value = "";

		// 引継＿請求内訳情報または引継＿請求内訳情報（非表示）subBean
		X31SDataBeanAccess hktgBean = JCHWebCommon.getSeikyUwBean(bean, hktgListName, prcKmkCd);

		if (hktgBean != null)
		{
			if (!JCRUtilCommon.isNull(hktgBean.sendMessageString(CHW00211SFConst.AJST_BF_AMNT_01, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				value = hktgBean.sendMessageString(CHW00211SFConst.AJST_BF_AMNT_01, X31CWebConst.DATABEAN_GET_VALUE);
			}
		}

		return value;
	}

}
