package jp.mosp.payroll.dto;

import java.util.Date;

import jp.mosp.common.common.BaseDto;

public class AdjustmentDto extends BaseDto {
	
	private static final long serialVersionUID = -4544512011191536993L;
	
	// フィールド
	private String kCode         ;	// 社員コード
	private String kName         ;	// 社員氏名
	private String kKana         ;	// 社員ﾌﾘｶﾞﾅ
	private String stationCode   ;	// 所属コード
	private String positionCode  ;	// 職位コード
	private String employmentType;	// 雇用区分
//	private Date   entranceDate  ;	// 入社日
//	private Date   retirementDate;	// 退社日
	private int   entranceDate  ;	// 入社日
	private int   retirementDate;	// 退社日
	
	private Date   incExpectedDate  ;	// 所得税適用年
	private String incomeTaxType    ;	// 課税区分
	private String adjustmentType   ;	// 年末調整区分
	private String selfWidowType    ;	// 本人寡婦区分
	private String selfHandicapType ;	// 本人障害区分
	private String selfStudentType  ;	// 本人学生区分
	private String spouseIntendType ;	// 配偶者区分
	private int    generalDependent ;	// 一般扶養親族
	private int    specificDependent;	// 特定扶養親族
	private int    elderlyDependent ;	// 老人扶養親族
	private int    liveWithEldRel   ;	// 同居老親等
	private int    liveWithHandiGe  ;	// 同居特障一般
	private int    liveWithHandiSp  ;	// 同居特障特定
	private int    liveWithHandiEl  ;	// 同居特障老人
	private int    liveWithHandiEr  ;	// 同居特障老親
	private int    generalHandicap  ;	// 一般障害者
	private int    specificHandicap ;	// 特別障害者
	private int    dependentCount   ;	// 扶養等の数
	
	private String midwayType     ;	// 中途入社区分
	private int    formerIncome   ;	// 前勤務先収入金額
	private int    formerInsurance;	// 前勤務先社会保険額
	private int    formerTax      ;	// 前勤務先所得税額
	
	private int    adjustYear         ;	// 調整年
	private String adjustStatus       ;	// 年末調整計算状態
	private int    generalLifeIns     ;	// 一般の生命保険料
	private int    privatePension     ;	// 個人年金保険料
	private int    lifeInsDeduction   ;	// 生命保険料控除額
	private int    earthquakeIns      ;	// 地震保険料
	private int    longTermDamageIns  ;	// 旧長期損害保険料
	private int    damageInsDeduction ;	// 損害保険料控除額
	private int    socialInsDeduction ;	// 社会保険料控除額
	private int    mutualAidDeduction ;	// 小規模企業共済等掛金控除額
	private int    spouseSumIncome    ;	// 配偶者の本年中の合計所得金額の見積額
	private int    spouseSpDeduction  ;	// 配偶者特別控除額
	private int    houseLoanDeduction ;	// 住宅借入金等特別控除額
	private int    allowanceAdjustment;	// 支給調整額
	private int    taxFreeAdjustment  ;	// 非課税調整額
	private int    socInsAdjustment   ;	// 社会保険調整額
	private int    taxIncAdjustment   ;	// 所得税調整額
	private String withholdSlipNotes  ;	// 源泉徴収票摘要欄
	private int    paymentAllowance   ;	// 給与、手当等金額
	private int    paymentIncomeTax   ;	// 給与、手当等税額
	private int    bonusAllowance     ;	// 賞与等金額
	private int    bonusIncomeTax     ;	// 賞与等税額
	private int    midwayAdjustIncome ;	// 中途、調整収入金額
	private int    midwayAdjustTax    ;	// 中途、調整収入税額
	private int    afterDeductIncome  ;	// 給与所得控除後の給与等の金額

	private int    payInsDeduction    ;	// 社会保険料等給与等からの控除分
	private int    dependentsDeduction;	// 配偶者控除額、扶養控除額、基礎控除額及び障害者等の控除額の合計額
	private int    calcTaxedIncome    ;	// 差引課税給与所得金額
	private int    calcIncomeTax      ;	// 算出年税額
	private int    adjustedIncomeTax  ;	// 年調年税額
	private int    deductedIncomeTax  ;	// 年調定率控除額税額
	private int    finalIncomeTax     ;	// 年税額
	
	/**
	 * コンストラクタ
	 */
	public AdjustmentDto() {
		super();
	}
	
	// アクセサメソッド
	public String getKCode         () { return kCode                       ; }	// 社員コード
	public String getKName         () { return kName                       ; }	// 社員氏名
	public String getKKana         () { return kKana                       ; }	// 社員ﾌﾘｶﾞﾅ
	public String getStationCode   () { return stationCode                 ; }	// 所属コード
	public String getPositionCode  () { return positionCode                ; }	// 職位コード
	public String getEmploymentType() { return employmentType              ; }	// 雇用区分
	public int   getEntranceDate  () { return entranceDate					;	}	// 入社日
	public int   getRetirementDate() { return retirementDate					;	}	// 退社日
	public void setKCode         (String kCode         ) { this.kCode          = kCode                       ; }	// 社員コード
	public void setKName         (String kName         ) { this.kName          = kName                       ; }	// 社員氏名
	public void setKKana         (String kKana         ) { this.kKana          = kKana                       ; }	// 社員ﾌﾘｶﾞﾅ
	public void setStationCode   (String stationCode   ) { this.stationCode    = stationCode                 ; }	// 所属コード
	public void setPositionCode  (String positionCode  ) { this.positionCode   = positionCode                ; }	// 職位コード
	public void setEmploymentType(String employmentType) { this.employmentType = employmentType              ; }	// 雇用形態
	public void setEntranceDate  (int   entranceDate  ) { this.entranceDate	=	entranceDate	;	}	// 入社日
	public void setRetirementDate(int   retirementDate) { this.retirementDate	=	retirementDate	;	}	// 退社日
	
	public Date   getIncExpectedDate  () { return getDateField(incExpectedDate); }	// 所得税適用年
	public String getIncomeTaxType    () { return incomeTaxType                ; }	// 課税区分
	public String getAdjustmentType   () { return adjustmentType               ; }	// 年末調整区分
	public String getSelfWidowType    () { return selfWidowType                ; }	// 本人寡婦区分
	public String getSelfHandicapType () { return selfHandicapType             ; }	// 本人障害区分
	public String getSelfStudentType  () { return selfStudentType              ; }	// 本人学生区分
	public String getSpouseIntendType () { return spouseIntendType             ; }	// 配偶者区分
	public int    getGeneralDependent () { return generalDependent             ; }	// 一般扶養親族
	public int    getSpecificDependent() { return specificDependent            ; }	// 特定扶養親族
	public int    getElderlyDependent () { return elderlyDependent             ; }	// 老人扶養親族
	public int    getLiveWithEldRel   () { return liveWithEldRel               ; }	// 同居老親等
	public int    getLiveWithHandiGe  () { return liveWithHandiGe              ; }	// 同居特障一般
	public int    getLiveWithHandiSp  () { return liveWithHandiSp              ; }	// 同居特障特定
	public int    getLiveWithHandiEl  () { return liveWithHandiEl              ; }	// 同居特障老人
	public int    getLiveWithHandiEr  () { return liveWithHandiEr              ; }	// 同居特障老親
	public int    getGeneralHandicap  () { return generalHandicap              ; }	// 一般障害者
	public int    getSpecificHandicap () { return specificHandicap             ; }	// 特別障害者
	public int    getDependentCount   () { return dependentCount               ; }	// 扶養等の数
	public void setIncExpectedDate  (Date   incExpectedDate  ) { this.incExpectedDate   = getDateField(incExpectedDate); }	// 所得税適用年
	public void setIncomeTaxType    (String incomeTaxType    ) { this.incomeTaxType     = incomeTaxType                ; }	// 課税区分
	public void setAdjustmentType   (String adjustmentType   ) { this.adjustmentType    = adjustmentType               ; }	// 年末調整区分
	public void setSelfWidowType    (String selfWidowType    ) { this.selfWidowType     = selfWidowType                ; }	// 本人寡婦区分
	public void setSelfHandicapType (String selfHandicapType ) { this.selfHandicapType  = selfHandicapType             ; }	// 本人障害区分
	public void setSelfStudentType  (String selfStudentType  ) { this.selfStudentType   = selfStudentType              ; }	// 本人学生区分
	public void setSpouseIntendType (String spouseIntendType ) { this.spouseIntendType  = spouseIntendType             ; }	// 配偶者区分
	public void setGeneralDependent (int    generalDependent ) { this.generalDependent  = generalDependent             ; }	// 一般扶養親族
	public void setSpecificDependent(int    specificDependent) { this.specificDependent = specificDependent            ; }	// 特定扶養親族
	public void setElderlyDependent (int    elderlyDependent ) { this.elderlyDependent  = elderlyDependent             ; }	// 老人扶養親族
	public void setLiveWithEldRel   (int    liveWithEldRel   ) { this.liveWithEldRel    = liveWithEldRel               ; }	// 同居老親等
	public void setLiveWithHandiGe  (int    liveWithHandiGe  ) { this.liveWithHandiGe   = liveWithHandiGe              ; }	// 同居特障一般
	public void setLiveWithHandiSp  (int    liveWithHandiSp  ) { this.liveWithHandiSp   = liveWithHandiSp              ; }	// 同居特障特定
	public void setLiveWithHandiEl  (int    liveWithHandiEl  ) { this.liveWithHandiEl   = liveWithHandiEl              ; }	// 同居特障老人
	public void setLiveWithHandiEr  (int    liveWithHandiEr  ) { this.liveWithHandiEr   = liveWithHandiEr              ; }	// 同居特障老親
	public void setGeneralHandicap  (int    generalHandicap  ) { this.generalHandicap   = generalHandicap              ; }	// 一般障害者
	public void setSpecificHandicap (int    specificHandicap ) { this.specificHandicap  = specificHandicap             ; }	// 特別障害者
	public void setDependentCount   (int    dependentCount   ) { this.dependentCount    = dependentCount               ; }	// 扶養等の数
	
	public String getMidwayType     () { return midwayType     ; }		// 計算単価区分
	public int    getFormerIncome   () { return formerIncome   ; }	// 計算単価区分
	public int    getFormerInsurance() { return formerInsurance; }	// 計算単価区分
	public int    getFormerTax      () { return formerTax      ; }	// 計算単価区分
	public void setMidwayType     (String midwayType     ) { this.midwayType      = midwayType     ; }	// 計算単価区分
	public void setFormerIncome   (int    formerIncome   ) { this.formerIncome    = formerIncome   ; }	// 計算単価区分
	public void setFormerInsurance(int    formerInsurance) { this.formerInsurance = formerInsurance; }	// 計算単価区分
	public void setFormerTax      (int    formerTax      ) { this.formerTax       = formerTax      ; }	// 計算単価区分
	
	public int    getAdjustYear         () { return adjustYear		;	}	// 調整年
	public String getAdjustStatus       () { return adjustStatus		;	}	// 年末調整計算状態
	public int    getGeneralLifeIns     () { return generalLifeIns     ; }	// 一般の生命保険料
	public int    getPrivatePension     () { return privatePension     ; }	// 個人年金保険料
	public int    getLifeInsDeduction   () { return lifeInsDeduction   ; }	// 生命保険料控除額
	public int    getEarthquakeIns      () { return earthquakeIns      ; }	// 地震保険料
	public int    getLongTermDamageIns  () { return longTermDamageIns  ; }	// 旧長期損害保険料
	public int    getDamageInsDeduction () { return damageInsDeduction ; }	// 損害保険料控除額
	public int    getSocialInsDeduction () { return socialInsDeduction ; }	// 社会保険料控除額
	public int    getMutualAidDeduction () { return mutualAidDeduction ; }	// 小規模企業共済等掛金控除額
	public int    getSpouseSumIncome    () { return spouseSumIncome    ; }	// 配偶者の本年中の合計所得金額の見積額
	public int    getSpouseSpDeduction  () { return spouseSpDeduction  ; }	// 配偶者特別控除額
	public int    getHouseLoanDeduction () { return houseLoanDeduction ; }	// 住宅借入金等特別控除額
	public int    getAllowanceAdjustment() { return allowanceAdjustment; }	// 支給調整額
	public int    getTaxFreeAdjustment  () { return taxFreeAdjustment  ; }	// 非課税調整額
	public int    getSocInsAdjustment   () { return socInsAdjustment   ; }	// 社会保険調整額
	public int    getTaxIncAdjustment   () { return taxIncAdjustment   ; }	// 所得税調整額
	public String getWithholdSlipNotes  () { return withholdSlipNotes	;	}	// 源泉徴収票摘要欄
	public int    getPaymentAllowance   () { return paymentAllowance   ; }	// 給与、手当等金額
	public int    getPaymentIncomeTax   () { return paymentIncomeTax   ; }	// 給与、手当等税額
	public int    getBonusAllowance     () { return bonusAllowance     ; }	// 賞与等金額
	public int    getBonusIncomeTax     () { return bonusIncomeTax     ; }	// 賞与等税額
	public int    getMidwayAdjustIncome () { return midwayAdjustIncome ; }	// 中途、調整収入金額
	public int    getMidwayAdjustTax    () { return midwayAdjustTax    ; }	// 中途、調整収入税額
	public int    getAfterDeductIncome  () { return afterDeductIncome  ; }	// 給与所得控除後の給与等の金額
	public int    getPayInsDeduction    () { return payInsDeduction    ; }	// 社会保険料等給与等からの控除分
	public int    getDependentsDeduction() { return dependentsDeduction; }	// 配偶者控除額、扶養控除額、基礎控除額及び障害者等の控除額の合計額
	public int    getCalcTaxedIncome    () { return calcTaxedIncome    ; }	// 差引課税給与所得金額
	public int    getCalcIncomeTax      () { return calcIncomeTax      ; }	// 算出年税額
	public int    getAdjustedIncomeTax  () { return adjustedIncomeTax  ; }	// 年調年税額
	public int    getDeductedIncomeTax  () { return deductedIncomeTax  ; }	// 年調定率控除額税額
	public int    getFinalIncomeTax     () { return finalIncomeTax     ; }	// 年税額
	public void setAdjustYear         (int    adjustYear         ) { this.adjustYear          = adjustYear         ; }	// 調整年
	public void setAdjustStatus       (String adjustStatus       ) { this.adjustStatus        = adjustStatus       ; }	// 年末調整計算状態
	public void setGeneralLifeIns     (int    generalLifeIns     ) { this.generalLifeIns      = generalLifeIns     ; }	// 一般の生命保険料
	public void setPrivatePension     (int    privatePension     ) { this.privatePension      = privatePension     ; }	// 個人年金保険料
	public void setLifeInsDeduction   (int    lifeInsDeduction   ) { this.lifeInsDeduction    = lifeInsDeduction   ; }	// 生命保険料控除額
	public void setEarthquakeIns      (int    earthquakeIns      ) { this.earthquakeIns       = earthquakeIns      ; }	// 地震保険料
	public void setLongTermDamageIns  (int    longTermDamageIns  ) { this.longTermDamageIns   = longTermDamageIns  ; }	// 旧長期損害保険料
	public void setDamageInsDeduction (int    damageInsDeduction ) { this.damageInsDeduction  = damageInsDeduction ; }	// 損害保険料控除額
	public void setSocialInsDeduction (int    socialInsDeduction ) { this.socialInsDeduction  = socialInsDeduction ; }	// 社会保険料控除額
	public void setMutualAidDeduction (int    mutualAidDeduction ) { this.mutualAidDeduction  = mutualAidDeduction ; }	// 小規模企業共済等掛金控除額
	public void setSpouseSumIncome    (int    spouseSumIncome    ) { this.spouseSumIncome     = spouseSumIncome    ; }	// 配偶者の本年中の合計所得金額の見積額
	public void setSpouseSpDeduction  (int    spouseSpDeduction  ) { this.spouseSpDeduction   = spouseSpDeduction  ; }	// 配偶者特別控除額
	public void setHouseLoanDeduction (int    houseLoanDeduction ) { this.houseLoanDeduction  = houseLoanDeduction ; }	// 住宅借入金等特別控除額
	public void setAllowanceAdjustment(int    allowanceAdjustment) { this.allowanceAdjustment = allowanceAdjustment; }	// 支給調整額
	public void setTaxFreeAdjustment  (int    taxFreeAdjustment  ) { this.taxFreeAdjustment   = taxFreeAdjustment  ; }	// 非課税調整額
	public void setSocInsAdjustment   (int    socInsAdjustment   ) { this.socInsAdjustment    = socInsAdjustment   ; }	// 社会保険調整額
	public void setTaxIncAdjustment   (int    taxIncAdjustment   ) { this.taxIncAdjustment    = taxIncAdjustment   ; }	// 所得税調整額
	public void setWithholdSlipNotes  (String withholdSlipNotes  ) { this.withholdSlipNotes   = withholdSlipNotes  ; }	// 源泉徴収票摘要欄
	public void setPaymentAllowance   (int    paymentAllowance   ) { this.paymentAllowance    = paymentAllowance   ; }	// 給与、手当等金額
	public void setPaymentIncomeTax   (int    paymentIncomeTax   ) { this.paymentIncomeTax    = paymentIncomeTax   ; }	// 給与、手当等税額
	public void setBonusAllowance     (int    bonusAllowance     ) { this.bonusAllowance      = bonusAllowance     ; }	// 賞与等金額
	public void setBonusIncomeTax     (int    bonusIncomeTax     ) { this.bonusIncomeTax      = bonusIncomeTax     ; }	// 賞与等税額
	public void setMidwayAdjustIncome (int    midwayAdjustIncome ) { this.midwayAdjustIncome  = midwayAdjustIncome ; }	// 中途、調整収入金額
	public void setMidwayAdjustTax    (int    midwayAdjustTax    ) { this.midwayAdjustTax     = midwayAdjustTax    ; }	// 中途、調整収入税額
	public void setAfterDeductIncome  (int    afterDeductIncome  ) { this.afterDeductIncome   = afterDeductIncome  ; }	// 給与所得控除後の給与等の金額
	public void setPayInsDeduction    (int    payInsDeduction    ) { this.payInsDeduction     = payInsDeduction    ; }	// 社会保険料等給与等からの控除分
	public void setDependentsDeduction(int    dependentsDeduction) { this.dependentsDeduction = dependentsDeduction; }	// 配偶者控除額、扶養控除額、基礎控除額及び障害者等の控除額の合計額
	public void setCalcTaxedIncome    (int    calcTaxedIncome    ) { this.calcTaxedIncome     = calcTaxedIncome    ; }	// 差引課税給与所得金額
	public void setCalcIncomeTax      (int    calcIncomeTax      ) { this.calcIncomeTax       = calcIncomeTax      ; }	// 算出年税額
	public void setAdjustedIncomeTax  (int    adjustedIncomeTax  ) { this.adjustedIncomeTax   = adjustedIncomeTax  ; }	// 年調年税額
	public void setDeductedIncomeTax  (int    deductedIncomeTax  ) { this.deductedIncomeTax   = deductedIncomeTax  ; }	// 年調定率控除額税額
	public void setFinalIncomeTax     (int    finalIncomeTax     ) { this.finalIncomeTax      = finalIncomeTax     ; }	// 年税額
	
	public int getTaxGap() {
		return finalIncomeTax - paymentIncomeTax - bonusIncomeTax - midwayAdjustTax;
	}
	
}
