/*
 * This file is generated by jOOQ.
 */
package cn.vertxup.fm.domain.tables.pojos;


import cn.vertxup.fm.domain.tables.interfaces.IFPayment;
import io.github.jklingsporn.vertx.jooq.shared.internal.VertxPojo;

import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class FPayment implements VertxPojo, IFPayment {

    private static final long serialVersionUID = 1L;

    private String key;
    private String name;
    private String code;
    private String serial;
    private BigDecimal amount;
    private String payName;
    private String payMobile;
    private String payMethod;
    private String payId;
    private String comment;
    private Boolean prepay;
    private String sigma;
    private String language;
    private Boolean active;
    private String metadata;
    private LocalDateTime createdAt;
    private String createdBy;
    private LocalDateTime updatedAt;
    private String updatedBy;

    public FPayment() {}

    public FPayment(IFPayment value) {
        this.key = value.getKey();
        this.name = value.getName();
        this.code = value.getCode();
        this.serial = value.getSerial();
        this.amount = value.getAmount();
        this.payName = value.getPayName();
        this.payMobile = value.getPayMobile();
        this.payMethod = value.getPayMethod();
        this.payId = value.getPayId();
        this.comment = value.getComment();
        this.prepay = value.getPrepay();
        this.sigma = value.getSigma();
        this.language = value.getLanguage();
        this.active = value.getActive();
        this.metadata = value.getMetadata();
        this.createdAt = value.getCreatedAt();
        this.createdBy = value.getCreatedBy();
        this.updatedAt = value.getUpdatedAt();
        this.updatedBy = value.getUpdatedBy();
    }

    public FPayment(
        String key,
        String name,
        String code,
        String serial,
        BigDecimal amount,
        String payName,
        String payMobile,
        String payMethod,
        String payId,
        String comment,
        Boolean prepay,
        String sigma,
        String language,
        Boolean active,
        String metadata,
        LocalDateTime createdAt,
        String createdBy,
        LocalDateTime updatedAt,
        String updatedBy
    ) {
        this.key = key;
        this.name = name;
        this.code = code;
        this.serial = serial;
        this.amount = amount;
        this.payName = payName;
        this.payMobile = payMobile;
        this.payMethod = payMethod;
        this.payId = payId;
        this.comment = comment;
        this.prepay = prepay;
        this.sigma = sigma;
        this.language = language;
        this.active = active;
        this.metadata = metadata;
        this.createdAt = createdAt;
        this.createdBy = createdBy;
        this.updatedAt = updatedAt;
        this.updatedBy = updatedBy;
    }

        public FPayment(io.vertx.core.json.JsonObject json) {
                this();
                fromJson(json);
        }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.KEY</code>. 「key」- 付款单账单主键ID
     */
    @Override
    public String getKey() {
        return this.key;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.KEY</code>. 「key」- 付款单账单主键ID
     */
    @Override
    public FPayment setKey(String key) {
        this.key = key;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.NAME</code>. 「name」 - 付款单单标题
     */
    @Override
    public String getName() {
        return this.name;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.NAME</code>. 「name」 - 付款单单标题
     */
    @Override
    public FPayment setName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.CODE</code>. 「code」 - 付款单单编号
     */
    @Override
    public String getCode() {
        return this.code;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.CODE</code>. 「code」 - 付款单单编号
     */
    @Override
    public FPayment setCode(String code) {
        this.code = code;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.SERIAL</code>. 「serial」 - 付款单单据号
     */
    @Override
    public String getSerial() {
        return this.serial;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.SERIAL</code>. 「serial」 - 付款单单据号
     */
    @Override
    public FPayment setSerial(String serial) {
        this.serial = serial;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.AMOUNT</code>.
     * 「amount」——价税合计，所有明细对应的实际结算金额
     */
    @Override
    public BigDecimal getAmount() {
        return this.amount;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.AMOUNT</code>.
     * 「amount」——价税合计，所有明细对应的实际结算金额
     */
    @Override
    public FPayment setAmount(BigDecimal amount) {
        this.amount = amount;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.PAY_NAME</code>. 「payName」打款人姓名
     */
    @Override
    public String getPayName() {
        return this.payName;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.PAY_NAME</code>. 「payName」打款人姓名
     */
    @Override
    public FPayment setPayName(String payName) {
        this.payName = payName;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.PAY_MOBILE</code>. 「payMobile」打款人电话
     */
    @Override
    public String getPayMobile() {
        return this.payMobile;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.PAY_MOBILE</code>. 「payMobile」打款人电话
     */
    @Override
    public FPayment setPayMobile(String payMobile) {
        this.payMobile = payMobile;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.PAY_METHOD</code>. 「payMethod」付款方式
     */
    @Override
    public String getPayMethod() {
        return this.payMethod;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.PAY_METHOD</code>. 「payMethod」付款方式
     */
    @Override
    public FPayment setPayMethod(String payMethod) {
        this.payMethod = payMethod;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.PAY_ID</code>. 「payId」付款账号
     */
    @Override
    public String getPayId() {
        return this.payId;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.PAY_ID</code>. 「payId」付款账号
     */
    @Override
    public FPayment setPayId(String payId) {
        this.payId = payId;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.COMMENT</code>. 「comment」 - 备注
     */
    @Override
    public String getComment() {
        return this.comment;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.COMMENT</code>. 「comment」 - 备注
     */
    @Override
    public FPayment setComment(String comment) {
        this.comment = comment;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.PREPAY</code>. 「prepay」- 是否预付
     */
    @Override
    public Boolean getPrepay() {
        return this.prepay;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.PREPAY</code>. 「prepay」- 是否预付
     */
    @Override
    public FPayment setPrepay(Boolean prepay) {
        this.prepay = prepay;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.SIGMA</code>. 「sigma」- 统一标识
     */
    @Override
    public String getSigma() {
        return this.sigma;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.SIGMA</code>. 「sigma」- 统一标识
     */
    @Override
    public FPayment setSigma(String sigma) {
        this.sigma = sigma;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.LANGUAGE</code>. 「language」- 使用的语言
     */
    @Override
    public String getLanguage() {
        return this.language;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.LANGUAGE</code>. 「language」- 使用的语言
     */
    @Override
    public FPayment setLanguage(String language) {
        this.language = language;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.ACTIVE</code>. 「active」- 是否启用
     */
    @Override
    public Boolean getActive() {
        return this.active;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.ACTIVE</code>. 「active」- 是否启用
     */
    @Override
    public FPayment setActive(Boolean active) {
        this.active = active;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.METADATA</code>. 「metadata」- 附加配置数据
     */
    @Override
    public String getMetadata() {
        return this.metadata;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.METADATA</code>. 「metadata」- 附加配置数据
     */
    @Override
    public FPayment setMetadata(String metadata) {
        this.metadata = metadata;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.CREATED_AT</code>. 「createdAt」-
     * 创建时间
     */
    @Override
    public LocalDateTime getCreatedAt() {
        return this.createdAt;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.CREATED_AT</code>. 「createdAt」-
     * 创建时间
     */
    @Override
    public FPayment setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.CREATED_BY</code>. 「createdBy」- 创建人
     */
    @Override
    public String getCreatedBy() {
        return this.createdBy;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.CREATED_BY</code>. 「createdBy」- 创建人
     */
    @Override
    public FPayment setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.UPDATED_AT</code>. 「updatedAt」-
     * 更新时间
     */
    @Override
    public LocalDateTime getUpdatedAt() {
        return this.updatedAt;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.UPDATED_AT</code>. 「updatedAt」-
     * 更新时间
     */
    @Override
    public FPayment setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
        return this;
    }

    /**
     * Getter for <code>DB_ETERNAL.F_PAYMENT.UPDATED_BY</code>. 「updatedBy」- 更新人
     */
    @Override
    public String getUpdatedBy() {
        return this.updatedBy;
    }

    /**
     * Setter for <code>DB_ETERNAL.F_PAYMENT.UPDATED_BY</code>. 「updatedBy」- 更新人
     */
    @Override
    public FPayment setUpdatedBy(String updatedBy) {
        this.updatedBy = updatedBy;
        return this;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        final FPayment other = (FPayment) obj;
        if (this.key == null) {
            if (other.key != null)
                return false;
        }
        else if (!this.key.equals(other.key))
            return false;
        if (this.name == null) {
            if (other.name != null)
                return false;
        }
        else if (!this.name.equals(other.name))
            return false;
        if (this.code == null) {
            if (other.code != null)
                return false;
        }
        else if (!this.code.equals(other.code))
            return false;
        if (this.serial == null) {
            if (other.serial != null)
                return false;
        }
        else if (!this.serial.equals(other.serial))
            return false;
        if (this.amount == null) {
            if (other.amount != null)
                return false;
        }
        else if (!this.amount.equals(other.amount))
            return false;
        if (this.payName == null) {
            if (other.payName != null)
                return false;
        }
        else if (!this.payName.equals(other.payName))
            return false;
        if (this.payMobile == null) {
            if (other.payMobile != null)
                return false;
        }
        else if (!this.payMobile.equals(other.payMobile))
            return false;
        if (this.payMethod == null) {
            if (other.payMethod != null)
                return false;
        }
        else if (!this.payMethod.equals(other.payMethod))
            return false;
        if (this.payId == null) {
            if (other.payId != null)
                return false;
        }
        else if (!this.payId.equals(other.payId))
            return false;
        if (this.comment == null) {
            if (other.comment != null)
                return false;
        }
        else if (!this.comment.equals(other.comment))
            return false;
        if (this.prepay == null) {
            if (other.prepay != null)
                return false;
        }
        else if (!this.prepay.equals(other.prepay))
            return false;
        if (this.sigma == null) {
            if (other.sigma != null)
                return false;
        }
        else if (!this.sigma.equals(other.sigma))
            return false;
        if (this.language == null) {
            if (other.language != null)
                return false;
        }
        else if (!this.language.equals(other.language))
            return false;
        if (this.active == null) {
            if (other.active != null)
                return false;
        }
        else if (!this.active.equals(other.active))
            return false;
        if (this.metadata == null) {
            if (other.metadata != null)
                return false;
        }
        else if (!this.metadata.equals(other.metadata))
            return false;
        if (this.createdAt == null) {
            if (other.createdAt != null)
                return false;
        }
        else if (!this.createdAt.equals(other.createdAt))
            return false;
        if (this.createdBy == null) {
            if (other.createdBy != null)
                return false;
        }
        else if (!this.createdBy.equals(other.createdBy))
            return false;
        if (this.updatedAt == null) {
            if (other.updatedAt != null)
                return false;
        }
        else if (!this.updatedAt.equals(other.updatedAt))
            return false;
        if (this.updatedBy == null) {
            if (other.updatedBy != null)
                return false;
        }
        else if (!this.updatedBy.equals(other.updatedBy))
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((this.key == null) ? 0 : this.key.hashCode());
        result = prime * result + ((this.name == null) ? 0 : this.name.hashCode());
        result = prime * result + ((this.code == null) ? 0 : this.code.hashCode());
        result = prime * result + ((this.serial == null) ? 0 : this.serial.hashCode());
        result = prime * result + ((this.amount == null) ? 0 : this.amount.hashCode());
        result = prime * result + ((this.payName == null) ? 0 : this.payName.hashCode());
        result = prime * result + ((this.payMobile == null) ? 0 : this.payMobile.hashCode());
        result = prime * result + ((this.payMethod == null) ? 0 : this.payMethod.hashCode());
        result = prime * result + ((this.payId == null) ? 0 : this.payId.hashCode());
        result = prime * result + ((this.comment == null) ? 0 : this.comment.hashCode());
        result = prime * result + ((this.prepay == null) ? 0 : this.prepay.hashCode());
        result = prime * result + ((this.sigma == null) ? 0 : this.sigma.hashCode());
        result = prime * result + ((this.language == null) ? 0 : this.language.hashCode());
        result = prime * result + ((this.active == null) ? 0 : this.active.hashCode());
        result = prime * result + ((this.metadata == null) ? 0 : this.metadata.hashCode());
        result = prime * result + ((this.createdAt == null) ? 0 : this.createdAt.hashCode());
        result = prime * result + ((this.createdBy == null) ? 0 : this.createdBy.hashCode());
        result = prime * result + ((this.updatedAt == null) ? 0 : this.updatedAt.hashCode());
        result = prime * result + ((this.updatedBy == null) ? 0 : this.updatedBy.hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("FPayment (");

        sb.append(key);
        sb.append(", ").append(name);
        sb.append(", ").append(code);
        sb.append(", ").append(serial);
        sb.append(", ").append(amount);
        sb.append(", ").append(payName);
        sb.append(", ").append(payMobile);
        sb.append(", ").append(payMethod);
        sb.append(", ").append(payId);
        sb.append(", ").append(comment);
        sb.append(", ").append(prepay);
        sb.append(", ").append(sigma);
        sb.append(", ").append(language);
        sb.append(", ").append(active);
        sb.append(", ").append(metadata);
        sb.append(", ").append(createdAt);
        sb.append(", ").append(createdBy);
        sb.append(", ").append(updatedAt);
        sb.append(", ").append(updatedBy);

        sb.append(")");
        return sb.toString();
    }

    // -------------------------------------------------------------------------
    // FROM and INTO
    // -------------------------------------------------------------------------

    @Override
    public void from(IFPayment from) {
        setKey(from.getKey());
        setName(from.getName());
        setCode(from.getCode());
        setSerial(from.getSerial());
        setAmount(from.getAmount());
        setPayName(from.getPayName());
        setPayMobile(from.getPayMobile());
        setPayMethod(from.getPayMethod());
        setPayId(from.getPayId());
        setComment(from.getComment());
        setPrepay(from.getPrepay());
        setSigma(from.getSigma());
        setLanguage(from.getLanguage());
        setActive(from.getActive());
        setMetadata(from.getMetadata());
        setCreatedAt(from.getCreatedAt());
        setCreatedBy(from.getCreatedBy());
        setUpdatedAt(from.getUpdatedAt());
        setUpdatedBy(from.getUpdatedBy());
    }

    @Override
    public <E extends IFPayment> E into(E into) {
        into.from(this);
        return into;
    }
}
