All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.squareup.square.models.TerminalCheckout Maven / Gradle / Ivy

There is a newer version: 41.2.0.20241017
Show newest version

package com.squareup.square.models;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.apimatic.core.types.OptionalNullable;
import java.util.List;
import java.util.Objects;

/**
 * This is a model class for TerminalCheckout type.
 */
public class TerminalCheckout {
    private final String id;
    private final Money amountMoney;
    private final OptionalNullable referenceId;
    private final OptionalNullable note;
    private final OptionalNullable orderId;
    private final PaymentOptions paymentOptions;
    private final DeviceCheckoutOptions deviceOptions;
    private final OptionalNullable deadlineDuration;
    private final String status;
    private final String cancelReason;
    private final List paymentIds;
    private final String createdAt;
    private final String updatedAt;
    private final String appId;
    private final String locationId;
    private final String paymentType;
    private final OptionalNullable teamMemberId;
    private final OptionalNullable customerId;
    private final Money appFeeMoney;
    private final OptionalNullable statementDescriptionIdentifier;
    private final Money tipMoney;

    /**
     * Initialization constructor.
     * @param  amountMoney  Money value for amountMoney.
     * @param  deviceOptions  DeviceCheckoutOptions value for deviceOptions.
     * @param  id  String value for id.
     * @param  referenceId  String value for referenceId.
     * @param  note  String value for note.
     * @param  orderId  String value for orderId.
     * @param  paymentOptions  PaymentOptions value for paymentOptions.
     * @param  deadlineDuration  String value for deadlineDuration.
     * @param  status  String value for status.
     * @param  cancelReason  String value for cancelReason.
     * @param  paymentIds  List of String value for paymentIds.
     * @param  createdAt  String value for createdAt.
     * @param  updatedAt  String value for updatedAt.
     * @param  appId  String value for appId.
     * @param  locationId  String value for locationId.
     * @param  paymentType  String value for paymentType.
     * @param  teamMemberId  String value for teamMemberId.
     * @param  customerId  String value for customerId.
     * @param  appFeeMoney  Money value for appFeeMoney.
     * @param  statementDescriptionIdentifier  String value for statementDescriptionIdentifier.
     * @param  tipMoney  Money value for tipMoney.
     */
    @JsonCreator
    public TerminalCheckout(
            @JsonProperty("amount_money") Money amountMoney,
            @JsonProperty("device_options") DeviceCheckoutOptions deviceOptions,
            @JsonProperty("id") String id,
            @JsonProperty("reference_id") String referenceId,
            @JsonProperty("note") String note,
            @JsonProperty("order_id") String orderId,
            @JsonProperty("payment_options") PaymentOptions paymentOptions,
            @JsonProperty("deadline_duration") String deadlineDuration,
            @JsonProperty("status") String status,
            @JsonProperty("cancel_reason") String cancelReason,
            @JsonProperty("payment_ids") List paymentIds,
            @JsonProperty("created_at") String createdAt,
            @JsonProperty("updated_at") String updatedAt,
            @JsonProperty("app_id") String appId,
            @JsonProperty("location_id") String locationId,
            @JsonProperty("payment_type") String paymentType,
            @JsonProperty("team_member_id") String teamMemberId,
            @JsonProperty("customer_id") String customerId,
            @JsonProperty("app_fee_money") Money appFeeMoney,
            @JsonProperty("statement_description_identifier") String statementDescriptionIdentifier,
            @JsonProperty("tip_money") Money tipMoney) {
        this.id = id;
        this.amountMoney = amountMoney;
        this.referenceId = OptionalNullable.of(referenceId);
        this.note = OptionalNullable.of(note);
        this.orderId = OptionalNullable.of(orderId);
        this.paymentOptions = paymentOptions;
        this.deviceOptions = deviceOptions;
        this.deadlineDuration = OptionalNullable.of(deadlineDuration);
        this.status = status;
        this.cancelReason = cancelReason;
        this.paymentIds = paymentIds;
        this.createdAt = createdAt;
        this.updatedAt = updatedAt;
        this.appId = appId;
        this.locationId = locationId;
        this.paymentType = paymentType;
        this.teamMemberId = OptionalNullable.of(teamMemberId);
        this.customerId = OptionalNullable.of(customerId);
        this.appFeeMoney = appFeeMoney;
        this.statementDescriptionIdentifier = OptionalNullable.of(statementDescriptionIdentifier);
        this.tipMoney = tipMoney;
    }

    /**
     * Internal initialization constructor.
     */
    protected TerminalCheckout(Money amountMoney, DeviceCheckoutOptions deviceOptions, String id,
            OptionalNullable referenceId, OptionalNullable note,
            OptionalNullable orderId, PaymentOptions paymentOptions,
            OptionalNullable deadlineDuration, String status, String cancelReason,
            List paymentIds, String createdAt, String updatedAt, String appId,
            String locationId, String paymentType, OptionalNullable teamMemberId,
            OptionalNullable customerId, Money appFeeMoney,
            OptionalNullable statementDescriptionIdentifier, Money tipMoney) {
        this.id = id;
        this.amountMoney = amountMoney;
        this.referenceId = referenceId;
        this.note = note;
        this.orderId = orderId;
        this.paymentOptions = paymentOptions;
        this.deviceOptions = deviceOptions;
        this.deadlineDuration = deadlineDuration;
        this.status = status;
        this.cancelReason = cancelReason;
        this.paymentIds = paymentIds;
        this.createdAt = createdAt;
        this.updatedAt = updatedAt;
        this.appId = appId;
        this.locationId = locationId;
        this.paymentType = paymentType;
        this.teamMemberId = teamMemberId;
        this.customerId = customerId;
        this.appFeeMoney = appFeeMoney;
        this.statementDescriptionIdentifier = statementDescriptionIdentifier;
        this.tipMoney = tipMoney;
    }

    /**
     * Getter for Id.
     * A unique ID for this `TerminalCheckout`.
     * @return Returns the String
     */
    @JsonGetter("id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getId() {
        return id;
    }

    /**
     * Getter for AmountMoney.
     * Represents an amount of money. `Money` fields can be signed or unsigned. Fields that do not
     * explicitly define whether they are signed or unsigned are considered unsigned and can only
     * hold positive amounts. For signed fields, the sign of the value indicates the purpose of the
     * money transfer. See [Working with Monetary
     * Amounts](https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts) for
     * more information.
     * @return Returns the Money
     */
    @JsonGetter("amount_money")
    public Money getAmountMoney() {
        return amountMoney;
    }

    /**
     * Internal Getter for ReferenceId.
     * An optional user-defined reference ID that can be used to associate this `TerminalCheckout`
     * to another entity in an external system. For example, an order ID generated by a third-party
     * shopping cart. The ID is also associated with any payments used to complete the checkout.
     * @return Returns the Internal String
     */
    @JsonGetter("reference_id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetReferenceId() {
        return this.referenceId;
    }

    /**
     * Getter for ReferenceId.
     * An optional user-defined reference ID that can be used to associate this `TerminalCheckout`
     * to another entity in an external system. For example, an order ID generated by a third-party
     * shopping cart. The ID is also associated with any payments used to complete the checkout.
     * @return Returns the String
     */
    @JsonIgnore
    public String getReferenceId() {
        return OptionalNullable.getFrom(referenceId);
    }

    /**
     * Internal Getter for Note.
     * An optional note to associate with the checkout, as well as with any payments used to
     * complete the checkout. Note: maximum 500 characters
     * @return Returns the Internal String
     */
    @JsonGetter("note")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetNote() {
        return this.note;
    }

    /**
     * Getter for Note.
     * An optional note to associate with the checkout, as well as with any payments used to
     * complete the checkout. Note: maximum 500 characters
     * @return Returns the String
     */
    @JsonIgnore
    public String getNote() {
        return OptionalNullable.getFrom(note);
    }

    /**
     * Internal Getter for OrderId.
     * The reference to the Square order ID for the checkout request. Supported only in the US.
     * @return Returns the Internal String
     */
    @JsonGetter("order_id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetOrderId() {
        return this.orderId;
    }

    /**
     * Getter for OrderId.
     * The reference to the Square order ID for the checkout request. Supported only in the US.
     * @return Returns the String
     */
    @JsonIgnore
    public String getOrderId() {
        return OptionalNullable.getFrom(orderId);
    }

    /**
     * Getter for PaymentOptions.
     * @return Returns the PaymentOptions
     */
    @JsonGetter("payment_options")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public PaymentOptions getPaymentOptions() {
        return paymentOptions;
    }

    /**
     * Getter for DeviceOptions.
     * @return Returns the DeviceCheckoutOptions
     */
    @JsonGetter("device_options")
    public DeviceCheckoutOptions getDeviceOptions() {
        return deviceOptions;
    }

    /**
     * Internal Getter for DeadlineDuration.
     * An RFC 3339 duration, after which the checkout is automatically canceled. A
     * `TerminalCheckout` that is `PENDING` is automatically `CANCELED` and has a cancellation
     * reason of `TIMED_OUT`. Default: 5 minutes from creation Maximum: 5 minutes
     * @return Returns the Internal String
     */
    @JsonGetter("deadline_duration")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetDeadlineDuration() {
        return this.deadlineDuration;
    }

    /**
     * Getter for DeadlineDuration.
     * An RFC 3339 duration, after which the checkout is automatically canceled. A
     * `TerminalCheckout` that is `PENDING` is automatically `CANCELED` and has a cancellation
     * reason of `TIMED_OUT`. Default: 5 minutes from creation Maximum: 5 minutes
     * @return Returns the String
     */
    @JsonIgnore
    public String getDeadlineDuration() {
        return OptionalNullable.getFrom(deadlineDuration);
    }

    /**
     * Getter for Status.
     * The status of the `TerminalCheckout`. Options: `PENDING`, `IN_PROGRESS`, `CANCEL_REQUESTED`,
     * `CANCELED`, `COMPLETED`
     * @return Returns the String
     */
    @JsonGetter("status")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getStatus() {
        return status;
    }

    /**
     * Getter for CancelReason.
     * @return Returns the String
     */
    @JsonGetter("cancel_reason")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getCancelReason() {
        return cancelReason;
    }

    /**
     * Getter for PaymentIds.
     * A list of IDs for payments created by this `TerminalCheckout`.
     * @return Returns the List of String
     */
    @JsonGetter("payment_ids")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public List getPaymentIds() {
        return paymentIds;
    }

    /**
     * Getter for CreatedAt.
     * The time when the `TerminalCheckout` was created, as an RFC 3339 timestamp.
     * @return Returns the String
     */
    @JsonGetter("created_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getCreatedAt() {
        return createdAt;
    }

    /**
     * Getter for UpdatedAt.
     * The time when the `TerminalCheckout` was last updated, as an RFC 3339 timestamp.
     * @return Returns the String
     */
    @JsonGetter("updated_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getUpdatedAt() {
        return updatedAt;
    }

    /**
     * Getter for AppId.
     * The ID of the application that created the checkout.
     * @return Returns the String
     */
    @JsonGetter("app_id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getAppId() {
        return appId;
    }

    /**
     * Getter for LocationId.
     * The location of the device where the `TerminalCheckout` was directed.
     * @return Returns the String
     */
    @JsonGetter("location_id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getLocationId() {
        return locationId;
    }

    /**
     * Getter for PaymentType.
     * @return Returns the String
     */
    @JsonGetter("payment_type")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getPaymentType() {
        return paymentType;
    }

    /**
     * Internal Getter for TeamMemberId.
     * An optional ID of the team member associated with creating the checkout.
     * @return Returns the Internal String
     */
    @JsonGetter("team_member_id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetTeamMemberId() {
        return this.teamMemberId;
    }

    /**
     * Getter for TeamMemberId.
     * An optional ID of the team member associated with creating the checkout.
     * @return Returns the String
     */
    @JsonIgnore
    public String getTeamMemberId() {
        return OptionalNullable.getFrom(teamMemberId);
    }

    /**
     * Internal Getter for CustomerId.
     * An optional ID of the customer associated with the checkout.
     * @return Returns the Internal String
     */
    @JsonGetter("customer_id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetCustomerId() {
        return this.customerId;
    }

    /**
     * Getter for CustomerId.
     * An optional ID of the customer associated with the checkout.
     * @return Returns the String
     */
    @JsonIgnore
    public String getCustomerId() {
        return OptionalNullable.getFrom(customerId);
    }

    /**
     * Getter for AppFeeMoney.
     * Represents an amount of money. `Money` fields can be signed or unsigned. Fields that do not
     * explicitly define whether they are signed or unsigned are considered unsigned and can only
     * hold positive amounts. For signed fields, the sign of the value indicates the purpose of the
     * money transfer. See [Working with Monetary
     * Amounts](https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts) for
     * more information.
     * @return Returns the Money
     */
    @JsonGetter("app_fee_money")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public Money getAppFeeMoney() {
        return appFeeMoney;
    }

    /**
     * Internal Getter for StatementDescriptionIdentifier.
     * Optional additional payment information to include on the customer's card statement as part
     * of the statement description. This can be, for example, an invoice number, ticket number, or
     * short description that uniquely identifies the purchase. Supported only in the US.
     * @return Returns the Internal String
     */
    @JsonGetter("statement_description_identifier")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetStatementDescriptionIdentifier() {
        return this.statementDescriptionIdentifier;
    }

    /**
     * Getter for StatementDescriptionIdentifier.
     * Optional additional payment information to include on the customer's card statement as part
     * of the statement description. This can be, for example, an invoice number, ticket number, or
     * short description that uniquely identifies the purchase. Supported only in the US.
     * @return Returns the String
     */
    @JsonIgnore
    public String getStatementDescriptionIdentifier() {
        return OptionalNullable.getFrom(statementDescriptionIdentifier);
    }

    /**
     * Getter for TipMoney.
     * Represents an amount of money. `Money` fields can be signed or unsigned. Fields that do not
     * explicitly define whether they are signed or unsigned are considered unsigned and can only
     * hold positive amounts. For signed fields, the sign of the value indicates the purpose of the
     * money transfer. See [Working with Monetary
     * Amounts](https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts) for
     * more information.
     * @return Returns the Money
     */
    @JsonGetter("tip_money")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public Money getTipMoney() {
        return tipMoney;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, amountMoney, referenceId, note, orderId, paymentOptions,
                deviceOptions, deadlineDuration, status, cancelReason, paymentIds, createdAt,
                updatedAt, appId, locationId, paymentType, teamMemberId, customerId, appFeeMoney,
                statementDescriptionIdentifier, tipMoney);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof TerminalCheckout)) {
            return false;
        }
        TerminalCheckout other = (TerminalCheckout) obj;
        return Objects.equals(id, other.id)
            && Objects.equals(amountMoney, other.amountMoney)
            && Objects.equals(referenceId, other.referenceId)
            && Objects.equals(note, other.note)
            && Objects.equals(orderId, other.orderId)
            && Objects.equals(paymentOptions, other.paymentOptions)
            && Objects.equals(deviceOptions, other.deviceOptions)
            && Objects.equals(deadlineDuration, other.deadlineDuration)
            && Objects.equals(status, other.status)
            && Objects.equals(cancelReason, other.cancelReason)
            && Objects.equals(paymentIds, other.paymentIds)
            && Objects.equals(createdAt, other.createdAt)
            && Objects.equals(updatedAt, other.updatedAt)
            && Objects.equals(appId, other.appId)
            && Objects.equals(locationId, other.locationId)
            && Objects.equals(paymentType, other.paymentType)
            && Objects.equals(teamMemberId, other.teamMemberId)
            && Objects.equals(customerId, other.customerId)
            && Objects.equals(appFeeMoney, other.appFeeMoney)
            && Objects.equals(statementDescriptionIdentifier,
                    other.statementDescriptionIdentifier)
            && Objects.equals(tipMoney, other.tipMoney);
    }

    /**
     * Converts this TerminalCheckout into string format.
     * @return String representation of this class
     */
    @Override
    public String toString() {
        return "TerminalCheckout [" + "amountMoney=" + amountMoney + ", deviceOptions="
                + deviceOptions + ", id=" + id + ", referenceId=" + referenceId + ", note=" + note
                + ", orderId=" + orderId + ", paymentOptions=" + paymentOptions
                + ", deadlineDuration=" + deadlineDuration + ", status=" + status
                + ", cancelReason=" + cancelReason + ", paymentIds=" + paymentIds + ", createdAt="
                + createdAt + ", updatedAt=" + updatedAt + ", appId=" + appId + ", locationId="
                + locationId + ", paymentType=" + paymentType + ", teamMemberId=" + teamMemberId
                + ", customerId=" + customerId + ", appFeeMoney=" + appFeeMoney
                + ", statementDescriptionIdentifier=" + statementDescriptionIdentifier
                + ", tipMoney=" + tipMoney + "]";
    }

    /**
     * Builds a new {@link TerminalCheckout.Builder} object.
     * Creates the instance with the state of the current model.
     * @return a new {@link TerminalCheckout.Builder} object
     */
    public Builder toBuilder() {
        Builder builder = new Builder(amountMoney, deviceOptions)
                .id(getId())
                .paymentOptions(getPaymentOptions())
                .status(getStatus())
                .cancelReason(getCancelReason())
                .paymentIds(getPaymentIds())
                .createdAt(getCreatedAt())
                .updatedAt(getUpdatedAt())
                .appId(getAppId())
                .locationId(getLocationId())
                .paymentType(getPaymentType())
                .appFeeMoney(getAppFeeMoney())
                .tipMoney(getTipMoney());
        builder.referenceId = internalGetReferenceId();
        builder.note = internalGetNote();
        builder.orderId = internalGetOrderId();
        builder.deadlineDuration = internalGetDeadlineDuration();
        builder.teamMemberId = internalGetTeamMemberId();
        builder.customerId = internalGetCustomerId();
        builder.statementDescriptionIdentifier = internalGetStatementDescriptionIdentifier();
        return builder;
    }

    /**
     * Class to build instances of {@link TerminalCheckout}.
     */
    public static class Builder {
        private Money amountMoney;
        private DeviceCheckoutOptions deviceOptions;
        private String id;
        private OptionalNullable referenceId;
        private OptionalNullable note;
        private OptionalNullable orderId;
        private PaymentOptions paymentOptions;
        private OptionalNullable deadlineDuration;
        private String status;
        private String cancelReason;
        private List paymentIds;
        private String createdAt;
        private String updatedAt;
        private String appId;
        private String locationId;
        private String paymentType;
        private OptionalNullable teamMemberId;
        private OptionalNullable customerId;
        private Money appFeeMoney;
        private OptionalNullable statementDescriptionIdentifier;
        private Money tipMoney;

        /**
         * Initialization constructor.
         * @param  amountMoney  Money value for amountMoney.
         * @param  deviceOptions  DeviceCheckoutOptions value for deviceOptions.
         */
        public Builder(Money amountMoney, DeviceCheckoutOptions deviceOptions) {
            this.amountMoney = amountMoney;
            this.deviceOptions = deviceOptions;
        }

        /**
         * Setter for amountMoney.
         * @param  amountMoney  Money value for amountMoney.
         * @return Builder
         */
        public Builder amountMoney(Money amountMoney) {
            this.amountMoney = amountMoney;
            return this;
        }

        /**
         * Setter for deviceOptions.
         * @param  deviceOptions  DeviceCheckoutOptions value for deviceOptions.
         * @return Builder
         */
        public Builder deviceOptions(DeviceCheckoutOptions deviceOptions) {
            this.deviceOptions = deviceOptions;
            return this;
        }

        /**
         * Setter for id.
         * @param  id  String value for id.
         * @return Builder
         */
        public Builder id(String id) {
            this.id = id;
            return this;
        }

        /**
         * Setter for referenceId.
         * @param  referenceId  String value for referenceId.
         * @return Builder
         */
        public Builder referenceId(String referenceId) {
            this.referenceId = OptionalNullable.of(referenceId);
            return this;
        }

        /**
         * UnSetter for referenceId.
         * @return Builder
         */
        public Builder unsetReferenceId() {
            referenceId = null;
            return this;
        }

        /**
         * Setter for note.
         * @param  note  String value for note.
         * @return Builder
         */
        public Builder note(String note) {
            this.note = OptionalNullable.of(note);
            return this;
        }

        /**
         * UnSetter for note.
         * @return Builder
         */
        public Builder unsetNote() {
            note = null;
            return this;
        }

        /**
         * Setter for orderId.
         * @param  orderId  String value for orderId.
         * @return Builder
         */
        public Builder orderId(String orderId) {
            this.orderId = OptionalNullable.of(orderId);
            return this;
        }

        /**
         * UnSetter for orderId.
         * @return Builder
         */
        public Builder unsetOrderId() {
            orderId = null;
            return this;
        }

        /**
         * Setter for paymentOptions.
         * @param  paymentOptions  PaymentOptions value for paymentOptions.
         * @return Builder
         */
        public Builder paymentOptions(PaymentOptions paymentOptions) {
            this.paymentOptions = paymentOptions;
            return this;
        }

        /**
         * Setter for deadlineDuration.
         * @param  deadlineDuration  String value for deadlineDuration.
         * @return Builder
         */
        public Builder deadlineDuration(String deadlineDuration) {
            this.deadlineDuration = OptionalNullable.of(deadlineDuration);
            return this;
        }

        /**
         * UnSetter for deadlineDuration.
         * @return Builder
         */
        public Builder unsetDeadlineDuration() {
            deadlineDuration = null;
            return this;
        }

        /**
         * Setter for status.
         * @param  status  String value for status.
         * @return Builder
         */
        public Builder status(String status) {
            this.status = status;
            return this;
        }

        /**
         * Setter for cancelReason.
         * @param  cancelReason  String value for cancelReason.
         * @return Builder
         */
        public Builder cancelReason(String cancelReason) {
            this.cancelReason = cancelReason;
            return this;
        }

        /**
         * Setter for paymentIds.
         * @param  paymentIds  List of String value for paymentIds.
         * @return Builder
         */
        public Builder paymentIds(List paymentIds) {
            this.paymentIds = paymentIds;
            return this;
        }

        /**
         * Setter for createdAt.
         * @param  createdAt  String value for createdAt.
         * @return Builder
         */
        public Builder createdAt(String createdAt) {
            this.createdAt = createdAt;
            return this;
        }

        /**
         * Setter for updatedAt.
         * @param  updatedAt  String value for updatedAt.
         * @return Builder
         */
        public Builder updatedAt(String updatedAt) {
            this.updatedAt = updatedAt;
            return this;
        }

        /**
         * Setter for appId.
         * @param  appId  String value for appId.
         * @return Builder
         */
        public Builder appId(String appId) {
            this.appId = appId;
            return this;
        }

        /**
         * Setter for locationId.
         * @param  locationId  String value for locationId.
         * @return Builder
         */
        public Builder locationId(String locationId) {
            this.locationId = locationId;
            return this;
        }

        /**
         * Setter for paymentType.
         * @param  paymentType  String value for paymentType.
         * @return Builder
         */
        public Builder paymentType(String paymentType) {
            this.paymentType = paymentType;
            return this;
        }

        /**
         * Setter for teamMemberId.
         * @param  teamMemberId  String value for teamMemberId.
         * @return Builder
         */
        public Builder teamMemberId(String teamMemberId) {
            this.teamMemberId = OptionalNullable.of(teamMemberId);
            return this;
        }

        /**
         * UnSetter for teamMemberId.
         * @return Builder
         */
        public Builder unsetTeamMemberId() {
            teamMemberId = null;
            return this;
        }

        /**
         * Setter for customerId.
         * @param  customerId  String value for customerId.
         * @return Builder
         */
        public Builder customerId(String customerId) {
            this.customerId = OptionalNullable.of(customerId);
            return this;
        }

        /**
         * UnSetter for customerId.
         * @return Builder
         */
        public Builder unsetCustomerId() {
            customerId = null;
            return this;
        }

        /**
         * Setter for appFeeMoney.
         * @param  appFeeMoney  Money value for appFeeMoney.
         * @return Builder
         */
        public Builder appFeeMoney(Money appFeeMoney) {
            this.appFeeMoney = appFeeMoney;
            return this;
        }

        /**
         * Setter for statementDescriptionIdentifier.
         * @param  statementDescriptionIdentifier  String value for statementDescriptionIdentifier.
         * @return Builder
         */
        public Builder statementDescriptionIdentifier(String statementDescriptionIdentifier) {
            this.statementDescriptionIdentifier =
                    OptionalNullable.of(statementDescriptionIdentifier);
            return this;
        }

        /**
         * UnSetter for statementDescriptionIdentifier.
         * @return Builder
         */
        public Builder unsetStatementDescriptionIdentifier() {
            statementDescriptionIdentifier = null;
            return this;
        }

        /**
         * Setter for tipMoney.
         * @param  tipMoney  Money value for tipMoney.
         * @return Builder
         */
        public Builder tipMoney(Money tipMoney) {
            this.tipMoney = tipMoney;
            return this;
        }

        /**
         * Builds a new {@link TerminalCheckout} object using the set fields.
         * @return {@link TerminalCheckout}
         */
        public TerminalCheckout build() {
            return new TerminalCheckout(amountMoney, deviceOptions, id, referenceId, note, orderId,
                    paymentOptions, deadlineDuration, status, cancelReason, paymentIds, createdAt,
                    updatedAt, appId, locationId, paymentType, teamMemberId, customerId,
                    appFeeMoney, statementDescriptionIdentifier, tipMoney);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy