/*
 * MosP - Mind Open Source Project         http://www.mosp.jp/
 * Copyright (C) 1987-2009 MIND Co., Ltd.  http://www.e-mind.co.jp/
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
package jp.mosp.payroll.report.action;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import jp.mosp.legal.LegalConst;
import jp.mosp.common.MosPVo;
import jp.mosp.common.bean.OdsBean;
import jp.mosp.common.common.MospConst;
import jp.mosp.common.common.MospException;
import jp.mosp.common.common.MospUtility;
import jp.mosp.common.common.PoiUtility;
import jp.mosp.common.dto.MosPConfDto;
import jp.mosp.common.part.DatePart;
import jp.mosp.payroll.base.AdjustmentAction;
import jp.mosp.payroll.base.PayrollConst;
import jp.mosp.payroll.common.vo.AdjustmentCalcVo;
import jp.mosp.payroll.common.vo.AdjustmentListVo;
import jp.mosp.payroll.common.vo.AdjustmentReferVo;
import jp.mosp.payroll.dao.CdAdjustmentDao;
import jp.mosp.payroll.dao.CmCompanyDao;
import jp.mosp.payroll.dto.CdAdjustmentDto;
import jp.mosp.payroll.dto.CmCompanyDto;
import jp.mosp.payroll.report.dto.WithholdingVoteDto;
import jp.mosp.system.dao.MYakusyokuDao;
import jp.mosp.system.dto.MYakusyokuDto;

/**
 * 源泉徴収票の出力を行う。<br><br>
 * 以下のコマンドを扱う。
 * <ul><li>
 * {@link #CMD_REPORT}
 * </li></ul>
 */
public class WithholdingVoteAction extends AdjustmentAction{
	
	/**
	 * 源泉徴収票出力コマンド。<br><br>
	 * 条件により、給与明細をExcel形式かODS形式で出力する。<br>
	 */
	// コマンド
	private static final String CMD_WITHHOLDING_VOTE_ALL = "P3030"; // 一括出力 ：U3320
	private static final String CMD_WITHHOLDING_VOTE_ONE = "P3031"; // 個別出力 ：U3321
	private static final String CMD_WITHHOLDING_VOTE_ALL2= "P3032"; // 一括出力2：U3322

	public String[][] aryGender  ;
	// 設定テーブル
	public List<MosPConfDto> listConf;
	public String[][] aryEra;
	
	/**
	 * コンストラクタ
	 */
	public WithholdingVoteAction() {
		super();
		setNeedProcSeq(false);
	}
	
	/**
	 * アクション
	 */
	public void action() throws Exception {
		// DBコネクション取得
		getConnection();
		// DAO準備
		prepareDao();
		// 寡婦(夫) 振分用
		aryGender  = getCodeArray(PayrollConst.TID_GENDER);
		// 和暦設定取得
		listConf = getConfList(PayrollConst.CONF_ID_JP_IMP_CAL);
		aryEra   = getCodeArray(PayrollConst.TID_JAPANESE);
		if (cmd.equals(CMD_WITHHOLDING_VOTE_ALL)) {
			// VOの取得
			AdjustmentListVo vo = (AdjustmentListVo)session.getAttribute(MospConst.ATT_FORMER_VO);
			vo.clearMessage();
			vo.clearErrField();
			vo.initVo(cfg, msg, cmd, aspUser, user);
			// パラメータ取得
			vo.setParams(request);
			adjustYear = vo.getPltReportYear();
			// 対象年月、対象データ設定
			setTargetData();
			Date date = vo.getDate(String.valueOf(vo.getPltReportYear()), String.valueOf(PayrollConst.TIME_ADJ_PAY_MONTH),  String.valueOf(PayrollConst.TIME_DEFAULT_DAY));
			// 給与明細データ作成
			List<WithholdingVoteDto> list = getWithholdingVote(date, null, vo);
			// 帳票作成及び設定
			for(int i= 0; i < list.size(); i++){
				WithholdingVoteDto dto_tmp = list.get(i);
				if (cfg.getProperty(PayrollConst.PPT_PAY_USEXLS) == null) {
//					reportList(vo, dto_tmp);
				} else {
//					reportXlsList(vo, dto_tmp);
				}
			}
		} else if (cmd.equals(CMD_WITHHOLDING_VOTE_ONE)) {
			// VOの取得
			AdjustmentReferVo vo = (AdjustmentReferVo)session.getAttribute(MospConst.ATT_FORMER_VO);
			vo.clearMessage();
			vo.clearErrField();
			vo.initVo(cfg, msg, cmd, aspUser, user);
			// パラメータ取得
			vo.setParams(request);
			adjustYear = vo.getHidAdjustYear();
			// 社員コードのNULL避け
			vo.setLblChangeKCode(vo.getHidKCode());
			// 対象年月、対象データ設定
			setTargetData();
			// 対象年月取得
			Date date = vo.getDate(String.valueOf(vo.getHidAdjustYear()), String.valueOf(PayrollConst.TIME_ADJ_PAY_MONTH), String.valueOf(PayrollConst.TIME_DEFAULT_DAY));
			// 給与明細データ作成
			List<WithholdingVoteDto> list = getWithholdingVoteOne(date, vo.getHidKCode(), vo);
			// 帳票作成及び設定
			for(int i= 0; i < list.size(); i++){
				WithholdingVoteDto dto_tmp = list.get(i);
				if (cfg.getProperty(PayrollConst.PPT_PAY_USEXLS) == null) {
					report(vo, dto_tmp);
				} else {
					reportXls(vo, dto_tmp);
				}
			}
		} else if (cmd.equals(CMD_WITHHOLDING_VOTE_ALL2)) {
			// VOの取得
			AdjustmentCalcVo vo = (AdjustmentCalcVo)session.getAttribute(MospConst.ATT_FORMER_VO);
			vo.clearMessage();
			vo.clearErrField();
			vo.initVo(cfg, msg, cmd, aspUser, user);
			// パラメータ取得
			vo.setParams(request);
			adjustYear = vo.getHidAdjustYear();
			// 対象年月、対象データ設定
			setTargetData();
			// 対象年月取得(対象年12/1)
			Date date = vo.getDate(String.valueOf(vo.getHidAdjustYear()), String.valueOf(PayrollConst.TIME_ADJ_PAY_MONTH),  String.valueOf(PayrollConst.TIME_DEFAULT_DAY));
			// 給与明細データ作成
			List<WithholdingVoteDto> list = getWithholdingVote(date, null, vo);
			// 帳票作成準備
			// 帳票作成及び設定
			for(int i= 0; i < list.size(); i++){
				WithholdingVoteDto dto_tmp = list.get(i);
				if (cfg.getProperty(PayrollConst.PPT_PAY_USEXLS) == null) {
//					reportCal(vo, dto_tmp);
				} else {
//					reportXlsCal(vo, dto_tmp);
				}
			}
		} else {
			throw new MospException(MospConst.EX_CMD_INVALID);	
		}
	}
	
	/**
	 * 源泉徴収票データを作成する。<br>
	 * @param targetMonth 作成対象年月
	 * @param kCode       作成対象社員コード(nullなら全件)
	 * @param vo          VO
	 * @return 給与明細データリスト
	 * @throws Exception
	 */
	private List<WithholdingVoteDto> getWithholdingVote(
			Date targetMonth, String kCode, MosPVo vo
	) throws Exception {
		// 源泉徴収票データ取得準備
		CdAdjustmentDao   dao = new CdAdjustmentDao();
		dao.initDao(cfg, cmd, aspUser, user, conn);
		// 給与管理者権限確認
		confirmPayrollAuth();
		// 年末調整データ作成
		List<CdAdjustmentDto> listAdjustment = dao.findForWithholdVote(MospUtility.getYear(targetMonth), kCode);
		// 源泉徴収票データ作成
		List<WithholdingVoteDto> list = new ArrayList<WithholdingVoteDto>();
		for (Iterator<CdAdjustmentDto> it = listAdjustment.iterator(); it.hasNext();) {
			cdAdjustmentDto = it.next();
			// 年末調整データ設定
			WithholdingVoteDto dto = new WithholdingVoteDto(cdAdjustmentDto);
			// 社員管理データ設定
			setHumanInfo(dto);
			// 会社データ設定
			setCompanyDataInfo(dto);
			// リストに設定
			list.add(dto);
		}
		if (list.size() == 0) {
			setVo(vo);
			setUrl(vo.getRetUrl());
			String errMessage = MospUtility.getMessage(msg, PayrollConst.MSG_NO_ADJUST_REPORT, "");
			addErrMessage(errMessage);
			throw new MospException(PayrollConst.EX_NO_PAYMENT_DETAIL, errMessage);
		}
		
		return list;
	}
	
	/**
	 * 源泉徴収票データを作成する。<br>
	 * @param targetMonth 作成対象年月
	 * @param kCode       作成対象社員コード(nullなら全件)
	 * @param vo          VO
	 * @return 給与明細データリスト
	 * @throws Exception
	 */
	private List<WithholdingVoteDto> getWithholdingVoteOne(
			Date targetMonth, String kCode, AdjustmentReferVo vo
	) throws Exception {
		// 源泉徴収票データ取得準備
		CdAdjustmentDao   dao = new CdAdjustmentDao();
		dao.initDao(cfg, cmd, aspUser, user, conn);
		// 給与管理者権限確認
		confirmPayrollAuth();
		// 年末調整データ作成
		List<CdAdjustmentDto> listAdjustment = dao.findForWithholdVote(MospUtility.getYear(targetMonth), kCode);
		// 源泉徴収票データ作成
		List<WithholdingVoteDto> list = new ArrayList<WithholdingVoteDto>();
		// データが存在する場合は設定
		for (Iterator<CdAdjustmentDto> it = listAdjustment.iterator(); it.hasNext();) {
			cdAdjustmentDto = it.next();
		}
		// リストが空の場合はエラーではなく、新しくDTOを作成
		if (listAdjustment.size() == 0) {
			cdAdjustmentDto = new CdAdjustmentDto();
			cdAdjustmentDto.setKCode(kCode);
		}
		setVo(vo);
		setUrl(vo.getRetUrl());
		// 年末調整データ設定
		WithholdingVoteDto dto = new WithholdingVoteDto(cdAdjustmentDto);
		// 社員管理データ設定
		setHumanInfo(dto);
		// 会社データ設定
		setCompanyDataInfo(dto);
		// リストに設定
		list.add(dto);
		return list;
	}
	
	/**
	 * 人事情報設定
	 * @param vo 設定対象VO
	 * @throws NoSuchFieldException 
	 * @throws IllegalAccessException 
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 * @throws MospException 
	 */
	private void setHumanInfo(
			WithholdingVoteDto dto
	) throws SQLException, IllegalAccessException, NoSuchFieldException, MospException {
		if (dto != null) {
			// 社員コード設定
			kCode = dto.getKCode();
			// 年最終日を履歴情報取得対象月として使用
			Date targetDate = getLastDateOfYear(adjustYear);
			// 人事基本情報取得

			mKihonDto = mKihonPayrollDao.findForDate(kCode, DatePart.convDateToInteger(targetDate));
			if (mKihonDto == null) {
				// 人事基本情報が無い場合
				String errMessage = MospUtility.getMessage(msg, PayrollConst.MSG_NO_HUMAN_DATA, "");
				addErrMessage(errMessage);
			}
			// 人事基本情報設定
			setBasisDataInfo(dto);
			// 人事管理情報取得
			mKojinDto =  mKojinDao.findForKey(kCode);
			setExtraDataInfo(dto);
			
			// 人事給与情報取得
			cmIncomeTaxDto   = cmIncomeTaxDao  .findForEmployeeDate(kCode, targetDate);
			setIncomeTaxDataInfo(dto);
			cmMidwayEnterDto = cmMidwayEnterDao.findForKey         (kCode          );
			setMidWayDataInfo(dto);
		}
	}
	
	/**
	 * 人事基本情報設定
	 * @param dto
	 * @throws NoSuchFieldException 
	 * @throws IllegalAccessException 
	 * @throws SQLException 
	 */
	private void setBasisDataInfo(WithholdingVoteDto dto) throws SQLException, IllegalAccessException, NoSuchFieldException {
		MYakusyokuDto mYakusyokuDto; 
		MYakusyokuDao mYakusyokuDao = new MYakusyokuDao(); 
		mYakusyokuDao.initDao(cfg, cmd, aspUser, user, conn);
		if (mKihonDto != null) {
			mYakusyokuDto = mYakusyokuDao.findForKey(mKihonDto.getYCode() , mKihonDto.getTokyu());
			dto.setKName(mKihonDto.getSimei());
			dto.setKKana(mKihonDto.getFurigana());
			if(mYakusyokuDto != null){
				dto.setPositionName( mYakusyokuDto.getYName());
			}else{
				dto.setPositionName("");
			}
		}
	}
	
	/**
	 * 人事管理情報設定
	 * @param dto
	 * @throws MospException 
	 */
	private void setExtraDataInfo(WithholdingVoteDto dto) throws MospException {
		// 社員の管理情報を設定する。DTOのアクセサメソッドを使用する。
		if (mKojinDto != null) {
			dto.setAddress(getPrefecture(mKojinDto.getPrefectures()) + mKojinDto.getJyuusyo1() + mKojinDto.getJyuusyo2() + mKojinDto.getJyuusyo3());
			if (mKojinDto.getSeinenbi() != 0) {
				String strDate[] = getJpImperialCal(listConf, DatePart.convIntegerDateToDate(mKojinDto.getSeinenbi()));
				dto.setBirthYear (strDate[1]);
				dto.setBirthMonth(strDate[2]);
				dto.setBirthDay  (strDate[3]);
			
				// 表示用年月取得(対象年月+1)
				strDate = getJpImperialCal(listConf, targetAffDate);
				strDate[0]       = getCodeName(strDate[0], aryEra);
				
				dto.setIncExpectedDate(strDate[1]);
				
				strDate = getJpImperialCal(listConf, DatePart.convIntegerDateToDate(mKojinDto.getSeinenbi()));
				strDate[0]       = getCodeName(strDate[0], aryEra);

				if (strDate[0].equals("平成")) {
					dto.setBirthHeisei(PayrollConst.ADJ_APPLICABLE);
				} else if (strDate[0].equals("明治")) {				
					dto.setBirthMeiji(PayrollConst.ADJ_APPLICABLE);
				} else if (strDate[0].equals("昭和")) {
					dto.setBirthSyouwa(PayrollConst.ADJ_APPLICABLE);
				} else if (strDate[0].equals("大正")) {
					dto.setBirthTaisyou(PayrollConst.ADJ_APPLICABLE);
				}
				// 年齢取得
				int age = getAge(DatePart.convIntegerDateToDate(mKojinDto.getSeinenbi()), targetAffDate);
				if (age < PayrollConst.AGE_ADLUT) {
					// 未成年
					dto.setSelfMinority(PayrollConst.ADJ_APPLICABLE);
				}
			}
		}
	}
	
	/**
	 * 会社情報設定
	 * @param dto
	 * @throws NoSuchFieldException 
	 * @throws IllegalAccessException 
	 * @throws SQLException 
	 */
	private void setCompanyDataInfo(WithholdingVoteDto dto) throws SQLException, IllegalAccessException, NoSuchFieldException {
		if (dto != null) {
			CmCompanyDao dao = new CmCompanyDao();
			dao.initDao(cfg, cmd, aspUser, user, conn);
			CmCompanyDto cmCompanyDto = dao.findAll();
			if (cmCompanyDto != null) {
				dto.setCompanyAddress(cmCompanyDto.getCompanyAddress());
				dto.setCompanyPhone(cmCompanyDto.getCompanyPhone());
				dto.setCompanyName(cmCompanyDto.getCompanyName());
				// 署番号設定
				setStationNo(dto, cmCompanyDto);
				// 整理番号設定
				setDisposeNo(dto, cmCompanyDto);
			}
		}
		// 会社の情報を設定する。DTOのアクセサメソッドを使用する。
	}
	
	/**
	 * 署番号設定
	 * @param dto
	 * @param cmCompanyDto
	 */
	private void setStationNo(WithholdingVoteDto dto, CmCompanyDto cmCompanyDto) {
		// 署番号桁数配列作成(空白)
		String[] aryStationNO = {"","","","","","","","","",""};
		// 署番号取得
		String stationNo = cmCompanyDto.getStationNo();
		// 設定開始桁数設定
		int start = aryStationNO.length - stationNo.length();
		// 設定準備
		String repString = "";
		// 文字列で回す
		for (int i = 0; i < stationNo.length(); i++) {
			repString = stationNo.substring(i, i+1);
			// 開始桁数に達したら文字を配列へ設定
				aryStationNO[start + i] = repString;
		}
		dto.setStationNo_01(aryStationNO[0]);
		dto.setStationNo_02(aryStationNO[1]);
		dto.setStationNo_03(aryStationNO[2]);
		dto.setStationNo_04(aryStationNO[3]);
		dto.setStationNo_05(aryStationNO[4]);
	}

	/**
	 * 整理番号設定
	 * @param dto
	 * @param cmCompanyDto
	 */
	private void setDisposeNo(WithholdingVoteDto dto, CmCompanyDto cmCompanyDto) {
		// 整理番号桁数配列作成(空白)
		String[] aryDisposeNO = {"","","","","","","",""};
		// 整理番号取得
		String stationNo = cmCompanyDto.getDisposeNo();
		// 設定開始桁数設定
		int start = aryDisposeNO.length - stationNo.length();
		// 設定準備
		String repString = "";
		// 文字列で回す
		for (int i = 0; i < stationNo.length(); i++) {
			repString = stationNo.substring(i, i+1);
			// 開始桁数に達したら文字を配列へ設定
			aryDisposeNO[start + i] = repString;
		}
		dto.setDisposeNo_01(aryDisposeNO[0]);
		dto.setDisposeNo_02(aryDisposeNO[1]);
		dto.setDisposeNo_03(aryDisposeNO[2]);
		dto.setDisposeNo_04(aryDisposeNO[3]);
		dto.setDisposeNo_05(aryDisposeNO[4]);
		dto.setDisposeNo_06(aryDisposeNO[5]);
		dto.setDisposeNo_07(aryDisposeNO[6]);
		dto.setDisposeNo_08(aryDisposeNO[7]);
	}

	private void setIncomeTaxDataInfo(WithholdingVoteDto dto) {
		if (cmIncomeTaxDto != null) {
			// 控除対象配偶者設定
			setDeductionSpouse(dto);
			// 扶養親族設定
			setDepend(dto);
			// 障害者の数設定(配偶者を除く)
			setHandicap(dto);
			// 本人設定
			setSelfType(dto);
		}
	}
	
	/**
	 * 控除対象配偶者の有無等の設定
	 * @param dto
	 */
	private void setDeductionSpouse(WithholdingVoteDto dto) {
		String incomeTaxType = cmIncomeTaxDto.getIncomeTaxType();
		String spouseIntendType = cmIncomeTaxDto.getSpouseIntendType();
		// 有欄(課税区分が甲で配偶者区分が対象外以外)
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_KOU)) {
			// 対象外
			if (!spouseIntendType.equals("")) {
				dto.setIsDeductionSpouse(PayrollConst.ADJ_APPLICABLE);
			}
		}
		// 無欄(課税区分が甲で配偶者区分が対象外)
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_KOU)) {
			// 対象外
			if (spouseIntendType.equals("")) {
				dto.setNoDeductionSpouse(PayrollConst.ADJ_APPLICABLE);
			}
		}
		// 従有欄(課税区分が乙で配偶者区分が対象外以外)
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_OTU)) {
			// 対象外
			if (!spouseIntendType.equals("")) {
				dto.setIsSubDeducSpouse(PayrollConst.ADJ_APPLICABLE);
			}
		}
		// 従無欄(課税区分が乙で配偶者区分が対象外)
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_OTU)) {
			// 対象外
			if (spouseIntendType.equals("")) {
				dto.setNoSubDeducSpouse(PayrollConst.ADJ_APPLICABLE);
			}
		}
		// 老人(配偶者区分が老人配偶又は同特老人の場合)
		if (spouseIntendType.equals(LegalConst.SPOUSE_INTEND_ELDERLY)
			||
			spouseIntendType.equals(LegalConst.SPOUSE_INTEND_LWSH_EL)
		) {
			dto.setElderlySpouse(PayrollConst.ADJ_APPLICABLE);
		}
	}
	
	/**
	 * 扶養親族の数(配偶者を除く)
	 * @param dto
	 */
	private void setDepend (WithholdingVoteDto dto) {
		String incomeTaxType = cmIncomeTaxDto.getIncomeTaxType();
		// 特定(特定扶養親族+同居特障特定)
		String spDependent = String.valueOf(cmIncomeTaxDto.getSpecificDependent() + cmIncomeTaxDto.getLiveWithHandiSp());
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_KOU)) {
			dto.setSpDependent(spDependent);
		} else {
			dto.setSpSubDependent(spDependent);
		}
		// 老人(老人扶養親族+同居老親等+同居特障老人+同居特障老親)
		String spElDependent = String.valueOf(
				cmIncomeTaxDto.getElderlyDependent () + cmIncomeTaxDto.getLiveWithEldRel()
				+ cmIncomeTaxDto.getLiveWithHandiEr() + cmIncomeTaxDto.getLiveWithHandiEl()
		);
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_KOU)) {
			dto.setSpElDependent(spElDependent);
		} else {
			dto.setSpSubElDepend(spElDependent);
		}
		// 老人内(同居老親等+同居特障老親)
		String spElItemDepend = String.valueOf(cmIncomeTaxDto.getLiveWithEldRel()+ cmIncomeTaxDto.getLiveWithHandiEr());
		dto.setSpElItemDepend(spElItemDepend);
		// その他
		String otherDepend = String.valueOf(cmIncomeTaxDto.getGeneralDependent() + cmIncomeTaxDto.getLiveWithHandiGe());
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_KOU)) {
			dto.setOtherDepend(otherDepend);
		} else {
			dto.setOtherSubDepend(otherDepend);
		}
	}
	
	/**
	 * 障害者の数設定(配偶者を除く)
	 * @param dto
	 */
	private void setHandicap(WithholdingVoteDto dto) {
		String incomeTaxType    = cmIncomeTaxDto.getIncomeTaxType   ();
		int specificHandicap   = cmIncomeTaxDto.getSpecificHandicap ();
		String spouseIntendType = cmIncomeTaxDto.getSpouseIntendType();
		// 課税区分甲欄のみ
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_KOU)) {
			// 障害者特別(特別障害者の数)
			dto.setSpHandicap(String.valueOf(specificHandicap));
			// 障害者特別(内)(同居特障一般+同居特障特定+同居特障老人+同居特障老親)
			int  spItemHandicap = cmIncomeTaxDto.getLiveWithHandiGe() + cmIncomeTaxDto.getLiveWithHandiSp();
			// 配偶者区分が同居特障又は同特老人の場合は1名加算
			if (spouseIntendType.equals(LegalConst.SPOUSE_INTEND_LWSH)
				|| 
				spouseIntendType.equals(LegalConst.SPOUSE_INTEND_LWSH_EL)
				) {
				spItemHandicap += 1;
			}
			dto.setSpItemHandicap(String.valueOf(spItemHandicap));
			// その他(一般障害者数)
			dto.setSpHandicapOther(String.valueOf(cmIncomeTaxDto.getGeneralHandicap()));
		}
	}
	
	/**
	 * 本人設定
	 * @param dto
	 */
	private void setSelfType(WithholdingVoteDto dto) {
		String incomeTaxType = cmIncomeTaxDto.getIncomeTaxType();
		String handicapType  = cmIncomeTaxDto.getSelfHandicapType();
		String widowType     = cmIncomeTaxDto.getSelfWidowType();
		String studentType   = cmIncomeTaxDto.getSelfStudentType();
		// 乙欄
		if (incomeTaxType.equals(LegalConst.INCOME_TAX_OTU)) {
			dto.setSelfOtu(PayrollConst.ADJ_APPLICABLE);
		}
		if (handicapType.equals(LegalConst.HANDICAP_GENERAL)) {
			// 一般障害者
			dto.setSelfGeHandicap(PayrollConst.ADJ_APPLICABLE);
		} else if (handicapType.equals(LegalConst.HANDICAP_SPECIAL)) {
			// 特別障害者
			dto.setSelfSpHandicap(PayrollConst.ADJ_APPLICABLE);
		}
		// 寡婦(夫)の場合は性別で判断して設定、設定なしの場合は一般寡婦へ
		if (widowType.equals(LegalConst.WIDOW_GENERAL)) {
			dto.setWidow(PayrollConst.ADJ_APPLICABLE); // 現在は寡婦(夫)のみ
			// DTO確認
			/*
			if (mKojinDto != null) {
				String gender = mKojinDto.getGender();
				// 寡夫
				if (gender.equals(aryGender[0][0])) {
					dto.setWidow(PayrollConst.ADJ_APPLICABLE);
				}
				// 一般寡婦
				if (gender.equals(aryGender[1][0])) {
					dto.setSelfGeWidow(PayrollConst.ADJ_APPLICABLE);
				}
			} else {
				// 性別の設定がない場合は一般寡婦に設定
				dto.setSelfGeWidow(PayrollConst.ADJ_APPLICABLE);
			}
			*/
		} else if (widowType.equals(LegalConst.WIDOW_SPECIAL)) {
			// 特別寡婦
			dto.setSelfSpWidow(PayrollConst.ADJ_APPLICABLE);
		}
		// 本人区分が勤労学生
		if (studentType.equals(LegalConst.STUDENT_GENERAL)) {
			dto.setStudentGeneral(PayrollConst.ADJ_APPLICABLE);
		}

	}
	
	/**
	 * 中途入社情報設定
	 * @param dto
	 * @throws MospException
	 */
	private void setMidWayDataInfo(WithholdingVoteDto dto) throws MospException {
		// 人事情報がNULLの場合、空を設定
		if (mKihonDto == null) {
			// 対象年でなければ、設定しない
			dto.setEmployment("");
			dto.setRetirement("");
			dto.setRetirementYear ("");
			dto.setRetirementMonth("");
			dto.setRetirementDay  ("");
			return;
		}
		// 入社日がNULLではない場合
		if (mKihonDto.getNyDate() != 0) {
			// 対象年に入社
			if ( MospUtility.getYear(DatePart.convIntegerDateToDate(mKihonDto.getNyDate())) == adjustYear){
				// 入社日を設定
				dto.setEmployment(PayrollConst.ADJ_APPLICABLE);
				// 表示用年月取得(対象年月+1)
				String strDate[] = getJpImperialCal(listConf, DatePart.convIntegerDateToDate(mKihonDto.getNyDate()));
				dto.setRetirementYear (strDate[1]);
				dto.setRetirementMonth(strDate[2]);
				dto.setRetirementDay  (strDate[3]);
			}
			
		}
		// 既に退社済み
		if (mKihonDto.getTsDate() != 0) {
			// 対象年に退社
			if (MospUtility.getYear(DatePart.convIntegerDateToDate(mKihonDto.getTsDate())) == adjustYear) {
				dto.setEmployment("");
				dto.setRetirement(PayrollConst.ADJ_APPLICABLE);
				// 表示用年月取得(対象年月+1)
				String strDate[] = getJpImperialCal(listConf,DatePart.convIntegerDateToDate(mKihonDto.getTsDate()));
				dto.setRetirementYear (strDate[1]);
				dto.setRetirementMonth(strDate[2]);
				dto.setRetirementDay  (strDate[3]);
			}
		}
	}

	/**
	 * 帳票出力処理を行う。(Excel)<br><br>
	 * @throws Exception 
	 */
	private void reportXls(AdjustmentReferVo vo , WithholdingVoteDto dto) throws Exception {
		// コネクション取得
		getConnection();
		// 帳票作成
		PoiUtility poi = new PoiUtility();
		poi.crtNewDocR(0, cfg.getProperty(MospConst.PPT_APP_DOCBASE) + PayrollConst.TEMPLATE_WITHHOLDING_VOTE_XLS);

		prtItem_chk( poi, 2,  1, dto.getIncExpectedDate());		// 対象和暦年度年度(左上、タイトル)
		prtItem_chk( poi, 2, 67, dto.getIncExpectedDate());		// 対象和暦年度年度(左下、タイトル)
		prtItem_chk( poi,22, 87, dto.getIncExpectedDate());		// 対象和暦年度年度(右上、中途退職年)
		prtItem_chk( poi,22, 34, dto.getIncExpectedDate());		// 対象和暦年度年度(左上、中途退職年)
		prtItem_chk( poi,33,  1, dto.getIncExpectedDate());		// 対象和暦年度年度(右上、タイトル年)
		prtItem_chk( poi,33, 67, dto.getIncExpectedDate());		// 対象和暦年度年度(右下、タイトル年)
		prtItem_chk( poi,53, 34, dto.getIncExpectedDate());		// 対象和暦年度年度(左下、中途退職年)
		prtItem_chk( poi,53, 87, dto.getIncExpectedDate());		// 対象和暦年度年度(右下、中途退職年)

		prtItem_chk( poi, 4,  7, dto.getAddress());				// 受給者住所(左上)		
		prtItem_chk( poi, 3, 60, dto.getAddress());				// 受給者住所(右上)		
		prtItem_chk( poi,35,  7, dto.getAddress());				// 受給者住所(左下)		
		prtItem_chk( poi,34, 60, dto.getAddress());				// 受給者住所(右下)		

		prtItem_chk( poi, 3, 38, dto.getKCode());				// 受給者番号(左上)
		prtItem_chk( poi, 3, 91, dto.getKCode());				// 受給者番号(右上)	
		prtItem_chk( poi, 34,38, dto.getKCode());				// 受給者番号(左下)	
		prtItem_chk( poi, 34,91, dto.getKCode());				// 受給者番号(右下)

		prtItem_chk( poi, 4, 39, dto.getKKana());				// フリガナ(左上)		
		prtItem_chk( poi, 4, 92, dto.getKKana());				// フリガナ(右上)		
		prtItem_chk( poi,35, 39, dto.getKKana());				// フリガナ(左下)		
		prtItem_chk( poi,35, 92, dto.getKKana());				// フリガナ(右下)		
		
		prtItem_chk( poi, 6, 34, dto.getPositionName());			// 役職名(左上)
		prtItem_chk( poi, 6, 87, dto.getPositionName());			// 役職名(右上)
		prtItem_chk( poi,37, 34, dto.getPositionName());			// 役職名(左下)
		prtItem_chk( poi,37, 87, dto.getPositionName());			// 役職名(右下)

		prtItem_chk( poi, 5, 39, dto.getKName());				// 氏名(左上)
		prtItem_chk( poi, 5, 92, dto.getKName());				// 氏名(右上)
		prtItem_chk( poi,36, 39, dto.getKName());				// 氏名(左下)
		prtItem_chk( poi,36, 92, dto.getKName());				// 氏名(右下)

		prtItem_chk( poi, 9, 12, dto.getPaymentAllowance());		// 支払金額(左上)
		prtItem_chk( poi, 9, 65, dto.getPaymentAllowance());		// 支払金額(右上)
		prtItem_chk( poi,40, 12, dto.getPaymentAllowance());		// 支払金額(左下)
		prtItem_chk( poi,40, 65, dto.getPaymentAllowance());		// 支払金額(右下)

		prtItem_chk( poi, 9, 27, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(左上)
		prtItem_chk( poi, 9, 80, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(右上)
		prtItem_chk( poi,40, 27, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(左下)
		prtItem_chk( poi,40, 80, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(右下)
		
		prtItem_chk( poi, 9, 34, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(左上)
		prtItem_chk( poi, 9, 87, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(右上)
		prtItem_chk( poi,40, 34, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(左下)
		prtItem_chk( poi,40, 87, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(右下)

		prtItem_chk( poi, 9, 43, dto.getWithholdTax());			// 源泉徴収税(左上)		
		prtItem_chk( poi, 9, 96, dto.getWithholdTax());			// 源泉徴収税(右上)		
		prtItem_chk( poi,40, 43, dto.getWithholdTax());			// 源泉徴収税(左下)		
		prtItem_chk( poi,40, 96, dto.getWithholdTax());			// 源泉徴収税(右下)		

		prtItem_chk( poi,15,  2, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(左上)
		prtItem_chk( poi,15, 55, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(右上)	
		prtItem_chk( poi,46,  2, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(左下)
		prtItem_chk( poi,46, 55, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(右下)	

		prtItem_chk( poi,15,  4, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(左上)
		prtItem_chk( poi,15, 57, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(右上)
		prtItem_chk( poi,46,  4, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(左下)
		prtItem_chk( poi,46, 57, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(右下)	
		
		prtItem_chk( poi,15,  6, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(左上)
		prtItem_chk( poi,15, 59, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(右上)
		prtItem_chk( poi,46,  6, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(左下)
		prtItem_chk( poi,46, 59, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(右下)
		
		prtItem_chk( poi,15,  7, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(左上)
		prtItem_chk( poi,15, 60, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(右上)
		prtItem_chk( poi,46,  7, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(左下)
		prtItem_chk( poi,46, 60, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(右下)
		
		prtItem_chk( poi,15,  8, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(左上)
		prtItem_chk( poi,15, 61, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(右上)
		prtItem_chk( poi,46,  8, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(左下)
		prtItem_chk( poi,46, 61, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(右下)

		prtItem_chk( poi,14, 10, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(左上)
		prtItem_chk( poi,14, 63, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(右上)
		prtItem_chk( poi,45, 10, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(左下)
		prtItem_chk( poi,45, 63, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(右下)

		prtItem_chk( poi,14, 16, dto.getSpDependent());			// 特定(左上)
		prtItem_chk( poi,14, 69, dto.getSpDependent());			// 特定(右上)
		prtItem_chk( poi,45, 16, dto.getSpDependent());			// 特定(左下)
		prtItem_chk( poi,45, 69, dto.getSpDependent());			// 特定(右下)

		prtItem_chk( poi,14, 19, dto.getSpSubDependent());		// 特定従人(左上)
		prtItem_chk( poi,14, 72, dto.getSpSubDependent());		// 特定従人(右上)
		prtItem_chk( poi,45, 19, dto.getSpSubDependent());		// 特定従人(左下)
		prtItem_chk( poi,45, 72, dto.getSpSubDependent());		// 特定従人(右下)
		
		prtItem_chk( poi,14, 22, dto.getSpElItemDepend());		// 老人内訳(左上)
		prtItem_chk( poi,14, 75, dto.getSpElItemDepend());		// 老人内訳(右上)
		prtItem_chk( poi,45, 22, dto.getSpElItemDepend());		// 老人内訳(左下)
		prtItem_chk( poi,45, 75, dto.getSpElItemDepend());		// 老人内訳(右下)
		
		prtItem_chk( poi,14, 24, dto.getSpElDependent());		// 老人(左上)
		prtItem_chk( poi,14, 77, dto.getSpElDependent());		// 老人(右上)
		prtItem_chk( poi,45, 24, dto.getSpElDependent());		// 老人(左上)
		prtItem_chk( poi,45, 77, dto.getSpElDependent());		// 老人(右下)
		
		prtItem_chk( poi,14, 26, dto.getSpSubElDepend());		// 従人(左上)
		prtItem_chk( poi,14, 79, dto.getSpSubElDepend());		// 従人(右上)
		prtItem_chk( poi,45, 26, dto.getSpSubElDepend());		// 従人(左下)
		prtItem_chk( poi,45, 79, dto.getSpSubElDepend());		// 従人(右下)
		

		prtItem_chk( poi,14, 29, dto.getOtherDepend());			// その他(左上)		
		prtItem_chk( poi,14, 82, dto.getOtherDepend());			// その他(右上)		
		prtItem_chk( poi,45, 29, dto.getOtherDepend());			// その他(左下)		
		prtItem_chk( poi,45, 82, dto.getOtherDepend());			// その他(右下)		

		prtItem_chk( poi,14, 30, dto.getOtherSubDepend());		// その他従人(左上)		
		prtItem_chk( poi,14, 83, dto.getOtherSubDepend());		// その他従人(右上)		
		prtItem_chk( poi,45, 30, dto.getOtherSubDepend());		// その他従人(左下)		
		prtItem_chk( poi,45, 83, dto.getOtherSubDepend());		// その他従人(右下)		

		prtItem_chk( poi,14, 31, dto.getSpItemHandicap());		// 障害者の数：特別内(左上)
		prtItem_chk( poi,14, 84, dto.getSpItemHandicap());		// 障害者の数：特別内(右上)
		prtItem_chk( poi,45, 31, dto.getSpItemHandicap());		// 障害者の数：特別内(左下)
		prtItem_chk( poi,45, 84, dto.getSpItemHandicap());		// 障害者の数：特別内(右下)

		prtItem_chk( poi,14, 32, dto.getSpHandicap());			// 障害者の数：特別(左上)
		prtItem_chk( poi,14, 85, dto.getSpHandicap());			// 障害者の数：特別(右上)
		prtItem_chk( poi,45, 32, dto.getSpHandicap());			// 障害者の数：特別(左下)
		prtItem_chk( poi,45, 85, dto.getSpHandicap());			// 障害者の数：特別(右下)
		
		prtItem_chk( poi,14, 33, dto.getSpHandicapOther());		// 障害者の数：その他(左上)
		prtItem_chk( poi,14, 86, dto.getSpHandicapOther());		// 障害者の数：その他(右上)
		prtItem_chk( poi,45, 33, dto.getSpHandicapOther());		// 障害者の数：その他(左下)
		prtItem_chk( poi,45, 86, dto.getSpHandicapOther());		// 障害者の数：その他(右下)

		prtItem_chk( poi,14, 34, dto.getSocialInsDeduction());	// 社会保険料控除額(左上)
		prtItem_chk( poi,14, 87, dto.getSocialInsDeduction());	// 社会保険料控除額(右上)
		prtItem_chk( poi,45, 34, dto.getSocialInsDeduction());	// 社会保険料控除額(左下)
		prtItem_chk( poi,45, 87, dto.getSocialInsDeduction());	// 社会保険料控除額(右下)
		
		prtItem_chk( poi,14, 39, dto.getLifeInsDeduction());	// 生命保険料控除額(左上)
		prtItem_chk( poi,14, 92, dto.getLifeInsDeduction());	// 生命保険料控除額(右上)
		prtItem_chk( poi,45, 39, dto.getLifeInsDeduction());	// 生命保険料控除額(左下)
		prtItem_chk( poi,45, 92, dto.getLifeInsDeduction());	// 生命保険料控除額(右下)

		prtItem_chk( poi,14, 43, dto.getEarthquakeIns());	// 地震保険料(左上)
		prtItem_chk( poi,14, 96, dto.getEarthquakeIns());	// 地震保険料(右上)
		prtItem_chk( poi,45, 43, dto.getEarthquakeIns());	// 地震保険料(左下)
		prtItem_chk( poi,45, 96, dto.getEarthquakeIns());	// 地震保険料(右下)
		
		prtItem_chk( poi,14, 48, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(左上)
		prtItem_chk( poi,14,102, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(右上)
		prtItem_chk( poi,45, 48, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(左下)
		prtItem_chk( poi,45,102, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(右下)
	
		prtItem_chk( poi,17,  2, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(左上)
		prtItem_chk( poi,17, 55, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(右上)
		prtItem_chk( poi,48,  2, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(左下)
		prtItem_chk( poi,48, 55, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(右下)
		
		prtItem_chk( poi,16, 46, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(左上)
		prtItem_chk( poi,16, 99, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(右上)
		prtItem_chk( poi,47, 46, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(左下)
		prtItem_chk( poi,47, 99, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(右下)

		prtItem_chk( poi,17, 46, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(左上)	
		prtItem_chk( poi,17, 99, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(右上)	
		prtItem_chk( poi,48, 46, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(左下)	
		prtItem_chk( poi,48, 99, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(右下)

		prtItem_chk( poi,18, 46, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(左上)	
		prtItem_chk( poi,18, 99, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(右上)	
		prtItem_chk( poi,49, 46, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(左下)	
		prtItem_chk( poi,49, 99, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(右下)	
		
		prtItem_chk( poi,23,  2, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(左上)	
		prtItem_chk( poi,23, 55, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(右上)	
		prtItem_chk( poi,54,  2, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(左下)	
		prtItem_chk( poi,54, 55, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(右下)	
		
		prtItem_chk( poi,23,  5, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(左上)	
		prtItem_chk( poi,23, 58, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(右上)	
		prtItem_chk( poi,54,  5, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(左下)	
		prtItem_chk( poi,54, 58, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(右下)	

		prtItem_chk( poi,23,  7, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(左上)	
		prtItem_chk( poi,23, 60, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(右上)	
		prtItem_chk( poi,54,  7, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(左下)	
		prtItem_chk( poi,54, 60, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(右下)	

		prtItem_chk( poi,23,  10, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(左上)	
		prtItem_chk( poi,23,  63, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(右上)	
		prtItem_chk( poi,54,  10, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(左下)	
		prtItem_chk( poi,54,  63, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(右下)	
		
		prtItem_chk( poi,23,  13, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(左上)	
		prtItem_chk( poi,23,  66, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(右上)	
		prtItem_chk( poi,54,  13, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(左下)	
		prtItem_chk( poi,54,  66, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(右下)	

		prtItem_chk( poi,23,  16, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(左上)	
		prtItem_chk( poi,23,  69, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(右上)	
		prtItem_chk( poi,54,  16, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(左下)
		prtItem_chk( poi,54,  69, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(右下)
		
		prtItem_chk( poi,23,  20, dto.getWidow());				// 扶養控除等本人項目：寡夫(左上)	
		prtItem_chk( poi,23,  73, dto.getWidow());				// 扶養控除等本人項目：寡夫(右上)
		prtItem_chk( poi,54,  20, dto.getWidow());				// 扶養控除等本人項目：寡夫(左下)	
		prtItem_chk( poi,54,  73, dto.getWidow());				// 扶養控除等本人項目：寡夫(右下)

		prtItem_chk( poi,23,  24, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(左上)	
		prtItem_chk( poi,23,  77, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(右上)	
		prtItem_chk( poi,54,  24, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(左下)	
		prtItem_chk( poi,54,  77, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(右下)
		
		prtItem_chk( poi,23,  28, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(左上)	
		prtItem_chk( poi,23,  81, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(右上)	
		prtItem_chk( poi,54,  28, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(左下)	
		prtItem_chk( poi,54,  81, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(右下)
		
		prtItem_chk( poi,23,  30, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(左上)	
		prtItem_chk( poi,23,  83, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(右上)
		prtItem_chk( poi,54,  30, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(左下)
		prtItem_chk( poi,54,  83, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(右下)

		prtItem_chk( poi,23,  31, dto.getForeigner());			// 扶養控除等本人項目：外国人(左上)	
		prtItem_chk( poi,23,  84, dto.getForeigner());			// 扶養控除等本人項目：外国人(右上)
		prtItem_chk( poi,54,  31, dto.getForeigner());			// 扶養控除等本人項目：外国人(左下)
		prtItem_chk( poi,54,  84, dto.getForeigner());			// 扶養控除等本人項目：外国人(右下)
		
		prtItem_chk( poi,22,  32, dto.getEmployment());			// 就職(左上)
		prtItem_chk( poi,22,  85, dto.getEmployment());			// 就職(右上)
		prtItem_chk( poi,53,  32, dto.getEmployment());			// 就職(左下)
		prtItem_chk( poi,53,  85, dto.getEmployment());			// 就職(右下)
		
		prtItem_chk( poi,22,  33, dto.getRetirement());			// 退職(左上)
		prtItem_chk( poi,22,  86, dto.getRetirement());			// 退職(右上)
		prtItem_chk( poi,53,  33, dto.getRetirement());			// 退職(左下)
		prtItem_chk( poi,53,  86, dto.getRetirement());			// 退職(右下)

		prtItem_chk( poi,22,  34, dto.getRetirementYaer());		// 退社日(年)(左上)
		prtItem_chk( poi,22,  87, dto.getRetirementYaer());		// 退社日(年)(右上)
		prtItem_chk( poi,53,  34, dto.getRetirementYaer());		// 退社日(年)(左下)
		prtItem_chk( poi,53,  87, dto.getRetirementYaer());		// 退社日(年)(右下)

		prtItem_chk( poi,22,  36, dto.getRetirementMonth());		// 退社日(月)(左上)
		prtItem_chk( poi,22,  89, dto.getRetirementMonth());		// 退社日(月)(右上)
		prtItem_chk( poi,53,  36, dto.getRetirementMonth());		// 退社日(月)(左下)
		prtItem_chk( poi,53,  89, dto.getRetirementMonth());		// 退社日(月)(右下)
		
		prtItem_chk( poi,22,  37, dto.getRetirementMonth());		// 退社日(日)(左上)
		prtItem_chk( poi,22,  90, dto.getRetirementMonth());		// 退社日(日)(右上)
		prtItem_chk( poi,53,  37, dto.getRetirementMonth());		// 退社日(日)(左下)
		prtItem_chk( poi,53,  90, dto.getRetirementMonth());		// 退社日(日)(右下)
		
		prtItem_chk( poi,22,  39, dto.getBirthMeiji());			// 生年月日和暦(明治)(左上)
		prtItem_chk( poi,22,  92, dto.getBirthMeiji());			// 生年月日和暦(明治)(右上)
		prtItem_chk( poi,53,  39, dto.getBirthMeiji());			// 生年月日和暦(明治)(左下)
		prtItem_chk( poi,53,  92, dto.getBirthMeiji());			// 生年月日和暦(明治)(右下)
		
		prtItem_chk( poi,22,  40, dto.getBirthTaisyou());		// 生年月日和暦(大正)(左上)
		prtItem_chk( poi,22,  93, dto.getBirthTaisyou());		// 生年月日和暦(大正)(右上)
		prtItem_chk( poi,53,  40, dto.getBirthTaisyou());		// 生年月日和暦(大正)(左下)
		prtItem_chk( poi,53,  93, dto.getBirthTaisyou());		// 生年月日和暦(大正)(右下)

		prtItem_chk( poi,22,  42, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(左上)
		prtItem_chk( poi,22,  95, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(右上)
		prtItem_chk( poi,53,  42, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(左下)
		prtItem_chk( poi,53,  95, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(右下)

		prtItem_chk( poi,22,  44, dto.getBirthHeisei());			// 生年月日和暦(平成)(左上)
		prtItem_chk( poi,22,  97, dto.getBirthHeisei());			// 生年月日和暦(平成)(右上)
		prtItem_chk( poi,53,  44, dto.getBirthHeisei());			// 生年月日和暦(平成)(左下)
		prtItem_chk( poi,53,  97, dto.getBirthHeisei());			// 生年月日和暦(平成)(右下)
		
		prtItem_chk( poi,22,  46, dto.getBirthYear());			// 生年月日(年)(左上)
		prtItem_chk( poi,22,  99, dto.getBirthYear());			// 生年月日(年)(右上)
		prtItem_chk( poi,53,  46, dto.getBirthYear());			// 生年月日(年)(左下)
		prtItem_chk( poi,53,  99, dto.getBirthYear());			// 生年月日(年)(右下)

		prtItem_chk( poi,22,  49, dto.getBirthMonth());			// 生年月日(月)(左上)
		prtItem_chk( poi,22, 102, dto.getBirthMonth());			// 生年月日(月)(右上)
		prtItem_chk( poi,53,  49, dto.getBirthMonth());			// 生年月日(月)(左下)
		prtItem_chk( poi,53, 102, dto.getBirthMonth());			// 生年月日(月)(右下)
		
		prtItem_chk( poi,22,  50, dto.getBirthDay());			// 生年月日(日)(左上)
		prtItem_chk( poi,22, 103, dto.getBirthDay());			// 生年月日(日)(右上)
		prtItem_chk( poi,53,  50, dto.getBirthDay());			// 生年月日(日)(左下)
		prtItem_chk( poi,53, 103, dto.getBirthDay());			// 生年月日(日)(右下)
		
		prtItem_chk( poi,24,   9, dto.getCompanyAddress());		// 会社住所(左上)
		prtItem_chk( poi,24,  62, dto.getCompanyAddress());		// 会社住所(右上)
		prtItem_chk( poi,55,   9, dto.getCompanyAddress());		// 会社住所(左下)
		prtItem_chk( poi,55,  62, dto.getCompanyAddress());		// 会社住所(右下)

		prtItem_chk( poi,26,   9, dto.getCompanyName());			// 会社名(左上)
		prtItem_chk( poi,26,  62, dto.getCompanyName());			// 会社名(右上)
		prtItem_chk( poi,57,   9, dto.getCompanyName());			// 会社名(左下)
		prtItem_chk( poi,57,  62, dto.getCompanyName());			// 会社名(右下)
		
		prtItem_chk( poi,27,  40, dto.getCompanyPhone());		// 会社電話番号(左上)
		prtItem_chk( poi,27,  93, dto.getCompanyPhone());		// 会社電話番号(右上)
		prtItem_chk( poi,58,  40, dto.getCompanyPhone());		// 会社電話番号(左下)
		prtItem_chk( poi,58,  93, dto.getCompanyPhone());		// 会社電話番号(右下)

		// 出力内容設定
		String fileName = String.valueOf(vo.getHidAdjustYear()) + 
										PayrollConst.FILE_NAME_SEPARATOR +
										dto.getKCode()	+
										PayrollConst.FILE_NAME_SEPARATOR +
										PayrollConst.FILE_WITHHOLDING_VOTE_XLS;
		request.setAttribute(MospConst.ATT_FILE_NAME, fileName);
		request.setAttribute(MospConst.ATT_FILE_OBJECT, poi.getWorkbook());
	}


	/**
	 * 帳票出力処理を行う。(OpenOffice Calc)<br><br>
	 * @throws Exception 
	 */
	private void report(AdjustmentReferVo vo , WithholdingVoteDto dto) throws Exception {
		// コネクション取得
		getConnection();
		// 帳票作成
		OdsBean odsBean = new OdsBean(cfg.getProperty(MospConst.PPT_APP_DOCBASE) + PayrollConst.TEMPLATE_WITHHOLDING_VOTE_ODS);
		setValue_chk( odsBean,   1,   2, dto.getIncExpectedDate());		// 対象和暦年度年度(左上、タイトル)
		setValue_chk( odsBean,  67,   2, dto.getIncExpectedDate());		// 対象和暦年度年度(左下、タイトル)
		setValue_chk( odsBean,  87,  22, dto.getIncExpectedDate());		// 対象和暦年度年度(右上、中途退職年)
		setValue_chk( odsBean,  34,  22, dto.getIncExpectedDate());		// 対象和暦年度年度(左上、中途退職年)
		setValue_chk( odsBean,   1,  33, dto.getIncExpectedDate());		// 対象和暦年度年度(右上、タイトル年)
		setValue_chk( odsBean,  67,  33, dto.getIncExpectedDate());		// 対象和暦年度年度(右下、タイトル年)
		setValue_chk( odsBean,  34,  53, dto.getIncExpectedDate());		// 対象和暦年度年度(左下、中途退職年)
		setValue_chk( odsBean,  87,  53, dto.getIncExpectedDate());		// 対象和暦年度年度(右下、中途退職年)

		setValue_chk( odsBean,   7,   4, dto.getAddress());				// 受給者住所(左上)
		setValue_chk( odsBean,   7,  35, dto.getAddress());				// 受給者住所(左下)
		setValue_chk( odsBean,  60,   3, dto.getAddress());				// 受給者住所(右上)
		setValue_chk( odsBean,  60,  34, dto.getAddress());				// 受給者住所(右下)

		setValue_chk( odsBean,  38,   3, dto.getKCode());				// 受給者番号(左上)
		setValue_chk( odsBean,  91,   3, dto.getKCode());				// 受給者番号(右上)
		setValue_chk( odsBean, 38,   34, dto.getKCode());				// 受給者番号(左下)
		setValue_chk( odsBean, 91,   34, dto.getKCode());				// 受給者番号(右下)

		setValue_chk( odsBean,  39,   4, dto.getKKana());				// フリガナ(左上)
		setValue_chk( odsBean,  92,   4, dto.getKKana());				// フリガナ(右上)
		setValue_chk( odsBean,  39,  35, dto.getKKana());				// フリガナ(左下)
		setValue_chk( odsBean,  92,  35, dto.getKKana());				// フリガナ(右下)

		setValue_chk( odsBean,  34,   6, dto.getPositionName());			// 役職名(左上)
		setValue_chk( odsBean,  87,   6, dto.getPositionName());			// 役職名(右上)
		setValue_chk( odsBean,  34,  37, dto.getPositionName());			// 役職名(左下)
		setValue_chk( odsBean,  87,  37, dto.getPositionName());			// 役職名(右下)

		setValue_chk( odsBean,  39,   5, dto.getKName());				// 氏名(左上)
		setValue_chk( odsBean,  92,   5, dto.getKName());				// 氏名(右上)
		setValue_chk( odsBean,  39,  36, dto.getKName());				// 氏名(左下)
		setValue_chk( odsBean,  92,  36, dto.getKName());				// 氏名(右下)

		setValue_chk( odsBean,  12,   9, dto.getPaymentAllowance());		// 支払金額(左上)
		setValue_chk( odsBean,  65,   9, dto.getPaymentAllowance());		// 支払金額(右上)
		setValue_chk( odsBean,  12,  40, dto.getPaymentAllowance());		// 支払金額(左下)
		setValue_chk( odsBean,  65,  40, dto.getPaymentAllowance());		// 支払金額(右下)

		setValue_chk( odsBean,  27,   9, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(左上)
		setValue_chk( odsBean,  80,   9, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(右上)
		setValue_chk( odsBean,  27,  40, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(左下)
		setValue_chk( odsBean,  80,  40, dto.getAfterDeductIncome());	//  給与所得控除後の給与等の金額(右下)

		setValue_chk( odsBean,  34,   9, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(左上)
		setValue_chk( odsBean,  87,   9, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(右上)
		setValue_chk( odsBean,  34,  40, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(左下)
		setValue_chk( odsBean,  87,  40, dto.getCalcTaxedIncome());		//  所得控除の額の合計額(右下)

		setValue_chk( odsBean,  43,   9, dto.getWithholdTax());			// 源泉徴収税(左上)		
		setValue_chk( odsBean,  96,   9, dto.getWithholdTax());			// 源泉徴収税(右上)		
		setValue_chk( odsBean,  43,  40, dto.getWithholdTax());			// 源泉徴収税(左下)		
		setValue_chk( odsBean,  96,  40, dto.getWithholdTax());			// 源泉徴収税(右下)		

		setValue_chk( odsBean,   2,  15, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(左上)
		setValue_chk( odsBean,  55,  15, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(右上)	
		setValue_chk( odsBean,   2,  46, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(左下)
		setValue_chk( odsBean,  55,  46, dto.getIsDeductionSpouse());	// 控除対象配偶者の有無等: 有(右下)	

		setValue_chk( odsBean,   4,  15, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(左上)
		setValue_chk( odsBean,  57,  15, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(右上)
		setValue_chk( odsBean,   4,  46, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(左下)
		setValue_chk( odsBean,  57,  46, dto.getNoDeductionSpouse());	// 控除対象配偶者の有無等: 無(右下)	

		setValue_chk( odsBean,   6,  15, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(左上)
		setValue_chk( odsBean,  59,  15, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(右上)
		setValue_chk( odsBean,   6,  46, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(左下)
		setValue_chk( odsBean,  59,  46, dto.getIsSubDeducSpouse());		// 控除対象配偶者の有無等: 従有(右下)

		setValue_chk( odsBean,   7,  15, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(左上)
		setValue_chk( odsBean,  60,  15, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(右上)
		setValue_chk( odsBean,   7,  46, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(左下)
		setValue_chk( odsBean,  60,  46, dto.getNoSubDeducSpouse());		// 控除対象配偶者の有無等: 従無(右下)

		setValue_chk( odsBean,   8,  14, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(左上)
		setValue_chk( odsBean,   8,  45, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(左下)
		setValue_chk( odsBean,  61,  14, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(右上)
		setValue_chk( odsBean,  61,  45, dto.getElderlySpouse());		// 控除対象配偶者の有無等: 老人(右下)

		setValue_chk( odsBean,  10,  14, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(左上)
		setValue_chk( odsBean,  63,  14, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(右上)
		setValue_chk( odsBean,  10,  45, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(左下)
		setValue_chk( odsBean,  63,  45, String.valueOf(dto.getSpouseSpDeduction()));	// 配偶者特別控除額(右下)

		setValue_chk( odsBean,  16,  14, dto.getSpDependent());			// 特定(左上)
		setValue_chk( odsBean,  69,  14, dto.getSpDependent());			// 特定(右上)
		setValue_chk( odsBean,  16,  45, dto.getSpDependent());			// 特定(左下)
		setValue_chk( odsBean,  69,  45, dto.getSpDependent());			// 特定(右下)

		setValue_chk( odsBean,  19,  14, dto.getSpSubDependent());		// 特定従人(左上)
		setValue_chk( odsBean,  72,  14, dto.getSpSubDependent());		// 特定従人(右上)
		setValue_chk( odsBean,  19,  45, dto.getSpSubDependent());		// 特定従人(左下)
		setValue_chk( odsBean,  72,  45, dto.getSpSubDependent());		// 特定従人(右下)

		setValue_chk( odsBean,  22,  14, dto.getSpElItemDepend());		// 老人内訳(左上)
		setValue_chk( odsBean,  75,  14, dto.getSpElItemDepend());		// 老人内訳(右上)
		setValue_chk( odsBean,  22,  45, dto.getSpElItemDepend());		// 老人内訳(左下)
		setValue_chk( odsBean,  75,  45, dto.getSpElItemDepend());		// 老人内訳(右下)

		setValue_chk( odsBean,  24,  14, dto.getSpElDependent());		// 老人(左上)
		setValue_chk( odsBean,  77,  14, dto.getSpElDependent());		// 老人(右上)
		setValue_chk( odsBean,  24,  45, dto.getSpElDependent());		// 老人(左上)
		setValue_chk( odsBean,  77,  45, dto.getSpElDependent());		// 老人(右下)

		setValue_chk( odsBean,  26,  14, dto.getSpSubElDepend());		// 従人(左上)
		setValue_chk( odsBean,  79,  14, dto.getSpSubElDepend());		// 従人(右上)
		setValue_chk( odsBean,  26,  45, dto.getSpSubElDepend());		// 従人(左下)
		setValue_chk( odsBean,  79,  45, dto.getSpSubElDepend());		// 従人(右下)

		setValue_chk( odsBean,  29,  14, dto.getOtherDepend());			// その他(左上)		
		setValue_chk( odsBean,  82,  14, dto.getOtherDepend());			// その他(右上)		
		setValue_chk( odsBean,  29,  45, dto.getOtherDepend());			// その他(左下)		
		setValue_chk( odsBean,  82,  45, dto.getOtherDepend());			// その他(右下)		

		setValue_chk( odsBean,  30,  14, dto.getOtherSubDepend());		// その他従人(左上)		
		setValue_chk( odsBean,  83,  14, dto.getOtherSubDepend());		// その他従人(右上)		
		setValue_chk( odsBean,  30,  45, dto.getOtherSubDepend());		// その他従人(左下)		
		setValue_chk( odsBean,  83,  45, dto.getOtherSubDepend());		// その他従人(右下)		

		setValue_chk( odsBean,  31,  14, dto.getSpItemHandicap());		// 障害者の数：特別内(左上)
		setValue_chk( odsBean,  84,  14, dto.getSpItemHandicap());		// 障害者の数：特別内(右上)
		setValue_chk( odsBean,  31,  45, dto.getSpItemHandicap());		// 障害者の数：特別内(左下)
		setValue_chk( odsBean,  84,  45, dto.getSpItemHandicap());		// 障害者の数：特別内(右下)

		setValue_chk( odsBean,  32,  14, dto.getSpHandicap());			// 障害者の数：特別(左上)
		setValue_chk( odsBean,  85,  14, dto.getSpHandicap());			// 障害者の数：特別(右上)
		setValue_chk( odsBean,  32,  45, dto.getSpHandicap());			// 障害者の数：特別(左下)
		setValue_chk( odsBean,  85,  45, dto.getSpHandicap());			// 障害者の数：特別(右下)

		setValue_chk( odsBean,  33,  14, dto.getSpHandicapOther());		// 障害者の数：その他(左上)
		setValue_chk( odsBean,  86,  14, dto.getSpHandicapOther());		// 障害者の数：その他(右上)
		setValue_chk( odsBean,  33,  45, dto.getSpHandicapOther());		// 障害者の数：その他(左下)
		setValue_chk( odsBean,  86,  45, dto.getSpHandicapOther());		// 障害者の数：その他(右下)

		setValue_chk( odsBean,  34,  14, dto.getSocialInsDeduction());	// 社会保険料控除額(左上)
		setValue_chk( odsBean,  87,  14, dto.getSocialInsDeduction());	// 社会保険料控除額(右上)
		setValue_chk( odsBean,  34,  45, dto.getSocialInsDeduction());	// 社会保険料控除額(左下)
		setValue_chk( odsBean,  87,  45, dto.getSocialInsDeduction());	// 社会保険料控除額(右下)

		setValue_chk( odsBean,  39,  14, dto.getLifeInsDeduction());	// 生命保険料控除額(左上)
		setValue_chk( odsBean,  92,  14, dto.getLifeInsDeduction());	// 生命保険料控除額(右上)
		setValue_chk( odsBean,  39,  45, dto.getLifeInsDeduction());	// 生命保険料控除額(左下)
		setValue_chk( odsBean,  92,  45, dto.getLifeInsDeduction());	// 生命保険料控除額(右下)

		setValue_chk( odsBean,  43,  14, dto.getEarthquakeIns());	// 地震保険料(左上)
		setValue_chk( odsBean,  96,  14, dto.getEarthquakeIns());	// 地震保険料(右上)
		setValue_chk( odsBean,  43,  45, dto.getEarthquakeIns());	// 地震保険料(左下)
		setValue_chk( odsBean,  96,  45, dto.getEarthquakeIns());	// 地震保険料(右下)

		setValue_chk( odsBean,  48,  14, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(左上)
		setValue_chk( odsBean, 101,  14, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(右上)
		setValue_chk( odsBean,  48,  45, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(左下)
		setValue_chk( odsBean, 101,  45, dto.getHouseLoanDeduction());	// 住宅借入金等特別控除額(右下)

		setValue_chk( odsBean,   2,  17, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(左上)
		setValue_chk( odsBean,  55,  17, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(右上)
		setValue_chk( odsBean,   2,  48, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(左下)
		setValue_chk( odsBean,  55,  48, dto.getWithholdSlipNotes());	// 源泉徴収票摘要欄(右下)

		setValue_chk( odsBean,  46,  16, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(左上)
		setValue_chk( odsBean,  99,  16, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(右上)
		setValue_chk( odsBean,  46,  47, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(左下)
		setValue_chk( odsBean,  99,  47, String.valueOf(dto.getSpouseSumIncome()));	//  配偶者の本年中の合計所得金額の見積額(右下)

		setValue_chk( odsBean,  46,  17, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(左上)	
		setValue_chk( odsBean,  99,  17, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(右上)	
		setValue_chk( odsBean,  46,  48, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(左下)	
		setValue_chk( odsBean,  99,  48, String.valueOf(dto.getPrivatePension()));	//	個人年金保険料(右下)

		setValue_chk( odsBean,  46,  18, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(左上)	
		setValue_chk( odsBean,  99,  18, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(右上)	
		setValue_chk( odsBean,  46,  49, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(左下)	
		setValue_chk( odsBean,  99,  49, String.valueOf(dto.getLongTermDamageIns()));	//	旧長期損害保険料(右下)	

		setValue_chk( odsBean,   2,  23, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(左上)	
		setValue_chk( odsBean,  55,  23, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(右上)	
		setValue_chk( odsBean,   2,  54, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(左下)	
		setValue_chk( odsBean,  55,  54, dto.getSelfMinority());			// 扶養控除等本人項目：未成年者(右下)	

		setValue_chk( odsBean,   5,  23, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(左上)	
		setValue_chk( odsBean,  58,  23, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(右上)	
		setValue_chk( odsBean,   5,  54, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(左下)	
		setValue_chk( odsBean,  58,  54, dto.getSelfOtu());				// 扶養控除等本人項目：乙欄(右下)	

		setValue_chk( odsBean,   7,  23, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(左上)	
		setValue_chk( odsBean,  60,  23, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(右上)	
		setValue_chk( odsBean,   7,  54, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(左下)	
		setValue_chk( odsBean,  60,  54, dto.getSelfSpHandicap());		// 扶養控除等本人項目：特別障害者(右下)	

		setValue_chk( odsBean,  10,  23, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(左上)	
		setValue_chk( odsBean,  63,  23, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(右上)	
		setValue_chk( odsBean,  10,  54, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(左下)	
		setValue_chk( odsBean,  63,  54, dto.getSelfGeHandicap());		// 扶養控除等本人項目：一般障害者(右下)	

		setValue_chk( odsBean,  13,  23, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(左上)	
		setValue_chk( odsBean,  66,  23, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(右上)	
		setValue_chk( odsBean,  13,  54, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(左下)	
		setValue_chk( odsBean,  66,  54, dto.getSelfGeWidow());			// 扶養控除等本人項目：一般寡婦(右下)	

		setValue_chk( odsBean,  16,  23, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(左上)	
		setValue_chk( odsBean,  69,  23, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(右上)	
		setValue_chk( odsBean,  16,  54, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(左下)
		setValue_chk( odsBean,  69,  54, dto.getSelfSpWidow());			// 扶養控除等本人項目：特別寡婦(右下)

		setValue_chk( odsBean,  20,  23, dto.getWidow());				// 扶養控除等本人項目：寡夫(左上)	
		setValue_chk( odsBean,  73,  23, dto.getWidow());				// 扶養控除等本人項目：寡夫(右上)
		setValue_chk( odsBean,  20,  54, dto.getWidow());				// 扶養控除等本人項目：寡夫(左下)	
		setValue_chk( odsBean,  73,  54, dto.getWidow());				// 扶養控除等本人項目：寡夫(右下)

		setValue_chk( odsBean,  24,  23, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(左上)	
		setValue_chk( odsBean,  77,  23, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(右上)	
		setValue_chk( odsBean,  24,  54, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(左下)	
		setValue_chk( odsBean,  77,  54, dto.getStudentGeneral());		// 扶養控除等本人項目：勤労学生(右下)

		setValue_chk( odsBean,  28,  23, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(左上)	
		setValue_chk( odsBean,  81,  23, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(右上)	
		setValue_chk( odsBean,  28,  54, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(左下)	
		setValue_chk( odsBean,  81,  54, dto.getDeadRetirement());		// 扶養控除等本人項目：死亡退職(右下)

		setValue_chk( odsBean,  30,  23, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(左上)	
		setValue_chk( odsBean,  83,  23, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(右上)
		setValue_chk( odsBean,  30,  54, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(左下)
		setValue_chk( odsBean,  83,  54, dto.getSelfDisaster());		// 扶養控除等本人項目：災害者(右下)

		setValue_chk( odsBean,  31,  23, dto.getForeigner());			// 扶養控除等本人項目：外国人(左上)	
		setValue_chk( odsBean,  84,  23, dto.getForeigner());			// 扶養控除等本人項目：外国人(右上)
		setValue_chk( odsBean,  31,  54, dto.getForeigner());			// 扶養控除等本人項目：外国人(左下)
		setValue_chk( odsBean,  84,  54, dto.getForeigner());			// 扶養控除等本人項目：外国人(右下)

		setValue_chk( odsBean,  32,  22, dto.getEmployment());			// 就職(左上)
		setValue_chk( odsBean,  85,  22, dto.getEmployment());			// 就職(右上)
		setValue_chk( odsBean,  32,  53, dto.getEmployment());			// 就職(左下)
		setValue_chk( odsBean,  85,  53, dto.getEmployment());			// 就職(右下)

		setValue_chk( odsBean,  33,  22, dto.getRetirement());			// 退職(左上)
		setValue_chk( odsBean,  86,  22, dto.getRetirement());			// 退職(右上)
		setValue_chk( odsBean,  33,  53, dto.getRetirement());			// 退職(左下)
		setValue_chk( odsBean,  86,  53, dto.getRetirement());			// 退職(右下)

		setValue_chk( odsBean,  34,  22, dto.getRetirementYaer());		// 退社日(年)(左上)
		setValue_chk( odsBean,  87,  22, dto.getRetirementYaer());		// 退社日(年)(右上)
		setValue_chk( odsBean,  34,  53, dto.getRetirementYaer());		// 退社日(年)(左下)
		setValue_chk( odsBean,  87,  53, dto.getRetirementYaer());		// 退社日(年)(右下)

		setValue_chk( odsBean,  36,  22, dto.getRetirementMonth());		// 退社日(月)(左上)
		setValue_chk( odsBean,  89,  22, dto.getRetirementMonth());		// 退社日(月)(右上)
		setValue_chk( odsBean,  36,  53, dto.getRetirementMonth());		// 退社日(月)(左下)
		setValue_chk( odsBean,  89,  53, dto.getRetirementMonth());		// 退社日(月)(右下)

		setValue_chk( odsBean,  37,  22, dto.getRetirementMonth());		// 退社日(日)(左上)
		setValue_chk( odsBean,  90,  22, dto.getRetirementMonth());		// 退社日(日)(右上)
		setValue_chk( odsBean,  37,  53, dto.getRetirementMonth());		// 退社日(日)(左下)
		setValue_chk( odsBean,  90,  53, dto.getRetirementMonth());		// 退社日(日)(右下)

		setValue_chk( odsBean,  39,  22, dto.getBirthMeiji());			// 生年月日和暦(明治)(左上)
		setValue_chk( odsBean,  92,  22, dto.getBirthMeiji());			// 生年月日和暦(明治)(右上)
		setValue_chk( odsBean,  39,  53, dto.getBirthMeiji());			// 生年月日和暦(明治)(左下)
		setValue_chk( odsBean,  92,  53, dto.getBirthMeiji());			// 生年月日和暦(明治)(右下)

		setValue_chk( odsBean,  40,  22, dto.getBirthTaisyou());		// 生年月日和暦(大正)(左上)
		setValue_chk( odsBean,  93,  22, dto.getBirthTaisyou());		// 生年月日和暦(大正)(右上)
		setValue_chk( odsBean,  40,  53, dto.getBirthTaisyou());		// 生年月日和暦(大正)(左下)
		setValue_chk( odsBean,  93,  53, dto.getBirthTaisyou());		// 生年月日和暦(大正)(右下)

		setValue_chk( odsBean,  42,  22, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(左上)
		setValue_chk( odsBean,  95,  22, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(右上)
		setValue_chk( odsBean,  42,  53, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(左下)
		setValue_chk( odsBean,  95,  53, dto.getBirthSyouwa());			// 生年月日和暦(昭和)(右下)

		setValue_chk( odsBean,  44,  22, dto.getBirthHeisei());			// 生年月日和暦(平成)(左上)
		setValue_chk( odsBean,  97,  22, dto.getBirthHeisei());			// 生年月日和暦(平成)(右上)
		setValue_chk( odsBean,  44,  53, dto.getBirthHeisei());			// 生年月日和暦(平成)(左下)
		setValue_chk( odsBean,  97,  53, dto.getBirthHeisei());			// 生年月日和暦(平成)(右下)

		setValue_chk( odsBean,  46,  22, dto.getBirthYear());			// 生年月日(年)(左上)
		setValue_chk( odsBean,  99,  22, dto.getBirthYear());			// 生年月日(年)(右上)
		setValue_chk( odsBean,  46,  53, dto.getBirthYear());			// 生年月日(年)(左下)
		setValue_chk( odsBean,  99,  53, dto.getBirthYear());			// 生年月日(年)(右下)

		setValue_chk( odsBean,  49,  22, dto.getBirthMonth());			// 生年月日(月)(左上)
		setValue_chk( odsBean, 102,  22, dto.getBirthMonth());			// 生年月日(月)(右上)
		setValue_chk( odsBean,  49,  53, dto.getBirthMonth());			// 生年月日(月)(左下)
		setValue_chk( odsBean, 102,  53, dto.getBirthMonth());			// 生年月日(月)(右下)

		setValue_chk( odsBean,  50,  22, dto.getBirthDay());			// 生年月日(日)(左上)
		setValue_chk( odsBean, 103,  22, dto.getBirthDay());			// 生年月日(日)(右上)
		setValue_chk( odsBean,  50,  53, dto.getBirthDay());			// 生年月日(日)(左下)
		setValue_chk( odsBean, 103,  53, dto.getBirthDay());			// 生年月日(日)(右下)

		setValue_chk( odsBean,   9,  24, dto.getCompanyAddress());		// 会社住所(左上)
		setValue_chk( odsBean,  62,  24, dto.getCompanyAddress());		// 会社住所(右上)
		setValue_chk( odsBean,   9,  55, dto.getCompanyAddress());		// 会社住所(左下)
		setValue_chk( odsBean,  62,  55, dto.getCompanyAddress());		// 会社住所(右下)

		setValue_chk( odsBean,   9,  26, dto.getCompanyName());			// 会社名(左上)
		setValue_chk( odsBean,  62,  26, dto.getCompanyName());			// 会社名(右上)
		setValue_chk( odsBean,   9,  57, dto.getCompanyName());			// 会社名(左下)
		setValue_chk( odsBean,  62,  57, dto.getCompanyName());			// 会社名(右下)

		setValue_chk( odsBean,  40,  27, dto.getCompanyPhone());		// 会社電話番号(左上)
		setValue_chk( odsBean,  93,  27, dto.getCompanyPhone());		// 会社電話番号(右上)
		setValue_chk( odsBean,  40,  58, dto.getCompanyPhone());		// 会社電話番号(左下)
		setValue_chk( odsBean,  93,  58, dto.getCompanyPhone());		// 会社電話番号(右下)

		// 出力内容設定
		String fileName = String.valueOf(vo.getHidAdjustYear()) + 
										PayrollConst.FILE_NAME_SEPARATOR +
										dto.getKCode()	+
										PayrollConst.FILE_NAME_SEPARATOR +
										PayrollConst.FILE_WITHHOLDING_VOTE_ODS;

		request.setAttribute(MospConst.ATT_FILE_NAME, fileName);
		request.setAttribute(MospConst.ATT_FILE_OBJECT, odsBean.getSpreadSheet());
	}

}
