# OpBalanceRvDTO.java

    package cloud.wconnect.frontoffice.pojo.dto.guestledgercheck;

    import cloud.wconnect.commonlib.annotation.validator.DigitsCustom;
    import lombok.Data;
    import org.hibernate.validator.constraints.Length;

    import jakarta.validation.constraints.*;
    import java.math.BigDecimal;
    import java.util.List;

    /**
     * DTO类: 加载 Open Balance Reservation 的信息
     */
    @Data
    public class OpBalanceRvDTO {

        private Long id;

        /**
         * CRS Number 集合
         */
        @NotEmpty(message = "The crsNumberList cannot be empty")
        private List<String> crsNumberList;

        /**
         * Check-in Date
         */
        @NotNull(message = "The checkInDate cannot be null")
        private Long checkInDate;

        /**
         * Check-out Date
         */
        @NotNull(message = "The checkOutDate cannot be null")
        private Long checkOutDate;

        /**
         * Room Number
         */
        @NotBlank(message = "The roomNumber cannot be blank")
        @Length(max = 10, message = "The roomNumber is limited 10 characters")
        private String roomNumber;

        /**
         * First Name
         */
        @NotBlank(message = "The firstName cannot be blank")
        @Length(max = 30, message = "The firstName is limited 30 characters")
        private String firstName;

        /**
         * Last Name
         */
        @NotBlank(message = "The lastName cannot be blank")
        @Length(max = 30, message = "The lastName is limited 30 characters")
        private String lastName;

        /**
         * Balance Amount
         */
        @NotNull(message = "The balanceAmount cannot be null")
        @DecimalMin(value = "0", message = "The balanceAmount must be greater than 0")
        @DigitsCustom(integer = 9, message = "The balanceAmount is wrong format")
        private BigDecimal balanceAmount;

        /**
         * Write off Amount
         */
        @NotNull(message = "The writeOffAmount cannot be null")
        @DecimalMin(value = "0", message = "The writeOffAmount must be greater than 0")
        @DigitsCustom(integer = 9, message = "The writeOffAmount is wrong format")
        private BigDecimal writeOffAmount;

        /**
         * GM informed？
         */
        @NotNull(message = "The gmInformed cannot be null")
        private Boolean gmInformed;

        /**
         * Note
         */
        @Length(max = 1000, message = "The note is limited 1000 characters")
        private String note;

        /**
         * GM's Comment
         */
        @Null(message = "The gmComment cannot be set")
        private String gmComment;

        /**
         * Balance Amount 最近更新人
         */
        @Null(message = "The balAmntUpdatedByName cannot be set")
        private String balAmntUpdatedByName;

        /**
         * Balance Amount 最近更新时间
         */
        @Null(message = "The balAmntUpdatedTime cannot be set")
        private Long balAmntUpdatedTime;

        /**
         * Write off Amount 最近更新人
         */
        @Null(message = "The wrOffAmntUpdatedByName cannot be set")
        private String wrOffAmntUpdatedByName;

        /**
         * Write off Amount 最近更新时间
         */
        @Null(message = "The wrOffAmountUpdatedTime cannot be set")
        private Long wrOffAmntUpdatedTime;

        /**
         * 更新Resolved状态的最近更新人
         */
        @Null(message = "The resolveUpdatedByName cannot be set")
        private String resolveUpdatedByName;

        /**
         * 更新Resolved状态的最近更新时间
         */
        @Null(message = "The resolveUpdatedTime cannot be set")
        private Long resolveUpdatedTime;

        /**
         * Amount Paid 集合
         */
        @Null(message = "The amountPaidList cannot be set")
        private List<AmountPaidDTO> amountPaidList;

        /**
         * Amount Paid
         */
        @Null(message = "The amountPaid cannot be set")
        private BigDecimal amountPaid;

        /**
         * Originnal Balance Amount
         */
        @Null(message = "The oriBalAmount cannot be set")
        private BigDecimal oriBalAmount;

        /**
         * Note Total
         */
        @Null(message = "The noteTotal cannot be set")
        private Long noteTotal;
    }