package com.engine.salary.entity.salarysob.param;

import com.engine.salary.enums.SalaryCycleTypeEnum;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.util.valid.DataCheck;
import com.engine.salary.util.valid.RuntimeTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;


/**
 * 薪资账套保存参数
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalarySobBasicSaveParam {

    //主键id

    @DataCheck(require = true, runtime = RuntimeTypeEnum.UPDATE, message = "id不允许为空")
    private Long id;

    //薪资账套的名称
    @DataCheck(require = true, max = 40, message = "名称不允许为空且不能超过40个字符长度")
    private String name;

    /**
     * 个税扣缴义务人的主键id
     */
    @DataCheck(require = true, message = "个税扣缴义务人的主键id不允许为空")
    private Long taxAgentId;

    /**
     * 薪资类型不允许为空
     *
     * @see IncomeCategoryEnum
     */
    @DataCheck(require = true, message = "薪资类型不允许为空")
    private Integer taxableItems;

    /**
     * 薪资周期不允许为空
     *
     * @see SalaryCycleTypeEnum
     */
    @DataCheck(require = true, message = "薪资周期不允许为空")
    private Integer salaryCycleType;

    /**
     * 薪资周期的起始日期不允许为空
     */
    @DataCheck(require = true, message = "薪资周期的起始日期不允许为空")
    private Integer salaryCycleFromDay;

    /**
     * 税款所属期不允许为空
     *
     * @see SalaryCycleTypeEnum
     */
    @DataCheck(require = true, message = "税款所属期不允许为空")
    private Integer taxCycleType;

    /**
     * 考勤周期不允许为空
     *
     * @see SalaryCycleTypeEnum
     */
    @DataCheck(require = true, message = "考勤周期不允许为空")
    private Integer attendCycleType;

    /**
     * 考勤周期起始日期不允许为空
     */
    @DataCheck(require = true, message = "考勤周期起始日期不允许为空")
    private Integer attendCycleFromDay;

    /**
     * 福利台账月份不允许为空
     *
     * @see SalaryCycleTypeEnum
     */
    @DataCheck(require = true, message = "福利台账月份不允许为空")
    private Integer socialSecurityCycleType;

    /**
     * 备注不能超过80个字符
     */
    @DataCheck(max = 80, message = "备注不能超过80个字符")
    private String description;
}
