/*
 * MosP - Mind Open Source Project    http://www.mosp.jp/
 * Copyright (C) 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.common.CommonConst;
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.utils.DateUtil;
import jp.mosp.common.utils.StringUtil;
import jp.mosp.kintai.common.dao.MYakusyokuDao;
import jp.mosp.kintai.common.dto.MYakusyokuDto;
import jp.mosp.legal.LegalConst;
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;

/**
 * 源泉徴収票の出力を行う。<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 dtoTmp = list.get(i);
				// 給与明細出力
				if (StringUtil.isNotNull(cfg.getProperty(CommonConst.PPT_KINTAI_USE_ODF))) {
//					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 dtoTmp = list.get(i);
				// 給与明細出力
				if (StringUtil.isNotNull(cfg.getProperty(CommonConst.PPT_KINTAI_USE_ODF))) {
					report(vo, dtoTmp);
				} else {
					reportXls(vo, dtoTmp);
				}
			}
		} 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 dtoTmp = list.get(i);
				// 給与明細出力
				if (StringUtil.isNotNull(cfg.getProperty(CommonConst.PPT_KINTAI_USE_ODF))) {
//					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 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, DateUtil.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, DateUtil.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, DateUtil.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(DateUtil.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.setStationNo01(aryStationNO[0]);
		dto.setStationNo02(aryStationNO[1]);
		dto.setStationNo03(aryStationNO[2]);
		dto.setStationNo04(aryStationNO[3]);
		dto.setStationNo05(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.setDisposeNo01(aryDisposeNO[0]);
		dto.setDisposeNo02(aryDisposeNO[1]);
		dto.setDisposeNo03(aryDisposeNO[2]);
		dto.setDisposeNo04(aryDisposeNO[3]);
		dto.setDisposeNo05(aryDisposeNO[4]);
		dto.setDisposeNo06(aryDisposeNO[5]);
		dto.setDisposeNo07(aryDisposeNO[6]);
		dto.setDisposeNo08(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(DateUtil.convIntegerDateToDate(mKihonDto.getNyDate())) == adjustYear) {
				// 入社日を設定
				dto.setEmployment(PayrollConst.ADJ_APPLICABLE);
				// 表示用年月取得(対象年月+1)
				String[] strDate = getJpImperialCal(listConf, DateUtil.convIntegerDateToDate(mKihonDto.getNyDate()));
				dto.setRetirementYear(strDate[1]);
				dto.setRetirementMonth(strDate[2]);
				dto.setRetirementDay(strDate[3]);
			}
			
		}
		// 既に退社済み
		if (mKihonDto.getTsDate() != 0) {
			// 対象年に退社
			if (MospUtility.getYear(DateUtil.convIntegerDateToDate(mKihonDto.getTsDate())) == adjustYear) {
				dto.setEmployment("");
				dto.setRetirement(PayrollConst.ADJ_APPLICABLE);
				// 表示用年月取得(対象年月+1)
				String[] strDate = getJpImperialCal(listConf, DateUtil.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);
		
		prtItemChk(poi, 2, 1, dto.getIncExpectedDate()); // 対象和暦年度年度(左上、タイトル)
		prtItemChk(poi, 2, 67, dto.getIncExpectedDate()); // 対象和暦年度年度(左下、タイトル)
		prtItemChk(poi, 22, 87, dto.getIncExpectedDate()); // 対象和暦年度年度(右上、中途退職年)
		prtItemChk(poi, 22, 34, dto.getIncExpectedDate()); // 対象和暦年度年度(左上、中途退職年)
		prtItemChk(poi, 33, 1, dto.getIncExpectedDate()); // 対象和暦年度年度(右上、タイトル年)
		prtItemChk(poi, 33, 67, dto.getIncExpectedDate()); // 対象和暦年度年度(右下、タイトル年)
		prtItemChk(poi, 53, 34, dto.getIncExpectedDate()); // 対象和暦年度年度(左下、中途退職年)
		prtItemChk(poi, 53, 87, dto.getIncExpectedDate()); // 対象和暦年度年度(右下、中途退職年)
		
		prtItemChk(poi, 4, 7, dto.getAddress()); // 受給者住所(左上)		
		prtItemChk(poi, 3, 60, dto.getAddress()); // 受給者住所(右上)		
		prtItemChk(poi, 35, 7, dto.getAddress()); // 受給者住所(左下)		
		prtItemChk(poi, 34, 60, dto.getAddress()); // 受給者住所(右下)		
		
		prtItemChk(poi, 3, 38, dto.getKCode()); // 受給者番号(左上)
		prtItemChk(poi, 3, 91, dto.getKCode()); // 受給者番号(右上)	
		prtItemChk(poi, 34, 38, dto.getKCode()); // 受給者番号(左下)	
		prtItemChk(poi, 34, 91, dto.getKCode()); // 受給者番号(右下)
		
		prtItemChk(poi, 4, 39, dto.getKKana()); // フリガナ(左上)		
		prtItemChk(poi, 4, 92, dto.getKKana()); // フリガナ(右上)		
		prtItemChk(poi, 35, 39, dto.getKKana()); // フリガナ(左下)		
		prtItemChk(poi, 35, 92, dto.getKKana()); // フリガナ(右下)		
		
		prtItemChk(poi, 6, 34, dto.getPositionName()); // 役職名(左上)
		prtItemChk(poi, 6, 87, dto.getPositionName()); // 役職名(右上)
		prtItemChk(poi, 37, 34, dto.getPositionName()); // 役職名(左下)
		prtItemChk(poi, 37, 87, dto.getPositionName()); // 役職名(右下)
		
		prtItemChk(poi, 5, 39, dto.getKName()); // 氏名(左上)
		prtItemChk(poi, 5, 92, dto.getKName()); // 氏名(右上)
		prtItemChk(poi, 36, 39, dto.getKName()); // 氏名(左下)
		prtItemChk(poi, 36, 92, dto.getKName()); // 氏名(右下)
		
		prtItemChk(poi, 9, 12, dto.getPaymentAllowance()); // 支払金額(左上)
		prtItemChk(poi, 9, 65, dto.getPaymentAllowance()); // 支払金額(右上)
		prtItemChk(poi, 40, 12, dto.getPaymentAllowance()); // 支払金額(左下)
		prtItemChk(poi, 40, 65, dto.getPaymentAllowance()); // 支払金額(右下)
		
		prtItemChk(poi, 9, 27, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(左上)
		prtItemChk(poi, 9, 80, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(右上)
		prtItemChk(poi, 40, 27, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(左下)
		prtItemChk(poi, 40, 80, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(右下)
		
		prtItemChk(poi, 9, 34, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(左上)
		prtItemChk(poi, 9, 87, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(右上)
		prtItemChk(poi, 40, 34, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(左下)
		prtItemChk(poi, 40, 87, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(右下)
		
		prtItemChk(poi, 9, 43, dto.getWithholdTax()); // 源泉徴収税(左上)		
		prtItemChk(poi, 9, 96, dto.getWithholdTax()); // 源泉徴収税(右上)		
		prtItemChk(poi, 40, 43, dto.getWithholdTax()); // 源泉徴収税(左下)		
		prtItemChk(poi, 40, 96, dto.getWithholdTax()); // 源泉徴収税(右下)		
		
		prtItemChk(poi, 15, 2, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(左上)
		prtItemChk(poi, 15, 55, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(右上)	
		prtItemChk(poi, 46, 2, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(左下)
		prtItemChk(poi, 46, 55, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(右下)	
		
		prtItemChk(poi, 15, 4, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(左上)
		prtItemChk(poi, 15, 57, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(右上)
		prtItemChk(poi, 46, 4, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(左下)
		prtItemChk(poi, 46, 57, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(右下)	
		
		prtItemChk(poi, 15, 6, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(左上)
		prtItemChk(poi, 15, 59, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(右上)
		prtItemChk(poi, 46, 6, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(左下)
		prtItemChk(poi, 46, 59, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(右下)
		
		prtItemChk(poi, 15, 7, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(左上)
		prtItemChk(poi, 15, 60, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(右上)
		prtItemChk(poi, 46, 7, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(左下)
		prtItemChk(poi, 46, 60, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(右下)
		
		prtItemChk(poi, 15, 8, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(左上)
		prtItemChk(poi, 15, 61, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(右上)
		prtItemChk(poi, 46, 8, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(左下)
		prtItemChk(poi, 46, 61, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(右下)
		
		prtItemChk(poi, 14, 10, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(左上)
		prtItemChk(poi, 14, 63, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(右上)
		prtItemChk(poi, 45, 10, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(左下)
		prtItemChk(poi, 45, 63, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(右下)
		
		prtItemChk(poi, 14, 16, dto.getSpDependent()); // 特定(左上)
		prtItemChk(poi, 14, 69, dto.getSpDependent()); // 特定(右上)
		prtItemChk(poi, 45, 16, dto.getSpDependent()); // 特定(左下)
		prtItemChk(poi, 45, 69, dto.getSpDependent()); // 特定(右下)
		
		prtItemChk(poi, 14, 19, dto.getSpSubDependent()); // 特定従人(左上)
		prtItemChk(poi, 14, 72, dto.getSpSubDependent()); // 特定従人(右上)
		prtItemChk(poi, 45, 19, dto.getSpSubDependent()); // 特定従人(左下)
		prtItemChk(poi, 45, 72, dto.getSpSubDependent()); // 特定従人(右下)
		
		prtItemChk(poi, 14, 22, dto.getSpElItemDepend()); // 老人内訳(左上)
		prtItemChk(poi, 14, 75, dto.getSpElItemDepend()); // 老人内訳(右上)
		prtItemChk(poi, 45, 22, dto.getSpElItemDepend()); // 老人内訳(左下)
		prtItemChk(poi, 45, 75, dto.getSpElItemDepend()); // 老人内訳(右下)
		
		prtItemChk(poi, 14, 24, dto.getSpElDependent()); // 老人(左上)
		prtItemChk(poi, 14, 77, dto.getSpElDependent()); // 老人(右上)
		prtItemChk(poi, 45, 24, dto.getSpElDependent()); // 老人(左上)
		prtItemChk(poi, 45, 77, dto.getSpElDependent()); // 老人(右下)
		
		prtItemChk(poi, 14, 26, dto.getSpSubElDepend()); // 従人(左上)
		prtItemChk(poi, 14, 79, dto.getSpSubElDepend()); // 従人(右上)
		prtItemChk(poi, 45, 26, dto.getSpSubElDepend()); // 従人(左下)
		prtItemChk(poi, 45, 79, dto.getSpSubElDepend()); // 従人(右下)
		
		prtItemChk(poi, 14, 29, dto.getOtherDepend()); // その他(左上)		
		prtItemChk(poi, 14, 82, dto.getOtherDepend()); // その他(右上)		
		prtItemChk(poi, 45, 29, dto.getOtherDepend()); // その他(左下)		
		prtItemChk(poi, 45, 82, dto.getOtherDepend()); // その他(右下)		
		
		prtItemChk(poi, 14, 30, dto.getOtherSubDepend()); // その他従人(左上)		
		prtItemChk(poi, 14, 83, dto.getOtherSubDepend()); // その他従人(右上)		
		prtItemChk(poi, 45, 30, dto.getOtherSubDepend()); // その他従人(左下)		
		prtItemChk(poi, 45, 83, dto.getOtherSubDepend()); // その他従人(右下)		
		
		prtItemChk(poi, 14, 31, dto.getSpItemHandicap()); // 障害者の数：特別内(左上)
		prtItemChk(poi, 14, 84, dto.getSpItemHandicap()); // 障害者の数：特別内(右上)
		prtItemChk(poi, 45, 31, dto.getSpItemHandicap()); // 障害者の数：特別内(左下)
		prtItemChk(poi, 45, 84, dto.getSpItemHandicap()); // 障害者の数：特別内(右下)
		
		prtItemChk(poi, 14, 32, dto.getSpHandicap()); // 障害者の数：特別(左上)
		prtItemChk(poi, 14, 85, dto.getSpHandicap()); // 障害者の数：特別(右上)
		prtItemChk(poi, 45, 32, dto.getSpHandicap()); // 障害者の数：特別(左下)
		prtItemChk(poi, 45, 85, dto.getSpHandicap()); // 障害者の数：特別(右下)
		
		prtItemChk(poi, 14, 33, dto.getSpHandicapOther()); // 障害者の数：その他(左上)
		prtItemChk(poi, 14, 86, dto.getSpHandicapOther()); // 障害者の数：その他(右上)
		prtItemChk(poi, 45, 33, dto.getSpHandicapOther()); // 障害者の数：その他(左下)
		prtItemChk(poi, 45, 86, dto.getSpHandicapOther()); // 障害者の数：その他(右下)
		
		prtItemChk(poi, 14, 34, dto.getSocialInsDeduction()); // 社会保険料控除額(左上)
		prtItemChk(poi, 14, 87, dto.getSocialInsDeduction()); // 社会保険料控除額(右上)
		prtItemChk(poi, 45, 34, dto.getSocialInsDeduction()); // 社会保険料控除額(左下)
		prtItemChk(poi, 45, 87, dto.getSocialInsDeduction()); // 社会保険料控除額(右下)
		
		prtItemChk(poi, 14, 39, dto.getLifeInsDeduction()); // 生命保険料控除額(左上)
		prtItemChk(poi, 14, 92, dto.getLifeInsDeduction()); // 生命保険料控除額(右上)
		prtItemChk(poi, 45, 39, dto.getLifeInsDeduction()); // 生命保険料控除額(左下)
		prtItemChk(poi, 45, 92, dto.getLifeInsDeduction()); // 生命保険料控除額(右下)
		
		prtItemChk(poi, 14, 43, dto.getEarthquakeIns()); // 地震保険料(左上)
		prtItemChk(poi, 14, 96, dto.getEarthquakeIns()); // 地震保険料(右上)
		prtItemChk(poi, 45, 43, dto.getEarthquakeIns()); // 地震保険料(左下)
		prtItemChk(poi, 45, 96, dto.getEarthquakeIns()); // 地震保険料(右下)
		
		prtItemChk(poi, 14, 48, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(左上)
		prtItemChk(poi, 14, 102, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(右上)
		prtItemChk(poi, 45, 48, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(左下)
		prtItemChk(poi, 45, 102, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(右下)
		
		prtItemChk(poi, 17, 2, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(左上)
		prtItemChk(poi, 17, 55, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(右上)
		prtItemChk(poi, 48, 2, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(左下)
		prtItemChk(poi, 48, 55, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(右下)
		
		prtItemChk(poi, 16, 46, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(左上)
		prtItemChk(poi, 16, 99, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(右上)
		prtItemChk(poi, 47, 46, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(左下)
		prtItemChk(poi, 47, 99, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(右下)
		
		prtItemChk(poi, 17, 46, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(左上)	
		prtItemChk(poi, 17, 99, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(右上)	
		prtItemChk(poi, 48, 46, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(左下)	
		prtItemChk(poi, 48, 99, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(右下)
		
		prtItemChk(poi, 18, 46, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(左上)	
		prtItemChk(poi, 18, 99, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(右上)	
		prtItemChk(poi, 49, 46, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(左下)	
		prtItemChk(poi, 49, 99, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(右下)	
		
		prtItemChk(poi, 23, 2, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(左上)	
		prtItemChk(poi, 23, 55, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(右上)	
		prtItemChk(poi, 54, 2, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(左下)	
		prtItemChk(poi, 54, 55, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(右下)	
		
		prtItemChk(poi, 23, 5, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(左上)	
		prtItemChk(poi, 23, 58, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(右上)	
		prtItemChk(poi, 54, 5, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(左下)	
		prtItemChk(poi, 54, 58, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(右下)	
		
		prtItemChk(poi, 23, 7, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(左上)	
		prtItemChk(poi, 23, 60, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(右上)	
		prtItemChk(poi, 54, 7, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(左下)	
		prtItemChk(poi, 54, 60, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(右下)	
		
		prtItemChk(poi, 23, 10, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(左上)	
		prtItemChk(poi, 23, 63, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(右上)	
		prtItemChk(poi, 54, 10, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(左下)	
		prtItemChk(poi, 54, 63, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(右下)	
		
		prtItemChk(poi, 23, 13, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(左上)	
		prtItemChk(poi, 23, 66, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(右上)	
		prtItemChk(poi, 54, 13, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(左下)	
		prtItemChk(poi, 54, 66, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(右下)	
		
		prtItemChk(poi, 23, 16, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(左上)	
		prtItemChk(poi, 23, 69, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(右上)	
		prtItemChk(poi, 54, 16, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(左下)
		prtItemChk(poi, 54, 69, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(右下)
		
		prtItemChk(poi, 23, 20, dto.getWidow()); // 扶養控除等本人項目：寡夫(左上)	
		prtItemChk(poi, 23, 73, dto.getWidow()); // 扶養控除等本人項目：寡夫(右上)
		prtItemChk(poi, 54, 20, dto.getWidow()); // 扶養控除等本人項目：寡夫(左下)	
		prtItemChk(poi, 54, 73, dto.getWidow()); // 扶養控除等本人項目：寡夫(右下)
		
		prtItemChk(poi, 23, 24, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(左上)	
		prtItemChk(poi, 23, 77, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(右上)	
		prtItemChk(poi, 54, 24, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(左下)	
		prtItemChk(poi, 54, 77, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(右下)
		
		prtItemChk(poi, 23, 28, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(左上)	
		prtItemChk(poi, 23, 81, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(右上)	
		prtItemChk(poi, 54, 28, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(左下)	
		prtItemChk(poi, 54, 81, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(右下)
		
		prtItemChk(poi, 23, 30, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(左上)	
		prtItemChk(poi, 23, 83, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(右上)
		prtItemChk(poi, 54, 30, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(左下)
		prtItemChk(poi, 54, 83, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(右下)
		
		prtItemChk(poi, 23, 31, dto.getForeigner()); // 扶養控除等本人項目：外国人(左上)	
		prtItemChk(poi, 23, 84, dto.getForeigner()); // 扶養控除等本人項目：外国人(右上)
		prtItemChk(poi, 54, 31, dto.getForeigner()); // 扶養控除等本人項目：外国人(左下)
		prtItemChk(poi, 54, 84, dto.getForeigner()); // 扶養控除等本人項目：外国人(右下)
		
		prtItemChk(poi, 22, 32, dto.getEmployment()); // 就職(左上)
		prtItemChk(poi, 22, 85, dto.getEmployment()); // 就職(右上)
		prtItemChk(poi, 53, 32, dto.getEmployment()); // 就職(左下)
		prtItemChk(poi, 53, 85, dto.getEmployment()); // 就職(右下)
		
		prtItemChk(poi, 22, 33, dto.getRetirement()); // 退職(左上)
		prtItemChk(poi, 22, 86, dto.getRetirement()); // 退職(右上)
		prtItemChk(poi, 53, 33, dto.getRetirement()); // 退職(左下)
		prtItemChk(poi, 53, 86, dto.getRetirement()); // 退職(右下)
		
		prtItemChk(poi, 22, 34, dto.getRetirementYaer()); // 退社日(年)(左上)
		prtItemChk(poi, 22, 87, dto.getRetirementYaer()); // 退社日(年)(右上)
		prtItemChk(poi, 53, 34, dto.getRetirementYaer()); // 退社日(年)(左下)
		prtItemChk(poi, 53, 87, dto.getRetirementYaer()); // 退社日(年)(右下)
		
		prtItemChk(poi, 22, 36, dto.getRetirementMonth()); // 退社日(月)(左上)
		prtItemChk(poi, 22, 89, dto.getRetirementMonth()); // 退社日(月)(右上)
		prtItemChk(poi, 53, 36, dto.getRetirementMonth()); // 退社日(月)(左下)
		prtItemChk(poi, 53, 89, dto.getRetirementMonth()); // 退社日(月)(右下)
		
		prtItemChk(poi, 22, 37, dto.getRetirementMonth()); // 退社日(日)(左上)
		prtItemChk(poi, 22, 90, dto.getRetirementMonth()); // 退社日(日)(右上)
		prtItemChk(poi, 53, 37, dto.getRetirementMonth()); // 退社日(日)(左下)
		prtItemChk(poi, 53, 90, dto.getRetirementMonth()); // 退社日(日)(右下)
		
		prtItemChk(poi, 22, 39, dto.getBirthMeiji()); // 生年月日和暦(明治)(左上)
		prtItemChk(poi, 22, 92, dto.getBirthMeiji()); // 生年月日和暦(明治)(右上)
		prtItemChk(poi, 53, 39, dto.getBirthMeiji()); // 生年月日和暦(明治)(左下)
		prtItemChk(poi, 53, 92, dto.getBirthMeiji()); // 生年月日和暦(明治)(右下)
		
		prtItemChk(poi, 22, 40, dto.getBirthTaisyou()); // 生年月日和暦(大正)(左上)
		prtItemChk(poi, 22, 93, dto.getBirthTaisyou()); // 生年月日和暦(大正)(右上)
		prtItemChk(poi, 53, 40, dto.getBirthTaisyou()); // 生年月日和暦(大正)(左下)
		prtItemChk(poi, 53, 93, dto.getBirthTaisyou()); // 生年月日和暦(大正)(右下)
		
		prtItemChk(poi, 22, 42, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(左上)
		prtItemChk(poi, 22, 95, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(右上)
		prtItemChk(poi, 53, 42, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(左下)
		prtItemChk(poi, 53, 95, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(右下)
		
		prtItemChk(poi, 22, 44, dto.getBirthHeisei()); // 生年月日和暦(平成)(左上)
		prtItemChk(poi, 22, 97, dto.getBirthHeisei()); // 生年月日和暦(平成)(右上)
		prtItemChk(poi, 53, 44, dto.getBirthHeisei()); // 生年月日和暦(平成)(左下)
		prtItemChk(poi, 53, 97, dto.getBirthHeisei()); // 生年月日和暦(平成)(右下)
		
		prtItemChk(poi, 22, 46, dto.getBirthYear()); // 生年月日(年)(左上)
		prtItemChk(poi, 22, 99, dto.getBirthYear()); // 生年月日(年)(右上)
		prtItemChk(poi, 53, 46, dto.getBirthYear()); // 生年月日(年)(左下)
		prtItemChk(poi, 53, 99, dto.getBirthYear()); // 生年月日(年)(右下)
		
		prtItemChk(poi, 22, 49, dto.getBirthMonth()); // 生年月日(月)(左上)
		prtItemChk(poi, 22, 102, dto.getBirthMonth()); // 生年月日(月)(右上)
		prtItemChk(poi, 53, 49, dto.getBirthMonth()); // 生年月日(月)(左下)
		prtItemChk(poi, 53, 102, dto.getBirthMonth()); // 生年月日(月)(右下)
		
		prtItemChk(poi, 22, 50, dto.getBirthDay()); // 生年月日(日)(左上)
		prtItemChk(poi, 22, 103, dto.getBirthDay()); // 生年月日(日)(右上)
		prtItemChk(poi, 53, 50, dto.getBirthDay()); // 生年月日(日)(左下)
		prtItemChk(poi, 53, 103, dto.getBirthDay()); // 生年月日(日)(右下)
		
		prtItemChk(poi, 24, 9, dto.getCompanyAddress()); // 会社住所(左上)
		prtItemChk(poi, 24, 62, dto.getCompanyAddress()); // 会社住所(右上)
		prtItemChk(poi, 55, 9, dto.getCompanyAddress()); // 会社住所(左下)
		prtItemChk(poi, 55, 62, dto.getCompanyAddress()); // 会社住所(右下)
		
		prtItemChk(poi, 26, 9, dto.getCompanyName()); // 会社名(左上)
		prtItemChk(poi, 26, 62, dto.getCompanyName()); // 会社名(右上)
		prtItemChk(poi, 57, 9, dto.getCompanyName()); // 会社名(左下)
		prtItemChk(poi, 57, 62, dto.getCompanyName()); // 会社名(右下)
		
		prtItemChk(poi, 27, 40, dto.getCompanyPhone()); // 会社電話番号(左上)
		prtItemChk(poi, 27, 93, dto.getCompanyPhone()); // 会社電話番号(右上)
		prtItemChk(poi, 58, 40, dto.getCompanyPhone()); // 会社電話番号(左下)
		prtItemChk(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);
		setValueChk(odsBean, 1, 2, dto.getIncExpectedDate()); // 対象和暦年度年度(左上、タイトル)
		setValueChk(odsBean, 67, 2, dto.getIncExpectedDate()); // 対象和暦年度年度(左下、タイトル)
		setValueChk(odsBean, 87, 22, dto.getIncExpectedDate()); // 対象和暦年度年度(右上、中途退職年)
		setValueChk(odsBean, 34, 22, dto.getIncExpectedDate()); // 対象和暦年度年度(左上、中途退職年)
		setValueChk(odsBean, 1, 33, dto.getIncExpectedDate()); // 対象和暦年度年度(右上、タイトル年)
		setValueChk(odsBean, 67, 33, dto.getIncExpectedDate()); // 対象和暦年度年度(右下、タイトル年)
		setValueChk(odsBean, 34, 53, dto.getIncExpectedDate()); // 対象和暦年度年度(左下、中途退職年)
		setValueChk(odsBean, 87, 53, dto.getIncExpectedDate()); // 対象和暦年度年度(右下、中途退職年)
		
		setValueChk(odsBean, 7, 4, dto.getAddress()); // 受給者住所(左上)
		setValueChk(odsBean, 7, 35, dto.getAddress()); // 受給者住所(左下)
		setValueChk(odsBean, 60, 3, dto.getAddress()); // 受給者住所(右上)
		setValueChk(odsBean, 60, 34, dto.getAddress()); // 受給者住所(右下)
		
		setValueChk(odsBean, 38, 3, dto.getKCode()); // 受給者番号(左上)
		setValueChk(odsBean, 91, 3, dto.getKCode()); // 受給者番号(右上)
		setValueChk(odsBean, 38, 34, dto.getKCode()); // 受給者番号(左下)
		setValueChk(odsBean, 91, 34, dto.getKCode()); // 受給者番号(右下)
		
		setValueChk(odsBean, 39, 4, dto.getKKana()); // フリガナ(左上)
		setValueChk(odsBean, 92, 4, dto.getKKana()); // フリガナ(右上)
		setValueChk(odsBean, 39, 35, dto.getKKana()); // フリガナ(左下)
		setValueChk(odsBean, 92, 35, dto.getKKana()); // フリガナ(右下)
		
		setValueChk(odsBean, 34, 6, dto.getPositionName()); // 役職名(左上)
		setValueChk(odsBean, 87, 6, dto.getPositionName()); // 役職名(右上)
		setValueChk(odsBean, 34, 37, dto.getPositionName()); // 役職名(左下)
		setValueChk(odsBean, 87, 37, dto.getPositionName()); // 役職名(右下)
		
		setValueChk(odsBean, 39, 5, dto.getKName()); // 氏名(左上)
		setValueChk(odsBean, 92, 5, dto.getKName()); // 氏名(右上)
		setValueChk(odsBean, 39, 36, dto.getKName()); // 氏名(左下)
		setValueChk(odsBean, 92, 36, dto.getKName()); // 氏名(右下)
		
		setValueChk(odsBean, 12, 9, dto.getPaymentAllowance()); // 支払金額(左上)
		setValueChk(odsBean, 65, 9, dto.getPaymentAllowance()); // 支払金額(右上)
		setValueChk(odsBean, 12, 40, dto.getPaymentAllowance()); // 支払金額(左下)
		setValueChk(odsBean, 65, 40, dto.getPaymentAllowance()); // 支払金額(右下)
		
		setValueChk(odsBean, 27, 9, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(左上)
		setValueChk(odsBean, 80, 9, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(右上)
		setValueChk(odsBean, 27, 40, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(左下)
		setValueChk(odsBean, 80, 40, dto.getAfterDeductIncome()); //  給与所得控除後の給与等の金額(右下)
		
		setValueChk(odsBean, 34, 9, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(左上)
		setValueChk(odsBean, 87, 9, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(右上)
		setValueChk(odsBean, 34, 40, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(左下)
		setValueChk(odsBean, 87, 40, dto.getCalcTaxedIncome()); //  所得控除の額の合計額(右下)
		
		setValueChk(odsBean, 43, 9, dto.getWithholdTax()); // 源泉徴収税(左上)		
		setValueChk(odsBean, 96, 9, dto.getWithholdTax()); // 源泉徴収税(右上)		
		setValueChk(odsBean, 43, 40, dto.getWithholdTax()); // 源泉徴収税(左下)		
		setValueChk(odsBean, 96, 40, dto.getWithholdTax()); // 源泉徴収税(右下)		
		
		setValueChk(odsBean, 2, 15, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(左上)
		setValueChk(odsBean, 55, 15, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(右上)	
		setValueChk(odsBean, 2, 46, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(左下)
		setValueChk(odsBean, 55, 46, dto.getIsDeductionSpouse()); // 控除対象配偶者の有無等: 有(右下)	
		
		setValueChk(odsBean, 4, 15, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(左上)
		setValueChk(odsBean, 57, 15, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(右上)
		setValueChk(odsBean, 4, 46, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(左下)
		setValueChk(odsBean, 57, 46, dto.getNoDeductionSpouse()); // 控除対象配偶者の有無等: 無(右下)	
		
		setValueChk(odsBean, 6, 15, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(左上)
		setValueChk(odsBean, 59, 15, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(右上)
		setValueChk(odsBean, 6, 46, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(左下)
		setValueChk(odsBean, 59, 46, dto.getIsSubDeducSpouse()); // 控除対象配偶者の有無等: 従有(右下)
		
		setValueChk(odsBean, 7, 15, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(左上)
		setValueChk(odsBean, 60, 15, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(右上)
		setValueChk(odsBean, 7, 46, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(左下)
		setValueChk(odsBean, 60, 46, dto.getNoSubDeducSpouse()); // 控除対象配偶者の有無等: 従無(右下)
		
		setValueChk(odsBean, 8, 14, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(左上)
		setValueChk(odsBean, 8, 45, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(左下)
		setValueChk(odsBean, 61, 14, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(右上)
		setValueChk(odsBean, 61, 45, dto.getElderlySpouse()); // 控除対象配偶者の有無等: 老人(右下)
		
		setValueChk(odsBean, 10, 14, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(左上)
		setValueChk(odsBean, 63, 14, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(右上)
		setValueChk(odsBean, 10, 45, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(左下)
		setValueChk(odsBean, 63, 45, String.valueOf(dto.getSpouseSpDeduction())); // 配偶者特別控除額(右下)
		
		setValueChk(odsBean, 16, 14, dto.getSpDependent()); // 特定(左上)
		setValueChk(odsBean, 69, 14, dto.getSpDependent()); // 特定(右上)
		setValueChk(odsBean, 16, 45, dto.getSpDependent()); // 特定(左下)
		setValueChk(odsBean, 69, 45, dto.getSpDependent()); // 特定(右下)
		
		setValueChk(odsBean, 19, 14, dto.getSpSubDependent()); // 特定従人(左上)
		setValueChk(odsBean, 72, 14, dto.getSpSubDependent()); // 特定従人(右上)
		setValueChk(odsBean, 19, 45, dto.getSpSubDependent()); // 特定従人(左下)
		setValueChk(odsBean, 72, 45, dto.getSpSubDependent()); // 特定従人(右下)
		
		setValueChk(odsBean, 22, 14, dto.getSpElItemDepend()); // 老人内訳(左上)
		setValueChk(odsBean, 75, 14, dto.getSpElItemDepend()); // 老人内訳(右上)
		setValueChk(odsBean, 22, 45, dto.getSpElItemDepend()); // 老人内訳(左下)
		setValueChk(odsBean, 75, 45, dto.getSpElItemDepend()); // 老人内訳(右下)
		
		setValueChk(odsBean, 24, 14, dto.getSpElDependent()); // 老人(左上)
		setValueChk(odsBean, 77, 14, dto.getSpElDependent()); // 老人(右上)
		setValueChk(odsBean, 24, 45, dto.getSpElDependent()); // 老人(左上)
		setValueChk(odsBean, 77, 45, dto.getSpElDependent()); // 老人(右下)
		
		setValueChk(odsBean, 26, 14, dto.getSpSubElDepend()); // 従人(左上)
		setValueChk(odsBean, 79, 14, dto.getSpSubElDepend()); // 従人(右上)
		setValueChk(odsBean, 26, 45, dto.getSpSubElDepend()); // 従人(左下)
		setValueChk(odsBean, 79, 45, dto.getSpSubElDepend()); // 従人(右下)
		
		setValueChk(odsBean, 29, 14, dto.getOtherDepend()); // その他(左上)		
		setValueChk(odsBean, 82, 14, dto.getOtherDepend()); // その他(右上)		
		setValueChk(odsBean, 29, 45, dto.getOtherDepend()); // その他(左下)		
		setValueChk(odsBean, 82, 45, dto.getOtherDepend()); // その他(右下)		
		
		setValueChk(odsBean, 30, 14, dto.getOtherSubDepend()); // その他従人(左上)		
		setValueChk(odsBean, 83, 14, dto.getOtherSubDepend()); // その他従人(右上)		
		setValueChk(odsBean, 30, 45, dto.getOtherSubDepend()); // その他従人(左下)		
		setValueChk(odsBean, 83, 45, dto.getOtherSubDepend()); // その他従人(右下)		
		
		setValueChk(odsBean, 31, 14, dto.getSpItemHandicap()); // 障害者の数：特別内(左上)
		setValueChk(odsBean, 84, 14, dto.getSpItemHandicap()); // 障害者の数：特別内(右上)
		setValueChk(odsBean, 31, 45, dto.getSpItemHandicap()); // 障害者の数：特別内(左下)
		setValueChk(odsBean, 84, 45, dto.getSpItemHandicap()); // 障害者の数：特別内(右下)
		
		setValueChk(odsBean, 32, 14, dto.getSpHandicap()); // 障害者の数：特別(左上)
		setValueChk(odsBean, 85, 14, dto.getSpHandicap()); // 障害者の数：特別(右上)
		setValueChk(odsBean, 32, 45, dto.getSpHandicap()); // 障害者の数：特別(左下)
		setValueChk(odsBean, 85, 45, dto.getSpHandicap()); // 障害者の数：特別(右下)
		
		setValueChk(odsBean, 33, 14, dto.getSpHandicapOther()); // 障害者の数：その他(左上)
		setValueChk(odsBean, 86, 14, dto.getSpHandicapOther()); // 障害者の数：その他(右上)
		setValueChk(odsBean, 33, 45, dto.getSpHandicapOther()); // 障害者の数：その他(左下)
		setValueChk(odsBean, 86, 45, dto.getSpHandicapOther()); // 障害者の数：その他(右下)
		
		setValueChk(odsBean, 34, 14, dto.getSocialInsDeduction()); // 社会保険料控除額(左上)
		setValueChk(odsBean, 87, 14, dto.getSocialInsDeduction()); // 社会保険料控除額(右上)
		setValueChk(odsBean, 34, 45, dto.getSocialInsDeduction()); // 社会保険料控除額(左下)
		setValueChk(odsBean, 87, 45, dto.getSocialInsDeduction()); // 社会保険料控除額(右下)
		
		setValueChk(odsBean, 39, 14, dto.getLifeInsDeduction()); // 生命保険料控除額(左上)
		setValueChk(odsBean, 92, 14, dto.getLifeInsDeduction()); // 生命保険料控除額(右上)
		setValueChk(odsBean, 39, 45, dto.getLifeInsDeduction()); // 生命保険料控除額(左下)
		setValueChk(odsBean, 92, 45, dto.getLifeInsDeduction()); // 生命保険料控除額(右下)
		
		setValueChk(odsBean, 43, 14, dto.getEarthquakeIns()); // 地震保険料(左上)
		setValueChk(odsBean, 96, 14, dto.getEarthquakeIns()); // 地震保険料(右上)
		setValueChk(odsBean, 43, 45, dto.getEarthquakeIns()); // 地震保険料(左下)
		setValueChk(odsBean, 96, 45, dto.getEarthquakeIns()); // 地震保険料(右下)
		
		setValueChk(odsBean, 48, 14, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(左上)
		setValueChk(odsBean, 101, 14, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(右上)
		setValueChk(odsBean, 48, 45, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(左下)
		setValueChk(odsBean, 101, 45, dto.getHouseLoanDeduction()); // 住宅借入金等特別控除額(右下)
		
		setValueChk(odsBean, 2, 17, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(左上)
		setValueChk(odsBean, 55, 17, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(右上)
		setValueChk(odsBean, 2, 48, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(左下)
		setValueChk(odsBean, 55, 48, dto.getWithholdSlipNotes()); // 源泉徴収票摘要欄(右下)
		
		setValueChk(odsBean, 46, 16, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(左上)
		setValueChk(odsBean, 99, 16, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(右上)
		setValueChk(odsBean, 46, 47, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(左下)
		setValueChk(odsBean, 99, 47, String.valueOf(dto.getSpouseSumIncome())); //  配偶者の本年中の合計所得金額の見積額(右下)
		
		setValueChk(odsBean, 46, 17, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(左上)	
		setValueChk(odsBean, 99, 17, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(右上)	
		setValueChk(odsBean, 46, 48, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(左下)	
		setValueChk(odsBean, 99, 48, String.valueOf(dto.getPrivatePension())); //	個人年金保険料(右下)
		
		setValueChk(odsBean, 46, 18, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(左上)	
		setValueChk(odsBean, 99, 18, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(右上)	
		setValueChk(odsBean, 46, 49, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(左下)	
		setValueChk(odsBean, 99, 49, String.valueOf(dto.getLongTermDamageIns())); //	旧長期損害保険料(右下)	
		
		setValueChk(odsBean, 2, 23, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(左上)	
		setValueChk(odsBean, 55, 23, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(右上)	
		setValueChk(odsBean, 2, 54, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(左下)	
		setValueChk(odsBean, 55, 54, dto.getSelfMinority()); // 扶養控除等本人項目：未成年者(右下)	
		
		setValueChk(odsBean, 5, 23, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(左上)	
		setValueChk(odsBean, 58, 23, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(右上)	
		setValueChk(odsBean, 5, 54, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(左下)	
		setValueChk(odsBean, 58, 54, dto.getSelfOtu()); // 扶養控除等本人項目：乙欄(右下)	
		
		setValueChk(odsBean, 7, 23, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(左上)	
		setValueChk(odsBean, 60, 23, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(右上)	
		setValueChk(odsBean, 7, 54, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(左下)	
		setValueChk(odsBean, 60, 54, dto.getSelfSpHandicap()); // 扶養控除等本人項目：特別障害者(右下)	
		
		setValueChk(odsBean, 10, 23, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(左上)	
		setValueChk(odsBean, 63, 23, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(右上)	
		setValueChk(odsBean, 10, 54, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(左下)	
		setValueChk(odsBean, 63, 54, dto.getSelfGeHandicap()); // 扶養控除等本人項目：一般障害者(右下)	
		
		setValueChk(odsBean, 13, 23, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(左上)	
		setValueChk(odsBean, 66, 23, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(右上)	
		setValueChk(odsBean, 13, 54, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(左下)	
		setValueChk(odsBean, 66, 54, dto.getSelfGeWidow()); // 扶養控除等本人項目：一般寡婦(右下)	
		
		setValueChk(odsBean, 16, 23, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(左上)	
		setValueChk(odsBean, 69, 23, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(右上)	
		setValueChk(odsBean, 16, 54, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(左下)
		setValueChk(odsBean, 69, 54, dto.getSelfSpWidow()); // 扶養控除等本人項目：特別寡婦(右下)
		
		setValueChk(odsBean, 20, 23, dto.getWidow()); // 扶養控除等本人項目：寡夫(左上)	
		setValueChk(odsBean, 73, 23, dto.getWidow()); // 扶養控除等本人項目：寡夫(右上)
		setValueChk(odsBean, 20, 54, dto.getWidow()); // 扶養控除等本人項目：寡夫(左下)	
		setValueChk(odsBean, 73, 54, dto.getWidow()); // 扶養控除等本人項目：寡夫(右下)
		
		setValueChk(odsBean, 24, 23, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(左上)	
		setValueChk(odsBean, 77, 23, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(右上)	
		setValueChk(odsBean, 24, 54, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(左下)	
		setValueChk(odsBean, 77, 54, dto.getStudentGeneral()); // 扶養控除等本人項目：勤労学生(右下)
		
		setValueChk(odsBean, 28, 23, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(左上)	
		setValueChk(odsBean, 81, 23, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(右上)	
		setValueChk(odsBean, 28, 54, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(左下)	
		setValueChk(odsBean, 81, 54, dto.getDeadRetirement()); // 扶養控除等本人項目：死亡退職(右下)
		
		setValueChk(odsBean, 30, 23, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(左上)	
		setValueChk(odsBean, 83, 23, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(右上)
		setValueChk(odsBean, 30, 54, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(左下)
		setValueChk(odsBean, 83, 54, dto.getSelfDisaster()); // 扶養控除等本人項目：災害者(右下)
		
		setValueChk(odsBean, 31, 23, dto.getForeigner()); // 扶養控除等本人項目：外国人(左上)	
		setValueChk(odsBean, 84, 23, dto.getForeigner()); // 扶養控除等本人項目：外国人(右上)
		setValueChk(odsBean, 31, 54, dto.getForeigner()); // 扶養控除等本人項目：外国人(左下)
		setValueChk(odsBean, 84, 54, dto.getForeigner()); // 扶養控除等本人項目：外国人(右下)
		
		setValueChk(odsBean, 32, 22, dto.getEmployment()); // 就職(左上)
		setValueChk(odsBean, 85, 22, dto.getEmployment()); // 就職(右上)
		setValueChk(odsBean, 32, 53, dto.getEmployment()); // 就職(左下)
		setValueChk(odsBean, 85, 53, dto.getEmployment()); // 就職(右下)
		
		setValueChk(odsBean, 33, 22, dto.getRetirement()); // 退職(左上)
		setValueChk(odsBean, 86, 22, dto.getRetirement()); // 退職(右上)
		setValueChk(odsBean, 33, 53, dto.getRetirement()); // 退職(左下)
		setValueChk(odsBean, 86, 53, dto.getRetirement()); // 退職(右下)
		
		setValueChk(odsBean, 34, 22, dto.getRetirementYaer()); // 退社日(年)(左上)
		setValueChk(odsBean, 87, 22, dto.getRetirementYaer()); // 退社日(年)(右上)
		setValueChk(odsBean, 34, 53, dto.getRetirementYaer()); // 退社日(年)(左下)
		setValueChk(odsBean, 87, 53, dto.getRetirementYaer()); // 退社日(年)(右下)
		
		setValueChk(odsBean, 36, 22, dto.getRetirementMonth()); // 退社日(月)(左上)
		setValueChk(odsBean, 89, 22, dto.getRetirementMonth()); // 退社日(月)(右上)
		setValueChk(odsBean, 36, 53, dto.getRetirementMonth()); // 退社日(月)(左下)
		setValueChk(odsBean, 89, 53, dto.getRetirementMonth()); // 退社日(月)(右下)
		
		setValueChk(odsBean, 37, 22, dto.getRetirementMonth()); // 退社日(日)(左上)
		setValueChk(odsBean, 90, 22, dto.getRetirementMonth()); // 退社日(日)(右上)
		setValueChk(odsBean, 37, 53, dto.getRetirementMonth()); // 退社日(日)(左下)
		setValueChk(odsBean, 90, 53, dto.getRetirementMonth()); // 退社日(日)(右下)
		
		setValueChk(odsBean, 39, 22, dto.getBirthMeiji()); // 生年月日和暦(明治)(左上)
		setValueChk(odsBean, 92, 22, dto.getBirthMeiji()); // 生年月日和暦(明治)(右上)
		setValueChk(odsBean, 39, 53, dto.getBirthMeiji()); // 生年月日和暦(明治)(左下)
		setValueChk(odsBean, 92, 53, dto.getBirthMeiji()); // 生年月日和暦(明治)(右下)
		
		setValueChk(odsBean, 40, 22, dto.getBirthTaisyou()); // 生年月日和暦(大正)(左上)
		setValueChk(odsBean, 93, 22, dto.getBirthTaisyou()); // 生年月日和暦(大正)(右上)
		setValueChk(odsBean, 40, 53, dto.getBirthTaisyou()); // 生年月日和暦(大正)(左下)
		setValueChk(odsBean, 93, 53, dto.getBirthTaisyou()); // 生年月日和暦(大正)(右下)
		
		setValueChk(odsBean, 42, 22, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(左上)
		setValueChk(odsBean, 95, 22, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(右上)
		setValueChk(odsBean, 42, 53, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(左下)
		setValueChk(odsBean, 95, 53, dto.getBirthSyouwa()); // 生年月日和暦(昭和)(右下)
		
		setValueChk(odsBean, 44, 22, dto.getBirthHeisei()); // 生年月日和暦(平成)(左上)
		setValueChk(odsBean, 97, 22, dto.getBirthHeisei()); // 生年月日和暦(平成)(右上)
		setValueChk(odsBean, 44, 53, dto.getBirthHeisei()); // 生年月日和暦(平成)(左下)
		setValueChk(odsBean, 97, 53, dto.getBirthHeisei()); // 生年月日和暦(平成)(右下)
		
		setValueChk(odsBean, 46, 22, dto.getBirthYear()); // 生年月日(年)(左上)
		setValueChk(odsBean, 99, 22, dto.getBirthYear()); // 生年月日(年)(右上)
		setValueChk(odsBean, 46, 53, dto.getBirthYear()); // 生年月日(年)(左下)
		setValueChk(odsBean, 99, 53, dto.getBirthYear()); // 生年月日(年)(右下)
		
		setValueChk(odsBean, 49, 22, dto.getBirthMonth()); // 生年月日(月)(左上)
		setValueChk(odsBean, 102, 22, dto.getBirthMonth()); // 生年月日(月)(右上)
		setValueChk(odsBean, 49, 53, dto.getBirthMonth()); // 生年月日(月)(左下)
		setValueChk(odsBean, 102, 53, dto.getBirthMonth()); // 生年月日(月)(右下)
		
		setValueChk(odsBean, 50, 22, dto.getBirthDay()); // 生年月日(日)(左上)
		setValueChk(odsBean, 103, 22, dto.getBirthDay()); // 生年月日(日)(右上)
		setValueChk(odsBean, 50, 53, dto.getBirthDay()); // 生年月日(日)(左下)
		setValueChk(odsBean, 103, 53, dto.getBirthDay()); // 生年月日(日)(右下)
		
		setValueChk(odsBean, 9, 24, dto.getCompanyAddress()); // 会社住所(左上)
		setValueChk(odsBean, 62, 24, dto.getCompanyAddress()); // 会社住所(右上)
		setValueChk(odsBean, 9, 55, dto.getCompanyAddress()); // 会社住所(左下)
		setValueChk(odsBean, 62, 55, dto.getCompanyAddress()); // 会社住所(右下)
		
		setValueChk(odsBean, 9, 26, dto.getCompanyName()); // 会社名(左上)
		setValueChk(odsBean, 62, 26, dto.getCompanyName()); // 会社名(右上)
		setValueChk(odsBean, 9, 57, dto.getCompanyName()); // 会社名(左下)
		setValueChk(odsBean, 62, 57, dto.getCompanyName()); // 会社名(右下)
		
		setValueChk(odsBean, 40, 27, dto.getCompanyPhone()); // 会社電話番号(左上)
		setValueChk(odsBean, 93, 27, dto.getCompanyPhone()); // 会社電話番号(右上)
		setValueChk(odsBean, 40, 58, dto.getCompanyPhone()); // 会社電話番号(左下)
		setValueChk(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());
	}
	
}
