package pwc.taxtech.atms.dpo;

import com.fasterxml.jackson.annotation.JsonProperty;

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

public class EnterpriseAccountDto {

    private String id;

    private String code;

    private String name;

    private String parentCode;

    private String fullName;

    private Integer acctProp;

    private Integer subProp;

    private Integer acctLevel;

    private Integer direction;

    private Boolean isLeaf;

    private Integer ruleType;

    private Boolean isActive;

    private String englishName;

    @JsonProperty("industryID")
    private String industryId;

    private String stdCode;

    private String stdName;

    private String stdFullName;

    // 标准科目方向
    private Integer stdDirection;

    // 标准科目,科目类型
    private Integer stdAcctProp;

    private Integer treeLevel;

    private List<EnterpriseAccountDto> subStdAccounts;

    private List<EnterpriseAccountDto> subEnterpriseAccounts;

    // The name of the parent. 父级科目名称
    private String parentName;

    // The full name of the parent. 父级科目全名
    private String parentFullName;

    // 设置账套Id
    // The enterprise account set identifier.
    @JsonProperty("enterpriseAccountSetID")
    private String enterpriseAccountSetId;

    private String mappingFullName;

    @JsonProperty("creatorID")
    private String creatorId;

    @JsonProperty("updatorID")
    private String updatorId;

    private Date createTime;

    private Date updateTime;

    private String stdParentCode;

    /**
     * @return the id
     */
    public String getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return the code
     */
    public String getCode() {
        return code;
    }

    /**
     * @param code the code to set
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the parentCode
     */
    public String getParentCode() {
        return parentCode;
    }

    /**
     * @param parentCode the parentCode to set
     */
    public void setParentCode(String parentCode) {
        this.parentCode = parentCode;
    }

    /**
     * @return the fullName
     */
    public String getFullName() {
        return fullName;
    }

    /**
     * @param fullName the fullName to set
     */
    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    /**
     * @return the acctProp
     */
    public Integer getAcctProp() {
        return acctProp;
    }

    /**
     * @param acctProp the acctProp to set
     */
    public void setAcctProp(Integer acctProp) {
        this.acctProp = acctProp;
    }

    /**
     * @return the subProp
     */
    public Integer getSubProp() {
        return subProp;
    }

    /**
     * @param subProp the subProp to set
     */
    public void setSubProp(Integer subProp) {
        this.subProp = subProp;
    }

    /**
     * @return the acctLevel
     */
    public Integer getAcctLevel() {
        return acctLevel;
    }

    /**
     * @param acctLevel the acctLevel to set
     */
    public void setAcctLevel(Integer acctLevel) {
        this.acctLevel = acctLevel;
    }

    /**
     * @return the direction
     */
    public Integer getDirection() {
        return direction;
    }

    /**
     * @param direction the direction to set
     */
    public void setDirection(Integer direction) {
        this.direction = direction;
    }

    /**
     * @return the isLeaf
     */
    public Boolean getIsLeaf() {
        return isLeaf;
    }

    /**
     * @param isLeaf the isLeaf to set
     */
    public void setIsLeaf(Boolean isLeaf) {
        this.isLeaf = isLeaf;
    }

    /**
     * @return the ruleType
     */
    public Integer getRuleType() {
        return ruleType;
    }

    /**
     * @param ruleType the ruleType to set
     */
    public void setRuleType(Integer ruleType) {
        this.ruleType = ruleType;
    }

    /**
     * @return the isActive
     */
    public Boolean getIsActive() {
        return isActive;
    }

    /**
     * @param isActive the isActive to set
     */
    public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
    }

    /**
     * @return the englishName
     */
    public String getEnglishName() {
        return englishName;
    }

    /**
     * @param englishName the englishName to set
     */
    public void setEnglishName(String englishName) {
        this.englishName = englishName;
    }

    /**
     * @return the industryId
     */
    public String getIndustryId() {
        return industryId;
    }

    /**
     * @param industryId the industryId to set
     */
    public void setIndustryId(String industryId) {
        this.industryId = industryId;
    }

    /**
     * @return the stdCode
     */
    public String getStdCode() {
        return stdCode;
    }

    /**
     * @param stdCode the stdCode to set
     */
    public void setStdCode(String stdCode) {
        this.stdCode = stdCode;
    }

    /**
     * @return the stdName
     */
    public String getStdName() {
        return stdName;
    }

    /**
     * @param stdName the stdName to set
     */
    public void setStdName(String stdName) {
        this.stdName = stdName;
    }

    /**
     * @return the stdFullName
     */
    public String getStdFullName() {
        return stdFullName;
    }

    /**
     * @param stdFullName the stdFullName to set
     */
    public void setStdFullName(String stdFullName) {
        this.stdFullName = stdFullName;
    }

    /**
     * @return the stdDirection
     */
    public Integer getStdDirection() {
        return stdDirection;
    }

    /**
     * @param stdDirection the stdDirection to set
     */
    public void setStdDirection(Integer stdDirection) {
        this.stdDirection = stdDirection;
    }

    /**
     * @return the stdAcctProp
     */
    public Integer getStdAcctProp() {
        return stdAcctProp;
    }

    /**
     * @param stdAcctProp the stdAcctProp to set
     */
    public void setStdAcctProp(Integer stdAcctProp) {
        this.stdAcctProp = stdAcctProp;
    }

    /**
     * @return the treeLevel
     */
    public Integer getTreeLevel() {
        return treeLevel;
    }

    /**
     * @param treeLevel the treeLevel to set
     */
    public void setTreeLevel(Integer treeLevel) {
        this.treeLevel = treeLevel;
    }

    /**
     * @return the subStdAccounts
     */
    public List<EnterpriseAccountDto> getSubStdAccounts() {
        return subStdAccounts;
    }

    /**
     * @param subStdAccounts the subStdAccounts to set
     */
    public void setSubStdAccounts(List<EnterpriseAccountDto> subStdAccounts) {
        this.subStdAccounts = subStdAccounts;
    }

    /**
     * @return the subEnterpriseAccounts
     */
    public List<EnterpriseAccountDto> getSubEnterpriseAccounts() {
        return subEnterpriseAccounts;
    }

    /**
     * @param subEnterpriseAccounts the subEnterpriseAccounts to set
     */
    public void setSubEnterpriseAccounts(List<EnterpriseAccountDto> subEnterpriseAccounts) {
        this.subEnterpriseAccounts = subEnterpriseAccounts;
    }

    /**
     * @return the parentName
     */
    public String getParentName() {
        return parentName;
    }

    /**
     * @param parentName the parentName to set
     */
    public void setParentName(String parentName) {
        this.parentName = parentName;
    }

    /**
     * @return the parentFullName
     */
    public String getParentFullName() {
        return parentFullName;
    }

    /**
     * @param parentFullName the parentFullName to set
     */
    public void setParentFullName(String parentFullName) {
        this.parentFullName = parentFullName;
    }

    /**
     * @return the enterpriseAccountSetId
     */
    public String getEnterpriseAccountSetId() {
        return enterpriseAccountSetId;
    }

    /**
     * @param enterpriseAccountSetId the enterpriseAccountSetId to set
     */
    public void setEnterpriseAccountSetId(String enterpriseAccountSetId) {
        this.enterpriseAccountSetId = enterpriseAccountSetId;
    }

    /**
     * @return the mappingFullName
     */
    public String getMappingFullName() {
        return mappingFullName;
    }

    /**
     * @param mappingFullName the mappingFullName to set
     */
    public void setMappingFullName(String mappingFullName) {
        this.mappingFullName = mappingFullName;
    }

    /**
     * @return the creatorId
     */
    public String getCreatorId() {
        return creatorId;
    }

    /**
     * @param creatorId the creatorId to set
     */
    public void setCreatorId(String creatorId) {
        this.creatorId = creatorId;
    }

    /**
     * @return the updatorId
     */
    public String getUpdatorId() {
        return updatorId;
    }

    /**
     * @param updatorId the updatorId to set
     */
    public void setUpdatorId(String updatorId) {
        this.updatorId = updatorId;
    }

    /**
     * @return the createTime
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * @param createTime the createTime to set
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * @return the updateTime
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * @param updateTime the updateTime to set
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        EnterpriseAccountDto other = (EnterpriseAccountDto) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }


    public String getStdParentCode() {
        return stdParentCode;
    }

    public void setStdParentCode(String stdParentCode) {
        this.stdParentCode = stdParentCode;
    }
}