package org.wfc.omada.api.hotspot.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * VoucherGroupGridOpenApiVo
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:35:35.496+08:00[Asia/Shanghai]")

public class VoucherGroupGridOpenApiVo   {
  @JsonProperty("id")
  private String id;

  @JsonProperty("name")
  private String name;

  @JsonProperty("createdTime")
  private Long createdTime;

  @JsonProperty("creatorName")
  private String creatorName;

  @JsonProperty("limitType")
  private Integer limitType;

  @JsonProperty("limitNum")
  private Integer limitNum;

  @JsonProperty("durationType")
  private Integer durationType;

  @JsonProperty("duration")
  private Long duration;

  @JsonProperty("timingType")
  private Integer timingType;

  @JsonProperty("rateLimit")
  private RateLimitOpenApiVo rateLimit;

  @JsonProperty("trafficLimitEnable")
  private Boolean trafficLimitEnable;

  @JsonProperty("trafficLimit")
  private Long trafficLimit;

  @JsonProperty("trafficLimitFrequency")
  private Integer trafficLimitFrequency;

  @JsonProperty("unitPrice")
  private String unitPrice;

  @JsonProperty("currency")
  private String currency;

  @JsonProperty("portalNames")
  @Valid
  private List<String> portalNames = null;

  @JsonProperty("applyToAllPortals")
  private Boolean applyToAllPortals;

  @JsonProperty("expirationTime")
  private Long expirationTime;

  @JsonProperty("effectiveTime")
  private Long effectiveTime;

  @JsonProperty("logout")
  private Boolean logout;

  @JsonProperty("description")
  private String description;

  @JsonProperty("printComments")
  private String printComments;

  @JsonProperty("unusedCount")
  private Integer unusedCount;

  @JsonProperty("usedCount")
  private Integer usedCount;

  @JsonProperty("inUseCount")
  private Integer inUseCount;

  @JsonProperty("expiredCount")
  private Integer expiredCount;

  @JsonProperty("totalCount")
  private Integer totalCount;

  @JsonProperty("unusedAmount")
  private String unusedAmount;

  @JsonProperty("usedAmount")
  private String usedAmount;

  @JsonProperty("totalAmount")
  private String totalAmount;

  @JsonProperty("statisticsCount")
  private StatisticsCountOpenApiVo statisticsCount;

  @JsonProperty("totalRows")
  private Long totalRows;

  @JsonProperty("currentPage")
  private Integer currentPage;

  @JsonProperty("currentSize")
  private Integer currentSize;

  @JsonProperty("data")
  @Valid
  private List<SimpleVoucherOpenApiVo> data = null;

  public VoucherGroupGridOpenApiVo id(String id) {
    this.id = id;
    return this;
  }

  /**
   * Voucher group ID
   * @return id
  */
  @ApiModelProperty(value = "Voucher group ID")


  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public VoucherGroupGridOpenApiVo name(String name) {
    this.name = name;
    return this;
  }

  /**
   * Voucher group ID
   * @return name
  */
  @ApiModelProperty(value = "Voucher group ID")


  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public VoucherGroupGridOpenApiVo createdTime(Long createdTime) {
    this.createdTime = createdTime;
    return this;
  }

  /**
   * Create timestamp for the voucher group, unit: millisecond
   * @return createdTime
  */
  @ApiModelProperty(value = "Create timestamp for the voucher group, unit: millisecond")


  public Long getCreatedTime() {
    return createdTime;
  }

  public void setCreatedTime(Long createdTime) {
    this.createdTime = createdTime;
  }

  public VoucherGroupGridOpenApiVo creatorName(String creatorName) {
    this.creatorName = creatorName;
    return this;
  }

  /**
   * Role of the creator of the voucher group
   * @return creatorName
  */
  @ApiModelProperty(value = "Role of the creator of the voucher group")


  public String getCreatorName() {
    return creatorName;
  }

  public void setCreatorName(String creatorName) {
    this.creatorName = creatorName;
  }

  public VoucherGroupGridOpenApiVo limitType(Integer limitType) {
    this.limitType = limitType;
    return this;
  }

  /**
   * The limitations of the voucher. It should be a value as follows: 0: Limited Usage Counts, 1: Limited Online Users, 2: Unlimited
   * @return limitType
  */
  @ApiModelProperty(value = "The limitations of the voucher. It should be a value as follows: 0: Limited Usage Counts, 1: Limited Online Users, 2: Unlimited")


  public Integer getLimitType() {
    return limitType;
  }

  public void setLimitType(Integer limitType) {
    this.limitType = limitType;
  }

  public VoucherGroupGridOpenApiVo limitNum(Integer limitNum) {
    this.limitNum = limitNum;
    return this;
  }

  /**
   * The number of limitations. It should be within the range of 1–999. If Parameter [limitType] is 0 or 1, [limitNum] should not be null.When Parameter [limitType] is 0, [limitNum] represents the maximum number of times this voucher can be used.When Parameter [limitType] is 1, [limitNum] represents the maximum number of users this voucher can be used at the same time.
   * @return limitNum
  */
  @ApiModelProperty(value = "The number of limitations. It should be within the range of 1–999. If Parameter [limitType] is 0 or 1, [limitNum] should not be null.When Parameter [limitType] is 0, [limitNum] represents the maximum number of times this voucher can be used.When Parameter [limitType] is 1, [limitNum] represents the maximum number of users this voucher can be used at the same time.")


  public Integer getLimitNum() {
    return limitNum;
  }

  public void setLimitNum(Integer limitNum) {
    this.limitNum = limitNum;
  }

  public VoucherGroupGridOpenApiVo durationType(Integer durationType) {
    this.durationType = durationType;
    return this;
  }

  /**
   * The duration type of the voucher. It should be a value as follows: 0: Client duration, each client expires after the duration is used. 1: Voucher duration, after reaching the voucher duration, clients using the voucher will expire
   * @return durationType
  */
  @ApiModelProperty(value = "The duration type of the voucher. It should be a value as follows: 0: Client duration, each client expires after the duration is used. 1: Voucher duration, after reaching the voucher duration, clients using the voucher will expire")


  public Integer getDurationType() {
    return durationType;
  }

  public void setDurationType(Integer durationType) {
    this.durationType = durationType;
  }

  public VoucherGroupGridOpenApiVo duration(Long duration) {
    this.duration = duration;
    return this;
  }

  /**
   * Duration of one use, unit: minute. It should be within the range of 1–14400000.
   * @return duration
  */
  @ApiModelProperty(value = "Duration of one use, unit: minute. It should be within the range of 1–14400000.")


  public Long getDuration() {
    return duration;
  }

  public void setDuration(Long duration) {
    this.duration = duration;
  }

  public VoucherGroupGridOpenApiVo timingType(Integer timingType) {
    this.timingType = timingType;
    return this;
  }

  /**
   * The timing type of the voucher. It should be a value as follows: 0: Timing by time, clients can use vouchers for specified time duration. 1: Timing by usage, clients can use vouchers for the duration of actual usage
   * @return timingType
  */
  @ApiModelProperty(value = "The timing type of the voucher. It should be a value as follows: 0: Timing by time, clients can use vouchers for specified time duration. 1: Timing by usage, clients can use vouchers for the duration of actual usage")


  public Integer getTimingType() {
    return timingType;
  }

  public void setTimingType(Integer timingType) {
    this.timingType = timingType;
  }

  public VoucherGroupGridOpenApiVo rateLimit(RateLimitOpenApiVo rateLimit) {
    this.rateLimit = rateLimit;
    return this;
  }

  /**
   * Get rateLimit
   * @return rateLimit
  */
  @ApiModelProperty(value = "")

  @Valid

  public RateLimitOpenApiVo getRateLimit() {
    return rateLimit;
  }

  public void setRateLimit(RateLimitOpenApiVo rateLimit) {
    this.rateLimit = rateLimit;
  }

  public VoucherGroupGridOpenApiVo trafficLimitEnable(Boolean trafficLimitEnable) {
    this.trafficLimitEnable = trafficLimitEnable;
    return this;
  }

  /**
   * Whether to enable traffic limit
   * @return trafficLimitEnable
  */
  @ApiModelProperty(value = "Whether to enable traffic limit")


  public Boolean getTrafficLimitEnable() {
    return trafficLimitEnable;
  }

  public void setTrafficLimitEnable(Boolean trafficLimitEnable) {
    this.trafficLimitEnable = trafficLimitEnable;
  }

  public VoucherGroupGridOpenApiVo trafficLimit(Long trafficLimit) {
    this.trafficLimit = trafficLimit;
    return this;
  }

  /**
   * Traffic limit in MB. It should be within the range of 1–10485760
   * @return trafficLimit
  */
  @ApiModelProperty(value = "Traffic limit in MB. It should be within the range of 1–10485760")


  public Long getTrafficLimit() {
    return trafficLimit;
  }

  public void setTrafficLimit(Long trafficLimit) {
    this.trafficLimit = trafficLimit;
  }

  public VoucherGroupGridOpenApiVo trafficLimitFrequency(Integer trafficLimitFrequency) {
    this.trafficLimitFrequency = trafficLimitFrequency;
    return this;
  }

  /**
   * Frequency of traffic limit should be a value as follows: 0: total; 1: daily; 2: weekly; 3: monthly.
   * @return trafficLimitFrequency
  */
  @ApiModelProperty(value = "Frequency of traffic limit should be a value as follows: 0: total; 1: daily; 2: weekly; 3: monthly.")


  public Integer getTrafficLimitFrequency() {
    return trafficLimitFrequency;
  }

  public void setTrafficLimitFrequency(Integer trafficLimitFrequency) {
    this.trafficLimitFrequency = trafficLimitFrequency;
  }

  public VoucherGroupGridOpenApiVo unitPrice(String unitPrice) {
    this.unitPrice = unitPrice;
    return this;
  }

  /**
   * Price of single voucher. It should be within the range of 1–999999999
   * @return unitPrice
  */
  @ApiModelProperty(value = "Price of single voucher. It should be within the range of 1–999999999")


  public String getUnitPrice() {
    return unitPrice;
  }

  public void setUnitPrice(String unitPrice) {
    this.unitPrice = unitPrice;
  }

  public VoucherGroupGridOpenApiVo currency(String currency) {
    this.currency = currency;
    return this;
  }

  /**
   * Currency Short Code of voucher. For the values of Currency Short Code, refer to section 5.4.2 of the Open API Access Guide.
   * @return currency
  */
  @ApiModelProperty(value = "Currency Short Code of voucher. For the values of Currency Short Code, refer to section 5.4.2 of the Open API Access Guide.")


  public String getCurrency() {
    return currency;
  }

  public void setCurrency(String currency) {
    this.currency = currency;
  }

  public VoucherGroupGridOpenApiVo portalNames(List<String> portalNames) {
    this.portalNames = portalNames;
    return this;
  }

  public VoucherGroupGridOpenApiVo addPortalNamesItem(String portalNamesItem) {
    if (this.portalNames == null) {
      this.portalNames = new ArrayList<>();
    }
    this.portalNames.add(portalNamesItem);
    return this;
  }

  /**
   * Bound portal name list
   * @return portalNames
  */
  @ApiModelProperty(value = "Bound portal name list")


  public List<String> getPortalNames() {
    return portalNames;
  }

  public void setPortalNames(List<String> portalNames) {
    this.portalNames = portalNames;
  }

  public VoucherGroupGridOpenApiVo applyToAllPortals(Boolean applyToAllPortals) {
    this.applyToAllPortals = applyToAllPortals;
    return this;
  }

  /**
   * Is the voucher effective for all portals, including all newly created portals
   * @return applyToAllPortals
  */
  @ApiModelProperty(value = "Is the voucher effective for all portals, including all newly created portals")


  public Boolean getApplyToAllPortals() {
    return applyToAllPortals;
  }

  public void setApplyToAllPortals(Boolean applyToAllPortals) {
    this.applyToAllPortals = applyToAllPortals;
  }

  public VoucherGroupGridOpenApiVo expirationTime(Long expirationTime) {
    this.expirationTime = expirationTime;
    return this;
  }

  /**
   * The timestamp of the expiration of the voucher, unit: millisecond
   * @return expirationTime
  */
  @ApiModelProperty(value = "The timestamp of the expiration of the voucher, unit: millisecond")


  public Long getExpirationTime() {
    return expirationTime;
  }

  public void setExpirationTime(Long expirationTime) {
    this.expirationTime = expirationTime;
  }

  public VoucherGroupGridOpenApiVo effectiveTime(Long effectiveTime) {
    this.effectiveTime = effectiveTime;
    return this;
  }

  /**
   * The timestamp when the voucher takes effect, unit: millisecond
   * @return effectiveTime
  */
  @ApiModelProperty(value = "The timestamp when the voucher takes effect, unit: millisecond")


  public Long getEffectiveTime() {
    return effectiveTime;
  }

  public void setEffectiveTime(Long effectiveTime) {
    this.effectiveTime = effectiveTime;
  }

  public VoucherGroupGridOpenApiVo logout(Boolean logout) {
    this.logout = logout;
    return this;
  }

  /**
   * Whether the voucher support portal logout functionality
   * @return logout
  */
  @ApiModelProperty(value = "Whether the voucher support portal logout functionality")


  public Boolean getLogout() {
    return logout;
  }

  public void setLogout(Boolean logout) {
    this.logout = logout;
  }

  public VoucherGroupGridOpenApiVo description(String description) {
    this.description = description;
    return this;
  }

  /**
   * Description of the voucher group
   * @return description
  */
  @ApiModelProperty(value = "Description of the voucher group")


  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public VoucherGroupGridOpenApiVo printComments(String printComments) {
    this.printComments = printComments;
    return this;
  }

  /**
   * Print comments of the voucher group
   * @return printComments
  */
  @ApiModelProperty(value = "Print comments of the voucher group")


  public String getPrintComments() {
    return printComments;
  }

  public void setPrintComments(String printComments) {
    this.printComments = printComments;
  }

  public VoucherGroupGridOpenApiVo unusedCount(Integer unusedCount) {
    this.unusedCount = unusedCount;
    return this;
  }

  /**
   * Unused voucher counts of the voucher group, affected by search
   * @return unusedCount
  */
  @ApiModelProperty(value = "Unused voucher counts of the voucher group, affected by search")


  public Integer getUnusedCount() {
    return unusedCount;
  }

  public void setUnusedCount(Integer unusedCount) {
    this.unusedCount = unusedCount;
  }

  public VoucherGroupGridOpenApiVo usedCount(Integer usedCount) {
    this.usedCount = usedCount;
    return this;
  }

  /**
   * Used voucher counts of the voucher group, affected by search
   * @return usedCount
  */
  @ApiModelProperty(value = "Used voucher counts of the voucher group, affected by search")


  public Integer getUsedCount() {
    return usedCount;
  }

  public void setUsedCount(Integer usedCount) {
    this.usedCount = usedCount;
  }

  public VoucherGroupGridOpenApiVo inUseCount(Integer inUseCount) {
    this.inUseCount = inUseCount;
    return this;
  }

  /**
   * In use voucher counts of the voucher group, affected by search
   * @return inUseCount
  */
  @ApiModelProperty(value = "In use voucher counts of the voucher group, affected by search")


  public Integer getInUseCount() {
    return inUseCount;
  }

  public void setInUseCount(Integer inUseCount) {
    this.inUseCount = inUseCount;
  }

  public VoucherGroupGridOpenApiVo expiredCount(Integer expiredCount) {
    this.expiredCount = expiredCount;
    return this;
  }

  /**
   * Expired voucher counts of the voucher group, affected by search
   * @return expiredCount
  */
  @ApiModelProperty(value = "Expired voucher counts of the voucher group, affected by search")


  public Integer getExpiredCount() {
    return expiredCount;
  }

  public void setExpiredCount(Integer expiredCount) {
    this.expiredCount = expiredCount;
  }

  public VoucherGroupGridOpenApiVo totalCount(Integer totalCount) {
    this.totalCount = totalCount;
    return this;
  }

  /**
   * Total voucher counts of the voucher group, affected by search
   * @return totalCount
  */
  @ApiModelProperty(value = "Total voucher counts of the voucher group, affected by search")


  public Integer getTotalCount() {
    return totalCount;
  }

  public void setTotalCount(Integer totalCount) {
    this.totalCount = totalCount;
  }

  public VoucherGroupGridOpenApiVo unusedAmount(String unusedAmount) {
    this.unusedAmount = unusedAmount;
    return this;
  }

  /**
   * Unused voucher amount of the voucher group, unaffected by search
   * @return unusedAmount
  */
  @ApiModelProperty(value = "Unused voucher amount of the voucher group, unaffected by search")


  public String getUnusedAmount() {
    return unusedAmount;
  }

  public void setUnusedAmount(String unusedAmount) {
    this.unusedAmount = unusedAmount;
  }

  public VoucherGroupGridOpenApiVo usedAmount(String usedAmount) {
    this.usedAmount = usedAmount;
    return this;
  }

  /**
   * Used voucher amount of the voucher group, unaffected by search
   * @return usedAmount
  */
  @ApiModelProperty(value = "Used voucher amount of the voucher group, unaffected by search")


  public String getUsedAmount() {
    return usedAmount;
  }

  public void setUsedAmount(String usedAmount) {
    this.usedAmount = usedAmount;
  }

  public VoucherGroupGridOpenApiVo totalAmount(String totalAmount) {
    this.totalAmount = totalAmount;
    return this;
  }

  /**
   * Total voucher amount of the voucher group, unaffected by search
   * @return totalAmount
  */
  @ApiModelProperty(value = "Total voucher amount of the voucher group, unaffected by search")


  public String getTotalAmount() {
    return totalAmount;
  }

  public void setTotalAmount(String totalAmount) {
    this.totalAmount = totalAmount;
  }

  public VoucherGroupGridOpenApiVo statisticsCount(StatisticsCountOpenApiVo statisticsCount) {
    this.statisticsCount = statisticsCount;
    return this;
  }

  /**
   * Get statisticsCount
   * @return statisticsCount
  */
  @ApiModelProperty(value = "")

  @Valid

  public StatisticsCountOpenApiVo getStatisticsCount() {
    return statisticsCount;
  }

  public void setStatisticsCount(StatisticsCountOpenApiVo statisticsCount) {
    this.statisticsCount = statisticsCount;
  }

  public VoucherGroupGridOpenApiVo totalRows(Long totalRows) {
    this.totalRows = totalRows;
    return this;
  }

  /**
   * Total rows of vouchers in the voucher group, affected by search
   * @return totalRows
  */
  @ApiModelProperty(value = "Total rows of vouchers in the voucher group, affected by search")


  public Long getTotalRows() {
    return totalRows;
  }

  public void setTotalRows(Long totalRows) {
    this.totalRows = totalRows;
  }

  public VoucherGroupGridOpenApiVo currentPage(Integer currentPage) {
    this.currentPage = currentPage;
    return this;
  }

  /**
   * Current page number
   * @return currentPage
  */
  @ApiModelProperty(value = "Current page number")


  public Integer getCurrentPage() {
    return currentPage;
  }

  public void setCurrentPage(Integer currentPage) {
    this.currentPage = currentPage;
  }

  public VoucherGroupGridOpenApiVo currentSize(Integer currentSize) {
    this.currentSize = currentSize;
    return this;
  }

  /**
   * Number of entries per page
   * @return currentSize
  */
  @ApiModelProperty(value = "Number of entries per page")


  public Integer getCurrentSize() {
    return currentSize;
  }

  public void setCurrentSize(Integer currentSize) {
    this.currentSize = currentSize;
  }

  public VoucherGroupGridOpenApiVo data(List<SimpleVoucherOpenApiVo> data) {
    this.data = data;
    return this;
  }

  public VoucherGroupGridOpenApiVo addDataItem(SimpleVoucherOpenApiVo dataItem) {
    if (this.data == null) {
      this.data = new ArrayList<>();
    }
    this.data.add(dataItem);
    return this;
  }

  /**
   * Voucher pagination data of the voucher group
   * @return data
  */
  @ApiModelProperty(value = "Voucher pagination data of the voucher group")

  @Valid

  public List<SimpleVoucherOpenApiVo> getData() {
    return data;
  }

  public void setData(List<SimpleVoucherOpenApiVo> data) {
    this.data = data;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    VoucherGroupGridOpenApiVo voucherGroupGridOpenApiVo = (VoucherGroupGridOpenApiVo) o;
    return Objects.equals(this.id, voucherGroupGridOpenApiVo.id) &&
        Objects.equals(this.name, voucherGroupGridOpenApiVo.name) &&
        Objects.equals(this.createdTime, voucherGroupGridOpenApiVo.createdTime) &&
        Objects.equals(this.creatorName, voucherGroupGridOpenApiVo.creatorName) &&
        Objects.equals(this.limitType, voucherGroupGridOpenApiVo.limitType) &&
        Objects.equals(this.limitNum, voucherGroupGridOpenApiVo.limitNum) &&
        Objects.equals(this.durationType, voucherGroupGridOpenApiVo.durationType) &&
        Objects.equals(this.duration, voucherGroupGridOpenApiVo.duration) &&
        Objects.equals(this.timingType, voucherGroupGridOpenApiVo.timingType) &&
        Objects.equals(this.rateLimit, voucherGroupGridOpenApiVo.rateLimit) &&
        Objects.equals(this.trafficLimitEnable, voucherGroupGridOpenApiVo.trafficLimitEnable) &&
        Objects.equals(this.trafficLimit, voucherGroupGridOpenApiVo.trafficLimit) &&
        Objects.equals(this.trafficLimitFrequency, voucherGroupGridOpenApiVo.trafficLimitFrequency) &&
        Objects.equals(this.unitPrice, voucherGroupGridOpenApiVo.unitPrice) &&
        Objects.equals(this.currency, voucherGroupGridOpenApiVo.currency) &&
        Objects.equals(this.portalNames, voucherGroupGridOpenApiVo.portalNames) &&
        Objects.equals(this.applyToAllPortals, voucherGroupGridOpenApiVo.applyToAllPortals) &&
        Objects.equals(this.expirationTime, voucherGroupGridOpenApiVo.expirationTime) &&
        Objects.equals(this.effectiveTime, voucherGroupGridOpenApiVo.effectiveTime) &&
        Objects.equals(this.logout, voucherGroupGridOpenApiVo.logout) &&
        Objects.equals(this.description, voucherGroupGridOpenApiVo.description) &&
        Objects.equals(this.printComments, voucherGroupGridOpenApiVo.printComments) &&
        Objects.equals(this.unusedCount, voucherGroupGridOpenApiVo.unusedCount) &&
        Objects.equals(this.usedCount, voucherGroupGridOpenApiVo.usedCount) &&
        Objects.equals(this.inUseCount, voucherGroupGridOpenApiVo.inUseCount) &&
        Objects.equals(this.expiredCount, voucherGroupGridOpenApiVo.expiredCount) &&
        Objects.equals(this.totalCount, voucherGroupGridOpenApiVo.totalCount) &&
        Objects.equals(this.unusedAmount, voucherGroupGridOpenApiVo.unusedAmount) &&
        Objects.equals(this.usedAmount, voucherGroupGridOpenApiVo.usedAmount) &&
        Objects.equals(this.totalAmount, voucherGroupGridOpenApiVo.totalAmount) &&
        Objects.equals(this.statisticsCount, voucherGroupGridOpenApiVo.statisticsCount) &&
        Objects.equals(this.totalRows, voucherGroupGridOpenApiVo.totalRows) &&
        Objects.equals(this.currentPage, voucherGroupGridOpenApiVo.currentPage) &&
        Objects.equals(this.currentSize, voucherGroupGridOpenApiVo.currentSize) &&
        Objects.equals(this.data, voucherGroupGridOpenApiVo.data);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, name, createdTime, creatorName, limitType, limitNum, durationType, duration, timingType, rateLimit, trafficLimitEnable, trafficLimit, trafficLimitFrequency, unitPrice, currency, portalNames, applyToAllPortals, expirationTime, effectiveTime, logout, description, printComments, unusedCount, usedCount, inUseCount, expiredCount, totalCount, unusedAmount, usedAmount, totalAmount, statisticsCount, totalRows, currentPage, currentSize, data);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class VoucherGroupGridOpenApiVo {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    createdTime: ").append(toIndentedString(createdTime)).append("\n");
    sb.append("    creatorName: ").append(toIndentedString(creatorName)).append("\n");
    sb.append("    limitType: ").append(toIndentedString(limitType)).append("\n");
    sb.append("    limitNum: ").append(toIndentedString(limitNum)).append("\n");
    sb.append("    durationType: ").append(toIndentedString(durationType)).append("\n");
    sb.append("    duration: ").append(toIndentedString(duration)).append("\n");
    sb.append("    timingType: ").append(toIndentedString(timingType)).append("\n");
    sb.append("    rateLimit: ").append(toIndentedString(rateLimit)).append("\n");
    sb.append("    trafficLimitEnable: ").append(toIndentedString(trafficLimitEnable)).append("\n");
    sb.append("    trafficLimit: ").append(toIndentedString(trafficLimit)).append("\n");
    sb.append("    trafficLimitFrequency: ").append(toIndentedString(trafficLimitFrequency)).append("\n");
    sb.append("    unitPrice: ").append(toIndentedString(unitPrice)).append("\n");
    sb.append("    currency: ").append(toIndentedString(currency)).append("\n");
    sb.append("    portalNames: ").append(toIndentedString(portalNames)).append("\n");
    sb.append("    applyToAllPortals: ").append(toIndentedString(applyToAllPortals)).append("\n");
    sb.append("    expirationTime: ").append(toIndentedString(expirationTime)).append("\n");
    sb.append("    effectiveTime: ").append(toIndentedString(effectiveTime)).append("\n");
    sb.append("    logout: ").append(toIndentedString(logout)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    printComments: ").append(toIndentedString(printComments)).append("\n");
    sb.append("    unusedCount: ").append(toIndentedString(unusedCount)).append("\n");
    sb.append("    usedCount: ").append(toIndentedString(usedCount)).append("\n");
    sb.append("    inUseCount: ").append(toIndentedString(inUseCount)).append("\n");
    sb.append("    expiredCount: ").append(toIndentedString(expiredCount)).append("\n");
    sb.append("    totalCount: ").append(toIndentedString(totalCount)).append("\n");
    sb.append("    unusedAmount: ").append(toIndentedString(unusedAmount)).append("\n");
    sb.append("    usedAmount: ").append(toIndentedString(usedAmount)).append("\n");
    sb.append("    totalAmount: ").append(toIndentedString(totalAmount)).append("\n");
    sb.append("    statisticsCount: ").append(toIndentedString(statisticsCount)).append("\n");
    sb.append("    totalRows: ").append(toIndentedString(totalRows)).append("\n");
    sb.append("    currentPage: ").append(toIndentedString(currentPage)).append("\n");
    sb.append("    currentSize: ").append(toIndentedString(currentSize)).append("\n");
    sb.append("    data: ").append(toIndentedString(data)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}

