package com.jeeplus.finance.invoice.domain.OMS;

import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;


/**
 * buildingInfo:开具建筑服务特定要素的数电发票才需要传（specificFactor 为 03 时）；注：数电建筑服务发票 只能有 一条明细 且 规格型号、计量单位、数量、单价都不能有值
 * （只有在开具建筑服务特定要素发票时需要传 buildingInfo 模块，不开具建筑服务特定要素不传buildingInfo 模块）
 */
public class BuildingInfo {
    /**
     * 建筑服务发生地
     * 必填，需与行政区划名称一致，最大100字符
     */
    @NotBlank(message = "建筑服务发生地buildingAddress不能为空")
    @Size(max = 100, message = "建筑服务发生地buildingAddress不能超过100字符")
    private String buildingAddress;

    /**
     * 详细地址
     * 建筑服务发生地+详细地址总长度最大120字符
     */
    @Size(max = 120, message = "详细地址detailedAddress不能超过120字符")
    private String detailedAddress;

    /**
     * 土地增值税项目编号
     * 最大16字符
     */
    @Size(max = 16, message = "土地增值税项目编号landVatItemNo不能超过16字符")
    private String landVatItemNo;

    /**
     * 建筑项目名称
     * 必填，最大80字符
     */
    @NotBlank(message = "建筑项目名称itemName不能为空")
    @Size(max = 80, message = "建筑项目名称itemName不能超过80字符")
    private String itemName;

    /**
     * 跨地（市）标志
     * 必填，0:否 1:是
     */
    @NotBlank(message = "跨地（市）标志crossCityFlag不能为空")
    @Pattern(regexp = "^0|1$", message = "跨地（市）标志crossCityFlag只能传入：0(否)、1(是)")
    private String crossCityFlag;

    /**
     * 跨区域涉税事项报验管理编号
     * 跨地（市）标志为1时必填，最大50字符
     */
    @Size(max = 50, message = "跨区域涉税事项报验管理编号crossCityCode不能超过50字符")
    private String crossCityCode;

    public String getBuildingAddress() {
        return buildingAddress;
    }

    public void setBuildingAddress(String buildingAddress) {
        this.buildingAddress = buildingAddress;
    }

    public String getDetailedAddress() {
        return detailedAddress;
    }

    public void setDetailedAddress(String detailedAddress) {
        this.detailedAddress = detailedAddress;
    }

    public String getLandVatItemNo() {
        return landVatItemNo;
    }

    public void setLandVatItemNo(String landVatItemNo) {
        this.landVatItemNo = landVatItemNo;
    }

    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public String getCrossCityFlag() {
        return crossCityFlag;
    }

    public void setCrossCityFlag(String crossCityFlag) {
        this.crossCityFlag = crossCityFlag;
    }

    public String getCrossCityCode() {
        return crossCityCode;
    }

    public void setCrossCityCode(String crossCityCode) {
        this.crossCityCode = crossCityCode;
    }
}
