<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class StripePaymentDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'stripe_payment';
    final public const PLURAL_NAME = 'stripe_payments';
    final public const ID = 'id';
    final public const ORDER_ID = 'order_id';
    final public const PAYMENT_INTENT_ID = 'payment_intent_id';
    final public const CHARGE_ID = 'charge_id';
    final public const PAYMENT_METHOD_ID = 'payment_method_id';
    final public const AMOUNT_RECEIVED = 'amount_received';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';
    final public const DELETED_AT = 'deleted_at';
    final public const LAST_ERROR = 'last_error';
    final public const CONNECTED_ACCOUNT_ID = 'connected_account_id';
    final public const APPLICATION_FEE_GROSS = 'application_fee_gross';
    final public const STRIPE_PLATFORM = 'stripe_platform';
    final public const APPLICATION_FEE_NET = 'application_fee_net';
    final public const APPLICATION_FEE_VAT = 'application_fee_vat';
    final public const CURRENCY = 'currency';
    final public const PAYOUT_ID = 'payout_id';
    final public const PAYOUT_STRIPE_FEE = 'payout_stripe_fee';
    final public const PAYOUT_NET_AMOUNT = 'payout_net_amount';
    final public const PAYOUT_CURRENCY = 'payout_currency';
    final public const PAYOUT_EXCHANGE_RATE = 'payout_exchange_rate';
    final public const BALANCE_TRANSACTION_ID = 'balance_transaction_id';
    final public const APPLICATION_FEE_VAT_RATE = 'application_fee_vat_rate';

    protected int $id;
    protected int $order_id;
    protected string $payment_intent_id;
    protected ?string $charge_id = null;
    protected ?string $payment_method_id = null;
    protected ?int $amount_received = null;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;
    protected ?string $deleted_at = null;
    protected array|string|null $last_error = null;
    protected ?string $connected_account_id = null;
    protected int $application_fee_gross = 0;
    protected ?string $stripe_platform = null;
    protected ?int $application_fee_net = null;
    protected ?int $application_fee_vat = null;
    protected ?string $currency = null;
    protected ?string $payout_id = null;
    protected ?int $payout_stripe_fee = null;
    protected ?int $payout_net_amount = null;
    protected ?string $payout_currency = null;
    protected ?float $payout_exchange_rate = null;
    protected ?string $balance_transaction_id = null;
    protected ?float $application_fee_vat_rate = null;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'order_id' => $this->order_id ?? null,
                    'payment_intent_id' => $this->payment_intent_id ?? null,
                    'charge_id' => $this->charge_id ?? null,
                    'payment_method_id' => $this->payment_method_id ?? null,
                    'amount_received' => $this->amount_received ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                    'deleted_at' => $this->deleted_at ?? null,
                    'last_error' => $this->last_error ?? null,
                    'connected_account_id' => $this->connected_account_id ?? null,
                    'application_fee_gross' => $this->application_fee_gross ?? null,
                    'stripe_platform' => $this->stripe_platform ?? null,
                    'application_fee_net' => $this->application_fee_net ?? null,
                    'application_fee_vat' => $this->application_fee_vat ?? null,
                    'currency' => $this->currency ?? null,
                    'payout_id' => $this->payout_id ?? null,
                    'payout_stripe_fee' => $this->payout_stripe_fee ?? null,
                    'payout_net_amount' => $this->payout_net_amount ?? null,
                    'payout_currency' => $this->payout_currency ?? null,
                    'payout_exchange_rate' => $this->payout_exchange_rate ?? null,
                    'balance_transaction_id' => $this->balance_transaction_id ?? null,
                    'application_fee_vat_rate' => $this->application_fee_vat_rate ?? null,
                ];
    }

    public function setId(int $id): self
    {
        $this->id = $id;
        return $this;
    }

    public function getId(): int
    {
        return $this->id;
    }

    public function setOrderId(int $order_id): self
    {
        $this->order_id = $order_id;
        return $this;
    }

    public function getOrderId(): int
    {
        return $this->order_id;
    }

    public function setPaymentIntentId(string $payment_intent_id): self
    {
        $this->payment_intent_id = $payment_intent_id;
        return $this;
    }

    public function getPaymentIntentId(): string
    {
        return $this->payment_intent_id;
    }

    public function setChargeId(?string $charge_id): self
    {
        $this->charge_id = $charge_id;
        return $this;
    }

    public function getChargeId(): ?string
    {
        return $this->charge_id;
    }

    public function setPaymentMethodId(?string $payment_method_id): self
    {
        $this->payment_method_id = $payment_method_id;
        return $this;
    }

    public function getPaymentMethodId(): ?string
    {
        return $this->payment_method_id;
    }

    public function setAmountReceived(?int $amount_received): self
    {
        $this->amount_received = $amount_received;
        return $this;
    }

    public function getAmountReceived(): ?int
    {
        return $this->amount_received;
    }

    public function setCreatedAt(?string $created_at): self
    {
        $this->created_at = $created_at;
        return $this;
    }

    public function getCreatedAt(): ?string
    {
        return $this->created_at;
    }

    public function setUpdatedAt(?string $updated_at): self
    {
        $this->updated_at = $updated_at;
        return $this;
    }

    public function getUpdatedAt(): ?string
    {
        return $this->updated_at;
    }

    public function setDeletedAt(?string $deleted_at): self
    {
        $this->deleted_at = $deleted_at;
        return $this;
    }

    public function getDeletedAt(): ?string
    {
        return $this->deleted_at;
    }

    public function setLastError(array|string|null $last_error): self
    {
        $this->last_error = $last_error;
        return $this;
    }

    public function getLastError(): array|string|null
    {
        return $this->last_error;
    }

    public function setConnectedAccountId(?string $connected_account_id): self
    {
        $this->connected_account_id = $connected_account_id;
        return $this;
    }

    public function getConnectedAccountId(): ?string
    {
        return $this->connected_account_id;
    }

    public function setApplicationFeeGross(int $application_fee_gross): self
    {
        $this->application_fee_gross = $application_fee_gross;
        return $this;
    }

    public function getApplicationFeeGross(): int
    {
        return $this->application_fee_gross;
    }

    public function setStripePlatform(?string $stripe_platform): self
    {
        $this->stripe_platform = $stripe_platform;
        return $this;
    }

    public function getStripePlatform(): ?string
    {
        return $this->stripe_platform;
    }

    public function setApplicationFeeNet(?int $application_fee_net): self
    {
        $this->application_fee_net = $application_fee_net;
        return $this;
    }

    public function getApplicationFeeNet(): ?int
    {
        return $this->application_fee_net;
    }

    public function setApplicationFeeVat(?int $application_fee_vat): self
    {
        $this->application_fee_vat = $application_fee_vat;
        return $this;
    }

    public function getApplicationFeeVat(): ?int
    {
        return $this->application_fee_vat;
    }

    public function setCurrency(?string $currency): self
    {
        $this->currency = $currency;
        return $this;
    }

    public function getCurrency(): ?string
    {
        return $this->currency;
    }

    public function setPayoutId(?string $payout_id): self
    {
        $this->payout_id = $payout_id;
        return $this;
    }

    public function getPayoutId(): ?string
    {
        return $this->payout_id;
    }

    public function setPayoutStripeFee(?int $payout_stripe_fee): self
    {
        $this->payout_stripe_fee = $payout_stripe_fee;
        return $this;
    }

    public function getPayoutStripeFee(): ?int
    {
        return $this->payout_stripe_fee;
    }

    public function setPayoutNetAmount(?int $payout_net_amount): self
    {
        $this->payout_net_amount = $payout_net_amount;
        return $this;
    }

    public function getPayoutNetAmount(): ?int
    {
        return $this->payout_net_amount;
    }

    public function setPayoutCurrency(?string $payout_currency): self
    {
        $this->payout_currency = $payout_currency;
        return $this;
    }

    public function getPayoutCurrency(): ?string
    {
        return $this->payout_currency;
    }

    public function setPayoutExchangeRate(?float $payout_exchange_rate): self
    {
        $this->payout_exchange_rate = $payout_exchange_rate;
        return $this;
    }

    public function getPayoutExchangeRate(): ?float
    {
        return $this->payout_exchange_rate;
    }

    public function setBalanceTransactionId(?string $balance_transaction_id): self
    {
        $this->balance_transaction_id = $balance_transaction_id;
        return $this;
    }

    public function getBalanceTransactionId(): ?string
    {
        return $this->balance_transaction_id;
    }

    public function setApplicationFeeVatRate(?float $application_fee_vat_rate): self
    {
        $this->application_fee_vat_rate = $application_fee_vat_rate;
        return $this;
    }

    public function getApplicationFeeVatRate(): ?float
    {
        return $this->application_fee_vat_rate;
    }
}
