/*
 * 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.payment.vo;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import jp.mosp.payroll.base.PayrollVo;
import jp.mosp.payroll.dto.PaymentListDto;
import jp.mosp.payroll.payment.action.PaymentListAction;

public class PaymentListVo extends PayrollVo {
	
	private static final long serialVersionUID = -6810707735163877932L;
	
	// フィールド
	private int      pltYear       ;
	private int      pltMonth      ;
	private String   txtKCode      ;
	private String   txtKKana      ;
	private String   pltOffice     ;
	private String   pltSection    ;
	private String   pltPosition   ;
	private String   lblTargetMonth;
	
	// フィールド(一覧)
	private String[] aryKCode   ;
	private String[] aryKName   ;
	private String[] aryOffice  ;
	private String[] arySection ;
	private String[] aryPosition;
	private String[] aryPayTotal;
	
	// プルダウン
	private String[][] pitYear    ;
	private String[][] pitMonth   ;
	private String[][] pitOffice  ;
	private String[][] pitSection ;
	private String[][] pitPosition;
	
	/**
	 * パラメータ名(給与計算開始年)。
	 */
	public static final String PRM_PLT_YEAR = "pltYear";
	
	/**
	 * パラメータ名(給与計算開始月)。
	 */
	public static final String PRM_PLT_MONTH = "pltMonth";
	
	/**
	 * パラメータ名(社員コード)。
	 */
	public static final String PRM_TXT_K_CODE = "txtKCode";
	
	/**
	 * パラメータ名(社員カナ)。
	 */
	public static final String PRM_TXT_K_KANA = "txtKKana";
	
	/**
	 * パラメータ名(事業所)。
	 */
	public static final String PRM_PLT_OFFICE = "pltOffice";
	
	/**
	 * パラメータ名(所属)。
	 */
	public static final String PRM_PLT_SECTION = "pltSection";
	
	/**
	 * パラメータ名(役職)。
	 */
	public static final String PRM_PLT_POSITION = "pltPosition";
	
	/**
	 * {@link PayrollVo#PayrollVo()}を実行する。
	 */
	public PaymentListVo() {
		super();
		aryKCode    = new String[0];
		aryKName    = new String[0];
		aryOffice   = new String[0];
		arySection  = new String[0];
		aryPosition = new String[0];
		aryPayTotal = new String[0];
		setPageCommand(PaymentListAction.CMD_PAGE);
		setSortKey("1");
	}
	
	/* (non-Javadoc)
	 * @see jp.mosp.payroll.base.PayrollVo#setSubTitle()
	 */
	@Override
	protected void setSubTitle() {
		super.setSubTitle();
		subTitle = getName("P_PAYROLL") + getName("C_DATA") + getName("C_LIST");
		addAryMenu("P1001", getName("P_PAYMENT") +
				getName("P_CALCULATE") + getName("C_MENU") + getName("C_TO"));
	}
	
	/**
	 * リクエストからパラメータを取得、設定する。
	 * @param request リクエスト
	 */
	public void setParams(HttpServletRequest request) {
		pltYear     = getIntParam(request.getParameter(PRM_PLT_YEAR ));
		pltMonth    = getIntParam(request.getParameter(PRM_PLT_MONTH));
		txtKCode    = request.getParameter(PRM_TXT_K_CODE);
		txtKKana    = request.getParameter(PRM_TXT_K_KANA);
		pltOffice   = request.getParameter(PRM_PLT_OFFICE);
		pltSection  = request.getParameter(PRM_PLT_SECTION);
		pltPosition = request.getParameter(PRM_PLT_POSITION);
	}
	
	/**
	 * フィールドを設定する。<br>
	 * @param list DTOリスト
	 */
	public void setFields(List<PaymentListDto> list) {
		// データ総数の取得
		count = list.size();
		// 配列の初期化
		aryKCode    = new String[count];
		aryKName    = new String[count];
		aryOffice   = new String[count];
		arySection  = new String[count];
		aryPosition = new String[count];
		aryPayTotal = new String[count];
		// データの設定
		for (int i = 0; i < list.size(); i++) {
			PaymentListDto dto = list.get(i);
			aryKCode   [i] = dto.getKCode       ();
			aryKName   [i] = dto.getSimei       ();
			aryOffice  [i] = dto.getOfficeName  ();
			arySection [i] = dto.getSectionName ();
			aryPosition[i] = dto.getPositionName();
			aryPayTotal[i] = String.valueOf(dto.getPaymentTotal());
		}
	}
	
	/**
	 * 給与計算開始月を取得する。
	 * @return 給与計算開始月
	 */
	public int getPltMonth() {
		return pltMonth;
	}
	
	/**
	 * 給与計算開始月を設定する。
	 * @param pltMonth 設定する給与計算開始月
	 */
	public void setPltMonth(int pltMonth) {
		this.pltMonth = pltMonth;
	}
	
	/**
	 * 給与計算開始年を取得する。
	 * @return 給与計算開始年
	 */
	public int getPltYear() {
		return pltYear;
	}

	/**
	 * 給与計算開始年を設定する。
	 * @param pltYear 設定する給与計算開始年
	 */
	public void setPltYear(int pltYear) {
		this.pltYear = pltYear;
	}
	
	/**
	 * 月プルダウンアイテムを取得する。
	 * @return 月プルダウンアイテム
	 */
	public String[][] getPitMonth() {
		return getAryField(pitMonth);
	}
	
	/**
	 * 月プルダウンアイテムを設定する。
	 * @param pitMonth 設定する月プルダウンアイテム
	 */
	public void setPitMonth(String[][] pitMonth) {
		this.pitMonth = getAryField(pitMonth);
	}
	
	/**
	 * 年プルダウンアイテムを取得する。
	 * @return 年プルダウンアイテム
	 */
	public String[][] getPitYear() {
		return getAryField(pitYear);
	}
	
	/**
	 * 年プルダウンアイテムを設定する。
	 * @param pitYear 設定する年プルダウンアイテム
	 */
	public void setPitYear(String[][] pitYear) {
		this.pitYear = getAryField(pitYear);
	}
	
	/**
	 * 事業所プルダウンアイテムを取得する。
	 * @return 事業所プルダウンアイテム
	 */
	public String[][] getPitOffice() {
		return getAryField(pitOffice);
	}
	
	/**
	 * 事業所プルダウンアイテムを設定する。
	 * @param pitOffice 設定する事業所プルダウンアイテム
	 */
	public void setPitOffice(String[][] pitOffice) {
		this.pitOffice = getAryField(pitOffice);
	}

	/**
	 * 役職プルダウンアイテムを取得する。
	 * @return 役職プルダウンアイテム
	 */
	public String[][] getPitPosition() {
		return getAryField(pitPosition);
	}

	/**
	 * 役職プルダウンアイテムを設定する。
	 * @param pitPosition 設定する役職プルダウンアイテム
	 */
	public void setPitPosition(String[][] pitPosition) {
		this.pitPosition = getAryField(pitPosition);
	}

	/**
	 * 所属プルダウンアイテムを取得する。
	 * @return 所属プルダウンアイテム
	 */
	public String[][] getPitSection() {
		return getAryField(pitSection);
	}

	/**
	 * 所属プルダウンアイテムを設定する。
	 * @param pitSection 設定する所属プルダウンアイテム
	 */
	public void setPitSection(String[][] pitSection) {
		this.pitSection = getAryField(pitSection);
	}
	
	/**
	 * 事業所コードを取得する。
	 * @return 事業所コード
	 */
	public String getPltOffice() {
		return pltOffice;
	}
	
	/**
	 * 事業所コードを設定する。
	 * @param pltOffice 設定する事業所コード
	 */
	public void setPltOffice(String pltOffice) {
		this.pltOffice = pltOffice;
	}

	/**
	 * 役職コードを取得する。
	 * @return 役職コード
	 */
	public String getPltPosition() {
		return pltPosition;
	}

	/**
	 * 役職コードを設定する。
	 * @param pltPosition 設定する役職コード
	 */
	public void setPltPosition(String pltPosition) {
		this.pltPosition = pltPosition;
	}

	/**
	 * 所属コードを取得する。
	 * @return 所属コード
	 */
	public String getPltSection() {
		return pltSection;
	}

	/**
	 * 所属コードを設定する。
	 * @param pltSection 設定する所属コード
	 */
	public void setPltSection(String pltSection) {
		this.pltSection = pltSection;
	}

	/**
	 * 社員コードを取得する。
	 * @return 社員コード
	 */
	public String getTxtKCode() {
		return txtKCode;
	}

	/**
	 * 社員コードを取得する(エスケープ)。
	 * @return 社員コード
	 */
	public String getEscTxtKCode() {
		return escapeHTML(txtKCode);
	}
	
	/**
	 * 社員コードを設定する。
	 * @param txtKCode 設定する社員コード
	 */
	public void setTxtKCode(String txtKCode) {
		this.txtKCode = txtKCode;
	}

	/**
	 * 社員カナを取得する。
	 * @return 社員カナ
	 */
	public String getTxtKKana() {
		return txtKKana;
	}

	/**
	 * 社員カナを取得する(エスケープ)。
	 * @return 社員カナ
	 */
	public String getEscTxtKKana() {
		return escapeHTML(txtKKana);
	}

	/**
	 * 社員カナを設定する。
	 * @param txtKKana 設定する社員カナ
	 */
	public void setTxtKKana(String txtKKana) {
		this.txtKKana = txtKKana;
	}
	
	/**
	 * 対象年月を取得する。
	 * @return 対象年月
	 */
	public String getLblTargetMonth() {
		return lblTargetMonth;
	}

	/**
	 * 対象年月を設定する。
	 * @param lblTargetMonth 設定する対象年月
	 */
	public void setLblTargetMonth(String lblTargetMonth) {
		this.lblTargetMonth = lblTargetMonth;
	}
	
	/**
	 * 社員コード(一覧)を取得する。
	 * @param idx インデックス
	 * @return 社員コード
	 */
	public String getAryKCode(int idx) {
		return escapeHTML(aryKCode[idx]);
	}

	/**
	 * 社員名(一覧)を取得する。
	 * @param idx インデックス
	 * @return 社員名
	 */
	public String getAryKName(int idx) {
		return escapeHTML(aryKName[idx]);
	}

	/**
	 * 事業所(一覧)を取得する。
	 * @param idx インデックス
	 * @return 事業所
	 */
	public String getAryOffice(int idx) {
		return escapeHTML(aryOffice[idx]);
	}

	/**
	 * 役職(一覧)を取得する。
	 * @param idx インデックス
	 * @return 役職
	 */
	public String getAryPosition(int idx) {
		return escapeHTML(aryPosition[idx]);
	}

	/**
	 * 所属(一覧)を取得する。
	 * @param idx インデックス
	 * @return 所属
	 */
	public String getArySection(int idx) {
		return escapeHTML(arySection[idx]);
	}
	
	/**
	 * 差引支給額(一覧)を取得する。
	 * @param idx インデックス
	 * @return 差引支給額
	 */
	public String getAryPayTotal(int idx) {
		return escapeHTML(aryPayTotal[idx]);
	}

	
}
