package com.engine.salary.entity.datacollection.po;

import com.engine.salary.annotation.Encrypt;
import com.engine.salary.annotation.SalaryFormulaVar;
import com.engine.hrmelog.annotation.ElogTransform;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * 数据采集-其他免税扣除表
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ElogTransform( name = "其他免税扣除")
public class OtherDeductionPO {

    /**
     * 主键
     */
    @ElogTransform( name="主键id" )
    private Long id;

    /**
     * 人员信息表的主键id
     */
    @ElogTransform( name ="人员id")
    private Long employeeId;

    /**
     * 个税扣缴义务人的主键id
     */
    @ElogTransform( name ="个税扣缴义务人id")
    private Long taxAgentId;

    /**
     * 申报月份
     */
    @ElogTransform( name ="税款所属期")
    private Date declareMonth;

    /**
     * 商业健康保险
     */
    @ElogTransform( name ="商业健康保险")
    @SalaryFormulaVar(defaultLabel = "商业健康保险", labelId = 91238, dataType = "number")
    @Encrypt
    private String businessHealthyInsurance;

    /**
     * 税延养老保险
     */
    @ElogTransform( name ="税延养老保险")
    @SalaryFormulaVar(defaultLabel = "税延养老保险", labelId = 91239, dataType = "number")
    @Encrypt
    private String taxDelayEndowmentInsurance;

    /**
     * 其他
     */
    @ElogTransform( name ="其他")
    @SalaryFormulaVar(defaultLabel = "其他", labelId = 84500, dataType = "number")
    @Encrypt
    private String otherDeduction;

    /**
     * 准予扣除的捐赠额
     */
    @ElogTransform( name ="准予扣除的捐赠额")
    @SalaryFormulaVar(defaultLabel = "准予扣除的捐赠额", labelId = 91240, dataType = "number")
    @Encrypt
    private String deductionAllowedDonation;

    /**
     * 个人养老金
     */
    @ElogTransform( name ="个人养老金")
    @SalaryFormulaVar(defaultLabel = "个人养老金", labelId = 91240, dataType = "number")
    @Encrypt
    private String privatePension;

    /**
     * 创建时间
     */
    @ElogTransform( name ="创建时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @ElogTransform( name ="更新时间")
    private Date updateTime;

    /**
     * 创建人
     */
    @ElogTransform( name ="创建人id")
    private Long creator;

    /**
     * 是否已删除。0：未删除、1：已删除
     */
    private Integer deleteType;

    /**
     * 租户ID
     */
    @ElogTransform( name ="租户")
    private String tenantKey;

    private List<Long> employeeIds;
    private Collection<Long> taxAgentIds;

}