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

import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Pattern;
import java.math.BigDecimal;

/**
 * 不动产销售信息实体类
 * 用于发票中不动产销售相关的特定信息
 */
public class OMSDownRealPropertySellInfo {
    /**
     * 不动产单元代码/网签合同备案编号
     * 非必填，28个字节
     */
    private String realPropertyContractNumber;

    /**
     * 不动产地址(省)
     * 必填
     */
    @NotBlank(message = "不动产地址(省)realPropertyAddress不能为空")
    private String realPropertyAddress;

    /**
     * 不动产地址(市)
     * 非必填
     */
    private String realPropertyAddressCity;

    /**
     * 详细地址
     * 非必填，120个字节
     */
    private String detailAddress;

    /**
     * 跨地（市）标志
     * 必填，1个字节，可选值：0-否，1-是
     */
    @NotBlank(message = "跨地（市）标志crossCityFlag不能为空")
    @Pattern(regexp = "^[01]$", message = "跨地（市）标志crossCityFlag只能是0或1")
    private String crossCityFlag;

    /**
     * 土地增值税项目编号
     * 非必填，18个字节
     */
    private String incrementTaxNumber;

    /**
     * 核定计税价格
     * 非必填，20个字节
     */
    private BigDecimal price;

    /**
     * 实际成交税金额
     * 非必填，20个字节
     */
    private BigDecimal taxAmount;

    /**
     * 产权证书/不动产权证号
     * 非必填，40个字节
     */
    private String realPropertyCertificate;

    /**
     * 面积单位
     * 必填，1个字节，可选值：1-平方千米,2-平方米,3-公顷,4-亩,5-hm²,6-km²,7-m²,8-米(铁路线与管道等使用)
     */
    @NotBlank(message = "面积单位unit不能为空")
    @Pattern(regexp = "^[1-8]$", message = "面积单位unit只能是1-8的数字")
    private String unit;

    public String getRealPropertyContractNumber() {
        return realPropertyContractNumber;
    }

    public void setRealPropertyContractNumber(String realPropertyContractNumber) {
        this.realPropertyContractNumber = realPropertyContractNumber;
    }

    public String getRealPropertyAddress() {
        return realPropertyAddress;
    }

    public void setRealPropertyAddress(String realPropertyAddress) {
        this.realPropertyAddress = realPropertyAddress;
    }

    public String getRealPropertyAddressCity() {
        return realPropertyAddressCity;
    }

    public void setRealPropertyAddressCity(String realPropertyAddressCity) {
        this.realPropertyAddressCity = realPropertyAddressCity;
    }

    public String getDetailAddress() {
        return detailAddress;
    }

    public void setDetailAddress(String detailAddress) {
        this.detailAddress = detailAddress;
    }

    public String getCrossCityFlag() {
        return crossCityFlag;
    }

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

    public String getIncrementTaxNumber() {
        return incrementTaxNumber;
    }

    public void setIncrementTaxNumber(String incrementTaxNumber) {
        this.incrementTaxNumber = incrementTaxNumber;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getTaxAmount() {
        return taxAmount;
    }

    public void setTaxAmount(BigDecimal taxAmount) {
        this.taxAmount = taxAmount;
    }

    public String getRealPropertyCertificate() {
        return realPropertyCertificate;
    }

    public void setRealPropertyCertificate(String realPropertyCertificate) {
        this.realPropertyCertificate = realPropertyCertificate;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }
}
